diff --git a/README.md b/README.md
index e884e5804..38d1977ac 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-[][sc]
+[][sc]
[](./LICENSE)
[](./init.el)
@@ -11,13 +11,13 @@
This is an Emacs configuration for a stubborn, melodramatic and shell-dwelling
vimmer disappointed with the text-editor status quo.
-Doom tries to look and act like modern editors (whatever that means to me on any
-given day), espouse vim's modal philosophy as best it can, and strive to surpass
-vim in any way possible. It fits my needs as a software developer, indie game
-developer, scientist and doom enthusiast.
+Doom tries to: look and act like modern editors (whatever that means to me on
+any given day), espouse vim's modal philosophy as best it can and strive to
+surpass vim in any way possible. It fits my needs as a software developer, indie
+game developer, scientist and doom enthusiast.
-It was tailored for **MacOS 10.11+** and **Arch Linux 4.7+**, and
-**exclusively** for Emacs 25.1+. I use [vim] everywhere else.
+It was tailored for **Emacs 25.1+** on **MacOS 10.11+** and **Arch Linux 4.7+**.
+I use [vim] everywhere else.
## Installation
@@ -54,26 +54,30 @@ To get a picture of what's in here, check out:
### Highlights
-* A [popup management system](core/core-popups.el) using **[shackle]** for
- temporary or disposable buffers.
-* Per-project code-style settings with **[editorconfig]**.
-* Workspaces, tab emulation & session persistence with **[persp-mode]**.
-* Project and workspace-restricted buffer navigation and functions.
+* A [popup window management system](core/core-popups.el) using **[shackle]** to
+ minimize mental context switching while dealing with temporary or disposable
+ buffers.
+* Per-project code-style settings with **[editorconfig]**. Let someone else
+ argue about tabs versus spaces (spaces > tabs, btw).
+* Workspaces & session persistence with **[persp-mode]**. This provides tab
+ emulation that vaguely resembles vim tabs.
+* Project & workspace-aware buffer navigation and functions.
* A vim-centric environment with **[evil-mode]**
* 2-character motions (ala vim-seek/vim-sneak) with **[evil-snipe]**
* Sublime Text-esque [multiple cursors][sc-multiedit] with
- **[evil-multiedit]**
+ **[evil-mc]** and **[evil-multiedit]**
* Repeat (most) motions with SPC and
shift+SPC (backwards)
- * Global C-x omnicompletion
+ * C-x omnicompletion in insert mode
* Fast search utilities:
* Project and buffer navigation with **[ivy]**
* File browser sidebar with **[neotree]**
- * Project search (& replace) with **[counsel-ag]** (and **[wgrep]**)
+ * Project text search powered by [the silver searcher][ag] and [ripgrep][rg]
+ (see `:ag` and `:rg`)
+ * Project search & replace with **[wgrep]**
* Interactive buffer search with **[swiper]**
-* REPLs & inline/live code evaluation (using **[quickrun]** and
- **[repl-toggle]**) for many languages including Ruby, Python, PHP, JS, Elisp,
- Haskell and Lua.
+* REPLs & inline/live code evaluation (using **[quickrun]**) with languages
+ support for Ruby, Python, PHP, JS, Elisp, Haskell, Lua and more.
* [Minimalistic diffs in the fringe][sc-diffs] with **[git-gutter-fringe]**.
* A do-what-I-mean jump-to-definition implementation that tries its darnest to
find the definition of what you're looking at. It tries major-mode commands,
@@ -105,6 +109,7 @@ even elisp tips.
[doom-theme]: https://github.com/hlissner/emacs-doom-theme
[dumb-jump]: https://melpa.org/#/dumb-jump
[editorconfig]: http://editorconfig.org/
+[evil-mc]: https://github.com/gabesoft/evil-mc
[evil-mode]: https://melpa.org/#/evil
[evil-multiedit]: https://melpa.org/#/evil-multiedit
[evil-snipe]: https://melpa.org/#/evil-snipe
@@ -113,7 +118,6 @@ even elisp tips.
[neotree]: https://melpa.org/#/neotree
[persp-mode]: https://melpa.org/#/persp-mode
[quickrun]: https://melpa.org/#/quickrun
-[repl-toggle]: https://melpa.org/#/repl-toggle
[sc-diffs]: https://github.com/hlissner/.emacs.d/blob/screenshots/git-gutter.png?raw=true
[sc-multiedit]: https://raw.githubusercontent.com/hlissner/evil-multiedit/screenshots/main.gif?raw=true
[sc]: https://github.com/hlissner/.emacs.d/tree/screenshots
diff --git a/TODO.org b/TODO.org
index 833a9190f..8fec2fd3c 100644
--- a/TODO.org
+++ b/TODO.org
@@ -5,10 +5,10 @@
+ [-] Work-in-progress
+ [X] Complete
-** Planned [6/87]
+** Planned [6/73]
+ [0/11] Potential plugins
- + [-] [[https://github.com/syl20bnr/vi-tilde-fringe][vi-tilde-fringe]]: subtle, vim-ish empty-line indicator
+ [ ] [[https://github.com/emacs-lsp/lsp-mode][lsp-mode]]: client for MS Language Server Protocol, keep an eye on this
+ + [ ] lang/javascript: [[https://github.com/NicolasPetton/Indium][indium]] (IDE), keep an eye on this
+ [ ] lang/javascript: [[https://github.com/codesuki/add-node-modules-path][add-node-modules-path]] (adds node_modules to ~exec-path~)
+ [ ] lang/org: [[https://github.com/Malabarba/latex-extra][orgit]] (org links to magit buffers)
+ [ ] lang/org: [[https://github.com/jkitchin/org-ref][org-ref]] (bibtex/citation helper)
@@ -17,10 +17,8 @@
+ [ ] lang/latex: [[**https://github.com/jsinglet/latex-preview-pane][latex-preview-pane]]
+ [ ] lang/julia: [[ https://github.com/dennisog/julia-shell-mode][julia-shell]] (unsure if better than inferior-julia in julia-mode)
+ [ ] lang/python: [[https://github.com/Wilfred/pyimport][pyimport]]
- + [ ] An image plugin for zooming images at point
- + https://github.com/mhayashi1120/Emacs-imagex ?
-+ [0/5] New modules
- + [ ] tools/regex (PCRE regex editor, perhaps use ~re-builder~ & ~pcre2el~?)
+ + [ ] An image plugin for zooming images at point (maybe [[https://github.com/mhayashi1120/Emacs-imagex][emacs-imagex]])
++ [0/4] New modules
+ [ ] app/finance (maybe settle for org-mode tables?)
+ [ ] app/irc
+ [-] app/crm
@@ -90,23 +88,33 @@
+ [ ] rss
+ [ ] twitter
+ [ ] present
-+ [-] core-ui: switch from nlinum => linum
-+ [-] ui/doom-modeline: different faces for buffer path and file name
+
+** 2.0.3 [4/18]
++ [ ] lang/org: fix janky visual line motions (~evil-next-visual-line~, etc)
++ [ ] lang/org: fix janky cursor positioning when manipulating org-table cells
++ [ ] lang/org: don't move cursor when realigning org tables
++ [ ] lang/org: certain characters/keys--when typed in a table--cause the cell
+ to shrink (smartparens pairs & non-self-insert-command, likely)
++ [ ] core-ui: replace ~winner-mode~ (too unreliable)
++ [ ] Generalize ~doom-visual-bell~ by basing its background off a face
+ [ ] ui/doom-modeline: extend ~media-info~ segment for other media
+ [ ] completion/ivy: flexible column width for ~+ivy/tasks~
-+ [ ] Extend ~evil-escape~ to ~evil-multiedit-insert-state~
-+ [ ] ui/doom (nav-flash): don't flash when activating evil-multiedit or in eshell/term buffers
++ [ ] features/evil: extend ~evil-escape~ to ~evil-multiedit-insert-state~
++ [ ] ui/doom: fix nav-flash on evil-multiedit or in eshell/term buffers
+ [ ] Write ~describe-setting~ for ~def-setting!~ definitions.
-+ [ ] lang/org: fix janky cursor positioning when manipulating table cells
-+ [ ] lang/org: don't move cursor when realigning tables
-+ [ ] lang/org: certain characters/keys, when typed in a table, cause the cell to shrink (smartparens pairs & non-self-insert-command, likely)
+ [ ] Fix invisible buffer-info segment in modeline for terminal Emacs
-+ [ ] tools/upload: add ~+upload/open-remote-file~ command to open current file on the remote (with TRAMP)
-+ [ ] Generalize ~doom-visual-bell~ by basing its background off a face
++ [ ] tools/upload: add ~+upload/open-remote-file~ command to open current file
+ on the remote (with TRAMP)
++ [ ] tools/regex: PCRE regex editor, maybe ~re-builder~ & ~pcre2el~?
++ [X] Fix help-mode links opening new popups #ui
+ Added ~:noclone~ property to popup rules
++ [X] Different faces for buffer path and file name #ui
++ [X] Switch from nlinum => linum #ui
++ [X] [[https://github.com/syl20bnr/vi-tilde-fringe][vi-tilde-fringe]]: subtle, vim-ish empty-line indicator #ui
** 2.0.2 [67/67]
+ [X] Update screenshots
-+ [X] ui/doom: polish git-gutter fringe bitmaps (deleted appears truncated)
++ [X] ui/doom: polish git-gutter fringe bitmaps (deleted bitmap appears truncated)
+ [X] ui/doom-modeline: fix ~0/0~ display in modeline (leftover anzu state)
+ [X] send-to-REPL workflow: does it still work? (see ~:repl~ & ~+eval/repl-send-region~)
+ [X] completion/ivy: restore ag searching (for compressed files)
diff --git a/core/core-ui.el b/core/core-ui.el
index 76bf74e90..e93ac251e 100644
--- a/core/core-ui.el
+++ b/core/core-ui.el
@@ -224,7 +224,7 @@ file."
;; For a distractions-free-like UI, that dynamically resizes margets and can
;; center a buffer.
(def-package! visual-fill-column
- :commands (visual-fill-column-mode)
+ :commands visual-fill-column-mode
:config
(setq-default visual-fill-column-center-text nil
visual-fill-column-width fill-column))
diff --git a/core/core.el b/core/core.el
index 21829a6d9..05d50c316 100644
--- a/core/core.el
+++ b/core/core.el
@@ -95,6 +95,7 @@ there are problems.")
create-lockfiles nil
history-length 1000
make-backup-files nil
+ undo-tree-auto-save-history t
;; files
abbrev-file-name (concat doom-local-dir "abbrev.el")
auto-save-list-file-name (concat doom-cache-dir "autosave")
diff --git a/modules/lang/org/config.el b/modules/lang/org/config.el
index cabc46e79..5639e0c07 100644
--- a/modules/lang/org/config.el
+++ b/modules/lang/org/config.el
@@ -204,6 +204,7 @@
;; and separators/dividers
("^ *\\(-----+\\)$" 1 'org-meta-line)
;; custom #hashtags & @at-tags for another level of organization
+ ;; TODO refactor this into a single rule
("\\s-\\(#[^ \n]+\\)" 1 'org-tag)
("\\s-\\(@[^ \n]+\\)" 1 'org-special-keyword))))
@@ -224,20 +225,18 @@
(sp-local-pair "{" nil))
;; The standard unicode characters are usually misaligned depending on the
- ;; font. This bugs me. Personally, the markdown #-marks for headlines are more
- ;; elegant, so use those.
+ ;; font. This bugs me. Personally, markdown #-marks for headlines are more
+ ;; elegant, so we use those.
(def-package! org-bullets
:commands org-bullets-mode
- :init (add-hook 'org-mode-hook 'org-bullets-mode)
+ :init (add-hook 'org-mode-hook #'org-bullets-mode)
:config (setq org-bullets-bullet-list '("#")))
;; Keybinds
(map! (:map org-mode-map
- "RET" nil
+ "RET" #'org-return-indent
"C-j" nil
- "C-k" nil
- :i [remap doom/inflate-space-maybe] #'org-self-insert-command
- :i "RET" #'org-return-indent)
+ "C-k" nil)
(:map evil-org-mode-map
:n "RET" #'+org/dwim-at-point
@@ -266,10 +265,10 @@
:i [backtab] #'+org/dedent-or-prev-field
:n "" #'+org/toggle-fold
+ :v "" #'+snippets/expand-on-region
:nv "j" #'evil-next-visual-line
:nv "k" #'evil-previous-visual-line
- :v "" #'+snippets/expand-on-region
:i "M-a" (λ! (evil-visual-state) (org-mark-element))
:n "M-a" #'org-mark-element
diff --git a/modules/private/hlissner/+bindings.el b/modules/private/hlissner/+bindings.el
index 83faf66e0..e1b9590ff 100644
--- a/modules/private/hlissner/+bindings.el
+++ b/modules/private/hlissner/+bindings.el
@@ -355,6 +355,10 @@
:i [remap delete-backward-char] #'doom/deflate-space-maybe
:i [remap newline] #'doom/newline-and-indent
+ (:after org-mode
+ (:map org-mode-map
+ :i [remap doom/inflate-space-maybe] #'org-self-insert-command))
+
;; Make ESC quit all the things
(:map (minibuffer-local-map
minibuffer-local-ns-map
@@ -381,6 +385,7 @@
(:map help-map
"l" #'find-library
+ "L" #'view-lossage
"h" #'describe-face ; overwrite `view-hello-file'
"g" nil))
diff --git a/modules/ui/doom/config.el b/modules/ui/doom/config.el
index 4850a0db6..38587d215 100644
--- a/modules/ui/doom/config.el
+++ b/modules/ui/doom/config.el
@@ -41,8 +41,6 @@
;;
(def-package! doom-themes :demand t
:config
- (setq doom-one-linum-height 0.9)
-
(load-theme +doom-theme t)
;; Since Fira Mono doesn't have an italicized variant, highlight it instead
@@ -137,4 +135,5 @@
(fringe-helper-define 'git-gutter-fr:deleted 'bottom
"X......."
"XX......"
- "XXX....."))
+ "XXX....."
+ "XXXX...."))