Skip to content
/ emacs Public

Doom Emacs is a configuration framework for GNU Emacs tailored for Emacs bankruptcy veterans who want less framework in their frameworks, a modicum of stability (and reproducibility) from their package manager, and the performance of a hand rolled config (or better). This is my config for Doom Emacs to learn more about our favorite operating sys…

License

Unknown, Unknown licenses found

Licenses found

Unknown
LICENSE
Unknown
LICENSE-DT
Notifications You must be signed in to change notification settings

raven2cz/emacs

Repository files navigation

Fishlive’s Doom Emacs Config

██████╗  █████╗ ██╗   ██╗███████╗███╗   ██╗  Antonin Fischer (raven2cz)
██╔══██╗██╔══██╗██║   ██║██╔════╝████╗  ██║  https://fishlive.org/
██████╔╝███████║██║   ██║█████╗  ██╔██╗ ██║  https://arch-linux.cz/
██╔══██╗██╔══██║╚██╗ ██╔╝██╔══╝  ██║╚██╗██║  https://github.com/raven2cz
██║  ██║██║  ██║ ╚████╔╝ ███████╗██║ ╚████║
╚═╝  ╚═╝╚═╝  ╚═╝  ╚═══╝  ╚══════╝╚═╝  ╚═══╝

images/doom-emacs-dashboard.png

TABLE OF CONTENTS

ABOUT THIS CONFIG

This is my personal Doom Emacs config. Doom Emacs is a distribution of Emacs that uses the “evil” keybindings (Vim keybindings) and includes a number of nice extensions and a bit of configuration out of the box. I am maintaining this config not just for myself, but also for those that want to explore some of what is possible with Emacs 🐧.

Project Inheritance

The Doom Emacs Config Project is inherited from Derek Taylor Emacs Configuration https://gitlab.com/dwt1/dotfiles/-/tree/master/.config/doom. The MIT License is attached to the project LICENSE-DT.

Installation Steps

Doom Emacs installation please read Github hlissner/doom-emacs. There is very raw (but fully all steps) for installation of emacs and my settings for arch system.

Emacs and Doom Emacs Installation

paru -S emacs

git clone --depth 1 https://github.com/hlissner/doom-emacs ~/.emacs.d

$HOME/.emacs.d/bin/doom install

add to /etc/profile files appendpath '$HOME/.emacs.d/bin'

Programming Languages Installation

  • lang cc:

paru -S rtags, Run from emacs: M-x irony-install-server

  • common-lisp:

paru -S sbcl

  • json:

paru -S jq

  • kotlin:

paru -S ktlint

  • python:

paru -S python-pipenv python-nose python-pytest

  • sh:

paru -S shellcheck

  • web:

paru -S tidy stylelint js-beautify

ORG/ORG-ROAM Repos Synch

  • synch your private org and org-roam repos from git
  • link large file resources and images from cloud providers

ln -s $HOME/OneCloud/linux/pictures/org ~/org/images

BOOKMARKS AND BUFFERS

Doom Emacs uses ‘SPC b’ for keybindings related to bookmarks and buffers. Bookmarks are somewhat like registers in that they record positions you can jump to. Unlike registers, they have long names, and they persist automatically from one Emacs session to the next. The prototypical use of bookmarks is to record where you were reading in various files. Regarding buffers, the text you are editing in Emacs resides in an object called a buffer. Each time you visit a file, a buffer is used to hold the file’s text. Each time you invoke Dired, a buffer is used to hold the directory listing.

Bookmarks

Bookmarks are somewhat like registers in that they record positions you can jump to. Unlike registers, they have long names, and they persist automatically from one Emacs session to the next. The prototypical use of bookmarks is to record where you were reading in various files.

