[ << Programming work ] | [Top][Contents][Index][ ? ] | [ Release work >> ] | ||
[ < Filenames ] | [ Up : Code style ] | [ Naming conventions > ] |
10.5.3 Indentation
Standard GNU coding style is used.
Indenting files with fixcc.py
(recommended)
LilyPond provides a python script that will adjust the indentation
and spacing on a .cc
or .hh
file to very near the
GNU standard:
scripts/auxiliar/fixcc.py FILENAME
This can be run on all files at once, but this is not recommended for normal contributors or developers.
scripts/auxiliar/fixcc.py \ $(find flower lily -name '*cc' -o -name '*hh' | grep -v /out) |
Indenting with emacs
The following hooks will produce indentation which is similar to
our official indentation as produced with fixcc.py
.
(add-hook 'c++-mode-hook '(lambda () (c-set-style "gnu") (setq indent-tabs-mode nil))
If you like using font-lock, you can also add this to your ‘.emacs’:
(setq font-lock-maximum-decoration t) (setq c++-font-lock-keywords-3 (append 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)) ))
Indenting with vim
Although emacs indentation is the GNU standard, correct indentation for C++ files can be achieved by using the settings recommended in the GNU GCC Wiki. Save the following in ‘~/.vim/after/ftplugin/cpp.vim’:
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
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 =
, or a single line
correctly indented in normal mode by pressing ==
.
A ‘scheme.vim’ file will help improve the indentation of Scheme code. This one was suggested by Patrick McCarty. It should be saved in ‘~/.vim/after/syntax/scheme.vim’.
" Additional Guile-specific 'forms' syn keyword schemeSyntax define-public define*-public syn keyword schemeSyntax define* lambda* let-keywords* syn keyword schemeSyntax defmacro defmacro* define-macro syn keyword schemeSyntax defmacro-public defmacro*-public syn keyword schemeSyntax use-modules define-module syn keyword schemeSyntax define-method define-class " Additional LilyPond-specific 'forms' syn keyword schemeSyntax define-markup-command define-markup-list-command syn keyword schemeSyntax define-safe-public define-music-function syn keyword schemeSyntax def-grace-function " All of the above should influence indenting too 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 setlocal lw-=if setlocal lw-=set! " Try to highlight all ly: procedures syn match schemeFunc "ly:[^) ]\+"
For documentation work on texinfo files, identify the file extensions used as texinfo files in your ‘.vim/filetype.vim’:
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
and add these settings in ‘.vim/after/ftplugin/texinfo.vim’:
setlocal expandtab setlocal shiftwidth=2 setlocal textwidth=66
[ << Programming work ] | [Top][Contents][Index][ ? ] | [ Release work >> ] | ||
[ < Filenames ] | [ Up : Code style ] | [ Naming conventions > ] |