Various init file optimizations
This commit is contained in:
parent
12183b916a
commit
c3d9832295
153
emacs/init.org
153
emacs/init.org
@ -10,11 +10,6 @@ Enables lexical binding for everything in init.el:
|
||||
;;; -*- lexical-binding: t; -*-
|
||||
#+END_SRC
|
||||
|
||||
Requires:
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(require 'json)
|
||||
#+END_SRC
|
||||
|
||||
Variables:
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(setq vc-follow-symlinks t)
|
||||
@ -61,7 +56,8 @@ Load [[https://github.com/raxod502/straight.el][straight.el]] to manage package
|
||||
Load org-mode early to [[https://github.com/raxod502/straight.el#the-wrong-version-of-my-package-was-loaded][avoid a version clash]] (but don't load it if the bootstrap file already did):
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(use-package org
|
||||
:straight org-plus-contrib)
|
||||
:straight org-plus-contrib
|
||||
:mode (("\\.org\\'" . org-mode)))
|
||||
#+END_SRC
|
||||
|
||||
* Doom themes
|
||||
@ -314,11 +310,6 @@ Interfacing with Pass, the "standard Unix password manager". This should also be
|
||||
#+END_SRC
|
||||
|
||||
* Emacs Lisp
|
||||
Requires:
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(eval-when-compile (require 'subr-x))
|
||||
#+END_SRC
|
||||
|
||||
** Packages
|
||||
Some helpful ELisp packages:
|
||||
- [[https://github.com/kiwanami/emacs-deferred][deferred]] is an async API library
|
||||
@ -360,7 +351,8 @@ Some helpful ELisp packages:
|
||||
(use-package dash)
|
||||
(use-package dash-functional)
|
||||
(use-package f)
|
||||
(use-package request)
|
||||
(use-package request
|
||||
:commands (request request-deferred))
|
||||
#+END_SRC
|
||||
|
||||
** Editing Elisp
|
||||
@ -1401,8 +1393,8 @@ Set up evil keybindings:
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(use-package evil-org
|
||||
:after (evil org)
|
||||
:hook (org-mode . evil-org-mode)
|
||||
:config
|
||||
(add-hook 'org-mode-hook #'evil-org-mode)
|
||||
(add-hook 'evil-org-mode-hook
|
||||
(lambda ()
|
||||
(evil-org-set-key-theme
|
||||
@ -1515,7 +1507,6 @@ Finally, add a helpful agenda-mode hydra:
|
||||
(general-def '(normal visual motion insert emacs) org-agenda-mode-map "." 'hydra-org-agenda/body))
|
||||
#+END_SRC
|
||||
|
||||
|
||||
** Exporting
|
||||
*** HTML
|
||||
Export to HTML:
|
||||
@ -1618,7 +1609,9 @@ Display inline images after executing a source block:
|
||||
Enable async source block execution. Note: this execute the contents of the source block in a separate Emacs process, so blocks that rely on anything defined in init.org or the current Emacs process won't work as expected.
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(use-package ob-async
|
||||
:straight (ob-async :host github :repo "astahlman/ob-async"))
|
||||
:straight (ob-async :host github :repo "astahlman/ob-async")
|
||||
:defer t
|
||||
:hook (org-mode . (lambda () (require 'ob-async))))
|
||||
#+END_SRC
|
||||
|
||||
** Images
|
||||
@ -2003,6 +1996,7 @@ Emacs support for the Language Server Protocol
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(use-package lsp-mode
|
||||
:defer t
|
||||
:init
|
||||
(defhydra hydra-lsp (:exit t :hint nil)
|
||||
"
|
||||
@ -2069,16 +2063,18 @@ Emacs support for the Language Server Protocol
|
||||
["Misc."
|
||||
("T" "Edit template" dap-debug-edit-template)
|
||||
("h" "Hydra" dap-hydra)])
|
||||
:commands (dap-mode)
|
||||
:hook ((python-mode) . dap-mode)
|
||||
:config
|
||||
(add-hook 'dap-mode-hook
|
||||
(lambda ()
|
||||
(dap-ui-mode 1)
|
||||
(dap-tooltip-mode 1)))
|
||||
(require 'dap-python)
|
||||
:general
|
||||
(leader-map "cm" 'dap-dispatch)
|
||||
((normal visual motion) "zd" 'dap-dispatch))
|
||||
|
||||
(dap-mode 1)
|
||||
(dap-ui-mode 1)
|
||||
(dap-tooltip-mode 1)
|
||||
|
||||
(with-eval-after-load 'lsp-clients
|
||||
(defun lsp-typescript-javascript-tsx-jsx-activate-p (filename major-mode)
|
||||
"Checks if the javascript-typescript language server should be enabled
|
||||
@ -2090,34 +2086,6 @@ Emacs support for the Language Server Protocol
|
||||
(string-suffix-p ".js" filename t))))))
|
||||
#+END_SRC
|
||||
|
||||
* Java
|
||||
LSP Java uses the Eclipse JDT Language Server as a backend to enable Java IDE features.
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(defun jdormit/set-up-java ()
|
||||
(lsp-java-enable)
|
||||
(flycheck-mode t)
|
||||
(push 'company-lsp company-backends)
|
||||
(company-mode t)
|
||||
(lsp-ui-flycheck-enable t)
|
||||
(set-variable 'c-basic-offset 2)
|
||||
(lsp-ui-sideline-mode))
|
||||
|
||||
(use-package lsp-java
|
||||
:requires (lsp-ui-flycheck lsp-ui-sideline)
|
||||
:config
|
||||
(add-hook 'java-mode-hook 'jdormit/set-up-java)
|
||||
(setq lsp-inhibit-message t
|
||||
lsp-java-import-maven-enabled t))
|
||||
#+END_SRC
|
||||
|
||||
Configure Java project sources:
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(setq lsp-java--workspace-folders
|
||||
(list (expand-file-name "~/src/Automation")
|
||||
(expand-file-name "~/src/AutomationSharedExecution")
|
||||
(expand-file-name "~/src/AutomationPlatform")))
|
||||
#+END_SRC
|
||||
|
||||
* Python
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
;; (leader-def-key "sp" #'elpy-shell-switch-to-shell)
|
||||
@ -2285,8 +2253,10 @@ Clj-refactor adds magical refactoring abilities:
|
||||
|
||||
Enable Org-mode Clojure evaluation:
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(add-hook 'org-mode-hook
|
||||
(lambda ()
|
||||
(require 'ob-clojure)
|
||||
(setq org-babel-clojure-backend 'cider)
|
||||
(setq org-babel-clojure-backend 'cider)))
|
||||
#+END_SRC
|
||||
|
||||
Integrate with cljfmt, the Clojure code formatter:
|
||||
@ -2694,8 +2664,9 @@ Instead of the *GNU Emacs* buffer on startup, display a cool dashboard:
|
||||
dashboard-startup-banner 'official
|
||||
dashboard-set-heading-icons t
|
||||
dashboard-set-file-icons t
|
||||
dashboard-set-navigator t)
|
||||
(dashboard-setup-startup-hook))
|
||||
dashboard-set-navigator t))
|
||||
|
||||
(dashboard-setup-startup-hook)
|
||||
#+END_SRC
|
||||
|
||||
For some reason Emacs is starting up with the dashboard and the *scratch* buffer open in a split configuration. Not sure why, but let's put a stop to that...
|
||||
@ -3296,73 +3267,6 @@ Because emojis make everything better.
|
||||
(leader-def-key "te" 'emojify-mode)
|
||||
#+END_SRC
|
||||
|
||||
* Mastodon
|
||||
[[https://joinmastodon.org/][Mastodon]] is a federated FOSS social network similar to Twitter. Let's put it in Emacs!
|
||||
|
||||
First, install a dependency:
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(use-package discover)
|
||||
#+END_SRC
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(defun jdormit/mastodon-setup ()
|
||||
(general-def 'normal mastodon-mode-map "j" #'mastodon-tl--goto-next-toot)
|
||||
(general-def 'normal mastodon-mode-map "k" #'mastodon-tl--goto-prev-toot)
|
||||
(general-def 'normal mastodon-mode-map "h" #'mastodon-tl--next-tab-item)
|
||||
(general-def 'normal mastodon-mode-map "l" #'mastodon-tl--previous-tab-item)
|
||||
(general-def 'normal mastodon-mode-map [?\t] #'mastodon-tl--next-tab-item)
|
||||
(general-def 'normal mastodon-mode-map [backtab] #'mastodon-tl--previous-tab-item)
|
||||
(general-def 'normal mastodon-mode-map [?\S-\t] #'mastodon-tl--previous-tab-item)
|
||||
(general-def 'normal mastodon-mode-map [?\M-\t] #'mastodon-tl--previous-tab-item)
|
||||
;; Navigating to other buffers:
|
||||
(general-def 'normal mastodon-mode-map "N" #'mastodon-notifications--get)
|
||||
(general-def 'normal mastodon-mode-map "A" #'mastodon-profile--get-toot-author)
|
||||
(general-def 'normal mastodon-mode-map "U" #'mastodon-profile--show-user)
|
||||
(general-def 'normal mastodon-mode-map "F" #'mastodon-tl--get-federated-timeline)
|
||||
(general-def 'normal mastodon-mode-map "H" #'mastodon-tl--get-home-timeline)
|
||||
(general-def 'normal mastodon-mode-map "L" #'mastodon-tl--get-local-timeline)
|
||||
(general-def 'normal mastodon-mode-map "t" #'mastodon-tl--thread)
|
||||
(general-def 'normal mastodon-mode-map "T" #'mastodon-tl--get-tag-timeline)
|
||||
(general-def 'normal mastodon-mode-map "q" #'kill-this-buffer)
|
||||
(general-def 'normal mastodon-mode-map "Q" #'kill-buffer-and-window)
|
||||
;; Actions
|
||||
(general-def 'normal mastodon-mode-map "c" #'mastodon-tl--toggle-spoiler-text-in-toot)
|
||||
(general-def 'normal mastodon-mode-map "g" #'undefined) ;; override special mode binding
|
||||
(general-def 'normal mastodon-mode-map "n" #'mastodon-toot)
|
||||
(general-def 'normal mastodon-mode-map "r" #'mastodon-toot--reply)
|
||||
(general-def 'normal mastodon-mode-map "u" #'mastodon-tl--update)
|
||||
(general-def 'normal mastodon-mode-map "b" #'mastodon-toot--toggle-boost)
|
||||
(general-def 'normal mastodon-mode-map "f" #'mastodon-toot--toggle-favourite)
|
||||
(general-def 'normal mastodon-mode-map "?" #'makey-key-mode-popup-mastodon)
|
||||
(general-def 'normal mastodon-profile-mode-map "F" #'mastodon-profile--open-followers)
|
||||
(general-def 'normal mastodon-profile-mode-map "f" #'mastodon-profile--open-following))
|
||||
|
||||
(eval-and-compile
|
||||
(defun mastodon-load-path ()
|
||||
(expand-file-name "~/mastodon.el/lisp")))
|
||||
|
||||
(if (file-exists-p (mastodon-load-path))
|
||||
(use-package mastodon
|
||||
:load-path (lambda () (mastodon-load-path))
|
||||
:init (setq mastodon-instance-url "https://mastodon.technology")
|
||||
:config
|
||||
(jdormit/mastodon-setup)
|
||||
:commands
|
||||
(mastodon
|
||||
mastodon-toot))
|
||||
(use-package mastodon
|
||||
:init (setq mastodon-instance-url "https://mastodon.technology")
|
||||
:config
|
||||
(jdormit/mastodon-setup)
|
||||
:commands
|
||||
(mastodon
|
||||
mastodon-toot)))
|
||||
|
||||
(jdormit/define-prefix "aM" "mastodon")
|
||||
(leader-def-key "aMm" 'mastodon)
|
||||
(leader-def-key "aMt" 'mastodon-toot)
|
||||
#+END_SRC
|
||||
|
||||
* Calc
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(leader-def-key "ac" 'calc)
|
||||
@ -3456,7 +3360,7 @@ Or Gnus can read RSS feeds directly:
|
||||
#+END_SRC
|
||||
|
||||
* Dired
|
||||
Set up a hydra for dired and enable [[info:dired-x#Top][Dired-X]]:
|
||||
Set up a hydra for dired:
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(use-package dired
|
||||
:straight (:type built-in)
|
||||
@ -3491,7 +3395,7 @@ Set up a hydra for dired and enable [[info:dired-x#Top][Dired-X]]:
|
||||
("G" dired-do-chgrp)
|
||||
("g" revert-buffer) ;; read all directories again (refresh)
|
||||
("i" dired-maybe-insert-subdir)
|
||||
("l" dired-do-redisplay) ;; relist the marked or singel directory
|
||||
("l" dired-do-redisplay) ;; relist the marked or single directory
|
||||
("M" dired-do-chmod)
|
||||
("m" dired-mark)
|
||||
("O" dired-display-file)
|
||||
@ -3511,8 +3415,6 @@ Set up a hydra for dired and enable [[info:dired-x#Top][Dired-X]]:
|
||||
("Z" dired-do-compress)
|
||||
("q" nil)
|
||||
("." nil :color blue))
|
||||
:config
|
||||
(require 'dired-x)
|
||||
:general
|
||||
((normal visual motion insert emacs) dired-mode-map "." 'hydra-dired/body)
|
||||
(dired-mode-map "SPC" leader-map))
|
||||
@ -3669,7 +3571,8 @@ An alternative minibuffer completion framework:
|
||||
(use-package graphviz-dot-mode
|
||||
:mode (("\\.dot\\'" . graphviz-dot))
|
||||
:init
|
||||
(add-to-list 'org-src-lang-modes '("dot" . graphviz-dot)))
|
||||
(with-eval-after-load 'org
|
||||
(add-to-list 'org-src-lang-modes '("dot" . graphviz-dot))))
|
||||
#+END_SRC
|
||||
|
||||
** Functions
|
||||
@ -4326,9 +4229,10 @@ Some functions to make my day job easier.
|
||||
|
||||
** Debug configurations (dap)
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(with-eval-after-load 'dap-mode
|
||||
(dap-register-debug-template
|
||||
"lola-server"
|
||||
(list :type "python"
|
||||
(list :type "python")
|
||||
:args "bin/start_web.py"
|
||||
:cwd (expand-file-name "~/lola/lola-server")
|
||||
:env (extract-vars-from-env-file (expand-file-name "~/lola/lola-server/.env"))
|
||||
@ -4600,7 +4504,8 @@ Explore APIs from within Emacs!
|
||||
(add-to-list 'company-backends 'company-restclient))
|
||||
|
||||
(use-package ob-restclient
|
||||
:after (restclient))
|
||||
:defer t
|
||||
:hook (org-mode . (lambda () (require 'ob-restclient))))
|
||||
#+END_SRC
|
||||
|
||||
* IMenu
|
||||
|
Loading…
Reference in New Issue
Block a user