maint: use spaces, not TABs for indentation
[libguestfs.git] / HACKING
diff --git a/HACKING b/HACKING
index c6a3022..bdb8287 100644 (file)
--- a/HACKING
+++ b/HACKING
@@ -24,6 +24,44 @@ Please make sure that the code compiles without warnings.
 
 Please test any changes.
 
+Useful targets:
+  make syntax-check    Checks the syntax of the C code.
+  make check           Runs the test suite.
+
+Enable warnings, and fix any you find:
+  ./configure --enable-gcc-warnings
+
+Code indentation
+----------------------------------------------------------------------
+Our C source code generally adheres to some basic code-formatting
+conventions.  The existing code base is not totally consistent on this
+front, but we do prefer that contributed code be formatted similarly.
+In short, use spaces-not-TABs for indentation, use 2 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:
+
+  ;;; In libguestfs, indent with spaces everywhere (not TABs).
+  ;;; Exceptions: Makefile and ChangeLog modes.
+  (add-hook 'find-file-hook
+      '(lambda () (if (and buffer-file-name
+                           (string-match "/libguestfs\\>" (buffer-file-name))
+                           (not (string-equal mode-name "Change Log"))
+                           (not (string-equal mode-name "Makefile")))
+                      (setq indent-tabs-mode nil))))
+
+  ;;; When editing C sources in libguestfs, use this style.
+  (defun libguestfs-c-mode ()
+    "C mode with adjusted defaults for use with libguestfs."
+    (interactive)
+    (c-set-style "K&R")
+    (setq c-indent-level 2)
+    (setq c-basic-offset 2))
+  (add-hook 'c-mode-hook
+            '(lambda () (if (string-match "/libguestfs\\>" (buffer-file-name))
+                            (libguestfs-c-mode))))
+
 Directories
 ----------------------------------------------------------------------
 
@@ -45,6 +83,9 @@ daemon/
 df/
         The virt-df tool.
 
+edit/
+        The virt-edit tool.
+
 examples/
         The examples.
 
@@ -84,6 +125,9 @@ python/
 regressions/
         Regression tests.
 
+rescue/
+        The virt-rescue tool.
+
 ruby/
         Ruby bindings.
 
@@ -94,9 +138,6 @@ src/
 test-tool/
         Interactive qemu/kernel test tool.
 
-v2v/
-        Xen to KVM (V2V) conversion tool.
-
 Debugging
 ----------------------------------------------------------------------