aboutsummaryrefslogtreecommitdiffstats
path: root/oni/home/services/emacs.scm
diff options
context:
space:
mode:
Diffstat (limited to 'oni/home/services/emacs.scm')
-rw-r--r--oni/home/services/emacs.scm32
1 files changed, 30 insertions, 2 deletions
diff --git a/oni/home/services/emacs.scm b/oni/home/services/emacs.scm
index a9ba9d7..360ce3b 100644
--- a/oni/home/services/emacs.scm
+++ b/oni/home/services/emacs.scm
@@ -4,7 +4,9 @@
define-configuration
define-configuration/no-serialization
text-config?
- serialize-text-config))
+ serialize-text-config
+ define-maybe
+ maybe-value-set?))
#:use-module ((gnu packages emacs)
#:select (emacs))
#:use-module ((gnu packages emacs-xyz)
@@ -48,6 +50,8 @@
home-emacs-ace-link-service-type
home-emacs-ace-link-configuration))
+(define-maybe string)
+
(define-configuration/no-serialization home-emacs-extension
(configurations
(text-config '())
@@ -242,6 +246,15 @@
(package
(package emacs-ace-link)
"Package to use for setting emacs-ace-link.")
+ (default-key
+ (string "o")
+ "Key to use as the default keybinding.")
+ (goto-address-key
+ maybe-string
+ "Key to use (if any) to bind with goto-address-mode.")
+ (org-mode-key
+ maybe-string
+ "Key to use (if any) to bind with org-mode.")
(configurations
(text-config '())
"Configuration for emacs-ace-link."))
@@ -251,7 +264,22 @@
(configurations
(append
(list (mixed-text-file "ace-link-config"
- "(ace-link-setup-default)\n"))
+ ";;;;; ace-link-config starts here.\n"
+ (format #f "(ace-link-setup-default (kbd ~s))~%"
+ (home-emacs-ace-link-configuration-default-key config))
+ (let ((goto-address-key
+ (home-emacs-ace-link-configuration-goto-address-key config)))
+ (if (maybe-value-set? goto-address-key)
+ (string-append (format #f "(defun ace-link-config-set-goto-address-key () (local-set-key (kbd ~s) 'ace-link-addr))~%" goto-address-key)
+ "(add-hook 'goto-address-prog-mode-hook #'ace-link-config-set-goto-address-key)\n"
+ "(add-hook 'goto-address-mode-hook #'ace-link-config-set-goto-address-key)\n")
+ ""))
+ (let ((org-mode-key
+ (home-emacs-ace-link-configuration-org-mode-key config)))
+ (if (maybe-value-set? org-mode-key)
+ (format #f "(with-eval-after-load 'org (define-key org-mode-map (kbd ~s) 'ace-link-org))\n" org-mode-key)
+ ""))
+ ";;;;; ace-link-config ends here.\n"))
(home-emacs-ace-link-configuration-configurations config)))))
(define (add-emacs-ace-link-packages config)