76ab53691f7fcf3cb6bb049987b993e8cfd67960
[mes.git] / .dir-locals.el
1 ((nil
2   .
3   ((indent-tabs-mode . nil)
4    (eval
5     .
6     (progn
7       (let ((top (locate-dominating-file default-directory ".dir-locals.el"))))
8
9       (defun guile--manual-look-up (id mod)
10         (message "guile--manual-look-up id=%s => %s mod=%s" id (symbol-name id) mod)
11         (let ((info-lookup-other-window-flag
12                geiser-guile-manual-lookup-other-window-p))
13           (info-lookup-symbol (symbol-name id) 'scheme-mode))
14         (when geiser-guile-manual-lookup-other-window-p
15           (switch-to-buffer-other-window "*info*"))
16         (search-forward (format "%s" id) nil t))
17
18       (add-hook 'before-save-hook 'delete-trailing-whitespace nil t)
19
20       (defun guix-switch-profile (&optional profile)
21         "reset Emacs' environment by snarfing PROFILE/etc/profile"
22
23         (defun matches-in-string (regexp string)
24           "return a list of matches of REGEXP in STRING."
25           (let ((matches))
26             (save-match-data
27               (string-match "^" "")
28               (while (string-match regexp string (match-end 0))
29                 (push (or (match-string 1 string) (match-string 0 string)) matches)))
30             matches))
31
32         (interactive "fprofile: ")
33         (let* ((output (shell-command-to-string (concat "GUIX_PROFILE= /bin/sh -x " profile "/etc/profile")))
34                (exports (matches-in-string "^[+] export \\(.*\\)" output)))
35           (mapcar (lambda (line) (apply #'setenv (split-string line "="))) exports )))
36 ))))
37  (scheme-mode
38   .
39   ((geiser-active-implementations . (guile))
40    (eval
41     .
42     (progn
43       (defun prefix-dir-locals-dir (elt)
44         (concat (locate-dominating-file buffer-file-name ".dir-locals.el") elt))
45       (mapcar
46        (lambda (dir) (add-to-list 'geiser-guile-load-path dir))
47        (mapcar
48         #'prefix-dir-locals-dir
49         '("scripts" "guile"))))))))