(map! :leader
      (:prefix ("b". "buffer")
       :desc "List bookmarks" "L" #'list-bookmarks
       :desc "Save current bookmarks to bookmark file" "w" #'bookmark-save))

CENTAUR-TABS

To use tabs in Doom Emacs, be sure to uncomment “tabs” in Doom’s init.el. Displays tabs at the top of the window similar to tabbed web browsers such as Firefox. I don’t actually use tabs in Emacs. I placed this in my config to help others who may want tabs. In the default configuration of Doom Emacs, ‘SPC t’ is used for “toggle” keybindings, so I choose ‘SPC t c’ to toggle centaur-tabs. The “g” prefix for keybindings is used for a bunch of evil keybindings in Doom, but “g” plus the arrow keys were not used, so I thought I would bind those for tab navigation. But I did leave the default “g t” and “g T” intact if you prefer to use those for centaur-tabs-forward/backward.

COMMANDDESCRIPTIONKEYBINDING
centaur-tabs-modeToggle tabs globallySPC t c
centaur-tabs-local-modeToggle tabs local displaySPC t C
centaur-tabs-forwardNext tabg <right> or g t
centaur-tabs-backwardPrevious tabg <left> or g T
centaur-tabs-forward-groupNext tab groupg <down>
centaur-tabs-backward-groupPrevious tab groupg <up>
(setq centaur-tabs-set-bar 'over
      centaur-tabs-set-icons t
      centaur-tabs-gray-out-icons 'buffer
      centaur-tabs-height 24
      centaur-tabs-set-modified-marker t
      centaur-tabs-style "bar"
      centaur-tabs-modified-marker "")
(map! :leader
      :desc "Toggle tabs globally" "t c" #'centaur-tabs-mode
      :desc "Toggle tabs local display" "t C" #'centaur-tabs-local-mode)
(evil-define-key 'normal centaur-tabs-mode-map (kbd "g <right>") 'centaur-tabs-forward        ; default Doom binding is 'g t'
                                               (kbd "g <left>")  'centaur-tabs-backward       ; default Doom binding is 'g T'
                                               (kbd "g <down>")  'centaur-tabs-forward-group
                                               (kbd "g <up>")    'centaur-tabs-backward-group)

DASHBOARD

Emacs Dashboard is an extensible startup screen showing you recent files, bookmarks, agenda items and an Emacs banner.

images/doom-emacs-dashboard-2.png

Configuring Dashboard

(seq-random-elt [1 2])

(use-package dashboard
  :init      ;; tweak dashboard config before loading it
  (setq dashboard-set-heading-icons t)
  (setq dashboard-set-file-icons t)
  (setq dashboard-banner-logo-title "Emacs Is More Than A Text Editor!")
  ;;(setq dashboard-startup-banner 'logo) ;; use standard emacs logo as banner
  (setq dashboard-startup-banner (seq-random-elt [
                                                  "~/.config/doom/doom.png"
                                                  "~/.config/doom/emacs-line-t.png"
                                                  "~/.config/doom/org-roam.png"
                                                  "~/.config/doom/meditate.png"
                                                  "~/.config/doom/emacs-dash.png"
                                                  ]))
  ;;(setq dashboard-startup-banner "~/.config/doom/emacs-line-t.png")  ;; use custom image as banner
  (setq dashboard-center-content nil) ;; set to 't' for centered content
  (setq dashboard-items '((recents . 5)
                          (agenda . 5 )
                          (bookmarks . 5)
                          (projects . 5)
                          (registers . 5)))
  :config
  (dashboard-setup-startup-hook)
  (dashboard-modify-heading-icons '((recents . "file-text")
  (bookmarks . "book"))))

Dashboard in Emacsclient

This setting ensures that emacsclient always opens on dashboard rather than scratch.

(setq doom-fallback-buffer-name "*dashboard*")

DOOM THEME

Setting the theme to doom-one. To try out new themes, I set a keybinding for counsel-load-theme with ‘SPC h t’.

(map! :leader
      :desc "Load new theme" "h t" #'counsel-load-theme)
;; There are two ways to load a theme. Both assume the theme is installed and
;; available. You can either set `doom-theme' or manually load a theme with the
;; `load-theme' function. This is the default:
;;(setq doom-theme 'doom-palenight)
;;(setq doom-theme 'doom-one)
(use-package doom-themes
   :config
   ;; Global settings (defaults)
   (setq doom-themes-enable-bold t    ; if nil, bold is universally disabled
         doom-themes-enable-italic t) ; if nil, italics is universally disabled
   (load-theme 'doom-one t)

   ;; Enable flashing mode-line on errors
   (doom-themes-visual-bell-config)
   ;; Enable custom neotree theme (all-the-icons must be installed!)
   (doom-themes-neotree-config)
   ;; or for treemacs users
   (doom-themes-treemacs-config)
   ;; Corrects (and improves) org-mode's native fontification.
   (doom-themes-org-config))

(setq doom-themes-treemacs-theme "doom-colors")

EMOJIS

Emojify is an Emacs extension to display emojis. It can display github style emojis like 😄 or plain ascii ones like :).

(use-package emojify
  :hook (after-init . global-emojify-mode))

ELFEED

An RSS newsfeed reader for Emacs.

(use-package! elfeed-goodies)
(elfeed-goodies/setup)
(setq elfeed-goodies/entry-pane-size 0.5)
(add-hook 'elfeed-show-mode-hook 'visual-line-mode)
(evil-define-key 'normal elfeed-show-mode-map
  (kbd "J") 'elfeed-goodies/split-show-next
  (kbd "K") 'elfeed-goodies/split-show-prev)
(evil-define-key 'normal elfeed-search-mode-map
  (kbd "J") 'elfeed-goodies/split-show-next
  (kbd "K") 'elfeed-goodies/split-show-prev)
(setq elfeed-feeds (quote
                    (("https://www.reddit.com/r/linux.rss" reddit linux)
                     ("https://www.reddit.com/r/commandline.rss" reddit commandline)
                     ("https://www.reddit.com/r/distrotube.rss" reddit distrotube)
                     ("https://www.reddit.com/r/emacs.rss" reddit emacs)
                     ("https://www.gamingonlinux.com/article_rss.php" gaming linux)
                     ("https://hackaday.com/blog/feed/" hackaday linux)
                     ("https://opensource.com/feed" opensource linux)
                     ("https://linux.softpedia.com/backend.xml" softpedia linux)
                     ("https://itsfoss.com/feed/" itsfoss linux)
                     ("https://www.zdnet.com/topic/linux/rss.xml" zdnet linux)
                     ("https://www.phoronix.com/rss.php" phoronix linux)
                     ("http://feeds.feedburner.com/d0od" omgubuntu linux)
                     ("https://www.computerworld.com/index.rss" computerworld linux)
                     ("https://www.networkworld.com/category/linux/index.rss" networkworld linux)
                     ("https://www.techrepublic.com/rssfeeds/topic/open-source/" techrepublic linux)
                     ("https://betanews.com/feed" betanews linux)
                     ("http://lxer.com/module/newswire/headlines.rss" lxer linux)
                     ("https://distrowatch.com/news/dwd.xml" distrowatch linux))))

EVALUATE ELISP EXPRESSIONS

Changing some keybindings from their defaults to better fit with Doom Emacs, and to avoid conflicts with my window managers which sometimes use the control key in their keybindings. By default, Doom Emacs does not use ‘SPC e’ for anything, so I choose to use the format ‘SPC e’ plus ‘key’ for these (I also use ‘SPC e’ for ‘eww’ keybindings).

COMMANDDESCRIPTIONKEYBINDING
eval-bufferEvaluate elisp in bufferSPC e b
eval-defunEvaluate the defun containing or after pointSPC e d
eval-expressionEvaluate an elisp expressionSPC e e
eval-last-sexpEvaluate elisp expression before pointSPC e l
eval-regionEvaluate elisp in regionSPC e r
(map! :leader
      (:prefix ("e". "evaluate/ERC/EWW")
       :desc "Evaluate elisp in buffer" "b" #'eval-buffer
       :desc "Evaluate defun" "d" #'eval-defun
       :desc "Evaluate elisp expression" "e" #'eval-expression
       :desc "Evaluate last sexpression" "l" #'eval-last-sexp
       :desc "Evaluate elisp in region" "r" #'eval-region))

FONTS

Settings related to fonts within Doom Emacs:

  • ‘doom-font’ – standard monospace font that is used for most things in Emacs.
  • ‘doom-variable-pitch-font’ – variable font which is useful in some Emacs plugins.
  • ‘doom-big-font’ – used in doom-big-font-mode; useful for presentations.
  • ‘font-lock-comment-face’ – for comments.
  • ‘font-lock-keyword-face’ – for keywords with special significance like ‘setq’ in elisp.
  • ‘global-prettify-symbols-mode’ – change certain keywords to symbols, such as lambda!
(setq doom-font (font-spec :family "UbuntuMono Nerd Font" :size 19)
       doom-variable-pitch-font (font-spec :family "UbuntuMono Nerd Font" :size 19))
(after! doom-themes
  (setq doom-themes-enable-bold t
        doom-themes-enable-italic t))
(custom-set-faces!
  '(font-lock-comment-face :slant italic)
  '(font-lock-keyword-face :slant italic))

IVY

Ivy is a generic completion mechanism for Emacs.

IVY-POSFRAME

Ivy-posframe is an ivy extension, which lets ivy use posframe to show its candidate menu. Some of the settings below involve:

  • ivy-posframe-display-functions-alist – sets the display position for specific programs
  • ivy-posframe-height-alist – sets the height of the list displayed for specific programs

Available functions (positions) for ‘ivy-posframe-display-functions-alist’

  • ivy-posframe-display-at-frame-center
  • ivy-posframe-display-at-window-center
  • ivy-posframe-display-at-frame-bottom-left
  • ivy-posframe-display-at-window-bottom-left
  • ivy-posframe-display-at-frame-bottom-window-center
  • ivy-posframe-display-at-point
  • ivy-posframe-display-at-frame-top-center

NOTE: If the setting for ‘ivy-posframe-display’ is set to ‘nil’ (false), anything that is set to ‘ivy-display-function-fallback’ will just default to their normal position in Doom Emacs (usually a bottom split). However, if this is set to ‘t’ (true), then the fallback position will be centered in the window.

(setq ivy-posframe-display-functions-alist
      '((swiper                     . ivy-posframe-display-at-point)
        (complete-symbol            . ivy-posframe-display-at-point)
        (counsel-M-x                . ivy-display-function-fallback)
        (counsel-esh-history        . ivy-posframe-display-at-window-center)
        (counsel-describe-function  . ivy-display-function-fallback)
        (counsel-describe-variable  . ivy-display-function-fallback)
        (counsel-find-file          . ivy-display-function-fallback)
        (counsel-recentf            . ivy-display-function-fallback)
        (counsel-register           . ivy-posframe-display-at-frame-bottom-window-center)
        (dmenu                      . ivy-posframe-display-at-frame-top-center)
        (nil                        . ivy-posframe-display))
      ivy-posframe-height-alist
      '((swiper . 20)
        (dmenu . 20)
        (t . 10)))
(ivy-posframe-mode 1) ; 1 enables posframe-mode, 0 disables it.

IVY KEYBINDINGS

By default, Doom Emacs does not use ‘SPC v’, so the format I use for these bindings is ‘SPC v’ plus ‘key’.

(map! :leader
      (:prefix ("v" . "Ivy")
       :desc "Ivy push view" "v p" #'ivy-push-view
       :desc "Ivy switch view" "v s" #'ivy-switch-view))

LINE SETTINGS

I set comment-line to ‘SPC TAB TAB’ which is a rather comfortable keybinding for me on my ZSA Moonlander keyboard. The standard Emacs keybinding for comment-line is ‘C-x C-;’. The other keybindings are for commands that toggle on/off various line-related settings. Doom Emacs uses ‘SPC t’ for “toggle” commands, so I choose ‘SPC t’ plus ‘key’ for those bindings.

COMMANDDESCRIPTIONKEYBINDING
comment-lineComment or uncomment linesSPC TAB TAB
hl-line-modeToggle line highlighting in current frameSPC t h
global-hl-line-modeToggle line highlighting globallySPC t H
doom/toggle-line-numbersToggle line numbersSPC t l
toggle-truncate-linesToggle truncate linesSPC t t
(setq display-line-numbers-type t)
(map! :leader
      :desc "Comment or uncomment lines" "TAB TAB" #'comment-line
      (:prefix ("t" . "toggle")
       :desc "Toggle line numbers" "l" #'doom/toggle-line-numbers
       :desc "Toggle line highlight in frame" "h" #'hl-line-mode
       :desc "Toggle line highlight globally" "H" #'global-hl-line-mode
       :desc "Toggle truncate lines" "t" #'toggle-truncate-lines))

MOUSE SUPPORT

Adding mouse support in the terminal version of Emacs.

(xterm-mouse-mode 1)

MAIN ACCOUNT

Some functionality uses this to identify you, e.g. GPG configuration, email clients, file templates and snippets.

(setq user-full-name "Antonin Fischer"
      user-mail-address "tonda.fischer@gmail.com")

OPEN SPECIFIC FILES

Keybindings to open files that I work with all the time using the find-file command, which is the interactive file search that opens with ‘C-x C-f’ in GNU Emacs or ‘SPC f f’ in Doom Emacs. These keybindings use find-file non-interactively since we specify exactly what file to open. The format I use for these bindings is ‘SPC -’ plus ‘key’ since Doom Emacs does not use these keybindings.

PATH TO FILEDESCRIPTIONKEYBINDING
~/org/agenda.orgEdit agenda fileSPC - a
~/.config/doom/config.org”Edit doom config.orgSPC - c
~/.config/doom/eshell/aliases”Edit eshell aliasesSPC - e a
~/.config/doom/eshell/profile”Edit eshell profileSPC - e p
~/.config/doom/init.el”Edit doom init.elSPC - i
~/.config/doom/packages.el”Edit doom packages.elSPC - p
(map! :leader
      (:prefix ("-" . "open file")
       :desc "Edit agenda file" "a" #'(lambda () (interactive) (find-file "~/org/agenda.org"))
       :desc "Edit doom config.org" "c" #'(lambda () (interactive) (find-file "~/.config/doom/config.org"))
       :desc "Edit eshell aliases" "e a" #'(lambda () (interactive) (find-file "~/.config/doom/eshell/aliases"))
       :desc "Edit eshell aliases" "e p" #'(lambda () (interactive) (find-file "~/.config/doom/eshell/profile"))
       :desc "Edit doom init.el" "i" #'(lambda () (interactive) (find-file "~/.config/doom/init.el"))
       :desc "Edit doom packages.el" "p" #'(lambda () (interactive) (find-file "~/.config/doom/packages.el"))))

ORG MODE

A GNU Emacs major mode for convenient plain text markup — and much more.

Org mode is for keeping notes, maintaining to-do lists, planning projects, authoring documents, computational notebooks, literate programming and more — in a fast and effective plain text system.

images/org-mode-1.jpg

;; If you use `org' and don't want your org files in the default location below,
;; change `org-directory'. It must be set before org loads!
(setq org-directory "~/org/")

(after! org
  (add-hook 'org-mode-hook (lambda () (org-bullets-mode 1))))
;; This determines the style of line numbers in effect. If set to `nil', line
;; numbers are disabled. For relative line numbers, set this to `relative'.
(setq display-line-numbers-type t)

ORG ROAM

Org Mode is known to be a great tool not just for writing and personal notes but also TODO lists, project planning, time tracking, and more. Once you start to become really invested in Org Mode you’ll eventually have to come up with a system for managing your Org files so that it’s easy to store and find the information you need.

Org Roam is an extension to Org Mode which solves a couple of the biggest problems that I’ve personally had when using Org for personal notes:

  • How many Org files do I need?
  • How do I decide where to put things in my Org files?

Org Roam solves these problems by making it easy to create topic-focused Org Files and link them together so that you can treat the information as nodes in a network rather than as hierarchical documents. You can think of it like a personal wiki!

It’s inspired by a program called Roam and a note-taking strategy called Zettelkasten where the goal is to create many individual single-topic notes that are linked together to create a “networked” knowledge base.

Many people consider this like creating a “second brain” because it can easily handle a huge amount of knowledge and remind you of connections between topics very effectively.

The major advantage of Org Roam over other similar note taking tools is that you get to use all of the other great features of Org Mode in a new way!

(use-package org-roam
  :custom
  (org-roam-directory "~/org/roam")
  :bind (("C-c n l" . org-roam-buffer-toggle)
         ("C-c n f" . org-roam-node-find)
         ("C-c n i" . org-roam-node-insert))
  :config
  (org-roam-setup))

NEOTREE

Neotree is a file tree viewer. When you open neotree, it jumps to the current file thanks to neo-smart-open. The neo-window-fixed-size setting makes the neotree width be adjustable. Doom Emacs had no keybindings set for neotree. Since Doom Emacs uses ‘SPC t’ for ‘toggle’ keybindings, I used ‘SPC t n’ for toggle-neotree.

COMMANDDESCRIPTIONKEYBINDING
neotree-toggleToggle neotreeSPC t n
neotree- dirOpen directory in neotreeSPC d n
(after! neotree
  (setq neo-smart-open t
        neo-window-fixed-size nil))
(after! doom-themes
  (setq doom-neotree-enable-variable-pitch t))
(map! :leader
      :desc "Toggle neotree file viewer" "t n" #'neotree-toggle
      :desc "Open directory in neotree" "d n" #'neotree-dir)

PASSWORD STORE

Uses the standard Unix password store “pass”.

(use-package! password-store)

REGISTERS

Emacs registers are compartments where you can save text, rectangles and positions for later use. Once you save text or a rectangle in a register, you can copy it into the buffer once or many times; once you save a position in a register, you can jump back to that position once or many times. The default GNU Emacs keybindings for these commands (with the exception of counsel-register) involves ‘C-x r’ followed by one or more other keys. I wanted to make this a little more user friendly, and since I am using Doom Emacs, I choose to replace the ‘C-x r’ part of the key chords with ‘SPC r’.

COMMANDDESCRIPTIONKEYBINDING
copy-to-registerCopy to registerSPC r c
frameset-to-registerFrameset to registerSPC r f
insert-registerInsert contents of registerSPC r i
jump-to-registerJump to registerSPC r j
list-registersList registersSPC r l
number-to-registerNumber to registerSPC r n
counsel-registerInteractively choose a registerSPC r r
view-registerView a registerSPC r v
window-configuration-to-registerWindow configuration to registerSPC r w
increment-registerIncrement registerSPC r +
point-to-registerPoint to registerSPC r SPC
(map! :leader
      (:prefix ("r" . "registers")
       :desc "Copy to register" "c" #'copy-to-register
       :desc "Frameset to register" "f" #'frameset-to-register
       :desc "Insert contents of register" "i" #'insert-register
       :desc "Jump to register" "j" #'jump-to-register
       :desc "List registers" "l" #'list-registers
       :desc "Number to register" "n" #'number-to-register
       :desc "Interactively choose a register" "r" #'counsel-register
       :desc "View a register" "v" #'view-register
       :desc "Window configuration to register" "w" #'window-configuration-to-register
       :desc "Increment register" "+" #'increment-register
       :desc "Point to register" "SPC" #'point-to-register))

REMOTE CONNECTIONS

Keybindings for ssh’ing into remote machines. By default, Doom Emacs does not use ‘SPC ', so the format I use for these bindings is ‘SPC ' plus ‘key’.

DESCRIPTIONKEYBINDING
Ssh into distrotube.comSPC \ d
Ssh into my nextcloudSPC \ n
(map! :leader
      (:prefix ("\\" . "ssh")
       :desc "Ssh into fishlive.org" "\\ d" #'(lambda () (interactive) (find-file "/scp:pi@fishlive.org"))
       :desc "Ssh into Ubuntu Server" "\\ n" #'(lambda () (interactive) (find-file "/scp:box@192.168.88.100"))))

SHELLS

Settings for the various shells and terminal emulators within Emacs.

  • ‘shell-file-name’ – sets the shell to be used in M-x shell, M-x term, M-x ansi-term and M-x vterm.
  • ‘eshell-aliases-file’ – sets an aliases file for the eshell.
(setq shell-file-name "/bin/fish"
      vterm-max-scrollback 5000)
(setq eshell-rc-script "~/.config/doom/eshell/profile"
      eshell-aliases-file "~/.config/doom/eshell/aliases"
      eshell-history-size 5000
      eshell-buffer-maximum-lines 5000
      eshell-hist-ignoredups t
      eshell-scroll-to-bottom-on-input t
      eshell-destroy-buffer-when-process-dies t
      eshell-visual-commands'("bash" "fish" "htop" "ssh" "top" "zsh"))
(map! :leader
      :desc "Eshell" "e s" #'eshell
      :desc "Eshell popup toggle" "e t" #'+eshell/toggle
      :desc "Counsel eshell history" "e h" #'counsel-esh-history
      :desc "Vterm popup toggle" "v t" #'+vterm/toggle)

SPLITS

I set splits to default to opening on the right using ‘prefer-horizontal-split’. I set a keybinding for ‘clone-indirect-buffer-other-window’ for when I want to have the same document in two splits. The text of the indirect buffer is always identical to the text of its base buffer; changes made by editing either one are visible immediately in the other. But in all other respects, the indirect buffer and its base buffer are completely separate. For example, I can fold one split but other will be unfolded.

(defun prefer-horizontal-split ()
  (set-variable 'split-height-threshold nil t)
  (set-variable 'split-width-threshold 40 t)) ; make this as low as needed
(add-hook 'markdown-mode-hook 'prefer-horizontal-split)
(map! :leader
      :desc "Clone indirect buffer other window" "b c" #'clone-indirect-buffer-other-window)

WINNER MODE

Winner mode has been included with GNU Emacs since version 20. This is a global minor mode and, when activated, it allows you to “undo” (and “redo”) changes in the window configuration with the key commands ‘SCP w <left>’ and ‘SPC w <right>’.

(map! :leader
      (:prefix ("w" . "window")
       :desc "Winner redo" "<right>" #'winner-redo
       :desc "Winner undo" "<left>" #'winner-undo))

ZZ

;; If you use `org' and don't want your org files in the default location below,
;; these are the defaults (before I changed them)
;;(setq company-idle-delay 0.2
;;      company-minimum-prefix-length 3)

;;(setq projectile-project-search-path '("~/git/"))

;; Here are some additional functions/macros that could help you configure Doom:
;;
;; - `load!' for loading external *.el files relative to this one
;; - `use-package!' for configuring packages
;; - `after!' for running code after a package has loaded
;; - `add-load-path!' for adding directories to the `load-path', relative to
;;   this file. Emacs searches the `load-path' when you load packages with
;;   `require' or `use-package'.
;; - `map!' for binding new keys
;;
;; To get information about any of these functions/macros, move the cursor over
;; the highlighted symbol at press 'K' (non-evil users must press 'C-c c k').
;; This will open documentation for it, including demos of how they are used.
;;
;; You can also try 'gd' (or 'C-c c d') to jump to their definition and see how
;; they are implemented.

About

Doom Emacs is a configuration framework for GNU Emacs tailored for Emacs bankruptcy veterans who want less framework in their frameworks, a modicum of stability (and reproducibility) from their package manager, and the performance of a hand rolled config (or better). This is my config for Doom Emacs to learn more about our favorite operating sys…

Resources

License

Unknown, Unknown licenses found

Licenses found

Unknown
LICENSE
Unknown
LICENSE-DT

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published