|
@@ -474,25 +474,29 @@ make a good program).
|
|
|
So, you can either get rid of GNU emacs, or change it to use saner
|
|
|
values. To do the latter, you can stick the following in your .emacs file:
|
|
|
|
|
|
-(defun linux-c-mode ()
|
|
|
- "C mode with adjusted defaults for use with the Linux kernel."
|
|
|
- (interactive)
|
|
|
- (c-mode)
|
|
|
- (c-set-style "K&R")
|
|
|
- (setq tab-width 8)
|
|
|
- (setq indent-tabs-mode t)
|
|
|
- (setq c-basic-offset 8))
|
|
|
-
|
|
|
-This will define the M-x linux-c-mode command. When hacking on a
|
|
|
-module, if you put the string -*- linux-c -*- somewhere on the first
|
|
|
-two lines, this mode will be automatically invoked. Also, you may want
|
|
|
-to add
|
|
|
-
|
|
|
-(setq auto-mode-alist (cons '("/usr/src/linux.*/.*\\.[ch]$" . linux-c-mode)
|
|
|
- auto-mode-alist))
|
|
|
-
|
|
|
-to your .emacs file if you want to have linux-c-mode switched on
|
|
|
-automagically when you edit source files under /usr/src/linux.
|
|
|
+(defun c-lineup-arglist-tabs-only (ignored)
|
|
|
+ "Line up argument lists by tabs, not spaces"
|
|
|
+ (let* ((anchor (c-langelem-pos c-syntactic-element))
|
|
|
+ (column (c-langelem-2nd-pos c-syntactic-element))
|
|
|
+ (offset (- (1+ column) anchor))
|
|
|
+ (steps (floor offset c-basic-offset)))
|
|
|
+ (* (max steps 1)
|
|
|
+ c-basic-offset)))
|
|
|
+
|
|
|
+(add-hook 'c-mode-hook
|
|
|
+ (lambda ()
|
|
|
+ (let ((filename (buffer-file-name)))
|
|
|
+ ;; Enable kernel mode for the appropriate files
|
|
|
+ (when (and filename
|
|
|
+ (string-match "~/src/linux-trees" filename))
|
|
|
+ (setq indent-tabs-mode t)
|
|
|
+ (c-set-style "linux")
|
|
|
+ (c-set-offset 'arglist-cont-nonempty
|
|
|
+ '(c-lineup-gcc-asm-reg
|
|
|
+ c-lineup-arglist-tabs-only))))))
|
|
|
+
|
|
|
+This will make emacs go better with the kernel coding style for C
|
|
|
+files below ~/src/linux-trees.
|
|
|
|
|
|
But even if you fail in getting emacs to do sane formatting, not
|
|
|
everything is lost: use "indent".
|