From c699f8c32e54b8f8d518c65f3fc9237ca2f16a97 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Sun, 9 Aug 2015 10:52:10 -0400 Subject: [PATCH] contrib: add emacs config for hacking on NM https://bugzilla.gnome.org/show_bug.cgi?id=753411 --- contrib/editors/networkmanager-style.el | 61 +++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 contrib/editors/networkmanager-style.el diff --git a/contrib/editors/networkmanager-style.el b/contrib/editors/networkmanager-style.el new file mode 100644 index 000000000..69c7ac5ef --- /dev/null +++ b/contrib/editors/networkmanager-style.el @@ -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)