1 ;; Per-directory local variables for GNU Emacs 23 and later.
6 (sentence-end-double-space . t
)
8 ;; For use with 'bug-reference-prog-mode'.
9 (bug-reference-bug-regexp
10 .
"\\(<https?://\\bugs\\.gnu\\.org/\\([0-9]+\\)>\\)")
11 (bug-reference-url-format .
"https://bugs.gnu.org/%s")
13 (eval .
(add-to-list 'completion-ignored-extensions
".go"))
16 (eval .
(setq-local guix-directory
17 (locate-dominating-file default-directory
21 (eval .
(with-eval-after-load
23 (let ((guix-yasnippets
26 (locate-dominating-file default-directory
28 (unless (member guix-yasnippets yas-snippet-dirs
)
29 (add-to-list 'yas-snippet-dirs guix-yasnippets
)
33 ;; This allows automatically setting the `geiser-guile-load-path'
34 ;; variable when using various Guix checkouts (e.g., via git worktrees).
35 (eval .
(let ((root-dir-unexpanded (locate-dominating-file
36 default-directory
".dir-locals.el")))
37 ;; While Guix should in theory always have a .dir-locals.el
38 ;; (we are reading this file, after all) there seems to be a
39 ;; strange problem where this code "escapes" to some other buffers,
40 ;; at least vc-mode. See:
41 ;; https://lists.gnu.org/archive/html/guix-devel/2020-11/msg00296.html
42 ;; Upstream report: <https://bugs.gnu.org/44698>
43 ;; Hence the following "when", which might otherwise be unnecessary;
44 ;; it prevents causing an error when root-dir-unexpanded is nil.
45 (when root-dir-unexpanded
46 (let* ((root-dir (expand-file-name root-dir-unexpanded
))
47 ;; Workaround for bug https://issues.guix.gnu.org/43818.
48 (root-dir* (directory-file-name root-dir
)))
50 (unless (boundp 'geiser-guile-load-path
)
51 (defvar geiser-guile-load-path
'()))
52 (make-local-variable 'geiser-guile-load-path
)
54 (cl-pushnew root-dir
* geiser-guile-load-path
55 :test
#'string-equal
)))))))
57 (c-mode .
((c-file-style .
"gnu")))
60 ((indent-tabs-mode . nil
)
61 (eval .
(put 'eval-when
'scheme-indent-function
1))
62 (eval .
(put 'call-with-prompt
'scheme-indent-function
1))
63 (eval .
(put 'test-assert
'scheme-indent-function
1))
64 (eval .
(put 'test-assertm
'scheme-indent-function
1))
65 (eval .
(put 'test-equalm
'scheme-indent-function
1))
66 (eval .
(put 'test-equal
'scheme-indent-function
1))
67 (eval .
(put 'test-eq
'scheme-indent-function
1))
68 (eval .
(put 'call-with-input-string
'scheme-indent-function
1))
69 (eval .
(put 'call-with-port
'scheme-indent-function
1))
70 (eval .
(put 'guard
'scheme-indent-function
1))
71 (eval .
(put 'lambda
* 'scheme-indent-function
1))
72 (eval .
(put 'substitute
* 'scheme-indent-function
1))
73 (eval .
(put 'match-record
'scheme-indent-function
2))
75 ;; 'modify-inputs' and its keywords.
76 (eval .
(put 'modify-inputs
'scheme-indent-function
1))
77 (eval .
(put 'replace
'scheme-indent-function
1))
79 ;; 'modify-phases' and its keywords.
80 (eval .
(put 'modify-phases
'scheme-indent-function
1))
81 (eval .
(put 'replace
'scheme-indent-function
1))
82 (eval .
(put 'add-before
'scheme-indent-function
2))
83 (eval .
(put 'add-after
'scheme-indent-function
2))
85 (eval .
(put 'modify-services
'scheme-indent-function
1))
86 (eval .
(put 'with-directory-excursion
'scheme-indent-function
1))
87 (eval .
(put 'with-file-lock
'scheme-indent-function
1))
88 (eval .
(put 'with-file-lock
/no-wait
'scheme-indent-function
1))
89 (eval .
(put 'with-profile-lock
'scheme-indent-function
1))
90 (eval .
(put 'with-writable-file
'scheme-indent-function
2))
92 (eval .
(put 'package
'scheme-indent-function
0))
93 (eval .
(put 'package
/inherit
'scheme-indent-function
1))
94 (eval .
(put 'origin
'scheme-indent-function
0))
95 (eval .
(put 'build-system
'scheme-indent-function
0))
96 (eval .
(put 'bag
'scheme-indent-function
0))
97 (eval .
(put 'gexp-
>derivation
'scheme-indent-function
1))
98 (eval .
(put 'graft
'scheme-indent-function
0))
99 (eval .
(put 'operating-system
'scheme-indent-function
0))
100 (eval .
(put 'file-system
'scheme-indent-function
0))
101 (eval .
(put 'manifest-entry
'scheme-indent-function
0))
102 (eval .
(put 'manifest-pattern
'scheme-indent-function
0))
103 (eval .
(put 'substitute-keyword-arguments
'scheme-indent-function
1))
104 (eval .
(put 'with-store
'scheme-indent-function
1))
105 (eval .
(put 'with-external-store
'scheme-indent-function
1))
106 (eval .
(put 'with-error-handling
'scheme-indent-function
0))
107 (eval .
(put 'with-mutex
'scheme-indent-function
1))
108 (eval .
(put 'with-atomic-file-output
'scheme-indent-function
1))
109 (eval .
(put 'call-with-compressed-output-port
'scheme-indent-function
2))
110 (eval .
(put 'call-with-decompressed-port
'scheme-indent-function
2))
111 (eval .
(put 'call-with-gzip-input-port
'scheme-indent-function
1))
112 (eval .
(put 'call-with-gzip-output-port
'scheme-indent-function
1))
113 (eval .
(put 'call-with-lzip-input-port
'scheme-indent-function
1))
114 (eval .
(put 'call-with-lzip-output-port
'scheme-indent-function
1))
115 (eval .
(put 'signature-case
'scheme-indent-function
1))
116 (eval .
(put 'emacs-batch-eval
'scheme-indent-function
0))
117 (eval .
(put 'emacs-batch-edit-file
'scheme-indent-function
1))
118 (eval .
(put 'emacs-substitute-sexps
'scheme-indent-function
1))
119 (eval .
(put 'emacs-substitute-variables
'scheme-indent-function
1))
120 (eval .
(put 'with-derivation-narinfo
'scheme-indent-function
1))
121 (eval .
(put 'with-derivation-substitute
'scheme-indent-function
2))
122 (eval .
(put 'with-status-report
'scheme-indent-function
1))
123 (eval .
(put 'with-status-verbosity
'scheme-indent-function
1))
124 (eval .
(put 'with-build-handler
'scheme-indent-function
1))
126 (eval .
(put 'mlambda
'scheme-indent-function
1))
127 (eval .
(put 'mlambdaq
'scheme-indent-function
1))
128 (eval .
(put 'syntax-parameterize
'scheme-indent-function
1))
129 (eval .
(put 'with-monad
'scheme-indent-function
1))
130 (eval .
(put 'mbegin
'scheme-indent-function
1))
131 (eval .
(put 'mwhen
'scheme-indent-function
1))
132 (eval .
(put 'munless
'scheme-indent-function
1))
133 (eval .
(put 'mlet
* 'scheme-indent-function
2))
134 (eval .
(put 'mlet
'scheme-indent-function
2))
135 (eval .
(put 'mparameterize
'scheme-indent-function
2))
136 (eval .
(put 'run-with-store
'scheme-indent-function
1))
137 (eval .
(put 'run-with-state
'scheme-indent-function
1))
138 (eval .
(put 'wrap-program
'scheme-indent-function
1))
139 (eval .
(put 'wrap-script
'scheme-indent-function
1))
140 (eval .
(put 'with-imported-modules
'scheme-indent-function
1))
141 (eval .
(put 'with-extensions
'scheme-indent-function
1))
142 (eval .
(put 'with-parameters
'scheme-indent-function
1))
143 (eval .
(put 'let-system
'scheme-indent-function
1))
144 (eval .
(put 'with-build-variables
'scheme-indent-function
2))
146 (eval .
(put 'with-database
'scheme-indent-function
2))
147 (eval .
(put 'call-with-database
'scheme-indent-function
1))
148 (eval .
(put 'call-with-transaction
'scheme-indent-function
1))
149 (eval .
(put 'with-statement
'scheme-indent-function
3))
150 (eval .
(put 'call-with-retrying-transaction
'scheme-indent-function
1))
151 (eval .
(put 'call-with-savepoint
'scheme-indent-function
1))
152 (eval .
(put 'call-with-retrying-savepoint
'scheme-indent-function
1))
154 (eval .
(put 'call-with-container
'scheme-indent-function
1))
155 (eval .
(put 'container-excursion
'scheme-indent-function
1))
156 (eval .
(put 'eventually
'scheme-indent-function
1))
158 (eval .
(put 'call-with-progress-reporter
'scheme-indent-function
1))
159 (eval .
(put 'with-repository
'scheme-indent-function
2))
160 (eval .
(put 'with-temporary-git-repository
'scheme-indent-function
2))
161 (eval .
(put 'with-environment-variables
'scheme-indent-function
1))
162 (eval .
(put 'with-fresh-gnupg-setup
'scheme-indent-function
1))
164 (eval .
(put 'with-paginated-output-port
'scheme-indent-function
1))
166 (eval .
(put 'with-shepherd-action
'scheme-indent-function
3))
168 (eval .
(put 'with-http-server
'scheme-indent-function
1))
170 ;; This notably allows '(' in Paredit to not insert a space when the
171 ;; preceding symbol is one of these.
172 (eval .
(modify-syntax-entry ?~
"'"))
173 (eval .
(modify-syntax-entry ?$
"'"))
174 (eval .
(modify-syntax-entry ?
+ "'"))
176 ;; Emacs 28 changed the behavior of 'lisp-fill-paragraph', which causes the
177 ;; first line of package descriptions to extrude past 'fill-column', and
178 ;; somehow that is deemed more correct upstream (see:
179 ;; https://issues.guix.gnu.org/56197).
182 (defun emacs27-lisp-fill-paragraph (&optional justify
)
184 (or (fill-comment-paragraph justify
)
185 (let ((paragraph-start
186 (concat paragraph-start
187 "\\|\\s-*\\([(;\"]\\|\\s-:\\|`(\\|#'(\\)"))
189 (concat paragraph-separate
"\\|\\s-*\".*[,\\.]$"))
190 (fill-column (if (and (integerp emacs-lisp-docstring-fill-column
)
191 (derived-mode-p 'emacs-lisp-mode
))
192 emacs-lisp-docstring-fill-column
194 (fill-paragraph justify
))
197 (setq-local fill-paragraph-function
#'emacs27-lisp-fill-paragraph
)))))
199 (emacs-lisp-mode .
((indent-tabs-mode . nil
)))
200 (texinfo-mode .
((indent-tabs-mode . nil
)
201 (fill-column .
72))))