parent
6cc0c0f094
commit
0bc17f6874
1 changed files with 114 additions and 60 deletions
172
init.el
172
init.el
|
@ -57,6 +57,7 @@
|
||||||
(backup-by-copying t)
|
(backup-by-copying t)
|
||||||
(focus-follows-mouse t)
|
(focus-follows-mouse t)
|
||||||
(mouse-autoselect-window t)
|
(mouse-autoselect-window t)
|
||||||
|
(treesit-font-lock-level 4)
|
||||||
:config
|
:config
|
||||||
(set-face-background 'vertical-border (face-background 'default))
|
(set-face-background 'vertical-border (face-background 'default))
|
||||||
(set-display-table-slot standard-display-table 'vertical-border (make-glyph-code ?┃))
|
(set-display-table-slot standard-display-table 'vertical-border (make-glyph-code ?┃))
|
||||||
|
@ -80,7 +81,7 @@
|
||||||
(interactive)
|
(interactive)
|
||||||
(let* ((operation (completing-read "nixos-rebuild " '("switch" "boot" "test" "dry-activate")))
|
(let* ((operation (completing-read "nixos-rebuild " '("switch" "boot" "test" "dry-activate")))
|
||||||
(buffer-name (format "nixos-rebuild-%s" operation)))
|
(buffer-name (format "nixos-rebuild-%s" operation)))
|
||||||
(async-shell-command (format "sudo nixos-rebuild --flake fleet %s --override-input ccrEmacs /home/ccr/.config/emacs -L" operation) buffer-name)))
|
(async-shell-command (format "sudo nixos-rebuild --flake fleet %s -L" operation) buffer-name)))
|
||||||
)
|
)
|
||||||
|
|
||||||
(use-package doc-view
|
(use-package doc-view
|
||||||
|
@ -226,8 +227,8 @@
|
||||||
'("." . meow-bounds-of-thing)
|
'("." . meow-bounds-of-thing)
|
||||||
'("[" . meow-beginning-of-thing)
|
'("[" . meow-beginning-of-thing)
|
||||||
'("]" . meow-end-of-thing)
|
'("]" . meow-end-of-thing)
|
||||||
'(">" . meow-indent)
|
'(">" . indent-rigidly-right)
|
||||||
'("<" . meow-back-to-indentation)
|
'("<" . indent-rigidly-left)
|
||||||
'("a" . meow-append)
|
'("a" . meow-append)
|
||||||
'("A" . meow-open-below)
|
'("A" . meow-open-below)
|
||||||
'("b" . meow-back-word)
|
'("b" . meow-back-word)
|
||||||
|
@ -343,20 +344,20 @@
|
||||||
(("DEL" . vertico-directory-delete-char)
|
(("DEL" . vertico-directory-delete-char)
|
||||||
("C-DEL" . vertico-directory-delete-word))))
|
("C-DEL" . vertico-directory-delete-word))))
|
||||||
|
|
||||||
(use-package vertico-posframe
|
;; (use-package vertico-posframe
|
||||||
:after vertico
|
;; :after vertico
|
||||||
:config
|
;; :config
|
||||||
(vertico-posframe-mode +1)
|
;; (vertico-posframe-mode +1)
|
||||||
:custom
|
;; :custom
|
||||||
(vertico-multiform-commands
|
;; (vertico-multiform-commands
|
||||||
'((t
|
;; '((t
|
||||||
posframe
|
;; posframe
|
||||||
(vertico-posframe-poshandler . posframe-poshandler-frame-center)
|
;; (vertico-posframe-poshandler . posframe-poshandler-frame-center)
|
||||||
(vertico-posframe-fallback-mode . vertico-buffer-mode))))
|
;; (vertico-posframe-fallback-mode . vertico-buffer-mode))))
|
||||||
(vertico-posframe-min-height 1)
|
;; (vertico-posframe-min-height 1)
|
||||||
;; (vertico-posframe-min-width 80)
|
;; ;; (vertico-posframe-min-width 80)
|
||||||
(vertico-posframe-parameters '((alpha-background . 80)))
|
;; (vertico-posframe-parameters '((alpha-background . 80)))
|
||||||
)
|
;; )
|
||||||
|
|
||||||
(use-package marginalia
|
(use-package marginalia
|
||||||
:init
|
:init
|
||||||
|
@ -455,7 +456,6 @@
|
||||||
:hook (agenix-pre-mode . envrc-mode))
|
:hook (agenix-pre-mode . envrc-mode))
|
||||||
|
|
||||||
(use-package nix-ts-mode
|
(use-package nix-ts-mode
|
||||||
:custom ((nix-ts-mode--embed-bash nil))
|
|
||||||
:hook (
|
:hook (
|
||||||
(nix-ts-mode . (lambda ()
|
(nix-ts-mode . (lambda ()
|
||||||
(require 'eglot)
|
(require 'eglot)
|
||||||
|
@ -463,7 +463,21 @@
|
||||||
'(nix-ts-mode . ("nixd")))
|
'(nix-ts-mode . ("nixd")))
|
||||||
(eglot-ensure)))
|
(eglot-ensure)))
|
||||||
(nix-ts-mode . electric-pair-mode)
|
(nix-ts-mode . electric-pair-mode)
|
||||||
(nix-ts-mode . (lambda () (setq indent-bars-spacing-override 2) (indent-bars-mode)))
|
(nix-ts-mode . (lambda () (setq-local indent-bars-spacing-override 2) (indent-bars-mode)))
|
||||||
|
(nix-ts-mode . (lambda ()
|
||||||
|
(setq-local
|
||||||
|
treesit-font-lock-settings
|
||||||
|
(append treesit-font-lock-settings
|
||||||
|
(treesit-font-lock-rules
|
||||||
|
:language 'nix
|
||||||
|
:feature 'function
|
||||||
|
:override t
|
||||||
|
`((formal) @font-lock-type-face)
|
||||||
|
|
||||||
|
:language 'nix
|
||||||
|
:feature 'function
|
||||||
|
`((attrpath) @font-lock-function-name-face)
|
||||||
|
)))))
|
||||||
)
|
)
|
||||||
:mode "\\.nix\\'"
|
:mode "\\.nix\\'"
|
||||||
)
|
)
|
||||||
|
@ -486,12 +500,11 @@
|
||||||
:mode "\\.ts\\'")
|
:mode "\\.ts\\'")
|
||||||
|
|
||||||
(use-package haskell-ts-mode
|
(use-package haskell-ts-mode
|
||||||
:hook ((haskell--ts-mode . eglot-ensure)
|
:hook ((haskell--ts-mode . eglot-ensure))
|
||||||
:mode "\\.hs\\'")
|
:mode "\\.hs\\'"
|
||||||
|
:config
|
||||||
(use-package typst-ts-mode
|
(add-to-list 'eglot-server-programs
|
||||||
:hook ((typst--ts-mode . eglot-ensure)
|
'(haskell-ts-mode . ("haskell-language-server-wrapper" "--lsp"))))
|
||||||
:mode "\\.typ\\'")
|
|
||||||
|
|
||||||
(use-package purescript-mode
|
(use-package purescript-mode
|
||||||
:custom ((project-vc-extra-root-markers '("spago.dhall")))
|
:custom ((project-vc-extra-root-markers '("spago.dhall")))
|
||||||
|
@ -684,7 +697,8 @@
|
||||||
(org-special-ctrl-a/e t)
|
(org-special-ctrl-a/e t)
|
||||||
(org-insert-heading-respect-content t)
|
(org-insert-heading-respect-content t)
|
||||||
(org-pretty-entities t)
|
(org-pretty-entities t)
|
||||||
(org-ellipsis "…"))
|
(org-ellipsis "…")
|
||||||
|
)
|
||||||
:bind (("C-c o l" . org-store-link)
|
:bind (("C-c o l" . org-store-link)
|
||||||
("C-c o a" . org-agenda)
|
("C-c o a" . org-agenda)
|
||||||
("C-c o c" . org-capture)
|
("C-c o c" . org-capture)
|
||||||
|
@ -697,17 +711,13 @@ This is meant to be an helper to be called from the window manager."
|
||||||
(org-capture nil key)
|
(org-capture nil key)
|
||||||
(add-hook 'kill-buffer-hook 'delete-frame nil 't) ;; destroy frame on exit
|
(add-hook 'kill-buffer-hook 'delete-frame nil 't) ;; destroy frame on exit
|
||||||
(delete-other-windows))
|
(delete-other-windows))
|
||||||
;; FIXME the following doesn't work when using the daemon, it should be executed only
|
|
||||||
;; one time after the first frame is created
|
|
||||||
(set-face-font 'variable-pitch "Dejavu Serif-14")
|
|
||||||
(set-face-font 'fixed-pitch "Iosevka Comfy-14")
|
|
||||||
|
|
||||||
(dolist (face '(org-block-begin-line
|
(dolist (face '(org-block-begin-line
|
||||||
org-block-end-line
|
org-block-end-line
|
||||||
org-verbatim
|
org-verbatim
|
||||||
org-code
|
org-code
|
||||||
))
|
))
|
||||||
(set-face-attribute face nil :inherit 'fixed-pitch))
|
(set-face-attribute face nil :inherit 'fixed-pitch))
|
||||||
|
|
||||||
(org-babel-do-load-languages
|
(org-babel-do-load-languages
|
||||||
'org-babel-load-languages '((haskell . t))))
|
'org-babel-load-languages '((haskell . t))))
|
||||||
|
@ -727,9 +737,56 @@ This is meant to be an helper to be called from the window manager."
|
||||||
|
|
||||||
(use-package org-modern
|
(use-package org-modern
|
||||||
:after org
|
:after org
|
||||||
:init (global-org-modern-mode))
|
:init
|
||||||
|
(global-org-modern-mode)
|
||||||
|
;; FIXME the following doesn't work when using the daemon, it should be executed only
|
||||||
|
;; one time after the first frame is created
|
||||||
|
:hook (server-after-make-frame . (lambda ()
|
||||||
|
(set-face-font 'variable-pitch "Dejavu Serif-14")
|
||||||
|
(set-face-font 'fixed-pitch "Iosevka Comfy-14")
|
||||||
|
(set-face-font 'org-table "Iosevka Comfy-14")
|
||||||
|
(set-face-font 'org-meta-line "Iosevka Comfy-14")
|
||||||
|
(set-face-font 'org-drawer "Iosevka Comfy-14")
|
||||||
|
(set-face-font 'org-special-keyword "Iosevka Comfy-14")
|
||||||
|
(set-face-font 'org-property-value "Iosevka Comfy-14")
|
||||||
|
(set-face-font 'org-block "Iosevka Comfy-14")
|
||||||
|
(set-face-font 'org-modern-tag "Iosevka Comfy-14")
|
||||||
|
(set-face-font 'org-modern-date-active "Iosevka Comfy-14")
|
||||||
|
(set-face-font 'org-modern-date-inactive "Iosevka Comfy-14")))
|
||||||
|
)
|
||||||
|
|
||||||
(use-package org-roam)
|
(use-package org-roam
|
||||||
|
:custom
|
||||||
|
(org-roam-v2-ack t)
|
||||||
|
(org-roam-directory (file-truename "~/org"))
|
||||||
|
(org-roam-complete-everywhere 't)
|
||||||
|
(org-roam-dailies-capture-templates
|
||||||
|
'(("d" "default" entry "* TODO %?"
|
||||||
|
:target
|
||||||
|
(file+head "%<%Y-%m-%d>.org" "#+TITLE: %<%Y-%m-%d %A>\n"))))
|
||||||
|
:config
|
||||||
|
(require 'org-roam-dailies)
|
||||||
|
(org-roam-db-autosync-mode)
|
||||||
|
|
||||||
|
;; The following functions name are relevant because org-roam-ql columns in queries use their suffix
|
||||||
|
(defun org-roam-node-spent (node)
|
||||||
|
"Return the hours spent as number"
|
||||||
|
(string-to-number (cdr (assoc "SPENT" (org-roam-node-properties node)))))
|
||||||
|
(defun org-roam-node-date (node)
|
||||||
|
"Return the org datestring when a node was created (obtained from the filename)"
|
||||||
|
(format "<%s>" (file-name-sans-extension (file-name-nondirectory (org-roam-node-file node)))))
|
||||||
|
|
||||||
|
(defun ccr/org-roam-spent-hours (client)
|
||||||
|
"Return the total spent hours on something (usually a client)"
|
||||||
|
(apply #'+(mapcar #'org-roam-node-spent (org-roam-ql-nodes `(tags ,client "billable")))))
|
||||||
|
)
|
||||||
|
|
||||||
|
(use-package org-roam-ql
|
||||||
|
:after org-roam
|
||||||
|
:bind ((:map org-roam-mode-map
|
||||||
|
("v" . org-roam-ql-buffer-dispatch)
|
||||||
|
:map minibuffer-mode-map
|
||||||
|
("C-c n i" . org-roam-ql-insert-node-title))))
|
||||||
|
|
||||||
(use-package consult-org-roam
|
(use-package consult-org-roam
|
||||||
:delight
|
:delight
|
||||||
|
@ -739,9 +796,10 @@ This is meant to be an helper to be called from the window manager."
|
||||||
;; Activate the minor mode
|
;; Activate the minor mode
|
||||||
(consult-org-roam-mode 1)
|
(consult-org-roam-mode 1)
|
||||||
:custom
|
:custom
|
||||||
(consult-org-roam-grep-func #'consult-ripgrep)
|
(consutl-org-roam-grep-func #'consult-ripgrep)
|
||||||
(consult-org-roam-buffer-narrow-key ?r)
|
(consult-org-roam-buffer-narrow-key ?r)
|
||||||
(consult-org-roam-buffer-after-buffers t)
|
(consult-org-roam-buffer-after-buffers t)
|
||||||
|
(setq org-roam-database-connector 'sqlite-builtin)
|
||||||
:config
|
:config
|
||||||
(consult-customize
|
(consult-customize
|
||||||
consult-org-roam-forward-links
|
consult-org-roam-forward-links
|
||||||
|
@ -750,7 +808,7 @@ This is meant to be an helper to be called from the window manager."
|
||||||
("C-c n f" . consult-org-roam-file-find)
|
("C-c n f" . consult-org-roam-file-find)
|
||||||
("C-c n b" . consult-org-roam-backlinks)
|
("C-c n b" . consult-org-roam-backlinks)
|
||||||
("C-c n l" . consult-org-roam-forward-links)
|
("C-c n l" . consult-org-roam-forward-links)
|
||||||
("C-c n r" . consult-org-roam-search))
|
("C-c n s" . consult-org-roam-search))
|
||||||
|
|
||||||
(use-package gptel
|
(use-package gptel
|
||||||
:custom
|
:custom
|
||||||
|
@ -794,12 +852,12 @@ This is meant to be an helper to be called from the window manager."
|
||||||
) ;; destroy frame on exit
|
) ;; destroy frame on exit
|
||||||
)
|
)
|
||||||
|
|
||||||
(use-package copilot
|
; (use-package copilot
|
||||||
:custom
|
; :custom
|
||||||
(copilot-max-char -1)
|
; (copilot-max-char -1)
|
||||||
(copilot-indent-offset-warning-disable 't)
|
; (copilot-indent-offset-warning-disable 't)
|
||||||
:hook (prog-mode org-mode)
|
; :hook (prog-mode org-mode)
|
||||||
:bind (("C-<tab>" . copilot-accept-completion)))
|
; :bind (("C-<tab>" . copilot-accept-completion)))
|
||||||
|
|
||||||
(use-package pass
|
(use-package pass
|
||||||
:config
|
:config
|
||||||
|
@ -831,8 +889,8 @@ This is meant to be an helper to be called from the window manager."
|
||||||
(send-mail-function 'smtpmail-send-it)
|
(send-mail-function 'smtpmail-send-it)
|
||||||
(user-mail-address "andrea.ciceri@autistici.org")
|
(user-mail-address "andrea.ciceri@autistici.org")
|
||||||
(smtpmail-smtp-server "mail.autistici.org")
|
(smtpmail-smtp-server "mail.autistici.org")
|
||||||
(smtpmail-stream-type 'starttls)
|
(smtpmail-stream-type 'ssl)
|
||||||
(smtpmail-smtp-service 587)
|
(smtpmail-smtp-service 465)
|
||||||
;; also the following line is needeed in ~/.authinfo.gpg
|
;; also the following line is needeed in ~/.authinfo.gpg
|
||||||
;; machine mail.autistici.org login andrea.ciceri@autistici.org password <password>
|
;; machine mail.autistici.org login andrea.ciceri@autistici.org password <password>
|
||||||
)
|
)
|
||||||
|
@ -840,18 +898,14 @@ This is meant to be an helper to be called from the window manager."
|
||||||
(use-package notmuch
|
(use-package notmuch
|
||||||
:custom
|
:custom
|
||||||
(notmuch-show-logo nil)
|
(notmuch-show-logo nil)
|
||||||
(send-mail-function 'sendmail-send-it))
|
(send-mail-function 'sendmail-send-it)
|
||||||
|
(notmuch-archive-tags '("-new"))
|
||||||
(use-package alert
|
(notmuch-saved-searches
|
||||||
:config
|
'((:name "Inbox" :query "tag:new" :key "i")
|
||||||
(alert "Emacs started")
|
(:name "Sent" :query "tag:sent" :key "s")
|
||||||
:custom
|
(:name "Draft" :query "tag:draft" :key "s")
|
||||||
(alert-default-style 'notifications))
|
(:name "GitHub" :query "tag:github" :key "g")
|
||||||
|
(:name "Trash" :query "tag:trash" :key "t"))))
|
||||||
(use-package notmuch-notify
|
|
||||||
:hook (notmuch-hello-refresh . notmuch-notify-hello-refresh-status-message)
|
|
||||||
:config
|
|
||||||
(notmuch-notify-set-refresh-timer))
|
|
||||||
|
|
||||||
(provide 'init)
|
(provide 'init)
|
||||||
;;; init.el ends here
|
;;; init.el ends here
|
||||||
|
|
Reference in a new issue