[libvirt] [PATCH 24/24] Add a rule for indenting labels

Ján Tomko jtomko at redhat.com
Tue Mar 25 07:04:08 UTC 2014


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




More information about the libvir-list mailing list