[ << Programming work ] | [Top][Contents][Index][ ? ] | [ Release work >> ] | ||
[ < Filenames ] | [ Up : Code style ] | [ Naming conventions > ] |
9.5.3 Indentation
Standard GNU coding style is used. In emacs:
(add-hook 'c++-mode-hook '(lambda() (c-set-style "gnu") ))
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)) ))
Some source files may not currently have proper indenting. If this is the case, it is desirable to fix the improper indenting when the file is modified, with the hope of continually improving the code.
Indenting files with fixcc.py
LilyPond provides a python script that will correct the indentation on a c++ file:
scripts/auxiliar/fixcc.py lily/my-test-file.cc
Be sure you replace my-test-file.cc
with the name of the file
that you edited.
If you are editing a file that contains an ADD_TRANSLATOR or ADD_INTERFACE macro, the fixcc.py script will move the final parenthesis up one line from where it should be. Please check the end of the file before you run fixcc.py, and then put the final parenthesis and semicolon back on a line by themselves.
Indenting files with emacs in script mode
Note: this is pending some confirmation on -devel. July 2009 -gp
Command-line script to format stuff with emacs:
#!/bin/sh emacs $1 -batch --eval '(indent-region (point-min) (point-max) nil)' -f save-buffer
(that’s all on one line)
Save it as a shell script, then run on the file(s) you modified.
Indenting with vim
Although emacs indentation is the LilyPond standard, acceptable indentation can usually be accomplished with vim. Some hints for vim are as follows:
A workable .vimrc:
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 autocmd BufWritePre * :%s/\s\+$//e
With this .vimrc, files can be reindented automatically by highlihting the lines to be indented in visual mode (use V to enter visual mode) and pressing =.
A scheme.vim file will help improve the indentation. 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* define-safe-public syn keyword schemeSyntax use-modules define-module syn keyword schemeSyntax defmacro-public define-macro syn keyword schemeSyntax define-markup-command syn keyword schemeSyntax define-markup-list-command syn keyword schemeSyntax let-keywords* lambda* define*-public syn keyword schemeSyntax defmacro* defmacro*-public " All of the above should influence indenting too set lw+=define-public,define*,define-safe-public,use-modules,define-module set lw+=defmacro-public,define-macro set lw+=define-markup-command,define-markup-list-command set lw+=let-keywords*,lambda*,define*-public,defmacro*,defmacro*-public " These forms should not influence indenting set lw-=if set lw-=set! " Try to highlight all ly: procedures syn match schemeFunc "ly:[^) ]\+"
[ << Programming work ] | [Top][Contents][Index][ ? ] | [ Release work >> ] | ||
[ < Filenames ] | [ Up : Code style ] | [ Naming conventions > ] |