]> xenbits.xensource.com Git - libvirt.git/commitdiff
Add a rule for indenting labels
authorJán Tomko <jtomko@redhat.com>
Fri, 21 Mar 2014 12:07:03 +0000 (13:07 +0100)
committerJán Tomko <jtomko@redhat.com>
Tue, 25 Mar 2014 13:58:41 +0000 (14:58 +0100)
Indent top-level labels by one space.

Add the rule to HACKING and enforce it by syntax-check.

HACKING
cfg.mk
docs/hacking.html.in

diff --git a/HACKING b/HACKING
index 5d9cdca9886f20adab997b957fdc62aa7b3901df..586b960c42213023ba39163854905f0939161001 100644 (file)
--- 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 559f719c9274ef2f7d6e69f5d8d68ad0393f0fae..a4ae9783b39ec9b27a28b3db7f29cf91e7b99e65 100644 (file)
--- 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                                                   \
index 0febee2115d1c6b1a2cd4734833a69c84676833d..b2ef85a755e10614e390e3f27a015e1f8b29c8d8 100644 (file)
       In short, use spaces-not-TABs for indentation, use 4 spaces for each
       indentation level, and other than that, follow the K&amp;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&amp;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
   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
       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>