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 *** shut-up
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package shut-up (use-package shut-up
:demand t
:ensure (:inherit t :wait t)
:config :config
(defun imalison:shut-up-around (function &rest args) (defun imalison:shut-up-around (function &rest args)
(shut-up (apply function args)))) (shut-up (apply function args))))
@ -856,6 +858,7 @@ details.
(directory-files filepath)))) (directory-files filepath))))
(use-package eshell (use-package eshell
:ensure nil
:commands (eshell-parse-colon-path imalison:get-executables-on-path) :commands (eshell-parse-colon-path imalison:get-executables-on-path)
:config :config
(defun imalison:get-executables-on-path () (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. 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 #+BEGIN_SRC emacs-lisp
(use-package proced (use-package proced
:ensure nil
:defer t :defer t
:config :config
(progn (progn
@ -1376,6 +1380,7 @@ Paradox is a package.el extension. I have no use for it now that I use straight.
** server ** server
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package server (use-package server
:ensure nil
:demand t :demand t
:config :config
(progn (progn
@ -1444,19 +1449,6 @@ The file server file for this emacs instance no longer exists.")
(use-package refine (use-package refine
:disabled t) :disabled t)
#+END_SRC #+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 ** eyebrowse
I don't have any use for this now that I use frames mode, but its an interesting idea. I don't have any use for this now that I use frames mode, but its an interesting idea.
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
@ -1521,11 +1513,10 @@ custom-set-faces in your custom file.
(use-package highlight-indent-guides (use-package highlight-indent-guides
:commands highlight-indent-guides-mode :commands highlight-indent-guides-mode
:diminish highlight-indent-guides-mode :diminish highlight-indent-guides-mode
:preface :demand t
(progn
(add-hook 'prog-mode-hook 'highlight-indent-guides-mode))
:config :config
(progn (progn
(add-hook 'prog-mode-hook 'highlight-indent-guides-mode)
(setq highlight-indent-guides-method 'fill))) (setq highlight-indent-guides-method 'fill)))
#+END_SRC #+END_SRC
** man-mode ** 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. out how to detect that a buffer is a man mode buffer.
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package man (use-package man
:ensure nil
:config :config
(progn (progn
(defun imalison:fontify-man-page-buffer () (defun imalison:fontify-man-page-buffer ()
@ -1759,6 +1751,7 @@ bind-key and global-set-key forms.
#+END_SRC #+END_SRC
** projectile ** projectile
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package projectile (use-package projectile
:demand t :demand t
:bind (:map projectile-mode-map :bind (:map projectile-mode-map
@ -1772,7 +1765,7 @@ bind-key and global-set-key forms.
(projectile-git-submodule-command nil) (projectile-git-submodule-command nil)
(project-vc-merge-submodules nil) (project-vc-merge-submodules nil)
(projectile-current-project-on-switch 'keep)) (projectile-current-project-on-switch 'keep))
:preface :config
(progn (progn
(defmacro imalison:projectile-do-in-project (project-dir &rest forms) (defmacro imalison:projectile-do-in-project (project-dir &rest forms)
`(imalison:with-default-directory ,project-dir `(imalison:with-default-directory ,project-dir
@ -1804,9 +1797,7 @@ bind-key and global-set-key forms.
(write-region "" nil (write-region "" nil
(expand-file-name (expand-file-name
(concat directory "/" (concat directory "/"
(nth 0 file-info) "/.projectile"))))))) (nth 0 file-info) "/.projectile"))))))
:config
(progn
(projectile-global-mode) (projectile-global-mode)
(diminish 'projectile-mode))) (diminish 'projectile-mode)))
#+END_SRC #+END_SRC
@ -1855,7 +1846,8 @@ bind-key and global-set-key forms.
** avy ** avy
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package avy (use-package avy
:preface :after emit
:config
(progn (progn
(emit-prefix-selector imalison:avy (emit-prefix-selector imalison:avy
avy-goto-word-1 avy-goto-word-1
@ -1867,11 +1859,13 @@ bind-key and global-set-key forms.
** ace-window ** ace-window
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package ace-window (use-package ace-window
:preface :after emit
:config
(progn
(emit-prefix-selector imalison:ace-window (emit-prefix-selector imalison:ace-window
ace-select-window ace-select-window
ace-swap-window) ace-swap-window)
:config (setq aw-keys '(?a ?s ?d ?f ?g ?h ?j ?k ?l)) (setq aw-keys '(?a ?s ?d ?f ?g ?h ?j ?k ?l)))
:bind ("C-c w" . imalison:ace-window)) :bind ("C-c w" . imalison:ace-window))
#+END_SRC #+END_SRC
** neotree ** neotree
@ -2026,10 +2020,12 @@ Neotree is useless with frame mode for now, so I've disabled it.
** company ** company
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package company (use-package company
:after emit
:commands company-mode imalison:company :commands company-mode imalison:company
:bind (("C-\\" . imalison:company)) :bind (("C-\\" . imalison:company))
:config :config
(progn (progn
(add-hook 'prog-mode-hook (lambda () (company-mode t)))
(emit-prefix-selector imalison:company (emit-prefix-selector imalison:company
company-complete company-complete
company-yasnippet) company-yasnippet)
@ -2039,9 +2035,7 @@ Neotree is useless with frame mode for now, so I've disabled it.
:demand t :demand t
:config (company-prescient-mode +1)) :config (company-prescient-mode +1))
(global-company-mode) (global-company-mode)
(diminish 'company-mode)) (diminish 'company-mode)))
:init
(add-hook 'prog-mode-hook (lambda () (company-mode t))))
#+END_SRC #+END_SRC
*** company-flx *** company-flx
#+BEGIN_SRC emacs-lisp #+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 ** align
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package align (use-package align
:ensure nil
:bind ("C-c C-a" . imalison:align-regexp-hydra/body) :bind ("C-c C-a" . imalison:align-regexp-hydra/body)
:config :config
(progn (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 #+BEGIN_SRC emacs-lisp
(use-package flycheck (use-package flycheck
:commands flycheck-mode :commands flycheck-mode
:init (add-hook 'prog-mode-hook 'flycheck-mode) :defer 1
:config :config
(progn (progn
(add-hook 'prog-mode-hook 'flycheck-mode)
(use-package flycheck-package (use-package flycheck-package
:disabled t :disabled t
:config (flycheck-package-setup)) :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)) (global-flycheck-mode))
:diminish flycheck-mode) :diminish flycheck-mode)
#+END_SRC #+END_SRC
* straight
#+BEGIN_SRC emacs-lisp
(use-package straight
:config
(setq straight-vc-git-auto-fast-forward t))
#+END_SRC
* auth-source * auth-source
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package auth-source (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 #+END_SRC
*** go *** go
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package go-mode ;; (use-package go-mode
:mode (("\\.go\\'" . go-mode)) ;; :mode (("\\.go\\'" . go-mode))
:preface ;; :after emit
(progn ;; :config
(defun imalison:glide-novendor () ;; (progn
(projectile-with-default-dir (projectile-project-root) ;; (defun imalison:glide-novendor ()
(shell-command-to-string "glide novendor"))) ;; (projectile-with-default-dir (projectile-project-root)
;; (shell-command-to-string "glide novendor")))
(defun imalison:go-mode-create-imenu-index () ;; (defun imalison:go-mode-create-imenu-index ()
"Create and return an imenu index alist. Unlike the default ;; "Create and return an imenu index alist. Unlike the default
alist created by go-mode, this method creates an alist where ;; alist created by go-mode, this method creates an alist where
items follow a style that is consistent with other prog-modes." ;; items follow a style that is consistent with other prog-modes."
(let* ((patterns '(("type" "^type *\\([^ \t\n\r\f]*\\)" 1))) ;; (let* ((patterns '(("type" "^type *\\([^ \t\n\r\f]*\\)" 1)))
(type-index (imenu--generic-function patterns)) ;; (type-index (imenu--generic-function patterns))
(func-index)) ;; (func-index))
(save-excursion ;; (save-excursion
(goto-char (point-min)) ;; (goto-char (point-min))
(while (re-search-forward go-func-meth-regexp (point-max) t) ;; (while (re-search-forward go-func-meth-regexp (point-max) t)
(let* ((var (match-string-no-properties 1)) ;; (let* ((var (match-string-no-properties 1))
(func (match-string-no-properties 2)) ;; (func (match-string-no-properties 2))
(name (if var ;; (name (if var
(concat (substring var 0 -1) "." func) ;; (concat (substring var 0 -1) "." func)
func)) ;; func))
(beg (match-beginning 0)) ;; (beg (match-beginning 0))
(marker (copy-marker beg)) ;; (marker (copy-marker beg))
(item (cons name marker))) ;; (item (cons name marker)))
(setq func-index (cons item func-index))))) ;; (setq func-index (cons item func-index)))))
(nconc type-index (list (cons "func" func-index))))) ;; (nconc type-index (list (cons "func" func-index)))))
(defun imalison:go-workspace-path () ;; (defun imalison:go-workspace-path ()
(file-relative-name (projectile-project-root) ;; (file-relative-name (projectile-project-root)
(concat (file-name-as-directory ;; (concat (file-name-as-directory
(imalison:get-go-path)) "src"))) ;; (imalison:get-go-path)) "src")))
(defun imalison:install-current-go-project () ;; (defun imalison:install-current-go-project ()
(interactive) ;; (interactive)
(start-process ;; (start-process
"go install" "go install log" "go" "install" ;; "go install" "go install log" "go" "install"
(concat (file-name-as-directory (imalison:go-workspace-path)) "..."))) ;; (concat (file-name-as-directory (imalison:go-workspace-path)) "...")))
(defun imalison:get-go-path () ;; (defun imalison:get-go-path ()
(let ((environment-go-path (getenv "GOPATH"))) ;; (let ((environment-go-path (getenv "GOPATH")))
(if environment-go-path ;; (if environment-go-path
(file-name-as-directory (car (s-split ":" environment-go-path))) ;; (file-name-as-directory (car (s-split ":" environment-go-path)))
"~/go"))) ;; "~/go")))
(defmacro imalison:get-go-src (&rest paths) ;; (defmacro imalison:get-go-src (&rest paths)
`(imalison:join-paths (imalison:get-go-path) "src" ,@paths)) ;; `(imalison:join-paths (imalison:get-go-path) "src" ,@paths))
(imalison:let-advise-around imalison:advise-normal-go-command ;; (imalison:let-advise-around imalison:advise-normal-go-command
(go-command "go")) ;; (go-command "go"))
(defun imalison:go-mode-hook () ;; (defun imalison:go-mode-hook ()
(go-eldoc-setup) ;; (go-eldoc-setup)
(set (make-local-variable 'company-backends) '(company-go)) ;; (set (make-local-variable 'company-backends) '(company-go))
(make-local-variable 'projectile-globally-ignored-files) ;; (make-local-variable 'projectile-globally-ignored-files)
(add-hook 'after-save-hook 'imalison:install-current-go-project nil ;; (add-hook 'after-save-hook 'imalison:install-current-go-project nil
'yes-do-local) ;; 'yes-do-local)
(add-to-list 'projectile-globally-ignored-files ;; (add-to-list 'projectile-globally-ignored-files
"vendor"))) ;; "vendor"))
:config ;; (use-package gotest
(progn ;; :demand t
(use-package gotest ;; :after emit
:demand t ;; :bind (:map go-mode-map
:bind (:map go-mode-map ;; ("C-c t" . imalison:gotest))
("C-c t" . imalison:gotest)) ;; :preface
:preface ;; (progn
(progn ;; (emit-prefix-selector imalison:gotest
(emit-prefix-selector imalison:gotest ;; go-test-current-test
go-test-current-test ;; go-test-current-file)
go-test-current-file)
(defun imalison:add-expected-test-name-for-suite (suite-name test-name) ;; (defun imalison:add-expected-test-name-for-suite (suite-name test-name)
(if (> (length suite-name) 0) ;; (if (> (length suite-name) 0)
(concat " -run Test" suite-name) ;; (concat " -run Test" suite-name)
""))) ;; "")))
:config ;; :config
(progn ;; (progn
(setq go-test-verbose t ;; (setq go-test-verbose t
go-test-additional-arguments-function ;; go-test-additional-arguments-function
'imalison:add-expected-test-name-for-suite))) ;; 'imalison:add-expected-test-name-for-suite)))
(use-package company-go ;; (use-package company-go
:config (setq company-go-show-annotation t)) ;; :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 'go-mode-hook 'imalison:go-mode-hook)
(add-hook 'before-save-hook 'gofmt-before-save t))) ;; (add-hook 'before-save-hook 'gofmt-before-save t)))
#+END_SRC #+END_SRC
**** Show diffs of testify output **** Show diffs of testify output
#+BEGIN_SRC emacs-lisp #+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 **** elisp-slime-nav
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package elisp-slime-nav (use-package elisp-slime-nav
:after emit
:commands elisp-slime-nav-mode :commands elisp-slime-nav-mode
:config :config
(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) (diminish 'elisp-slime-nav-mode)
:preface
(emit-prefix-selector imalison:elisp-slime-nav (emit-prefix-selector imalison:elisp-slime-nav
elisp-slime-nav-find-elisp-thing-at-point elisp-slime-nav-find-elisp-thing-at-point
elisp-slime-nav-describe-elisp-thing-at-point) elisp-slime-nav-describe-elisp-thing-at-point))
:bind (:map elisp-slime-nav-mode-map :bind (:map elisp-slime-nav-mode-map
("M-." . imalison:elisp-slime-nav))) ("M-." . imalison:elisp-slime-nav)))
#+END_SRC #+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. where the definition is popped up. This fixes that.
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package find-func (use-package find-func
:ensure nil
:preface :preface
(progn (progn
(defun imalison:find-function-display-buffer (function) (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 :bind (:map lisp-mode-shared-map
("C-c e" . macrostep-expand))) ("C-c e" . macrostep-expand)))
#+END_SRC #+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 **** Editing configuration
Reduce indentation for some functions Reduce indentation for some functions
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
@ -2505,6 +2500,7 @@ Reduce indentation for some functions
**** edebug **** edebug
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package edebug (use-package edebug
:ensure nil
:defer t :defer t
:config :config
(progn (setq edebug-trace t))) (progn (setq edebug-trace t)))
@ -2543,6 +2539,7 @@ Reduce indentation for some functions
:commands (eros-mode) :commands (eros-mode)
:config :config
(progn (progn
(add-hook 'emacs-lisp-mode-hook 'eros-mode)
(advice-add 'eval-defun :around 'eros-around-eval-defun) (advice-add 'eval-defun :around 'eros-around-eval-defun)
(advice-add 'eval-last-sexp :around 'eros-around-eval-last-sexp)) (advice-add 'eval-last-sexp :around 'eros-around-eval-last-sexp))
:preface :preface
@ -2563,9 +2560,7 @@ Reduce indentation for some functions
(save-excursion (save-excursion
(end-of-defun) (end-of-defun)
(point)))) (point))))
result)) result))))
(add-hook 'emacs-lisp-mode-hook 'eros-mode)))
#+END_SRC #+END_SRC
**** Reevalute defvars when running eval-last-sexp **** Reevalute defvars when running eval-last-sexp
We noflet elisp--preceding-sexp to munge defvars into sexps only for We noflet elisp--preceding-sexp to munge defvars into sexps only for
@ -2583,27 +2578,10 @@ eval-last-sexp.
#+END_SRC #+END_SRC
**** Init hook **** Init hook
#+BEGIN_SRC emacs-lisp #+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 #+END_SRC
**** Keybinds **** Keybinds
#+BEGIN_SRC emacs-lisp #+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-c C-c") 'eval-defun)
(define-key lisp-mode-shared-map (kbd "C-x C-e") 'imalison:eval-last-sexp) (define-key lisp-mode-shared-map (kbd "C-x C-e") 'imalison:eval-last-sexp)
(unbind-key "C-j" lisp-interaction-mode-map) (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") cider-preferred-build-tool "boot")
(add-hook 'clojure-mode-hook 'cider-mode))) (add-hook 'clojure-mode-hook 'cider-mode)))
#+END_SRC #+END_SRC
**** clj-refactor
#+BEGIN_SRC emacs-lisp
(use-package clj-refactor
:commands clj-refactor-mode)
#+END_SRC
*** scala *** scala
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package scala-mode (use-package scala-mode
@ -2908,7 +2881,7 @@ The following is taken from [[https://github.com/syl20bnr/spacemacs/blob/a650877
#+END_SRC #+END_SRC
*** C/C++ *** C/C++
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package cc-mode) (use-package cc-mode :ensure nil)
#+END_SRC #+END_SRC
*** C-- *** C--
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
@ -3113,9 +3086,10 @@ My org-mode configuration now lives in its own file org-config.org.
** magit ** magit
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package magit (use-package magit
:after emit
:commands magit-status :commands magit-status
:bind (("C-x g" . imalison:magit-status)) :bind (("C-x g" . imalison:magit-status))
:preface :config
(progn (progn
(emit-let-around imalison:magit-status-traditional (emit-let-around imalison:magit-status-traditional
magit-status magit-status
@ -3126,9 +3100,7 @@ My org-mode configuration now lives in its own file org-config.org.
imalison:magit-status-traditional) imalison:magit-status-traditional)
(defun imalison:after-magit-visit-file (&rest args) (defun imalison:after-magit-visit-file (&rest args)
(when (derived-mode-p 'org-mode) (when (derived-mode-p 'org-mode)
(org-show-context 'magit-goto)))) (org-show-context 'magit-goto)))
:config
(progn
(when frame-mode (when frame-mode
(setq magit-commit-show-diff t)) (setq magit-commit-show-diff t))
(unbind-key "C-j" magit-status-mode-map) (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-function
'magit-display-buffer-same-window-except-diff-v1) 'magit-display-buffer-same-window-except-diff-v1)
(magit-auto-revert-mode) (magit-auto-revert-mode)
(add-to-list 'org-show-context-detail '(magit-goto . lineage)) (add-to-list 'org-show-context-detail '(magit-goto . lineage))
(advice-add 'magit-diff-visit-file :after 'imalison:after-magit-visit-file) (advice-add 'magit-diff-visit-file :after 'imalison:after-magit-visit-file)
(add-hook 'magit-popup-mode-hook 'imalison:disable-show-trailing-whitespace))) (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 :disabled t
:after magit) :after magit)
#+end_src #+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 ** git-link
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package git-link (use-package git-link
@ -3288,14 +3245,6 @@ modeline and with excessive http requests to github.
gist-unstar gist-list-starred gist-fork)) gist-unstar gist-list-starred gist-fork))
#+END_SRC #+END_SRC
* Programming * 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 ** semantic
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package semantic (use-package semantic
@ -3361,6 +3310,7 @@ in term-mode. This makes term-mode 1000% more useful
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package term (use-package term
:demand t :demand t
:ensure nil
:preface :preface
(progn (progn
(defun imalison:avy-term (arg) (defun imalison:avy-term (arg)
@ -3425,6 +3375,7 @@ in term-mode. This makes term-mode 1000% more useful
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package term-projectile (use-package term-projectile
:bind ("C-c 7" . imalison:term-hydra-global/body) :bind ("C-c 7" . imalison:term-hydra-global/body)
:after emit
:commands :commands
(term-projectile-backward (term-projectile-backward
term-projectile-create-new 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 ** narrow-indirect
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package narrow-indirect (use-package narrow-indirect
:ensure nil
:init :init
(progn (progn
(define-key ctl-x-4-map "nd" 'ni-narrow-to-defun-indirect-other-window) (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) (interactive)
(setq dtrt-indent-original-indent nil) (setq dtrt-indent-original-indent nil)
(dtrt-indent-adapt))) (dtrt-indent-adapt)))
:init (add-hook 'prog-mode-hook 'dtrt-indent-mode)
:config :config
(progn (progn
(add-hook 'prog-mode-hook 'dtrt-indent-mode)
(setq dtrt-indent-active-mode-line-info " [⟼]"))) (setq dtrt-indent-active-mode-line-info " [⟼]")))
#+END_SRC #+END_SRC
** indent-guide ** indent-guide
@ -3674,7 +3626,9 @@ Disabled because it makes it hard to redo things
** recentf ** recentf
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package recentf (use-package recentf
:ensure nil
:demand t :demand t
:after shut-up
:config :config
(progn (progn
(setq recentf-max-saved-items 1000 (setq recentf-max-saved-items 1000
@ -3770,6 +3724,7 @@ Not really sure what this is
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package epg (use-package epg
:after shut-up :after shut-up
:ensure nil
:config :config
(shut-up (shut-up
(epa-file-enable))) (epa-file-enable)))
@ -3792,113 +3747,6 @@ Not really sure what this is
:disabled t ;; fails to load eieio on startup :disabled t ;; fails to load eieio on startup
) )
#+END_SRC #+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 ** 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. 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 #+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) :notifier 'imalison:windows-toast-notify)
(setq alert-default-style 'windows-toast)))) (setq alert-default-style 'windows-toast))))
#+END_SRC #+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 ** libmpdee
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package libmpdee (use-package libmpdee
@ -4113,20 +3911,16 @@ This also adds syntax highlighting for gradle
** jsx-mode ** jsx-mode
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package jsx-mode (use-package jsx-mode
:ensure nil
:defer t) :defer t)
#+END_SRC #+END_SRC
** css ** css
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package css-mode (use-package css-mode
:ensure nil
:mode (("\\.css\\'" . css-mode) :mode (("\\.css\\'" . css-mode)
("\\.rasi\\'" . css-mode))) ("\\.rasi\\'" . css-mode)))
#+END_SRC #+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 ** evil
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package evil (use-package evil
@ -4155,6 +3949,9 @@ Ensure all themes that I use are installed:
(progn (progn
(setq solarized-high-contrast-mode-line t))) (setq solarized-high-contrast-mode-line t)))
(defun elpaca-function (pkg)
(eval `(elpaca ,pkg)))
(defvar-setq packages-appearance (defvar-setq packages-appearance
'(monokai-theme zenburn-theme base16-theme molokai-theme moe-theme '(monokai-theme zenburn-theme base16-theme molokai-theme moe-theme
tango-2-theme gotham-theme sublime-themes rainbow-delimiters 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 forest-blue-theme flatland-theme afternoon-theme
cyberpunk-theme dracula-theme)) cyberpunk-theme dracula-theme))
(mapcar 'straight-use-package packages-appearance) (mapcar 'elpaca-function packages-appearance)
(use-package doom-themes (use-package doom-themes
:defer t) :defer t)
@ -4318,14 +4115,15 @@ load-theme hook (See the heading below).
(unless imalison:appearance-setup-done (unless imalison:appearance-setup-done
(unless (member imalison:dark-theme custom-enabled-themes) (unless (member imalison:dark-theme custom-enabled-themes)
(load-theme imalison:dark-theme t)) (load-theme imalison:dark-theme t))
(doom-modeline-mode +1)
(apply 'imalison:appearance args) (apply 'imalison:appearance args)
(message "running appearance") (message "running appearance")
(doom-modeline-mode +1)
(setq imalison:default-font-size-pt (face-attribute 'default :height)) (setq imalison:default-font-size-pt (face-attribute 'default :height))
(setq imalison:appearance-setup-done t))) (setq imalison:appearance-setup-done t)))
(add-hook 'after-make-frame-functions 'imalison:appearance-setup-hook) (add-hook 'elpaca-after-init-hook
(add-hook 'after-init-hook 'imalison:appearance-setup-hook) (lambda () (add-hook 'after-make-frame-functions 'imalison:appearance-setup-hook)))
(add-hook 'elpaca-after-init-hook 'imalison:appearance-setup-hook)
#+END_SRC #+END_SRC
* Post Init Custom * Post Init Custom
#+BEGIN_SRC emacs-lisp #+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 -*- ;; -*- 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-deferred-compilation-deny-list '("magit"))
(setq native-comp-always-compile t) (setq native-comp-always-compile t)
(setq load-no-native t) (setq load-no-native t)
(setq no-native-compile t) (setq no-native-compile t)
(setq warning-minimum-level :emergency) (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 (setq package-enable-at-startup nil
straight-use-package-by-default t straight-use-package-by-default t
straight-vc-git-default-protocol 'ssh) straight-vc-git-default-protocol 'ssh)
(straight-use-package 'use-package)
(require 'use-package) (require 'use-package)
(setq use-package-enable-imenu-support t) (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) (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"))) (let ((bench-file (concat (file-name-directory user-init-file) "benchmark.el")))
(when (file-exists-p bench-file) (load bench-file))) (when (file-exists-p bench-file) (load bench-file)))
@ -55,6 +42,9 @@
(setq mac-option-modifier 'meta) (setq mac-option-modifier 'meta)
(setq mac-command-modifier 'super)) (setq mac-command-modifier 'super))
(use-package transient
:demand t)
;; See https://github.com/magit/magit/discussions/4997 . Without this magit is broken. ;; See https://github.com/magit/magit/discussions/4997 . Without this magit is broken.
(use-package magit (use-package magit
:demand t) :demand t)
@ -62,29 +52,56 @@
;; This seems to fix issues with helm not explicitly declaring its dependency on async ;; This seems to fix issues with helm not explicitly declaring its dependency on async
(use-package async :demand t) (use-package async :demand t)
(use-package s :demand t)
;; Without this, org can behave very strangely ;; Without this, org can behave very strangely
(use-package org (use-package org
:straight :ensure
(org :type git :host github :repo "colonelpanic8/org-mode" :local-repo "org" (org :type git :host github :repo "colonelpanic8/org-mode" :local-repo "org"
:branch "my-main" :branch "my-main"
:depth full :pre-build (straight-recipes-org-elpa--build) :build :depth full
:build
:wait t
(:not autoloads) :files (:not autoloads) :files
(:defaults "lisp/*.el" ("etc/styles/" "etc/styles/*"))) (:defaults "lisp/*.el" ("etc/styles/" "etc/styles/*"))))
:defer t)
(use-package dash :demand t) (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)) (let ((debug-on-error t))
(org-babel-load-file (org-babel-load-file
(concat (file-name-directory load-file-name) "README.org"))) (concat (file-name-directory load-file-name) "README.org")))
(when (or (equal (s-trim (shell-command-to-string "whoami")) "kat") ;; (when imalison:do-benchmark (benchmark-init/deactivate))
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))
;; Local Variables: ;; Local Variables:
;; flycheck-disabled-checkers: (emacs-lisp-checkdoc) ;; 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 ** Use org-tempo to allow inserting templates using e.g. <s
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package org-tempo (use-package org-tempo
:straight nil :ensure nil
:after org) :after org)
#+end_src #+end_src
* Packages * Packages
@ -938,9 +938,6 @@ alphanumeric characters only."
#+end_src #+end_src
***** ui ***** ui
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package emacs-http-server
:demand t)
(use-package org-roam-ui (use-package org-roam-ui
:after org-roam :after org-roam
:custom :custom