.dir-locals.el: Assert default GNU settings.
authorJan Nieuwenhuizen <janneke@gnu.org>
Wed, 27 Mar 2019 12:20:26 +0000 (13:20 +0100)
committerJan Nieuwenhuizen <janneke@gnu.org>
Wed, 27 Mar 2019 12:20:26 +0000 (13:20 +0100)
* .dir-locals.el: Assert default GNU settings.

.dir-locals.el

index a1e852f10dc2102cf0767d36c3ac5293c130dbc3..5f81649c154be14e860daf76786274843339b459 100644 (file)
@@ -1,5 +1,5 @@
 ;;; GNU Mes --- Maxwell Equations of Software
-;;; Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;;
 ;;; This file is part of GNU Mes.
 ;;;
 ;;; You should have received a copy of the GNU General Public License
 ;;; along with GNU Mes.  If not, see <http://www.gnu.org/licenses/>.
 
-((nil
-  .
-  ((indent-tabs-mode . nil)
-   (eval
-    .
-    (progn
-      (let ((top (locate-dominating-file default-directory ".dir-locals.el"))))
-
-      (defun guile--manual-look-up (id mod)
-        (message "guile--manual-look-up id=%s => %s mod=%s" id (symbol-name id) mod)
-        (let ((info-lookup-other-window-flag
-               geiser-guile-manual-lookup-other-window-p))
-          (info-lookup-symbol (symbol-name id) 'scheme-mode))
-        (when geiser-guile-manual-lookup-other-window-p
-          (switch-to-buffer-other-window "*info*"))
-        (search-forward (format "%s" id) nil t))
-
-      (add-hook 'before-save-hook 'delete-trailing-whitespace nil t)
-
-      (defun guix-switch-profile (&optional profile)
-        "reset Emacs' environment by snarfing PROFILE/etc/profile"
-
-        (defun matches-in-string (regexp string)
-          "return a list of matches of REGEXP in STRING."
-          (let ((matches))
-            (save-match-data
-              (string-match "^" "")
-              (while (string-match regexp string (match-end 0))
-                (push (or (match-string 1 string) (match-string 0 string)) matches)))
-            matches))
-
-        (interactive "fprofile: ")
-        (let* ((output (shell-command-to-string (concat "GUIX_PROFILE= /bin/sh -x " profile "/etc/profile")))
-               (exports (matches-in-string "^[+] export \\(.*\\)" output)))
-          (mapcar (lambda (line) (apply #'setenv (split-string line "="))) exports )))
-
-      (defun shell-args-to-string (&rest args)
-        (shell-command-to-string (mapconcat 'identity args " ")))
+;; The GNU project defaults.  These are also the GNU Emacs defaults.
+;; Re-asserting theme here, however, as a courtesy for setups that use
+;; a global override.
+(
+ ;; For writing GNU C code, see
+ ;; https://www.gnu.org/prep/standards/html_node/Writing-C.html
+ (c-mode . ((c-file-style . "gnu")
+            (indent-tabs-mode . nil)))
 
-      (defun as (string &optional arch)
-        (let* ((arch (or arch "--64"))
-               (asm (subst-char-in-string ?_ ?\s string))
-               (foo (message "asm:%S" asm))
-               (result (shell-args-to-string "as" arch (concat "<(echo '" asm "')")))
-               (disassembly (shell-args-to-string "objdump" "-d" "a.out"))
-               (foo (message "disassembly: %S" disassembly))
-               (match (string-match "^   0:[\t]\\([^\t]*\\)" disassembly))
-               (code (match-string 1 disassembly))
-               (code (apply 'concat (split-string code " " t))))
-          (insert " ")
-          (insert code)))
+ (makefile-mode . ((indent-tabs-mode . t)))
 
-      (defun as-32 (point mark)
-        (interactive "r")
-        (let* ((string (buffer-substring point mark))
-               (code (as string "--32")))
-          (insert " ")
-          (insert code)))
+ (nil . ((indent-tabs-mode . nil)
+         (fill-column . 72)))
 
-      (defun as-64 (point mark)
-        (interactive "r")
-        (let* ((string (buffer-substring point mark))
-               (code (as string "--64")))
-          (insert " ")
-          (insert code)))))))
- (makefile-mode
-  (indent-tabs-mode . t))
  (scheme-mode
   .
   ((geiser-active-implementations . (guile))
        (mapcar
         #'prefix-dir-locals-dir
         '("scripts" "module")))))))
+
  (texinfo-mode    . ((indent-tabs-mode . nil)
-                     (fill-column . 72))))
+                     (fill-column . 72)))
+ (nil .
+      ((eval
+        .
+        (progn
+         (let ((top (locate-dominating-file default-directory ".dir-locals.el"))))
+
+         (defun guile--manual-look-up (id mod)
+            (message "guile--manual-look-up id=%s => %s mod=%s" id (symbol-name id) mod)
+            (let ((info-lookup-other-window-flag
+                  geiser-guile-manual-lookup-other-window-p))
+              (info-lookup-symbol (symbol-name id) 'scheme-mode))
+            (when geiser-guile-manual-lookup-other-window-p
+              (switch-to-buffer-other-window "*info*"))
+            (search-forward (format "%s" id) nil t))
+
+         (add-hook 'before-save-hook 'delete-trailing-whitespace nil t)
+
+         (defun guix-switch-profile (&optional profile)
+            "reset Emacs' environment by snarfing PROFILE/etc/profile"
+
+            (defun matches-in-string (regexp string)
+              "return a list of matches of REGEXP in STRING."
+              (let ((matches))
+               (save-match-data
+                 (string-match "^" "")
+                 (while (string-match regexp string (match-end 0))
+                    (push (or (match-string 1 string) (match-string 0 string)) matches)))
+               matches))
+
+            (interactive "fprofile: ")
+            (let* ((output (shell-command-to-string (concat "GUIX_PROFILE= /bin/sh -x " profile "/etc/profile")))
+                  (exports (matches-in-string "^[+] export \\(.*\\)" output)))
+              (mapcar (lambda (line) (apply #'setenv (split-string line "="))) exports )))
+
+         (defun shell-args-to-string (&rest args)
+            (shell-command-to-string (mapconcat 'identity args " ")))
+
+         (defun as (string &optional arch)
+            (let* ((arch (or arch "--64"))
+                  (asm (subst-char-in-string ?_ ?\s string))
+                  (foo (message "asm:%S" asm))
+                  (result (shell-args-to-string "as" arch (concat "<(echo '" asm "')")))
+                  (disassembly (shell-args-to-string "objdump" "-d" "a.out"))
+                  (foo (message "disassembly: %S" disassembly))
+                  (match (string-match "^   0:[\t]\\([^\t]*\\)" disassembly))
+                  (code (match-string 1 disassembly))
+                  (code (apply 'concat (split-string code " " t))))
+              (insert " ")
+              (insert code)))
+
+         (defun as-32 (point mark)
+            (interactive "r")
+            (let* ((string (buffer-substring point mark))
+                  (code (as string "--32")))
+              (insert " ")
+              (insert code)))
+
+         (defun as-64 (point mark)
+            (interactive "r")
+            (let* ((string (buffer-substring point mark))
+                  (code (as string "--64")))
+              (insert " ")
+              (insert code))))))))