X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fcontributor%2Fprogramming-work.itexi;h=8dc8d2755bccbb31416d1b89e7846dad9a9080f9;hb=9391b173e05e0752aadd10fad93f01edad33516c;hp=66a792066c532f991c30342ab4bcf169acd13bc7;hpb=3af0951f9a11677240efa6228683dd4fcea13eaf;p=lilypond.git diff --git a/Documentation/contributor/programming-work.itexi b/Documentation/contributor/programming-work.itexi index 66a792066c..8dc8d2755b 100644 --- a/Documentation/contributor/programming-work.itexi +++ b/Documentation/contributor/programming-work.itexi @@ -364,43 +364,38 @@ If you like using font-lock, you can also add this to your c++-font-lock-keywords-3 '(("\\b\\(a-zA-Z_?+_\\)\\b" 1 font-lock-variable-name-face) ("\\b\\(A-Z?+a-z_?+\\)\\b" 1 font-lock-type-face)) )) -@end example - +@end example -@subheading Indenting with vim -Although emacs indentation is the GNU standard, acceptable -indentation can usually be accomplished with vim. Some hints for -vim are as follows: +@subsubheading Indenting with vim -A workable .vimrc: +Although emacs indentation is the GNU standard, correct +indentation for C++ files can be achieved by using the settings +recommended in the +@url{https://gcc.gnu.org/wiki/FormattingCodeForGCC, GNU GCC Wiki}. +Save the following in @file{~/.vim/after/ftplugin/cpp.vim}: @example -set cindent -set smartindent -set autoindent -set expandtab -set softtabstop=2 -set shiftwidth=2 -filetype plugin indent on -set incsearch -set ignorecase smartcase -set hlsearch -set confirm -set statusline=%F%m%r%h%w\ %@{&ff@}\ %Y\ [ASCII=\%03.3b]\ [HEX=\%02.2B]\ %04l,%04v\ %p%%\ [LEN=%L] -set laststatus=2 -set number -" Remove trailing whitespace on write +setlocal cindent +setlocal cinoptions=>4,n-2,@{2,^-2,:2,=2,g0,h2,p5,t0,+2,(0,u0,w1,m1 +setlocal shiftwidth=2 +setlocal softtabstop=2 +setlocal textwidth=79 +setlocal fo-=ro fo+=cql +" use spaces instead of tabs +setlocal expandtab +" remove trailing whitespace on write autocmd BufWritePre * :%s/\s\+$//e @end example -With this @file{.vimrc}, files can be reindented automatically by +With these settings, files can be reindented automatically by highlighting the lines to be indented in visual mode (use V to -enter visual mode) and pressing @code{=}. +enter visual mode) and pressing @code{=}, or a single line +correctly indented in normal mode by pressing @code{==}. -A @file{scheme.vim} file will help improve the indentation. This -one was suggested by Patrick McCarty. It should be saved in -@file{~/.vim/after/syntax/scheme.vim}. +A @file{scheme.vim} file will help improve the indentation of +Scheme code. This one was suggested by Patrick McCarty. It +should be saved in @file{~/.vim/after/syntax/scheme.vim}. @example " Additional Guile-specific 'forms' @@ -417,24 +412,45 @@ syn keyword schemeSyntax define-safe-public define-music-function syn keyword schemeSyntax def-grace-function " All of the above should influence indenting too -set lw+=define-public,define*-public -set lw+=define*,lambda*,let-keywords* -set lw+=defmacro,defmacro*,define-macro -set lw+=defmacro-public,defmacro*-public -set lw+=use-modules,define-module -set lw+=define-method,define-class -set lw+=define-markup-command,define-markup-list-command -set lw+=define-safe-public,define-music-function -set lw+=def-grace-function +setlocal lw+=define-public,define*-public +setlocal lw+=define*,lambda*,let-keywords* +setlocal lw+=defmacro,defmacro*,define-macro +setlocal lw+=defmacro-public,defmacro*-public +setlocal lw+=use-modules,define-module +setlocal lw+=define-method,define-class +setlocal lw+=define-markup-command,define-markup-list-command +setlocal lw+=define-safe-public,define-music-function +setlocal lw+=def-grace-function " These forms should not influence indenting -set lw-=if -set lw-=set! +setlocal lw-=if +setlocal lw-=set! " Try to highlight all ly: procedures syn match schemeFunc "ly:[^) ]\+" @end example +For documentation work on texinfo files, identify the file +extensions used as texinfo files in your @file{.vim/filetype.vim}: + +@example +if exists("did_load_filetypes") + finish +endif +augroup filetypedetect + au! BufRead,BufNewFile *.itely setfiletype texinfo + au! BufRead,BufNewFile *.itexi setfiletype texinfo + au! BufRead,BufNewFile *.tely setfiletype texinfo +augroup END +@end example + +and add these settings in @file{.vim/after/ftplugin/texinfo.vim}: + +@example +setlocal expandtab +setlocal shiftwidth=2 +setlocal textwidth=66 +@end example @node Naming conventions @subsection Naming Conventions @@ -1222,7 +1238,7 @@ achieve this by configuring with The executable code of LilyPond must be rebuilt from scratch: @example -make -C lily clean && make -C lily +make clean && make @end example @item Create a graphviz-compatible @file{.ly} file @@ -1269,7 +1285,7 @@ than normal. The original configuration can be restored by rerunning rebuild LilyPond with @example -make -C lily clean && make -C lily +make clean && make @end example @@ -1721,8 +1737,8 @@ code would declare acknowledgers for a @code{NoteHead} grob (via the @code{side-position-interface}: @example -@code{DECLARE_ACKNOWLEDGER (note_head)} -@code{DECLARE_ACKNOWLEDGER (side_position)} +DECLARE_ACKNOWLEDGER (note_head) +DECLARE_ACKNOWLEDGER (side_position) @end example The @code{DECLARE_END_ACKNOWLEDGER ()} macro sets up a spanner-specific