X-Git-Url: http://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/9dea3f101f252331c049c03f501398a5ec837ba9..c28598db5bf7590786b25a543d948ad95e6fc0dd:/.dir-locals.el diff --git a/.dir-locals.el b/.dir-locals.el index 378071ea67..47a4ccd2bb 100644 --- a/.dir-locals.el +++ b/.dir-locals.el @@ -6,15 +6,29 @@ (sentence-end-double-space . t) ;; For use with 'bug-reference-prog-mode'. - (bug-reference-url-format . "http://bugs.gnu.org/%s") (bug-reference-bug-regexp - . "") + . "\\(\\)") + (bug-reference-url-format . "https://bugs.gnu.org/%s") + + (eval . (add-to-list 'completion-ignored-extensions ".go")) ;; Emacs-Guix (eval . (setq-local guix-directory (locate-dominating-file default-directory ".dir-locals.el"))) + ;; YASnippet + (eval . (with-eval-after-load + 'yasnippet + (let ((guix-yasnippets + (expand-file-name + "etc/snippets/yas" + (locate-dominating-file default-directory + ".dir-locals.el")))) + (unless (member guix-yasnippets yas-snippet-dirs) + (add-to-list 'yas-snippet-dirs guix-yasnippets) + (yas-reload-all))))) + ;; Geiser ;; This allows automatically setting the `geiser-guile-load-path' ;; variable when using various Guix checkouts (e.g., via git worktrees). @@ -52,11 +66,16 @@ (eval . (put 'test-equal 'scheme-indent-function 1)) (eval . (put 'test-eq 'scheme-indent-function 1)) (eval . (put 'call-with-input-string 'scheme-indent-function 1)) + (eval . (put 'call-with-port 'scheme-indent-function 1)) (eval . (put 'guard 'scheme-indent-function 1)) (eval . (put 'lambda* 'scheme-indent-function 1)) (eval . (put 'substitute* 'scheme-indent-function 1)) (eval . (put 'match-record 'scheme-indent-function 2)) + ;; 'modify-inputs' and its keywords. + (eval . (put 'modify-inputs 'scheme-indent-function 1)) + (eval . (put 'replace 'scheme-indent-function 1)) + ;; 'modify-phases' and its keywords. (eval . (put 'modify-phases 'scheme-indent-function 1)) (eval . (put 'replace 'scheme-indent-function 1)) @@ -75,6 +94,7 @@ (eval . (put 'origin 'scheme-indent-function 0)) (eval . (put 'build-system 'scheme-indent-function 0)) (eval . (put 'bag 'scheme-indent-function 0)) + (eval . (put 'gexp->derivation 'scheme-indent-function 1)) (eval . (put 'graft 'scheme-indent-function 0)) (eval . (put 'operating-system 'scheme-indent-function 0)) (eval . (put 'file-system 'scheme-indent-function 0)) @@ -112,9 +132,11 @@ (eval . (put 'munless 'scheme-indent-function 1)) (eval . (put 'mlet* 'scheme-indent-function 2)) (eval . (put 'mlet 'scheme-indent-function 2)) + (eval . (put 'mparameterize 'scheme-indent-function 2)) (eval . (put 'run-with-store 'scheme-indent-function 1)) (eval . (put 'run-with-state 'scheme-indent-function 1)) (eval . (put 'wrap-program 'scheme-indent-function 1)) + (eval . (put 'wrap-script 'scheme-indent-function 1)) (eval . (put 'with-imported-modules 'scheme-indent-function 1)) (eval . (put 'with-extensions 'scheme-indent-function 1)) (eval . (put 'with-parameters 'scheme-indent-function 1)) @@ -141,11 +163,39 @@ (eval . (put 'with-paginated-output-port 'scheme-indent-function 1)) + (eval . (put 'with-shepherd-action 'scheme-indent-function 3)) + + (eval . (put 'with-http-server 'scheme-indent-function 1)) + ;; This notably allows '(' in Paredit to not insert a space when the ;; preceding symbol is one of these. (eval . (modify-syntax-entry ?~ "'")) (eval . (modify-syntax-entry ?$ "'")) - (eval . (modify-syntax-entry ?+ "'")))) + (eval . (modify-syntax-entry ?+ "'")) + + ;; Emacs 28 changed the behavior of 'lisp-fill-paragraph', which causes the + ;; first line of package descriptions to extrude past 'fill-column', and + ;; somehow that is deemed more correct upstream (see: + ;; https://issues.guix.gnu.org/56197). + (eval . (progn + (require 'lisp-mode) + (defun emacs27-lisp-fill-paragraph (&optional justify) + (interactive "P") + (or (fill-comment-paragraph justify) + (let ((paragraph-start + (concat paragraph-start + "\\|\\s-*\\([(;\"]\\|\\s-:\\|`(\\|#'(\\)")) + (paragraph-separate + (concat paragraph-separate "\\|\\s-*\".*[,\\.]$")) + (fill-column (if (and (integerp emacs-lisp-docstring-fill-column) + (derived-mode-p 'emacs-lisp-mode)) + emacs-lisp-docstring-fill-column + fill-column))) + (fill-paragraph justify)) + ;; Never return nil. + t)) + (setq-local fill-paragraph-function #'emacs27-lisp-fill-paragraph))))) + (emacs-lisp-mode . ((indent-tabs-mode . nil))) (texinfo-mode . ((indent-tabs-mode . nil) (fill-column . 72))))