-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Sync Emacs dir local vars from Guix repo
Guix Git commit id: 3db1a8341c815af3673c367518fbb193f5592864 [skip ci]
- Loading branch information
Showing
1 changed file
with
183 additions
and
31 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,33 +1,185 @@ | ||
;;; Directory Local Variables | ||
;;; For more information see (info "(emacs) Directory Variables") | ||
;; Per-directory local variables for GNU Emacs 23 and later. | ||
|
||
((scheme-mode | ||
((nil | ||
. ((fill-column . 78) | ||
(tab-width . 8) | ||
(sentence-end-double-space . t) | ||
|
||
;; For use with 'bug-reference-prog-mode'. Extra bug-reference | ||
;; configuration should be done in your Emacs user configuration file; | ||
;; refer to (info (guix) The Perfect Setup). | ||
(bug-reference-bug-regexp | ||
. "\\(<https?://\\bugs\\.gnu\\.org/\\([0-9]+\\)>\\)") | ||
(bug-reference-url-format . "https://issues.guix.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). | ||
(geiser-repl-per-project-p . t))) | ||
|
||
(c-mode . ((c-file-style . "gnu"))) | ||
(scheme-mode | ||
. | ||
((eval | ||
. | ||
(progn | ||
;; The following code is copied from: | ||
;; | ||
;; https://git.savannah.gnu.org/cgit/guix.git/commit/?id=c9fb789fe9eaa5dc0694ef14fe36e5aa821a646c | ||
;; | ||
;; 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). | ||
(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)))))) | ||
((indent-tabs-mode . nil) | ||
(eval . (put 'eval-when 'scheme-indent-function 1)) | ||
(eval . (put 'call-with-prompt 'scheme-indent-function 1)) | ||
(eval . (put 'test-assert 'scheme-indent-function 1)) | ||
(eval . (put 'test-assertm 'scheme-indent-function 1)) | ||
(eval . (put 'test-equalm 'scheme-indent-function 1)) | ||
(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 3)) | ||
(eval . (put 'match-record-lambda 'scheme-indent-function 2)) | ||
|
||
;; TODO: Contribute these to Emacs' scheme-mode. | ||
(eval . (put 'let-keywords 'scheme-indent-function 3)) | ||
|
||
;; '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)) | ||
(eval . (put 'add-before 'scheme-indent-function 2)) | ||
(eval . (put 'add-after 'scheme-indent-function 2)) | ||
|
||
(eval . (put 'modify-services 'scheme-indent-function 1)) | ||
(eval . (put 'with-directory-excursion 'scheme-indent-function 1)) | ||
(eval . (put 'with-file-lock 'scheme-indent-function 1)) | ||
(eval . (put 'with-file-lock/no-wait 'scheme-indent-function 1)) | ||
(eval . (put 'with-profile-lock 'scheme-indent-function 1)) | ||
(eval . (put 'with-writable-file 'scheme-indent-function 2)) | ||
|
||
(eval . (put 'package 'scheme-indent-function 0)) | ||
(eval . (put 'package/inherit 'scheme-indent-function 1)) | ||
(eval . (put 'origin 'scheme-indent-function 0)) | ||
(eval . (put 'build-system 'scheme-indent-function 0)) | ||
(eval . (put 'bag 'scheme-indent-function 0)) | ||
(eval . (put 'graft 'scheme-indent-function 0)) | ||
(eval . (put 'operating-system 'scheme-indent-function 0)) | ||
(eval . (put 'file-system 'scheme-indent-function 0)) | ||
(eval . (put 'swap-space 'scheme-indent-function 0)) | ||
(eval . (put 'manifest-entry 'scheme-indent-function 0)) | ||
(eval . (put 'manifest-pattern 'scheme-indent-function 0)) | ||
(eval . (put 'substitute-keyword-arguments 'scheme-indent-function 1)) | ||
(eval . (put 'with-store 'scheme-indent-function 1)) | ||
(eval . (put 'with-store/non-blocking 'scheme-indent-function 1)) | ||
(eval . (put 'with-external-store 'scheme-indent-function 1)) | ||
(eval . (put 'with-error-handling 'scheme-indent-function 0)) | ||
(eval . (put 'with-mutex 'scheme-indent-function 1)) | ||
(eval . (put 'with-atomic-file-output 'scheme-indent-function 1)) | ||
(eval . (put 'call-with-compressed-output-port 'scheme-indent-function 2)) | ||
(eval . (put 'call-with-decompressed-port 'scheme-indent-function 2)) | ||
(eval . (put 'call-with-gzip-input-port 'scheme-indent-function 1)) | ||
(eval . (put 'call-with-gzip-output-port 'scheme-indent-function 1)) | ||
(eval . (put 'call-with-lzip-input-port 'scheme-indent-function 1)) | ||
(eval . (put 'call-with-lzip-output-port 'scheme-indent-function 1)) | ||
(eval . (put 'signature-case 'scheme-indent-function 1)) | ||
(eval . (put 'emacs-batch-eval 'scheme-indent-function 0)) | ||
(eval . (put 'emacs-batch-edit-file 'scheme-indent-function 1)) | ||
(eval . (put 'emacs-substitute-sexps 'scheme-indent-function 1)) | ||
(eval . (put 'emacs-substitute-variables 'scheme-indent-function 1)) | ||
(eval . (put 'with-derivation-narinfo 'scheme-indent-function 1)) | ||
(eval . (put 'with-derivation-substitute 'scheme-indent-function 2)) | ||
(eval . (put 'with-status-report 'scheme-indent-function 1)) | ||
(eval . (put 'with-status-verbosity 'scheme-indent-function 1)) | ||
(eval . (put 'with-build-handler 'scheme-indent-function 1)) | ||
|
||
(eval . (put 'mlambda 'scheme-indent-function 1)) | ||
(eval . (put 'mlambdaq 'scheme-indent-function 1)) | ||
(eval . (put 'syntax-parameterize 'scheme-indent-function 1)) | ||
(eval . (put 'with-monad 'scheme-indent-function 1)) | ||
(eval . (put 'mbegin 'scheme-indent-function 1)) | ||
(eval . (put 'mwhen 'scheme-indent-function 1)) | ||
(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)) | ||
(eval . (put 'let-system 'scheme-indent-function 1)) | ||
(eval . (put 'with-build-variables 'scheme-indent-function 2)) | ||
|
||
(eval . (put 'with-database 'scheme-indent-function 2)) | ||
(eval . (put 'call-with-database 'scheme-indent-function 1)) | ||
(eval . (put 'call-with-transaction 'scheme-indent-function 1)) | ||
(eval . (put 'call-with-retrying-transaction 'scheme-indent-function 1)) | ||
|
||
(eval . (put 'call-with-container 'scheme-indent-function 1)) | ||
(eval . (put 'container-excursion 'scheme-indent-function 1)) | ||
(eval . (put 'eventually 'scheme-indent-function 1)) | ||
|
||
(eval . (put 'call-with-progress-reporter 'scheme-indent-function 1)) | ||
(eval . (put 'with-repository 'scheme-indent-function 2)) | ||
(eval . (put 'with-temporary-git-repository 'scheme-indent-function 2)) | ||
(eval . (put 'with-environment-variables 'scheme-indent-function 1)) | ||
(eval . (put 'with-fresh-gnupg-setup 'scheme-indent-function 1)) | ||
|
||
(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 ?+ "'")) | ||
|
||
;; 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)))) |