diff --git a/HACKING b/HACKING index 5d9cdca988..586b960c42 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 559f719c92..a4ae9783b3 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 0febee2115..b2ef85a755 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.

-

- 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
@@ -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)
 
+

+ 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