summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Winship <danw@redhat.com>2015-08-09 10:52:10 -0400
committerDan Winship <danw@redhat.com>2015-08-09 10:52:10 -0400
commit77b5e61851667bc8154acce2d72e6e26238b2af7 (patch)
tree0e301dcdb916255574e4ca635699a6aa96a07c9e
parent578e5e53c0882717a76d4d5496364b087999c234 (diff)
downloadNetworkManager-danw/emacs-bgo753411.tar.gz
contrib: add emacs config for hacking on NMdanw/emacs-bgo753411
-rw-r--r--contrib/emacs/networkmanager-style.el60
1 files changed, 60 insertions, 0 deletions
diff --git a/contrib/emacs/networkmanager-style.el b/contrib/emacs/networkmanager-style.el
new file mode 100644
index 0000000000..79d96e6891
--- /dev/null
+++ b/contrib/emacs/networkmanager-style.el
@@ -0,0 +1,60 @@
+;;; 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
+ (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)