summary refs log tree commit diff stats
path: root/init.el
diff options
context:
space:
mode:
Diffstat (limited to 'init.el')
-rw-r--r--init.el198
1 files changed, 144 insertions, 54 deletions
diff --git a/init.el b/init.el index 264378c..c8fb4e7 100644 --- a/init.el +++ b/init.el
@@ -21,21 +21,39 @@
21 21
22(use-package emacs ; Misc. config 22(use-package emacs ; Misc. config
23 :config 23 :config
24 (setopt tab-bar-show 1 24 (setopt recenter-positions '(top middle bottom)
25 recenter-positions '(top middle bottom)
26 initial-scratch-message 25 initial-scratch-message
27 (format "%s\n\n" 26 (format "%s\n\n"
28 (mapconcat (lambda (s) (format ";; %s" s)) 27 (mapconcat (lambda (s) (format ";; %s" s))
29 (process-lines "fortune" "-s") 28 (process-lines "fortune" "-s")
30 "\n"))) 29 "\n")))
31 (keymap-global-unset "C-\\") 30 (keymap-global-unset "C-\\")
31 (keymap-global-unset "<f2>")
32 (add-hook 'kill-buffer-query-functions 32 (add-hook 'kill-buffer-query-functions
33 (defun scratch@immortal () 33 (defun scratch@immortal ()
34 (if (equal (buffer-name) "*scratch*") 34 (if (equal (buffer-name) "*scratch*")
35 (progn (bury-buffer) nil) 35 (progn (bury-buffer) nil)
36 t))) 36 t)))
37 (setf (alist-get "\\*Compile-Log\\*" display-buffer-alist nil nil #'equal) 37 (setf (alist-get "\\*Compile-Log\\*" display-buffer-alist nil nil #'equal)
38 '(display-buffer-no-window))) 38 '(display-buffer-no-window))
39 (add-hook 'after-init-hook
40 (defun global-mode-string@setup ()
41 (defvar jabber-activity-mode-string)
42 (defvar org-mode-line-string)
43 (defvar display-time-mode)
44 (defvar display-time-string)
45 (setf global-mode-string
46 '((t jabber-activity-mode-string)
47 org-mode-line-string
48 (display-time-mode display-time-string)))))
49 (keymap-global-set "C-c t"
50 (define-keymap
51 :prefix 'toggle-map
52 "e" #'toggle-debug-on-error
53 "q" #'toggle-debug-on-quit
54 "c" #'column-number-mode
55 "l" #'line-number-mode
56 "L" #'display-line-numbers-mode)))
39 57
40(use-package faces 58(use-package faces
41 :config 59 :config
@@ -123,7 +141,7 @@
123 141
124(use-package ispell 142(use-package ispell
125 :config 143 :config
126 (setopt ispell-program-name (choose-executable "ispell" "aspell")) 144 (setopt ispell-program-name (choose-executable "aspell" "ispell"))
127 (add-hook 'before-save-hook 145 (add-hook 'before-save-hook
128 #'+ispell-move-buffer-words-to-dir-locals-hook) 146 #'+ispell-move-buffer-words-to-dir-locals-hook)
129 (put 'ispell-buffer-session-localwords 'safe-local-variable 147 (put 'ispell-buffer-session-localwords 'safe-local-variable
@@ -227,6 +245,34 @@
227 ("w" . Info-copy-current-node-name-0) 245 ("w" . Info-copy-current-node-name-0)
228 ("c" . Info-copy-current-node-name))) 246 ("c" . Info-copy-current-node-name)))
229 247
248(use-package make-mode
249 :defer t
250 :config
251 (add-hook 'makefile-mode-hook
252 (defun make-mode@setup ()
253 (remove-hook 'write-file-functions
254 #'makefile-warn-suspicious-lines t)
255 (remove-hook 'write-file-functions
256 #'makefile-warn-continuations t))))
257
258(use-package eglot
259 :preface
260 (defun +eglot-eldoc ()
261 ;; https://www.masteringemacs.org/article/seamlessly-merge-multiple-documentation-sources-eldoc
262 (setq eldoc-documentation-strategy #'eldoc-documentation-compose-eagerly))
263 :hook
264 ((bash-ts-mode . eglot))
265 :config
266 (add-hook 'eglot-managed-mode . +eglot-eldoc))
267
268(use-package eldoc
269 :config
270 (setopt eldoc-documentation-strategy #'eldoc-documentation-compose-eagerly)
271 (setf (alist-get "^\\*eldoc for" display-buffer-alist nil nil #'equal)
272 '(display-buffer-at-bottom
273 (window-height . 4)))
274 (eldoc-add-command-completions "paredit-"))
275
230 276
231;;; Applications 277;;; Applications
232 278
@@ -298,8 +344,8 @@ With prefix ARG, toggle the value of
298 (not (eobp))) 344 (not (eobp)))
299 (titlecase-region (progn (org-beginning-of-line) (point)) 345 (titlecase-region (progn (org-beginning-of-line) (point))
300 (progn (org-end-of-line) (point))))))) 346 (progn (org-end-of-line) (point)))))))
301 :bind (:map scule-map 347 :config
302 ("M-t" . titlecase-dwim))) 348 (keymap-set scule-map "M-t" #'titlecase-dwim))
303 349
304(use-package scule 350(use-package scule
305 :load-path "~/src/emacs/scule/" 351 :load-path "~/src/emacs/scule/"
@@ -367,11 +413,16 @@ With prefix ARG, toggle the value of
367 ("." . jabber-muc-presence-dim)) 413 ("." . jabber-muc-presence-dim))
368 jabber-activity-make-strings #'jabber-activity-make-strings-shorten 414 jabber-activity-make-strings #'jabber-activity-make-strings-shorten
369 jabber-rare-time-format " - - - - - - %H:%M %F" 415 jabber-rare-time-format " - - - - - - %H:%M %F"
416 jabber-muc-header-line-format
417 '(" " (:eval (replace-regexp-in-string "%" "%%"
418 (jabber-jid-displayname
419 jabber-group)))
420 " / " jabber-muc-topic)
370 ;; buffer name formats 421 ;; buffer name formats
371 ;; jabber-chat-buffer-format "%n <xmpp>" 422 jabber-chat-buffer-format "*xmpp* %n"
372 ;; jabber-browse-buffer-format "%n <xmpp-browse>" 423 jabber-browse-buffer-format "*xmpp-browse* %n"
373 ;; jabber-groupchat-buffer-format "%n <xmpp-muc>" 424 jabber-groupchat-buffer-format "*xmpp-muc* %n"
374 ;; jabber-muc-private-buffer-format "%n <xmpp-muc-private>" 425 jabber-muc-private-buffer-format "*xmpp-muc-private* %n"
375 ;; "prompt" (speaker) formats 426 ;; "prompt" (speaker) formats
376 jabber-groupchat-prompt-format (format "%%>%dn | " jabber-prefix-width) 427 jabber-groupchat-prompt-format (format "%%>%dn | " jabber-prefix-width)
377 jabber-chat-local-prompt-format (format "%%>%dn | " jabber-prefix-width) 428 jabber-chat-local-prompt-format (format "%%>%dn | " jabber-prefix-width)
@@ -404,7 +455,8 @@ With prefix ARG, toggle the value of
404 (defun jabber-chat@leave-when-kill () 455 (defun jabber-chat@leave-when-kill ()
405 (add-hook 'kill-buffer-hook 456 (add-hook 'kill-buffer-hook
406 (defun @jabber-leave@kill () 457 (defun @jabber-leave@kill ()
407 (apply #'jabber-muc-leave (jabber-muc-argument-list))) 458 (ignore-errors
459 (apply #'jabber-muc-leave (jabber-muc-argument-list))))
408 nil :local))) 460 nil :local)))
409 (when (fboundp 'jabber-chat-update-focus) 461 (when (fboundp 'jabber-chat-update-focus)
410 (add-hook 'window-configuration-change-hook #'jabber-chat-update-focus)) 462 (add-hook 'window-configuration-change-hook #'jabber-chat-update-focus))
@@ -423,13 +475,17 @@ With prefix ARG, toggle the value of
423 (buffer-list)))))) 475 (buffer-list))))))
424 (add-to-list 'consult-buffer-sources 'jabber-chat-buffer-source :append) 476 (add-to-list 'consult-buffer-sources 'jabber-chat-buffer-source :append)
425 (consult-customize 477 (consult-customize
426 consult-buffer :preview-key (kbd "M-.")))) 478 consult-buffer :preview-key "M-.")))
427 479
428(use-package keepassxc-shim 480(use-package keepassxc-shim
429 :load-path "~/src/emacs/keepassxc-shim/" 481 :load-path "~/src/emacs/keepassxc-shim/"
430 :config 482 :config
431 (keepassxc-shim-activate)) 483 (keepassxc-shim-activate))
432 484
485(use-package hippie-completing-read
486 :load-path "~/src/emacs/hippie-completing-read/"
487 :bind (("M-/" . hippie-completing-read)))
488
433 489
434;;; External packages 490;;; External packages
435 491
@@ -620,9 +676,7 @@ The prefix argument is as in `visual-fill-column-widen' but negated."
620 prefix))))) 676 prefix)))))
621 ;; Add strings to this list to inhibit adding a space 677 ;; Add strings to this list to inhibit adding a space
622 ;; after them. 678 ;; after them.
623 '(",@")))))) 679 '(",@")))))))
624 (with-eval-after-load 'eldoc
625 (eldoc-add-command #'paredit-backward-delete #'paredit-close-round)))
626 680
627(use-package hungry-delete 681(use-package hungry-delete
628 :ensure t 682 :ensure t
@@ -666,9 +720,16 @@ The prefix argument is as in `visual-fill-column-widen' but negated."
666 :preface 720 :preface
667 (setopt inferior-lisp-program (choose-executable "sbcl")) 721 (setopt inferior-lisp-program (choose-executable "sbcl"))
668 :when inferior-lisp-program 722 :when inferior-lisp-program
669 :bind (:map sly-mode-map 723 :init
670 ("C-c C-z" . sly-mrepl)) 724 (defun +sly-start-or-mrepl ()
725 (interactive)
726 (if (ignore-errors (sly-connection))
727 (sly-mrepl (lambda (buf)
728 (display-buffer-pop-up-window buf nil)))
729 (call-interactively #'sly)))
671 :config 730 :config
731 (autoload 'sly-mrepl "sly-mrepl" nil t)
732 (keymap-set sly-mode-map "C-c C-z" #'+sly-start-or-mrepl)
672 (setopt sly-net-coding-system 'utf-8-unix) 733 (setopt sly-net-coding-system 'utf-8-unix)
673 (sly-symbol-completion-mode -1)) 734 (sly-symbol-completion-mode -1))
674 735
@@ -728,6 +789,9 @@ The prefix argument is as in `visual-fill-column-widen' but negated."
728 :ensure t 789 :ensure t
729 :bind ("C-x g" . magit)) 790 :bind ("C-x g" . magit))
730 791
792(use-package git-modes
793 :ensure t)
794
731(use-package eradio 795(use-package eradio
732 :ensure t 796 :ensure t
733 :preface 797 :preface
@@ -800,6 +864,13 @@ With PREFIX, prompt to change the current dictionary."
800 :bind (:map dired-mode-map 864 :bind (:map dired-mode-map
801 ("." . dired-hide-dotfiles-mode))) 865 ("." . dired-hide-dotfiles-mode)))
802 866
867(use-package dired-git-info
868 :ensure t
869 :bind (:map dired-mode-map
870 (")" . dired-git-info-mode))
871 :config
872 (setopt dgi-auto-hide-details-p nil))
873
803(use-package embrace 874(use-package embrace
804 :ensure t 875 :ensure t
805 :preface 876 :preface
@@ -860,45 +931,64 @@ With PREFIX, prompt to change the current dictionary."
860(use-package rec-mode 931(use-package rec-mode
861 :ensure t) 932 :ensure t)
862 933
863(use-package gauche-mode 934;; (use-package gauche-mode
864 :load-path "~/src/emacs/gauche-mode/" 935;; :load-path "~/src/emacs/gauche-mode/"
865 :mode "\\.scm\\'" 936;; :mode "\\.scm\\'"
866 :config 937;; :config
867 (setopt gauche-mode-info-language 'en 938;; (setopt gauche-mode-info-language 'en
868 scheme-program-name "gosh -i" 939;; scheme-program-name "gosh -i"
869 scheme-compile-exp-command "%s") 940;; scheme-compile-exp-command "%s")
870 (add-to-list 'scheme-source-modes 'gauche-mode) 941;; (add-to-list 'scheme-source-modes 'gauche-mode)
871 (setf (alist-get "\\*scheme\\*" display-buffer-alist nil nil #'equal) 942;; (setf (alist-get "\\*scheme\\*" display-buffer-alist nil nil #'equal)
872 '((display-buffer-reuse-window 943;; '((display-buffer-reuse-window
873 display-buffer-pop-up-window) 944;; display-buffer-pop-up-window)
874 (inhibit-same-window . t))) 945;; (inhibit-same-window . t)))
875 (add-hook 'gauche-mode-hook #'enable-gauche-paredit-mode) 946;; (add-hook 'gauche-mode-hook #'enable-gauche-paredit-mode)
876 (add-hook 'inferior-scheme-mode-hook #'enable-gauche-paredit-mode) 947;; (add-hook 'inferior-scheme-mode-hook #'enable-gauche-paredit-mode)
877 ;; Extras 948;; ;; Extras
878 (define-key gauche-mode-map (kbd "C-c C-k") 949;; (define-key gauche-mode-map (kbd "C-c C-k")
879 (defun +gauche-mode-send-buffer () 950;; (defun +gauche-mode-send-buffer ()
880 (interactive) 951;; (interactive)
881 (save-mark-and-excursion 952;; (save-mark-and-excursion
882 (let ((start (point-min)) 953;; (let ((start (point-min))
883 (end (point-max))) 954;; (end (point-max)))
884 (goto-char start) 955;; (goto-char start)
885 (while (or (looking-at "#!") ; Shebang 956;; (while (or (looking-at "#!") ; Shebang
886 (looking-at ":;") ; "shell trampoline" 957;; (looking-at ":;") ; "shell trampoline"
887 ) 958;; )
888 (forward-line 1) 959;; (forward-line 1)
889 (beginning-of-line) 960;; (beginning-of-line)
890 (setq start (point))) 961;; (setq start (point)))
891 (scheme-send-region-and-go start end)))))) 962;; (scheme-send-region-and-go start end))))))
963
964(use-package geiser-guile ; Let's try using guile instead
965 :ensure t
966 :config
967 (keymap-unset scheme-mode-map "M-o" t))
892 968
893(use-package treesit-auto 969(use-package treesit-auto
894 ;; XXX: I don't really get the utility of this package, but I spent a ton of 970 ;; XXX: I don't really get the utility of this package, but I spent a ton of
895 ;; time figuring out how to properly build it ... so here it is. 971 ;; time figuring out how to properly build it ... so here it is.
972 :ensure t
896 :when (treesit-available-p) 973 :when (treesit-available-p)
897 :vc (:url "https://github.com/renzmann/treesit-auto") 974 :config
898 :config 975 ;; (setopt treesit-extra-load-path
899 (setopt treesit-extra-load-path 976 ;; ;; https://github.com/casouri/tree-sitter-module/
900 ;; https://github.com/casouri/tree-sitter-module/ 977 ;; `(,(expand-file-name "~/misc/tree-sitter-module/dist/")))
901 `(,(expand-file-name "~/misc/tree-sitter-module/dist/"))) 978 (setopt treesit-auto-install nil) ; javascript keeps failing
902 (treesit-auto-apply-remap) 979 (global-treesit-auto-mode))
903 (define-advice treesit-install-language-grammar (:after (&rest _) apply-remap) 980
904 (treesit-auto-apply-remap))) 981(use-package elpher
982 :ensure t)
983
984(use-package detached
985 :when (executable-find "dtach")
986 :ensure t
987 :init (detached-init)
988 :bind (([remap async-shell-command] . detached-shell-command)
989 ([remap compile] . detached-compile)
990 ([remap recompile] . detached-compile-recompile))
991 :config
992 (setf detached-terminal-data-command system-type)
993 (with-eval-after-load 'consult
994 (global-set-key [remap detached-open-session] #'detached-consult-session)))