Indent top-level labels by one space. Add the rule to HACKING and enforce it by syntax-check. --- HACKING | 31 ++++++++++++++----------------- cfg.mk | 6 ++++++ docs/hacking.html.in | 37 ++++++++++++++++++------------------- 3 files changed, 38 insertions(+), 36 deletions(-) diff --git a/HACKING b/HACKING index 5d9cdca..586b960 100644 --- a/HACKING +++ b/HACKING @@ -232,22 +232,9 @@ but we do prefer that contributed code be formatted similarly. In short, use spaces-not-TABs for indentation, use 4 spaces for each indentation level, and other than that, follow the K&R style. -If you use Emacs, add the following to one of one of your start-up files -(e.g., ~/.emacs), to help ensure that you get indentation right: - - ;;; When editing C sources in libvirt, use this style. - (defun libvirt-c-mode () - "C mode with adjusted defaults for use with libvirt." - (interactive) - (c-set-style "K&R") - (setq indent-tabs-mode nil) ; indent using spaces, not TABs - (setq c-indent-level 4) - (setq c-basic-offset 4)) - (add-hook 'c-mode-hook - '(lambda () (if (string-match "/libvirt" (buffer-file-name)) - (libvirt-c-mode)))) - -If you use vim, append the following to your ~/.vimrc file: +If you use Emacs, the project includes a file .dir-locals.el that sets up the +preferred indentation. If you use vim, append the following to your ~/.vimrc +file: set nocompatible filetype on @@ -257,7 +244,7 @@ If you use vim, append the following to your ~/.vimrc file: set tabstop=8 set shiftwidth=4 set expandtab - set cinoptions=(0,:0,l1,t0 + set cinoptions=(0,:0,l1,t0,L3 filetype plugin indent on au FileType make setlocal noexpandtab au BufRead,BufNewFile *.am setlocal noexpandtab @@ -928,6 +915,16 @@ When using goto, please use one of these standard labels if it makes sense: no_memory: A path only taken upon return with an OOM error code retry: If needing to jump upwards (e.g., retry on EINTR) +Top-level labels should be indented by one space (putting them on the +beginning of the line confuses function context detection in git): + +int foo() +{ + /* ... do stuff ... */ + cleanup: + /* ... do other stuff ... */ +} + Libvirt committer guidelines ============================ diff --git a/cfg.mk b/cfg.mk index 559f719..cbcf40b 100644 --- a/cfg.mk +++ b/cfg.mk @@ -898,6 +898,12 @@ sc_prohibit_virConnectOpen_in_virsh: halt='Use vshConnect() in virsh instead of virConnectOpen*' \ $(_sc_search_regexp) +sc_require_space_before_label: + @prohibit='^[_a-zA-Z0-9]+:$$' \ + in_vc_files='\.[ch]$$' \ + halt="Top-level labels should be indented by one space" \ + $(_sc_search_regexp) + sc_curly_braces_style: @files=$$($(VC_LIST_EXCEPT) | grep '\.[ch]$$'); \ $(GREP) -nHP \ diff --git a/docs/hacking.html.in b/docs/hacking.html.in index 0febee2..b2ef85a 100644 --- a/docs/hacking.html.in +++ b/docs/hacking.html.in @@ -273,26 +273,11 @@ In short, use spaces-not-TABs for indentation, use 4 spaces for each indentation level, and other than that, follow the K&R style. </p> - <p> - If you use Emacs, add the following to one of one of your start-up files - (e.g., ~/.emacs), to help ensure that you get indentation right: - </p> -<pre> - ;;; When editing C sources in libvirt, use this style. - (defun libvirt-c-mode () - "C mode with adjusted defaults for use with libvirt." - (interactive) - (c-set-style "K&R") - (setq indent-tabs-mode nil) ; indent using spaces, not TABs - (setq c-indent-level 4) - (setq c-basic-offset 4)) - (add-hook 'c-mode-hook - '(lambda () (if (string-match "/libvirt" (buffer-file-name)) - (libvirt-c-mode)))) -</pre> <p> - If you use vim, append the following to your ~/.vimrc file: + If you use Emacs, the project includes a file .dir-locals.el + that sets up the preferred indentation. If you use vim, + append the following to your ~/.vimrc file: </p> <pre> set nocompatible @@ -303,7 +288,7 @@ set tabstop=8 set shiftwidth=4 set expandtab - set cinoptions=(0,:0,l1,t0 + set cinoptions=(0,:0,l1,t0,L3 filetype plugin indent on au FileType make setlocal noexpandtab au BufRead,BufNewFile *.am setlocal noexpandtab @@ -1139,6 +1124,20 @@ retry: If needing to jump upwards (e.g., retry on EINTR) </pre> + <p> + Top-level labels should be indented by one space (putting them on + the beginning of the line confuses function context detection in git): + </p> + +<pre> +int foo() +{ + /* ... do stuff ... */ + cleanup: + /* ... do other stuff ... */ +} +</pre> + <h2><a name="committers">Libvirt committer guidelines</a></h2> -- 1.8.3.2 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list