Elpaca migration WIP

This commit is contained in:
Ivan Malison 2024-06-25 03:00:00 -06:00
parent fb671d1401
commit d9231c3a0e
4 changed files with 273 additions and 417 deletions

View File

@ -361,6 +361,8 @@ but provide support for writing custom elisp.
*** shut-up
#+BEGIN_SRC emacs-lisp
(use-package shut-up
:demand t
:ensure (:inherit t :wait t)
:config
(defun imalison:shut-up-around (function &rest args)
(shut-up (apply function args))))
@ -856,6 +858,7 @@ details.
(directory-files filepath))))
(use-package eshell
:ensure nil
:commands (eshell-parse-colon-path imalison:get-executables-on-path)
:config
(defun imalison:get-executables-on-path ()
@ -1233,6 +1236,7 @@ This makes ~forward-word~ and ~backward-word~ understand snake and camel case.
proced is an top like utility that runs inside of emacs. The following sets auto updating automatically and makes the update interval faster.
#+BEGIN_SRC emacs-lisp
(use-package proced
:ensure nil
:defer t
:config
(progn
@ -1376,6 +1380,7 @@ Paradox is a package.el extension. I have no use for it now that I use straight.
** server
#+BEGIN_SRC emacs-lisp
(use-package server
:ensure nil
:demand t
:config
(progn
@ -1444,19 +1449,6 @@ The file server file for this emacs instance no longer exists.")
(use-package refine
:disabled t)
#+END_SRC
** winner
#+BEGIN_SRC emacs-lisp
(use-package winner
:commands (winner-undo winner-redo)
:bind ("C-c q" . imalison:winner-hydra/body)
:config
(progn
(defhydra imalison:winner-hydra ()
"Winner"
("p" winner-undo "back")
("n" winner-redo "forward" :exit t))
(winner-mode 1)))
#+END_SRC
** eyebrowse
I don't have any use for this now that I use frames mode, but its an interesting idea.
#+BEGIN_SRC emacs-lisp
@ -1521,11 +1513,10 @@ custom-set-faces in your custom file.
(use-package highlight-indent-guides
:commands highlight-indent-guides-mode
:diminish highlight-indent-guides-mode
:preface
(progn
(add-hook 'prog-mode-hook 'highlight-indent-guides-mode))
:demand t
:config
(progn
(add-hook 'prog-mode-hook 'highlight-indent-guides-mode)
(setq highlight-indent-guides-method 'fill)))
#+END_SRC
** man-mode
@ -1534,6 +1525,7 @@ fixes that, but for now, it needs to be run manually, since I haven't figured
out how to detect that a buffer is a man mode buffer.
#+BEGIN_SRC emacs-lisp
(use-package man
:ensure nil
:config
(progn
(defun imalison:fontify-man-page-buffer ()
@ -1759,6 +1751,7 @@ bind-key and global-set-key forms.
#+END_SRC
** projectile
#+BEGIN_SRC emacs-lisp
(use-package projectile
:demand t
:bind (:map projectile-mode-map
@ -1772,7 +1765,7 @@ bind-key and global-set-key forms.
(projectile-git-submodule-command nil)
(project-vc-merge-submodules nil)
(projectile-current-project-on-switch 'keep))
:preface
:config
(progn
(defmacro imalison:projectile-do-in-project (project-dir &rest forms)
`(imalison:with-default-directory ,project-dir
@ -1804,9 +1797,7 @@ bind-key and global-set-key forms.
(write-region "" nil
(expand-file-name
(concat directory "/"
(nth 0 file-info) "/.projectile")))))))
:config
(progn
(nth 0 file-info) "/.projectile"))))))
(projectile-global-mode)
(diminish 'projectile-mode)))
#+END_SRC
@ -1855,7 +1846,8 @@ bind-key and global-set-key forms.
** avy
#+BEGIN_SRC emacs-lisp
(use-package avy
:preface
:after emit
:config
(progn
(emit-prefix-selector imalison:avy
avy-goto-word-1
@ -1867,11 +1859,13 @@ bind-key and global-set-key forms.
** ace-window
#+BEGIN_SRC emacs-lisp
(use-package ace-window
:preface
(emit-prefix-selector imalison:ace-window
ace-select-window
ace-swap-window)
:config (setq aw-keys '(?a ?s ?d ?f ?g ?h ?j ?k ?l))
:after emit
:config
(progn
(emit-prefix-selector imalison:ace-window
ace-select-window
ace-swap-window)
(setq aw-keys '(?a ?s ?d ?f ?g ?h ?j ?k ?l)))
:bind ("C-c w" . imalison:ace-window))
#+END_SRC
** neotree
@ -1897,41 +1891,41 @@ Neotree is useless with frame mode for now, so I've disabled it.
* Completion
** vertico
#+begin_src emacs-lisp
(use-package vertico
:demand t
:config
(progn
(defmacro imalison:use-vertico-extension (extension-name &rest forms)
(let ((extension-symbol (intern (concat "vertico-" (symbol-name extension-name)))))
`(use-package ,extension-symbol
:after vertico
:straight (,extension-symbol
:repo "emacs-straight/vertico"
:host github
:files ,(list (concat "extensions/" (symbol-name extension-symbol) ".el")))
,@forms)))
(use-package vertico
:demand t
:config
(progn
(defmacro imalison:use-vertico-extension (extension-name &rest forms)
(let ((extension-symbol (intern (concat "vertico-" (symbol-name extension-name)))))
`(use-package ,extension-symbol
:after vertico
:straight (,extension-symbol
:repo "emacs-straight/vertico"
:host github
:files ,(list (concat "extensions/" (symbol-name extension-symbol) ".el")))
,@forms)))
(put 'imalison:use-vertico-extension 'lisp-indent-function 'defun)
(put 'imalison:use-vertico-extension 'lisp-indent-function 'defun)
(imalison:use-vertico-extension directory
:bind (:map vertico-map
("RET" . vertico-directory-enter)
("DEL" . vertico-directory-delete-char)
("M-DEL" . vertico-directory-delete-word)
("TAB" . embark-act)))
(imalison:use-vertico-extension directory
:bind (:map vertico-map
("RET" . vertico-directory-enter)
("DEL" . vertico-directory-delete-char)
("M-DEL" . vertico-directory-delete-word)
("TAB" . embark-act)))
(imalison:use-vertico-extension grid)
(imalison:use-vertico-extension buffer)
(imalison:use-vertico-extension flat)
(imalison:use-vertico-extension multiform
:config
(progn
(vertico-multiform-mode +1)
(setq vertico-multiform-commands
'((consult-imenu grid)
(consult-ripgrep buffer)))))
(imalison:use-vertico-extension grid)
(imalison:use-vertico-extension buffer)
(imalison:use-vertico-extension flat)
(imalison:use-vertico-extension multiform
:config
(progn
(vertico-multiform-mode +1)
(setq vertico-multiform-commands
'((consult-imenu grid)
(consult-ripgrep buffer)))))
(vertico-mode +1)))
(vertico-mode +1)))
#+end_src
** orderless
#+begin_src emacs-lisp
@ -2026,10 +2020,12 @@ Neotree is useless with frame mode for now, so I've disabled it.
** company
#+BEGIN_SRC emacs-lisp
(use-package company
:after emit
:commands company-mode imalison:company
:bind (("C-\\" . imalison:company))
:config
(progn
(add-hook 'prog-mode-hook (lambda () (company-mode t)))
(emit-prefix-selector imalison:company
company-complete
company-yasnippet)
@ -2039,9 +2035,7 @@ Neotree is useless with frame mode for now, so I've disabled it.
:demand t
:config (company-prescient-mode +1))
(global-company-mode)
(diminish 'company-mode))
:init
(add-hook 'prog-mode-hook (lambda () (company-mode t))))
(diminish 'company-mode)))
#+END_SRC
*** company-flx
#+BEGIN_SRC emacs-lisp
@ -2214,6 +2208,7 @@ I don't use auto-complete at all, so I have set up a hook to automatically disab
** align
#+BEGIN_SRC emacs-lisp
(use-package align
:ensure nil
:bind ("C-c C-a" . imalison:align-regexp-hydra/body)
:config
(progn
@ -2242,9 +2237,10 @@ I don't use auto-complete at all, so I have set up a hook to automatically disab
#+BEGIN_SRC emacs-lisp
(use-package flycheck
:commands flycheck-mode
:init (add-hook 'prog-mode-hook 'flycheck-mode)
:defer 1
:config
(progn
(add-hook 'prog-mode-hook 'flycheck-mode)
(use-package flycheck-package
:disabled t
:config (flycheck-package-setup))
@ -2261,12 +2257,6 @@ I don't use auto-complete at all, so I have set up a hook to automatically disab
(global-flycheck-mode))
:diminish flycheck-mode)
#+END_SRC
* straight
#+BEGIN_SRC emacs-lisp
(use-package straight
:config
(setq straight-vc-git-auto-fast-forward t))
#+END_SRC
* auth-source
#+begin_src emacs-lisp
(use-package auth-source
@ -2318,96 +2308,96 @@ I don't use auto-complete at all, so I have set up a hook to automatically disab
#+END_SRC
*** go
#+BEGIN_SRC emacs-lisp
(use-package go-mode
:mode (("\\.go\\'" . go-mode))
:preface
(progn
(defun imalison:glide-novendor ()
(projectile-with-default-dir (projectile-project-root)
(shell-command-to-string "glide novendor")))
;; (use-package go-mode
;; :mode (("\\.go\\'" . go-mode))
;; :after emit
;; :config
;; (progn
;; (defun imalison:glide-novendor ()
;; (projectile-with-default-dir (projectile-project-root)
;; (shell-command-to-string "glide novendor")))
(defun imalison:go-mode-create-imenu-index ()
"Create and return an imenu index alist. Unlike the default
alist created by go-mode, this method creates an alist where
items follow a style that is consistent with other prog-modes."
(let* ((patterns '(("type" "^type *\\([^ \t\n\r\f]*\\)" 1)))
(type-index (imenu--generic-function patterns))
(func-index))
(save-excursion
(goto-char (point-min))
(while (re-search-forward go-func-meth-regexp (point-max) t)
(let* ((var (match-string-no-properties 1))
(func (match-string-no-properties 2))
(name (if var
(concat (substring var 0 -1) "." func)
func))
(beg (match-beginning 0))
(marker (copy-marker beg))
(item (cons name marker)))
(setq func-index (cons item func-index)))))
(nconc type-index (list (cons "func" func-index)))))
;; (defun imalison:go-mode-create-imenu-index ()
;; "Create and return an imenu index alist. Unlike the default
;; alist created by go-mode, this method creates an alist where
;; items follow a style that is consistent with other prog-modes."
;; (let* ((patterns '(("type" "^type *\\([^ \t\n\r\f]*\\)" 1)))
;; (type-index (imenu--generic-function patterns))
;; (func-index))
;; (save-excursion
;; (goto-char (point-min))
;; (while (re-search-forward go-func-meth-regexp (point-max) t)
;; (let* ((var (match-string-no-properties 1))
;; (func (match-string-no-properties 2))
;; (name (if var
;; (concat (substring var 0 -1) "." func)
;; func))
;; (beg (match-beginning 0))
;; (marker (copy-marker beg))
;; (item (cons name marker)))
;; (setq func-index (cons item func-index)))))
;; (nconc type-index (list (cons "func" func-index)))))
(defun imalison:go-workspace-path ()
(file-relative-name (projectile-project-root)
(concat (file-name-as-directory
(imalison:get-go-path)) "src")))
;; (defun imalison:go-workspace-path ()
;; (file-relative-name (projectile-project-root)
;; (concat (file-name-as-directory
;; (imalison:get-go-path)) "src")))
(defun imalison:install-current-go-project ()
(interactive)
(start-process
"go install" "go install log" "go" "install"
(concat (file-name-as-directory (imalison:go-workspace-path)) "...")))
;; (defun imalison:install-current-go-project ()
;; (interactive)
;; (start-process
;; "go install" "go install log" "go" "install"
;; (concat (file-name-as-directory (imalison:go-workspace-path)) "...")))
(defun imalison:get-go-path ()
(let ((environment-go-path (getenv "GOPATH")))
(if environment-go-path
(file-name-as-directory (car (s-split ":" environment-go-path)))
"~/go")))
;; (defun imalison:get-go-path ()
;; (let ((environment-go-path (getenv "GOPATH")))
;; (if environment-go-path
;; (file-name-as-directory (car (s-split ":" environment-go-path)))
;; "~/go")))
(defmacro imalison:get-go-src (&rest paths)
`(imalison:join-paths (imalison:get-go-path) "src" ,@paths))
;; (defmacro imalison:get-go-src (&rest paths)
;; `(imalison:join-paths (imalison:get-go-path) "src" ,@paths))
(imalison:let-advise-around imalison:advise-normal-go-command
(go-command "go"))
;; (imalison:let-advise-around imalison:advise-normal-go-command
;; (go-command "go"))
(defun imalison:go-mode-hook ()
(go-eldoc-setup)
(set (make-local-variable 'company-backends) '(company-go))
(make-local-variable 'projectile-globally-ignored-files)
(add-hook 'after-save-hook 'imalison:install-current-go-project nil
'yes-do-local)
(add-to-list 'projectile-globally-ignored-files
"vendor")))
:config
(progn
(use-package gotest
:demand t
:bind (:map go-mode-map
("C-c t" . imalison:gotest))
:preface
(progn
(emit-prefix-selector imalison:gotest
go-test-current-test
go-test-current-file)
;; (defun imalison:go-mode-hook ()
;; (go-eldoc-setup)
;; (set (make-local-variable 'company-backends) '(company-go))
;; (make-local-variable 'projectile-globally-ignored-files)
;; (add-hook 'after-save-hook 'imalison:install-current-go-project nil
;; 'yes-do-local)
;; (add-to-list 'projectile-globally-ignored-files
;; "vendor"))
;; (use-package gotest
;; :demand t
;; :after emit
;; :bind (:map go-mode-map
;; ("C-c t" . imalison:gotest))
;; :preface
;; (progn
;; (emit-prefix-selector imalison:gotest
;; go-test-current-test
;; go-test-current-file)
(defun imalison:add-expected-test-name-for-suite (suite-name test-name)
(if (> (length suite-name) 0)
(concat " -run Test" suite-name)
"")))
:config
(progn
(setq go-test-verbose t
go-test-additional-arguments-function
'imalison:add-expected-test-name-for-suite)))
(use-package company-go
:config (setq company-go-show-annotation t))
;; (defun imalison:add-expected-test-name-for-suite (suite-name test-name)
;; (if (> (length suite-name) 0)
;; (concat " -run Test" suite-name)
;; "")))
;; :config
;; (progn
;; (setq go-test-verbose t
;; go-test-additional-arguments-function
;; 'imalison:add-expected-test-name-for-suite)))
;; (use-package company-go
;; :config (setq company-go-show-annotation t))
(advice-add 'go-import-add :around 'imalison:advise-normal-go-command)
;; (advice-add 'go-import-add :around 'imalison:advise-normal-go-command)
(setq gofmt-command "goimports")
;; (setq gofmt-command "goimports")
(add-hook 'go-mode-hook 'imalison:go-mode-hook)
(add-hook 'before-save-hook 'gofmt-before-save t)))
;; (add-hook 'go-mode-hook 'imalison:go-mode-hook)
;; (add-hook 'before-save-hook 'gofmt-before-save t)))
#+END_SRC
**** Show diffs of testify output
#+BEGIN_SRC emacs-lisp
@ -2449,13 +2439,25 @@ I don't use auto-complete at all, so I have set up a hook to automatically disab
**** elisp-slime-nav
#+BEGIN_SRC emacs-lisp
(use-package elisp-slime-nav
:after emit
:commands elisp-slime-nav-mode
:config
(diminish 'elisp-slime-nav-mode)
:preface
(emit-prefix-selector imalison:elisp-slime-nav
elisp-slime-nav-find-elisp-thing-at-point
elisp-slime-nav-describe-elisp-thing-at-point)
(progn
(defvar imalison:check-parens nil)
(defun imalison:maybe-check-parens ()
(if imalison:check-parens
(check-parens)))
(defun imalison:emacs-lisp-hook ()
(elisp-slime-nav-mode t)
(add-hook 'write-file-functions 'imalison:maybe-check-parens nil t))
(add-hook 'emacs-lisp-mode-hook 'imalison:emacs-lisp-hook)
(diminish 'elisp-slime-nav-mode)
(emit-prefix-selector imalison:elisp-slime-nav
elisp-slime-nav-find-elisp-thing-at-point
elisp-slime-nav-describe-elisp-thing-at-point))
:bind (:map elisp-slime-nav-mode-map
("M-." . imalison:elisp-slime-nav)))
#+END_SRC
@ -2465,6 +2467,7 @@ it's supposed to do, but instead uses its own collection of functions to control
where the definition is popped up. This fixes that.
#+BEGIN_SRC emacs-lisp
(use-package find-func
:ensure nil
:preface
(progn
(defun imalison:find-function-display-buffer (function)
@ -2484,14 +2487,6 @@ Macrostep is an indespensible tool for writing emacs lisp macros. It lets you se
:bind (:map lisp-mode-shared-map
("C-c e" . macrostep-expand)))
#+END_SRC
**** emr
#+BEGIN_SRC emacs-lisp
(use-package emr
:bind ("M-RET" . emr-show-refactor-menu)
:config
(progn
(add-hook 'prog-mode-hook 'emr-initialize)))
#+END_SRC
**** Editing configuration
Reduce indentation for some functions
#+BEGIN_SRC emacs-lisp
@ -2505,6 +2500,7 @@ Reduce indentation for some functions
**** edebug
#+BEGIN_SRC emacs-lisp
(use-package edebug
:ensure nil
:defer t
:config
(progn (setq edebug-trace t)))
@ -2543,6 +2539,7 @@ Reduce indentation for some functions
:commands (eros-mode)
:config
(progn
(add-hook 'emacs-lisp-mode-hook 'eros-mode)
(advice-add 'eval-defun :around 'eros-around-eval-defun)
(advice-add 'eval-last-sexp :around 'eros-around-eval-last-sexp))
:preface
@ -2563,9 +2560,7 @@ Reduce indentation for some functions
(save-excursion
(end-of-defun)
(point))))
result))
(add-hook 'emacs-lisp-mode-hook 'eros-mode)))
result))))
#+END_SRC
**** Reevalute defvars when running eval-last-sexp
We noflet elisp--preceding-sexp to munge defvars into sexps only for
@ -2583,27 +2578,10 @@ eval-last-sexp.
#+END_SRC
**** Init hook
#+BEGIN_SRC emacs-lisp
(defvar imalison:check-parens nil)
(defun imalison:maybe-check-parens ()
(if imalison:check-parens
(check-parens)))
(defun imalison:emacs-lisp-hook ()
(elisp-slime-nav-mode t)
(add-hook 'write-file-functions 'imalison:maybe-check-parens nil t))
(add-hook 'emacs-lisp-mode-hook 'imalison:emacs-lisp-hook)
#+END_SRC
**** Keybinds
#+BEGIN_SRC emacs-lisp
(emit-compose
imalison:copy-eval-last-sexp kill-new prin1-to-string eval-last-sexp)
(emit-prefix-selector imalison:eval-last-sexp
eval-region-or-last-sexp
imalison:copy-eval-last-sexp)
(define-key lisp-mode-shared-map (kbd "C-c C-c") 'eval-defun)
(define-key lisp-mode-shared-map (kbd "C-x C-e") 'imalison:eval-last-sexp)
(unbind-key "C-j" lisp-interaction-mode-map)
@ -2704,11 +2682,6 @@ The following is taken from [[https://github.com/syl20bnr/spacemacs/blob/a650877
cider-preferred-build-tool "boot")
(add-hook 'clojure-mode-hook 'cider-mode)))
#+END_SRC
**** clj-refactor
#+BEGIN_SRC emacs-lisp
(use-package clj-refactor
:commands clj-refactor-mode)
#+END_SRC
*** scala
#+BEGIN_SRC emacs-lisp
(use-package scala-mode
@ -2908,7 +2881,7 @@ The following is taken from [[https://github.com/syl20bnr/spacemacs/blob/a650877
#+END_SRC
*** C/C++
#+BEGIN_SRC emacs-lisp
(use-package cc-mode)
(use-package cc-mode :ensure nil)
#+END_SRC
*** C--
#+BEGIN_SRC emacs-lisp
@ -3113,9 +3086,10 @@ My org-mode configuration now lives in its own file org-config.org.
** magit
#+BEGIN_SRC emacs-lisp
(use-package magit
:after emit
:commands magit-status
:bind (("C-x g" . imalison:magit-status))
:preface
:config
(progn
(emit-let-around imalison:magit-status-traditional
magit-status
@ -3126,9 +3100,7 @@ My org-mode configuration now lives in its own file org-config.org.
imalison:magit-status-traditional)
(defun imalison:after-magit-visit-file (&rest args)
(when (derived-mode-p 'org-mode)
(org-show-context 'magit-goto))))
:config
(progn
(org-show-context 'magit-goto)))
(when frame-mode
(setq magit-commit-show-diff t))
(unbind-key "C-j" magit-status-mode-map)
@ -3139,7 +3111,6 @@ My org-mode configuration now lives in its own file org-config.org.
magit-display-buffer-function
'magit-display-buffer-same-window-except-diff-v1)
(magit-auto-revert-mode)
(add-to-list 'org-show-context-detail '(magit-goto . lineage))
(advice-add 'magit-diff-visit-file :after 'imalison:after-magit-visit-file)
(add-hook 'magit-popup-mode-hook 'imalison:disable-show-trailing-whitespace)))
@ -3150,20 +3121,6 @@ My org-mode configuration now lives in its own file org-config.org.
:disabled t
:after magit)
#+end_src
** vc
#+begin_src emacs-lisp
(use-package vc
:config
(progn
(defun vc-find-revision-of-file (revision)
(interactive
(list (vc-read-revision
"Revision to visit: "
(list (imalison:join-paths (magit-toplevel) (car (magit-list-files)))))))
(let* ((file (completing-read "Select file to visit: " (magit-revision-files revision)))
(full-file (imalison:join-paths (magit-toplevel) file)))
(switch-to-buffer (vc-find-revision full-file revision))))))
#+end_src
** git-link
#+BEGIN_SRC emacs-lisp
(use-package git-link
@ -3288,14 +3245,6 @@ modeline and with excessive http requests to github.
gist-unstar gist-list-starred gist-fork))
#+END_SRC
* Programming
** emr
emr (emacs refactor) provides support for refactoring in many programming languages
#+BEGIN_SRC emacs-lisp
(use-package emr
:bind (:map prog-mode-map
("M-RET" . emr-show-refactor-menu))
:config (emr-initialize))
#+END_SRC
** semantic
#+BEGIN_SRC emacs-lisp
(use-package semantic
@ -3361,6 +3310,7 @@ in term-mode. This makes term-mode 1000% more useful
#+BEGIN_SRC emacs-lisp
(use-package term
:demand t
:ensure nil
:preface
(progn
(defun imalison:avy-term (arg)
@ -3425,6 +3375,7 @@ in term-mode. This makes term-mode 1000% more useful
#+BEGIN_SRC emacs-lisp
(use-package term-projectile
:bind ("C-c 7" . imalison:term-hydra-global/body)
:after emit
:commands
(term-projectile-backward
term-projectile-create-new
@ -3596,6 +3547,7 @@ I don't use iedit directly, but it is used by [[*emr][emr]] and I need to disabl
** narrow-indirect
#+BEGIN_SRC emacs-lisp
(use-package narrow-indirect
:ensure nil
:init
(progn
(define-key ctl-x-4-map "nd" 'ni-narrow-to-defun-indirect-other-window)
@ -3631,9 +3583,9 @@ I had to disable this mode because something that it does messes with coding set
(interactive)
(setq dtrt-indent-original-indent nil)
(dtrt-indent-adapt)))
:init (add-hook 'prog-mode-hook 'dtrt-indent-mode)
:config
(progn
(add-hook 'prog-mode-hook 'dtrt-indent-mode)
(setq dtrt-indent-active-mode-line-info " [⟼]")))
#+END_SRC
** indent-guide
@ -3674,7 +3626,9 @@ Disabled because it makes it hard to redo things
** recentf
#+BEGIN_SRC emacs-lisp
(use-package recentf
:ensure nil
:demand t
:after shut-up
:config
(progn
(setq recentf-max-saved-items 1000
@ -3770,6 +3724,7 @@ Not really sure what this is
#+BEGIN_SRC emacs-lisp
(use-package epg
:after shut-up
:ensure nil
:config
(shut-up
(epa-file-enable)))
@ -3792,113 +3747,6 @@ Not really sure what this is
:disabled t ;; fails to load eieio on startup
)
#+END_SRC
** mu4e
#+BEGIN_SRC emacs-lisp
;; (eval-when-compile
;; (require 's)
;; (defvar mu4e-elisp-directory
;; (s-trim (shell-command-to-string "mu4e_directory"))))
(use-package mu4e
:disabled t
:load-path mu4e-elisp-directory
:straight nil
:commands (mu4e mu4e-view-message-with-msgid mu4e-update-index email)
:bind ("C-c 0" . email)
:config
(progn
(defun email (&optional arg)
(interactive "P")
(if (string-equal (persp-name persp-curr) "email")
(progn (delete-other-windows) (mu4e))
(progn
(persp-switch "email")
(when (or (not (mu4e-running-p)) arg)
(delete-other-windows) (mu4e)))))
;; enable inline images
(setq mu4e-view-show-images t)
;; show images
(setq mu4e-show-images t)
;; Try to display html as text
(setq mu4e-view-prefer-html nil)
(setq mu4e-html2text-command "html2text -width 80 -nobs -utf8")
;; use imagemagick, if available
(when (fboundp 'imagemagick-register-types)
(imagemagick-register-types))
(setq mail-user-agent 'mu4e-user-agent)
(require 'org-mu4e)
(setq mu4e-compose-complete-only-after nil)
(setq mu4e-maildir "~/Mail")
(setq mu4e-drafts-folder "/[Gmail].Drafts")
(setq mu4e-sent-folder "/[Gmail].Sent Mail")
(setq mu4e-trash-folder "/[Gmail].Trash")
(setq mu4e-sent-messages-behavior 'delete)
(setq mu4e-headers-skip-duplicates t)
(setq mu4e-update-interval (* 60 20))
(setq message-kill-buffer-on-exit t)
(setq mail-user-agent 'mu4e-user-agent) ;; make mu4e the default mail client
;; don't save message to Sent Messages, Gmail/IMAP takes care of this
(setq mu4e-sent-messages-behavior 'delete)
;; allow for updating mail using 'U' in the main view:
(setq mu4e-get-mail-command "timeout 60 offlineimap")
(add-hook 'mu4e-compose-mode-hook
(defun my-do-compose-stuff () (flyspell-mode)))
(add-to-list 'mu4e-headers-actions '("view in browser" . mu4e-action-view-in-browser))
(add-to-list 'mu4e-view-actions '("view in browser" . mu4e-action-view-in-browser))
(defun mu4e-view (msg headersbuf)
"Display the message MSG in a new buffer, and keep in sync with HDRSBUF.
'In sync' here means that moving to the next/previous message in
the the message view affects HDRSBUF, as does marking etc.
As a side-effect, a message that is being viewed loses its 'unread'
marking if it still had that."
(let* ((embedded ;; is it as an embedded msg (ie. message/rfc822 att)?
(when (gethash (mu4e-message-field msg :path)
mu4e~path-parent-docid-map) t))
(buf
(if embedded
(mu4e~view-embedded-winbuf)
(get-buffer-create mu4e~view-buffer-name))))
;; note: mu4e~view-mark-as-read will pseudo-recursively call mu4e-view again
;; by triggering mu4e~view again as it marks the message as read
(with-current-buffer buf
(switch-to-buffer buf)
(setq mu4e~view-msg msg)
;;(or embedded (not (mu4e~view-mark-as-read msg)))
(when (or (mu4e~view-mark-as-read msg) t)
(let ((inhibit-read-only t))
(erase-buffer)
(mu4e~delete-all-overlays)
(insert (mu4e-view-message-text msg))
(goto-char (point-min))
(mu4e~fontify-cited)
(mu4e~fontify-signature)
(mu4e~view-make-urls-clickable)
(mu4e~view-show-images-maybe msg)
(setq
mu4e~view-buffer buf
mu4e~view-headers-buffer headersbuf)
(when embedded (local-set-key "q" 'kill-buffer-and-window))
(mu4e-view-mode))))))
(require 'smtpmail)
;; alternatively, for emacs-24 you can use:
(setq message-send-mail-function 'smtpmail-send-it
smtpmail-stream-type 'starttls
smtpmail-default-smtp-server "smtp.gmail.com"
smtpmail-smtp-server "smtp.gmail.com"
smtpmail-smtp-service 587)))
#+END_SRC
** gmail-message-mode
This is useful with server mode when editing gmail messages. I think that it is not currently working, or it may need to be manually enabled.
#+BEGIN_SRC emacs-lisp
@ -3933,56 +3781,6 @@ This is useful with server mode when editing gmail messages. I think that it is
:notifier 'imalison:windows-toast-notify)
(setq alert-default-style 'windows-toast))))
#+END_SRC
** sauron
#+BEGIN_SRC emacs-lisp
(use-package sauron
:disabled t
:defer 5
:commands (sauron-start sauron-start-hidden)
:init
(progn
(when (eq system-type 'darwin)
(setq sauron-modules '(sauron-erc sauron-org sauron-notifications
sauron-twittering sauron-jabber sauron-identica))
(defun sauron-dbus-start ()
nil)
(makunbound 'dbus-path-emacs)))
:config
(progn
(sauron-start-hidden)
;; This should really check (featurep 'dbus) but for some reason
;; this is always true even if support is not there.
(setq sauron-prio-sauron-started 2)
(setq sauron-min-priority 3)
;; (setq sauron-dbus-cookie t) ;; linux only?
(setq sauron-separate-frame nil)
(setq sauron-nick-insensitivity 1)
(defun sauron:jabber-notify (origin priority message &optional properties)
(funcall notify-function "gtalk" message))
(defun sauron:erc-notify (origin priority message &optional properties)
(let ((event (plist-get properties :event)))
(funcall notify-function "IRC" message)))
(defun sauron:mu4e-notify (origin priority message &optional properties)
nil)
(defun sauron:dbus-notify (origin priority message &optional properties)
(funcall notify-function "GMail" message))
(defun sauron:dispatch-notify (origin priority message &optional properties)
(let ((handler (cond ((string= origin "erc") 'sauron:erc-notify)
((string= origin "jabber") 'sauron:jabber-notify)
((string= origin "mu4e") 'sauron:mu4e-notify)
((string= origin "dbus") 'sauron:dbus-notify)
(t (lambda (&rest r) nil)))))
(funcall handler origin priority message properties)))
;; Prefering alert.el for now ;; (add-hook 'sauron-event-added-functions 'sauron:dispatch-notify)
(sauron-start-hidden)
(add-hook 'sauron-event-added-functions 'sauron-alert-el-adapter)))
#+END_SRC
** screenshot
#+BEGIN_SRC emacs-lisp
(use-package screenshot
:commands screenshot)
#+END_SRC
** libmpdee
#+BEGIN_SRC emacs-lisp
(use-package libmpdee
@ -4113,20 +3911,16 @@ This also adds syntax highlighting for gradle
** jsx-mode
#+BEGIN_SRC emacs-lisp
(use-package jsx-mode
:ensure nil
:defer t)
#+END_SRC
** css
#+BEGIN_SRC emacs-lisp
(use-package css-mode
:ensure nil
:mode (("\\.css\\'" . css-mode)
("\\.rasi\\'" . css-mode)))
#+END_SRC
** sgml-mode
#+BEGIN_SRC emacs-lisp
(use-package sgml-mode
;; :bind ("C-c b" . web-beautify-html) TODO: mode specific, change binding
:commands sgml-mode)
#+END_SRC
** evil
#+BEGIN_SRC emacs-lisp
(use-package evil
@ -4155,6 +3949,9 @@ Ensure all themes that I use are installed:
(progn
(setq solarized-high-contrast-mode-line t)))
(defun elpaca-function (pkg)
(eval `(elpaca ,pkg)))
(defvar-setq packages-appearance
'(monokai-theme zenburn-theme base16-theme molokai-theme moe-theme
tango-2-theme gotham-theme sublime-themes rainbow-delimiters
@ -4163,7 +3960,7 @@ Ensure all themes that I use are installed:
forest-blue-theme flatland-theme afternoon-theme
cyberpunk-theme dracula-theme))
(mapcar 'straight-use-package packages-appearance)
(mapcar 'elpaca-function packages-appearance)
(use-package doom-themes
:defer t)
@ -4318,14 +4115,15 @@ load-theme hook (See the heading below).
(unless imalison:appearance-setup-done
(unless (member imalison:dark-theme custom-enabled-themes)
(load-theme imalison:dark-theme t))
(doom-modeline-mode +1)
(apply 'imalison:appearance args)
(message "running appearance")
(doom-modeline-mode +1)
(setq imalison:default-font-size-pt (face-attribute 'default :height))
(setq imalison:appearance-setup-done t)))
(add-hook 'after-make-frame-functions 'imalison:appearance-setup-hook)
(add-hook 'after-init-hook 'imalison:appearance-setup-hook)
(add-hook 'elpaca-after-init-hook
(lambda () (add-hook 'after-make-frame-functions 'imalison:appearance-setup-hook)))
(add-hook 'elpaca-after-init-hook 'imalison:appearance-setup-hook)
#+END_SRC
* Post Init Custom
#+BEGIN_SRC emacs-lisp

View File

@ -0,0 +1,44 @@
(defvar elpaca-installer-version 0.7)
(defvar elpaca-directory (expand-file-name "elpaca/" user-emacs-directory))
(defvar elpaca-builds-directory (expand-file-name "builds/" elpaca-directory))
(defvar elpaca-repos-directory (expand-file-name "repos/" elpaca-directory))
(defvar elpaca-order '(elpaca :repo "https://github.com/progfolio/elpaca.git"
:ref nil :depth 1
:files (:defaults "elpaca-test.el" (:exclude "extensions"))
:build (:not elpaca--activate-package)))
(let* ((repo (expand-file-name "elpaca/" elpaca-repos-directory))
(build (expand-file-name "elpaca/" elpaca-builds-directory))
(order (cdr elpaca-order))
(default-directory repo))
(add-to-list 'load-path (if (file-exists-p build) build repo))
(unless (file-exists-p repo)
(make-directory repo t)
(when (< emacs-major-version 28) (require 'subr-x))
(condition-case-unless-debug err
(if-let ((buffer (pop-to-buffer-same-window "*elpaca-bootstrap*"))
((zerop (apply #'call-process `("git" nil ,buffer t "clone"
,@(when-let ((depth (plist-get order :depth)))
(list (format "--depth=%d" depth) "--no-single-branch"))
,(plist-get order :repo) ,repo))))
((zerop (call-process "git" nil buffer t "checkout"
(or (plist-get order :ref) "--"))))
(emacs (concat invocation-directory invocation-name))
((zerop (call-process emacs nil buffer nil "-Q" "-L" "." "--batch"
"--eval" "(byte-recompile-directory \".\" 0 'force)")))
((require 'elpaca))
((elpaca-generate-autoloads "elpaca" repo)))
(progn (message "%s" (buffer-string)) (kill-buffer buffer))
(error "%s" (with-current-buffer buffer (buffer-string))))
((error) (warn "%s" err) (delete-directory repo 'recursive))))
(unless (require 'elpaca-autoloads nil t)
(require 'elpaca)
(elpaca-generate-autoloads "elpaca" repo)
(load "./elpaca-autoloads")))
(add-hook 'after-init-hook #'elpaca-process-queues)
(elpaca `(,@elpaca-order))
(elpaca elpaca-use-package
;; Enable use-package :ensure support for Elpaca.
(elpaca-use-package-mode))

View File

@ -1,41 +1,28 @@
;; -*- no-byte-compile: t -*-
(let ((bootstrap-file (concat user-emacs-directory "straight/bootstrap.el"))
(bootstrap-version 2))
(unless (file-exists-p bootstrap-file)
(with-current-buffer
(url-retrieve-synchronously
"https://raw.githubusercontent.com/raxod502/straight.el/develop/install.el"
'silent 'inhibit-cookies)
(goto-char (point-max))
(eval-print-last-sexp)))
(load bootstrap-file nil 'nomessage))
(setq native-comp-deferred-compilation-deny-list '("magit"))
(setq native-comp-always-compile t)
(setq load-no-native t)
(setq no-native-compile t)
(setq warning-minimum-level :emergency)
(setq straight-disable-native-compile t)
;; This is a workaround for an issue in emacs28 with symlinks. See https://github.com/radian-software/straight.el/issues/701
(defun my-patch-package-find-file-visit-truename (oldfun &rest r)
(let ((find-file-visit-truename nil))
(apply oldfun r)))
(advice-add #'straight--build-autoloads :around
#'my-patch-package-find-file-visit-truename)
(setq package-enable-at-startup nil
straight-use-package-by-default t
straight-vc-git-default-protocol 'ssh)
(straight-use-package 'use-package)
(require 'use-package)
(setq use-package-enable-imenu-support t)
(setq use-package-ensure-function 'straight-use-package-ensure-function)
(setq use-package-always-ensure t)
(defvar imalison:do-benchmark nil)
(defun emacs-directory-filepath (filename)
(concat (file-name-directory load-file-name) filename))
(load (emacs-directory-filepath "elpaca.el"))
(setq use-package-always-ensure t)
(let ((bench-file (concat (file-name-directory user-init-file) "benchmark.el")))
(when (file-exists-p bench-file) (load bench-file)))
@ -55,6 +42,9 @@
(setq mac-option-modifier 'meta)
(setq mac-command-modifier 'super))
(use-package transient
:demand t)
;; See https://github.com/magit/magit/discussions/4997 . Without this magit is broken.
(use-package magit
:demand t)
@ -62,29 +52,56 @@
;; This seems to fix issues with helm not explicitly declaring its dependency on async
(use-package async :demand t)
(use-package s :demand t)
;; Without this, org can behave very strangely
(use-package org
:straight
:ensure
(org :type git :host github :repo "colonelpanic8/org-mode" :local-repo "org"
:branch "my-main"
:depth full :pre-build (straight-recipes-org-elpa--build) :build
:depth full
:build
:wait t
(:not autoloads) :files
(:defaults "lisp/*.el" ("etc/styles/" "etc/styles/*")))
:defer t)
(:defaults "lisp/*.el" ("etc/styles/" "etc/styles/*"))))
(use-package dash :demand t)
(use-package emit
:ensure (emit :type git :host github :repo "colonelpanic8/emit")
:demand t
:config
(progn
(emit-prefix-selector imalison:mark-ring mark-ring)
(emit-prefix-selector imalison:shell-command-on-region
imalison:copy-shell-command-on-region
imalison:shell-command-on-region-replace
imalison:jq-replace)
(defun imalison:jq-replace (start end)
(interactive (region-if-active-otherwise-buffer))
(imalison:shell-command-on-region-replace start end "jq ."))
(emit-compose
imalison:copy-eval-last-sexp kill-new prin1-to-string eval-last-sexp)
(emit-prefix-selector imalison:eval-last-sexp
eval-region-or-last-sexp
imalison:copy-eval-last-sexp)))
(use-package s
:ensure (:inherit t :wait t)
:config
(when (or (equal (s-trim (shell-command-to-string "whoami")) "kat")
imalison:kat-mode)
(let ((debug-on-error t))
(org-babel-load-file
(concat (file-name-directory load-file-name) "kat-mode.org")))))
(let ((debug-on-error t))
(org-babel-load-file
(concat (file-name-directory load-file-name) "README.org")))
(when (or (equal (s-trim (shell-command-to-string "whoami")) "kat")
imalison:kat-mode)
(let ((debug-on-error t))
(org-babel-load-file
(concat (file-name-directory load-file-name) "kat-mode.org"))))
(when imalison:do-benchmark (benchmark-init/deactivate))
;; (when imalison:do-benchmark (benchmark-init/deactivate))
;; Local Variables:
;; flycheck-disabled-checkers: (emacs-lisp-checkdoc)

View File

@ -803,7 +803,7 @@ alphanumeric characters only."
** Use org-tempo to allow inserting templates using e.g. <s
#+begin_src emacs-lisp
(use-package org-tempo
:straight nil
:ensure nil
:after org)
#+end_src
* Packages
@ -938,9 +938,6 @@ alphanumeric characters only."
#+end_src
***** ui
#+begin_src emacs-lisp
(use-package emacs-http-server
:demand t)
(use-package org-roam-ui
:after org-roam
:custom