contrib: add emacs config for hacking on NM
https://bugzilla.gnome.org/show_bug.cgi?id=753411
This commit is contained in:
61
contrib/editors/networkmanager-style.el
Normal file
61
contrib/editors/networkmanager-style.el
Normal file
@@ -0,0 +1,61 @@
|
||||
;;; Emacs support for hacking on NetworkManager
|
||||
|
||||
(c-add-style "NetworkManager"
|
||||
'(
|
||||
; Start with the "bsd" style
|
||||
"bsd"
|
||||
|
||||
; ...but remove the rule saying labels must be indented at
|
||||
; least one space
|
||||
(c-label-minimum-indentation . 0)
|
||||
|
||||
; 4-space tabs/indents
|
||||
(tab-width . 4)
|
||||
(c-basic-offset . 4)
|
||||
|
||||
; Use smart-tabs-mode (see below) to get tabs for indentation
|
||||
; but spaces for alignment of continuation lines.
|
||||
(smart-tabs-mode . t)
|
||||
|
||||
; Multi-line "if" conditions are indented like this:
|
||||
; if ( foo
|
||||
; && bar)
|
||||
; (You have to add the spaces on the first line yourself, but
|
||||
; this will make emacs align the "&&" correctly.)
|
||||
(c-offsets-alist (arglist-cont-nonempty . (nm-lineup-arglist))
|
||||
(arglist-close . (nm-lineup-arglist)))
|
||||
|
||||
; NM's comments use two spaces after a period and are
|
||||
; (generally) wrapped at 80 characters
|
||||
(sentence-end-double-space . t)
|
||||
(fill-column . 80)
|
||||
))
|
||||
|
||||
;; http://www.emacswiki.org/emacs/SmartTabs
|
||||
(require 'smart-tabs-mode)
|
||||
|
||||
;; The smart-tabs-mode documentation tells you to use
|
||||
;; smart-tabs-insinuate to set it up, but that will cause it to be
|
||||
;; enabled for *all* C code. We only want to enable it for
|
||||
;; NetworkManager, so we have to manually set it up first.
|
||||
(smart-tabs-advice c-indent-line c-basic-offset)
|
||||
(smart-tabs-advice c-indent-region c-basic-offset)
|
||||
|
||||
|
||||
;; Implements the weird "if" alignment
|
||||
(defun nm-lineup-arglist (langelem)
|
||||
(save-excursion
|
||||
(back-to-indentation)
|
||||
(c-go-up-list-backward)
|
||||
(vector (+ (current-column) 1))))
|
||||
|
||||
|
||||
(dir-locals-set-class-variables 'nm '((c-mode . ((c-file-style . "NetworkManager")))))
|
||||
|
||||
;; Now add a line like the following for every directory where you want the
|
||||
;; "NetworkManager" style to be the default
|
||||
|
||||
; (dir-locals-set-directory-class "/home/danw/gnome/NetworkManager/" 'nm)
|
||||
; (dir-locals-set-directory-class "/home/danw/gnome/network-manager-applet/" 'nm)
|
||||
|
||||
(provide 'networkmanager-style)
|
Reference in New Issue
Block a user