*develop.txt*    Vim version 6.2.   : 2001 Sep 03


		        VIM -  


 Vim.					    *development* **

    ,       Vim.

1.  		    |-|
2.     |-|
3.   	    |-|
4.     |-|

        README.txt   "src".

==============================================================================
1.  					  *design-goals* *-*

     ().

:        .   
.     ̣ .


VIM...   VI		    *design-compatible* *-*

 ,      Vim 
Vi.     Vim   ,  
     Vi.

:
-      Vi  Vim.
-    Vi.    3.7 (6/7/85)  
  .         
   .
   Vi  POSIX    .
- Vim   .    ,  - 
      ,  ţ   Vi.
-  Vim   ,    Vi.   Vi  Vim
     ,   .
-     ( ,   
     ..).        ,
             
   .
-          Vi. 
          .


VIM... 				 *design-improved* *-*

  Vim     ,  Vim, 
 Vim    .    " Vi".
-     .    , 
    .      . 
-  ӣ-  ,    
    .     
  .
-         ,   
       . ,    
    .
- ,      --  . 
    ,      ,
     .
-     CTRL   , 
     . 
-     Vim.  Vim   
    ,     .
-  ,      . 
      (1)   , (2)  
       (3)       .


						 *-*
VIM...                       *design-multi-platform*

Vim           
   .
-    .   --
      .   
  ,     .   
    .
-   .     -,
             
      . 
-      .    
         
  .
-           
  .       , ,  
  ,      .   ,
          
  .
-         , 
     ,  ݣ  ,     
   [    , 
     ].


VIM...  	     *design-documented* *-*

-     .  
      .
-      .  
  .
-      .    , 
     .


VIM...   	        *design-speed-size* *-__*

 Vim        .
     ̣.
-        . Vim  
  ,   ,   . Vim    
    . 
-     Vim  .   
     . 
-    . ,    ,
      .     
  .
-  ,     Vim    .
     .
- ,  أ      
  ,      ,   .
- Vim     .     
  ,   Vim     
  .


VIM...  	          *design-maintain* *-*

-       .     
  .
-       |-|.
-   !
-       ̣,   
     - .
-  - :     .
         . 


VIM... 	                           *design-flexible* *-*

Vim       ,    
,  ,     ̣ 
.    ,    (,
 'compatible'),     .   
     ,   
     Vim.      
 Vim         .


VIM  ...				              *design-not* *-*

- Vim       .    
    Vim   Vim   .
  : Vim       
    .  , "   Emacs, Vim
       ӣ,  ,  ,   
      ;)"
- Vim    ,     
     .    , 
      .

==============================================================================
2.  	       *coding-style* *-*

        Vim. 
    ,       
 .

   .      
 .


 		             *style-changes* *-*

    :
1.  .       
    ,     .
2.     .
3.  ../doc/todo.txt,     - 
   .
4.     "diff -c"    .
5. ,         .


  		     *style-functions* *-*

       Vim.  
    ,     
.

 	 VIM		    VIM
free()		vim_free()	     NULL
malloc()	alloc()		    
malloc()	lalloc()	 alloc(),     long
strcpy()	STRCPY()	   (char *),  char_u * args
strchr()	vim_strchr()	  
strrchr()	vim_strrchr()	  
isspace()	vim_isspace()	    > 128
iswhite()	vim_iswhite()	 TRUE   Tab  
memcpy()	vim_memmove()	   
bcopy()		vim_memmove()	   
memset()	vim_memset()	    


					           *style-names* *-*

     ,  31  (- VMS).

      "delete", C++   .

 Vim        , 
   ͣ,    .
  ͣ,    .    
  .

is.*()		POSIX, ctype.h
to.*()		POSIX, ctype.h

d_.*		POSIX, dirent.h
l_.*		POSIX, fcntl.h
gr_.*		POSIX, grp.h
pw_.*		POSIX, pwd.h
sa_.*		POSIX, signal.h
mem.*		POSIX, string.h
str.*		POSIX, string.h
wcs.*		POSIX, string.h
st_.*		POSIX, stat.h
tms_.*		POSIX, times.h
tm_.*		POSIX, time.h
c_.*		POSIX, termios.h
MAX.*		POSIX, limits.h
__.*		POSIX, system
_[A-Z].*	POSIX, system
E[A-Z0-9]*	POSIX, errno.h

*_t		POSIX,  typedefs.     *_T.

wait		     ,  
		   types.h
index		  
time		  	
new		   C++
try		Borland C++       
		   .

basename()	  GNU
dirname()	  GNU
get_env_value()	  Linux


					        *style-various* *-*

 ̣ typedef     "_t": >
    typdef int some_t;
, ̣  #define     : >
    #define SOME_THING
     "FEAT_": >
    #define FEAT_FOO

  '\"',      . 
 '"'.

 :
    #if HAVE_SOME
        , 
"HAVE_SOME"  .


    #ifdef HAVE_SOME

    #if defined(HAVE_SOME)


				              *style-examples* *-*

:  ,  .

:	    if (cond) a = 1;

:	    if (cond)
			a = 1;

:	    while (cond);

:	    while (cond)
			;

:	    do a = 1; while (cond);

:	    do
			a = 1;
		    while (cond);


  :

:	int function_name(int arg1, int arg2)

:	/*
		 * Explanation of what this function is used for.
		 *
		 * Return value explanation.
		 */
		    int
		function_name(arg1, arg2)
		    int		arg1;		/* short comment about arg1 */
		    int		arg2;		/* short comment about arg2 */
		{
		    int		local;		/* comment about local */

		    local = arg1 * arg2;

:      ANSI.    
 ,    .


  	                        *style-spaces* *-*

      :

:	func (arg);
:	func(arg);

 if, while, switch  .. ģ :

:	if(arg)		for(;;)
:	if (arg)	for (;;)

      :

:	func(arg1,arg2);	for (i = 0;i < 2;++i)
:	func(arg1, arg2);	for (i = 0; i < 2; ++i)

    '=', '+', '/'  ..:

:	var=a*5;
:	var = a * 5;

 :       . 
    .      .

:	/* Prepare for building the table. */
		get_first_item();
		table_idx = 0;

		/* Build the table */
		while (has_item())
		    table[table_idx++] = next_item();

		/* Finish up. */
		cleanup_items();
		generate_hash(table);

==============================================================================
3.   			   *design-decisions* *-*



      . ,  
  ,      ,   
  .

    .      
.        ,
   ( )  ,   
( ).


 ""

 ""     :   ,  xterm,
  Vim   .
  ,      ,
      "". 

		 . ,      1024x768
		.  Vim      
		.
	 Vim.     (, 
		),      (xterm  
		).
		 .  Vim    ,  
		 , ,    .. 
		 .


 ...

==============================================================================
4.            *design-assumptions* *-*

 :
char	    8 bit signed
char_u	    8 bit unsigned
int	    16, 32  64 bit signed
unsigned    16, 32  64 bit unsigned
long	    32  64 bit signed,   

==============================================================================
vim:tw=78:ts=8:ft=help:norl:
