diff --git a/README.md b/README.md index e884e5804..38d1977ac 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![Main screenshot](https://raw.githubusercontent.com/hlissner/.emacs.d/screenshots/main.png?raw=true)][sc] +[![Main screenshot](/../screenshots/main.png?raw=true)][sc] [![MIT](https://img.shields.io/badge/license-MIT-green.svg)](./LICENSE) [![DOOM v2.0.2](https://img.shields.io/badge/DOOM-v2.0.2-blue.svg)](./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...."))