Files
memex/notes/help-emacs.org

1508 lines
48 KiB
Org Mode
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
* TODO [1/59] Reorganize this file to follow Emacs manual
:PROPERTIES:
:CREATED: [2026-03-25 Wed 12:28]
:ID: 94287925-725f-49da-9c7a-961e1b4189b7
:EDITED: [2026-04-07 Tue 13:42]
:END:
*** TODO [2/8] Help
**** TODO [1/8] Completion
***** TODO [0/1] Company
:LOGBOOK:
- State "DONE" from "TODO" [2023-07-05 Wed 16:46]
:END:
#+begin_src elisp :tangle no
(use-package company
:diminish company-mode
:config
(defvar company-minimum-prefix-length 3)
(defvar company-idle-delay 0)
(defvar company-global-modes t)
(defvar company-selection-wrap-around t)
(defvar company-tooltip-align-annotations t)
(defvar company-backends '((
company-capf
company-dabbrev-code
company-dabbrev
company-ispell
company-files
company-web
company-shell
company-posframe
)))
(global-company-mode)
(add-hook 'after-init-hook 'global-company-mode)
(add-hook 'after-init-hook 'company-tng-mode)
(with-eval-after-load 'company
(define-key company-active-map (kbd "M-/") #'company-complete))
(with-eval-after-load 'company
(define-key company-active-map
(kbd "TAB")
#'company-complete-common-or-cycle)
(define-key company-active-map
(kbd "<backtab>")
(lambda ()
(interactive)
(company-complete-common-or-cycle -1))))
:bind (
( "<tab>" . company-indent-or-complete-common)
( "C-c C-l" . company-other-backend)
)
)
#+end_src
#+begin_src elisp :tangle no
(use-package company-shell
:after company
:config
(add-to-list 'company-backends '(company-shell
company-shell-env
company-fish-shell
)
)
(setq company-transformers '(delete-consecutive-dups
company-sort-by-occurrence))
)
#+end_src
#+begin_src elisp :tangle no
(use-package company-capf
:after company
:config
(add-to-list 'company-backends '(company-capf))
)
#+end_src
#+begin_src elisp :tangle no
(use-package company-ispell
:after company
)
(add-to-list 'company-backends '(company-ispell))
#+end_src
#+begin_src elisp :tangle no
(use-package company-files
:after company
)
(add-to-list 'company-backends '(company-files))
#+end_src
****** TODO Required for proportional font
:LOGBOOK:
- State "DONE" from "TODO" [2023-07-05 Wed 16:46]
:END:
#+begin_src elisp :tangle no
(use-package company-posframe
:diminish company-posframe-mode
:config (company-posframe-mode)
)
#+end_src
***** DONE [5/5] [[https://tuhdo.github.io/helm-intro.html][Helm]]
:LOGBOOK:
- State "DONE" from "NEXT" [2023-08-18 Fri 12:57]
:END:
****** CNCL Basic Helm
#+begin_src elisp :tangle no
(use-package helm
:init (helm-mode)
:config
(defvar helm-M-x-fuzzy-match t)
(defvar helm-recentf-fuzzy-match t)
(defvar helm-buffers-fuzzy-matching t)
(defvar helm-locate-fuzzy-match t)
(defvar helm-mode-fuzzy-match t)
(defvar helm-split-window-inside-p nil) ; open helm buffer inside current window, not occupy whole other window
(defvar helm-lisp-fuzzy-completion t)
:bind (
("M-x" . helm-M-x) ;; Evaluate functions
("C-x C-f" . helm-find-files) ;; Open or create files
("C-x b" . helm-mini) ;; Select buffers
("C-x C-r" . helm-recentf) ;; Select recently saved files
("C-c i" . helm-imenu) ;; Select document heading
("M-y" . helm-show-kill-ring) ;; Show the kill ring
(:map helm-map
("C-z" . helm-select-action)
("<tab>" . helm-execute-persistent-action))
)
)
#+end_src
****** CNCL Interface to silversearch-ag for fast search among entire folders
:LOGBOOK:
- State "DONE" from "TODO" [2024-02-12 Mon 16:13]
:END:
#+begin_src elisp :tangle no
(use-package helm-ag)
#+end_src
****** CNCL [[https://github.com/emacs-helm/helm-firefox][Display firefox bookmarks with emacs helm interface]] :emacs:web:archive:
:PROPERTIES:
:TITLE: GitHub - emacs-helm/helm-firefox: Display firefox bookmarks with emacs helm interface
:URI: tps://github.com/emacs-helm/helm-firefox
:CREATED: [2023-01-28 Sat 09:11]
:END:
:LOGBOOK:
- State "CNCL" from "TODO" [2023-08-18 Fri 12:56] \\
Not using Firefox bookmarks for now.
:END:
#+begin_src elisp :tangle no
(use-package helm-firefox)
#+end_src
****** CNCL Allow refiling to level, override Helm to complete refiling target
:LOGBOOK:
- State "DONE" from "TODO" [2023-07-07 Fri 16:50]
:END:
#+begin_src elisp :tangle no
(setq org-refile-use-outline-path 'file)
#+end_src
****** CNCL Shell history
:LOGBOOK:
- State "DONE" from "TODO" [2023-08-18 Fri 13:01]
:END:
#+begin_src elisp :tangle no
(use-package helm-shell-history)
#+end_src
***** TODO [4/5] [[https://kristofferbalintona.me/posts/202202211546/][Vertico, Marginalia, All-the-icons-completion, and Orderless]]
:LOGBOOK:
- State "DONE" from "DONE" [2024-07-19 Fri 14:12]
- State "DONE" from "TODO" [2024-07-19 Fri 13:56]
:END:
****** DONE [[https://github.com/minad/vertico][Vertico]]
:LOGBOOK:
- State "DONE" from "TODO" [2024-07-19 Fri 13:34]
:END:
#+begin_src elisp
(use-package vertico
:demand t ; Otherwise won't get loaded immediately
:init (vertico-mode)
:straight (vertico :files (:defaults "extensions/*") ; Special recipe to load extensions conveniently
:includes (vertico-indexed
vertico-flat
vertico-grid
vertico-mouse
vertico-quick
vertico-buffer
vertico-repeat
vertico-reverse
vertico-directory
vertico-multiform
vertico-unobtrusive
))
:config
(setq vertico-cycle t)
(setq vertico-count 13)
(setq vertico-resize nil)
(setq vertico-cycle nil)
;; Extensions
(setq vertico-grid-separator " ")
(setq vertico-grid-lookahead 50)
(setq vertico-buffer-display-action '(display-buffer-reuse-window))
(setq vertico-multiform-categories
'((file reverse)
(consult-grep buffer)
(consult-location)
(imenu buffer)
(library reverse indexed)
(org-roam-node reverse indexed)
(t reverse)
)
)
(setq vertico-multiform-commands
'(("flyspell-correct-*" grid reverse)
(org-refile grid reverse indexed)
(consult-yank-pop indexed)
(consult-flycheck)
(consult-lsp-diagnostics)
)
)
;; Extensions
(vertico-multiform-mode)
:bind (:map vertico-map
("C-j" . vertico-next)
("C-k" . vertico-previous)
("C-f" . vertico-exit)
:map minibuffer-local-map
("M-h" . backward-kill-word))
)
#+end_src
#+begin_src elisp
(use-package savehist
:init
(savehist-mode)
)
#+end_src
#+begin_src elisp
;; A few more useful configurations...
(use-package emacs
:custom
;; Support opening new minibuffers from inside existing minibuffers.
(enable-recursive-minibuffers t)
;; Emacs 28 and newer: Hide commands in M-x which do not work in the current
;; mode. Vertico commands are hidden in normal buffers. This setting is
;; useful beyond Vertico.
(read-extended-command-predicate #'command-completion-default-include-p)
:init
;; Add prompt indicator to `completing-read-multiple'.
;; We display [CRM<separator>], e.g., [CRM,] if the separator is a comma.
(defun crm-indicator (args)
(cons (format "[CRM%s] %s"
(replace-regexp-in-string
"\\`\\[.*?]\\*\\|\\[.*?]\\*\\'" ""
crm-separator)
(car args))
(cdr args)))
(advice-add #'completing-read-multiple :filter-args #'crm-indicator)
;; Do not allow the cursor in the minibuffer prompt
(setq minibuffer-prompt-properties
'(read-only t cursor-intangible t face minibuffer-prompt))
(add-hook 'minibuffer-setup-hook #'cursor-intangible-mode))
#+end_src
****** DONE [[https://github.com/minad/marginalia/][Marginalia]]
:LOGBOOK:
- State "DONE" from "TODO" [2024-07-19 Fri 13:35]
:END:
#+begin_src elisp
(use-package marginalia
:init
(marginalia-mode)
:config
(setq marginalia-max-relative-age 0)
(setq marginalia-align 'right)
:bind (("M-A" . marginalia-cycle)
:map minibuffer-local-map
("M-A" . marginalia-cycle))
)
#+end_src
****** DONE [[https://github.com/oantolin/orderless][Orderless]]
Seast space separated words with no order.
#+begin_src elisp
(use-package orderless
:config
(setq completion-styles '(orderless basic))
(setq completion-category-overrides '((file (styles basic partial-completion))))
)
#+end_src
****** DONE [[https://github.com/minad/consult][Consult]]
:LOGBOOK:
- State "DONE" from "TODO" [2024-07-19 Fri 13:35]
:END:
#+begin_src elisp
;; Example configuration for Consult
(use-package consult
;; Replace bindings. Lazily loaded by `use-package'.
:bind (;; C-c bindings in `mode-specific-map'
("C-c M-x" . consult-mode-command)
("C-c h" . consult-history)
("C-c k" . consult-kmacro)
("C-c m" . consult-man)
("C-c i" . consult-info)
([remap Info-search] . consult-info)
;; C-x bindings in `ctl-x-map'
("C-x M-:" . consult-complex-command) ;; orig. repeat-complex-command
("C-x b" . consult-buffer) ;; orig. switch-to-buffer
("C-x 4 b" . consult-buffer-other-window) ;; orig. switch-to-buffer-other-window
("C-x 5 b" . consult-buffer-other-frame) ;; orig. switch-to-buffer-other-frame
("C-x t b" . consult-buffer-other-tab) ;; orig. switch-to-buffer-other-tab
("C-x r b" . consult-bookmark) ;; orig. bookmark-jump
("C-x p b" . consult-project-buffer) ;; orig. project-switch-to-buffer
;; Custom M-# bindings for fast register access
("M-#" . consult-register-load)
("M-'" . consult-register-store) ;; orig. abbrev-prefix-mark (unrelated)
("C-M-#" . consult-register)
;; Other custom bindings
("M-y" . consult-yank-pop) ;; orig. yank-pop
;; M-g bindings in `goto-map'
("M-g e" . consult-compile-error)
("M-g f" . consult-flymake) ;; Alternative: consult-flycheck
("M-g g" . consult-goto-line) ;; orig. goto-line
("M-g M-g" . consult-goto-line) ;; orig. goto-line
("M-g o" . consult-outline) ;; Alternative: consult-org-heading
("M-g m" . consult-mark)
("M-g k" . consult-global-mark)
("M-g i" . consult-imenu)
("M-g I" . consult-imenu-multi)
;; M-s bindings in `search-map'
("M-s d" . consult-find) ;; Alternative: consult-fd
("M-s c" . consult-locate)
("M-s g" . consult-grep)
("M-s G" . consult-git-grep)
("M-s r" . consult-ripgrep)
("M-s l" . consult-line)
("M-s L" . consult-line-multi)
("M-s k" . consult-keep-lines)
("M-s u" . consult-focus-lines)
;; Isearch integration
("M-s e" . consult-isearch-history)
:map isearch-mode-map
("M-e" . consult-isearch-history) ;; orig. isearch-edit-string
("M-s e" . consult-isearch-history) ;; orig. isearch-edit-string
("M-s l" . consult-line) ;; needed by consult-line to detect isearch
("M-s L" . consult-line-multi) ;; needed by consult-line to detect isearch
;; Minibuffer history
:map minibuffer-local-map
("M-s" . consult-history) ;; orig. next-matching-history-element
("M-r" . consult-history)) ;; orig. previous-matching-history-element
;; Enable automatic preview at point in the *Completions* buffer. This is
;; relevant when you use the default completion UI.
:hook (completion-list-mode . consult-preview-at-point-mode)
;; The :init configuration is always executed (Not lazy)
:init
;; Optionally configure the register formatting. This improves the register
;; preview for `consult-register', `consult-register-load',
;; `consult-register-store' and the Emacs built-ins.
(setq register-preview-delay 0.5
register-preview-function #'consult-register-format)
;; Optionally tweak the register preview window.
;; This adds thin lines, sorting and hides the mode line of the window.
(advice-add #'register-preview :override #'consult-register-window)
;; Use Consult to select xref locations with preview
(setq xref-show-xrefs-function #'consult-xref
xref-show-definitions-function #'consult-xref)
;; Configure other variables and modes in the :config section,
;; after lazily loading the package.
:config
;; Optionally configure preview. The default value
;; is 'any, such that any key triggers the preview.
;; (setq consult-preview-key 'any)
;; (setq consult-preview-key "M-.")
;; (setq consult-preview-key '("S-<down>" "S-<up>"))
;; For some commands and buffer sources it is useful to configure the
;; :preview-key on a per-command basis using the `consult-customize' macro.
(consult-customize
consult-theme :preview-key '(:debounce 0.2 any)
consult-ripgrep consult-git-grep consult-grep
consult-bookmark consult-recent-file consult-xref
consult--source-bookmark consult--source-file-register
consult--source-recent-file consult--source-project-recent-file
;; :preview-key "M-."
:preview-key '(:debounce 0.4 any))
;; Optionally configure the narrowing key.
;; Both < and C-+ work reasonably well.
(setq consult-narrow-key "<") ;; "C-+"
;; Optionally make narrowing help available in the minibuffer.
;; You may want to use `embark-prefix-help-command' or which-key instead.
;; (keymap-set consult-narrow-map (concat consult-narrow-key " ?") #'consult-narrow-help)
)
#+end_src
****** TODO All the icons completion
:LOGBOOK:
- State "DONE" from "TODO" [2024-07-19 Fri 13:35]
:END:
#+begin_src elisp :tangle no
(use-package all-the-icons-completion
:after (marginalia all-the-icons)
:hook (marginalia-mode . all-the-icons-completion-marginalia-setup)
:init
(all-the-icons-completion-mode)
)
#+end_src
**** DONE Repeating Minibuffer Commands
:LOGBOOK:
- State "DONE" from "TODO" [2024-07-24 Wed 11:30]
:END:
Instead of C-x o, C-x o, C-x o, you can use C-x o o o.
#+begin_src elisp
(repeat-mode)
#+end_src
**** DONE Yes or No Prompts
:LOGBOOK:
- State "DONE" from "TODO" [2024-07-24 Wed 11:30]
:END:
#+begin_src elisp
(defalias 'yes-or-no-p 'y-or-n-p)
#+end_src
**** TODO [1/11] 10 Help
***** DONE Add ~/org/info to when searching for INFO documentation after Info-mode has started
#+begin_src elisp
;; Define the variable globally (outside any hook)
(defvar info-additiononal-directory-list nil
"List of additional directories to search for Info files.")
;; Set the variable inside the hook
(add-hook 'info-mode-hook
(lambda ()
(setq info-additional-directory-list (list (concat org-directory "/info")))
)
)
(global-set-key (kbd "C-c l") #'dictionary-lookup-definition)
#+end_src
**** TODO [7/29] 18 File Handling
***** TODO 18.20 Filesets
***** DONE Recent files
#+begin_src elisp
;; Recentf mode changes
(defvar recentf-max-saved-items 1000)
(defvar recentf-exclude '("/tmp/" "/ssh:"))
(recentf-mode)
#+end_src
***** DONE Backup
Keep folders clean (create new directory when not yet existing)
#+begin_src elisp
(make-directory (expand-file-name "backups/" org-directory) t)
(setq backup-directory-alist `(("." . ,(expand-file-name "backups/" org-directory))))
#+end_src
***** DONE Save versions
:LOGBOOK:
- State "DONE" from "TODO" [2023-07-05 Wed 14:10]
:END:
I am not sure if I will end up using this or git, but here we are for now
#+begin_src elisp
(setq delete-old-versions -1)
(setq version-control t)
(setq vc-make-backup-files t)
(setq auto-save-file-name-transforms '((".*" "~/.emacs.d/auto-save-list/" t)))
#+end_src
***** DONE Auto saving
Away from my file tree
#+begin_src elisp
(setq auto-save-file-name-transforms `((".*" ,temporary-file-directory t))
create-lockfiles nil)
#+end_src
***** DONE Large file warning
:LOGBOOK:
- State "DONE" from "TODO" [2024-07-19 Fri 15:11]
:END:
#+begin_src elisp
(setq large-file-warning-threshold (* 15 1024 1024))
#+end_src
***** DONE Move deleted files to trash
:LOGBOOK:
- State "DONE" from "TODO" [2024-07-19 Fri 15:15]
:END:
#+begin_src elisp
(setq delete-by-moving-to-trash t)
#+end_src
***** DONE [[https://github.com/magit/magit][Magit]]
:PROPERTIES:
:CREATED: [2023-01-29 Sun 10:12]
:CLOSED: [2023-02-01 Wed 21:58]
:END:
:LOGBOOK:
- State "DONE" from "TODO" [2024-07-19 Fri 15:15]
:END:
#+begin_src elisp
(use-package magit)
#+end_src
***** TODO [[https://github.com/DerBeutlin/filetags.el][Filetags: manage filetags in the filename]]
:PROPERTIES:
:TITLE: Filetags: Emacs package to manage filetags in the filename
:URI: https://github.com/DerBeutlin/filetags.el
:CREATED: [2023-01-28 Sat 08:58]
:END:
:LOGBOOK:
- State "DONE" from "TODO" [2023-07-12 Wed 12:43]
:END:
#+begin_src elisp :tangle no
(use-package filetags
:config
(setq filetags-enforce-controlled-vocabulary nil)
(setq filetags-controlled-vocabulary '(("winter" "summer") ("emacs")))
(setq filetags-load-controlled-vocabulary-from-file nil)
)
#+end_src
***** TODO [[https://github.com/joostkremers/pandoc-mode][pandoc-mode]]
:PROPERTIES:
:TITLE: GitHub - joostkremers/pandoc-mode: An Emacs minor mode for interacting with Pandoc.
:URI: https://github.com/joostkremers/pandoc-mode
:CREATED: [2023-01-29 Sun 10:20]
:END:
:LOGBOOK:
- State "DONE" from "TODO" [2023-08-18 Fri 13:04]
- State "DONE" from "WAIT" [2023-07-07 Fri 15:00]
- State "DONE" from "TODO" [2023-07-07 Fri 14:53]
:END:
#+begin_src elisp :tangle no
(use-package pandoc-mode
:after hydra
:config
(add-hook 'markdown-mode-hook 'pandoc-mode) ;; Pandoc minor mode in markdown
(add-hook 'pandoc-mode-hook 'pandoc-load-default-settings) ;; if a settings file for this format exists
)
#+end_src
****** DONE Install [[https://pandoc.org/index.html][Pandoc - index]]
CLOSED: [2023-01-31 Tue 05:11]
:PROPERTIES:
:CREATED: [2023-01-29 Sun 10:15]
:CLOSED: [2023-01-31 Tue 05:11]
:END:
**** TODO [3/9] Buffers
***** TODO [1/2] Icons
:LOGBOOK:
- State "DONE" from "TODO" [2024-07-09 Tue 17:08]
:END:
****** DONE [[https://github.com/domtronn/all-the-icons.el][all-the-icons.el]]
:LOGBOOK:
- State "DONE" from "TODO" [2024-07-19 Fri 14:01]
- State "DONE" from "TODO" [2024-06-27 Thu 11:02]
- State "DONE" from "TODO" [2023-08-28 Mon 18:55]
- State "DONE" from "DONE" [2023-08-18 Fri 12:31]
:END:
#+begin_src elisp
(use-package all-the-icons
:if (display-graphic-p)
)
#+end_src
****** TODO [0/4] all-the-icons Mode Line
:LOGBOOK:
- State "DONE" from "TODO" [2024-07-09 Tue 17:07]
- State "DONE" from "TODO" [2024-07-09 Tue 15:57]
- State "DONE" from "TODO" [2023-08-28 Mon 18:54]
:END:
#+begin_src elisp :tangle no
(setq mode-line-format '("%e"
(:eval
(concat
(custom-modeline-modified)
(custom-modeline-region-info)
(custom-modeline-flycheck-status)
(custom-modeline-icon-vc)
)
)
)
)
#+end_src
******* TODO Modified or read only
:LOGBOOK:
- State "DONE" from "TODO" [2024-06-27 Thu 11:15]
:END:
#+begin_src elisp :tangle no
(defun custom-modeline-modified ()
(let* ((config-alist
'(
("*" all-the-icons-faicon-family all-the-icons-faicon "chain-broken" :height 1.2 :v-adjust -0.0)
("-" all-the-icons-faicon-family all-the-icons-faicon "link" :height 1.2 :v-adjust -0.0)
("%" all-the-icons-octicon-family all-the-icons-octicon "lock" :height 1.2 :v-adjust 0.1)
)
)
(result (cdr (assoc (format-mode-line "%*") config-alist)))
)
(propertize (apply (cadr result) (cddr result))
'face `(:family ,(funcall (car result)))
)
)
)
#+end_src
******* TODO Region marking
:LOGBOOK:
- State "DONE" from "TODO" [2024-06-27 Thu 11:15]
- State "DONE" from "TODO" [2023-08-18 Fri 12:16]
:END:
#+begin_src elisp :tangle no
(defun custom-modeline-region-info ()
(when mark-active
(let ((words (count-lines (region-beginning) (region-end)))
(chars (count-words (region-end) (region-beginning))))
(concat
(propertize (format " %s" (all-the-icons-octicon "pencil") words chars)
'face `(:family ,(all-the-icons-octicon-family))
'display '(raise -0.0))
(propertize (format " (%s, %s)" words chars)
'face `(:height 0.9))))))
#+end_src
******* TODO Version control icon
:LOGBOOK:
- State "DONE" from "TODO" [2024-06-27 Thu 11:15]
- State "DONE" from "TODO" [2023-08-18 Fri 12:16]
- State "DONE" from "TODO" [2023-07-07 Fri 12:17]
:END:
#+begin_src elisp :tangle no
(defun -custom-modeline-github-vc ()
(let ((branch (mapconcat 'concat (cdr (split-string vc-mode "[:-]")) "-")))
(concat
(propertize (format " %s" (all-the-icons-alltheicon "git")) 'face `(:height 1.2) 'display '(raise -0.1))
" · "
(propertize (format "%s" (all-the-icons-octicon "git-branch"))
'face `(:height 1.3 :family ,(all-the-icons-octicon-family))
'display '(raise -0.1))
(propertize (format " %s" branch) 'face `(:height 0.9)))))
(defun -custom-modeline-svn-vc ()
(let ((revision (cadr (split-string vc-mode "-"))))
(concat
(propertize (format " %s" (all-the-icons-faicon "cloud")) 'face `(:height 1.2) 'display '(raise -0.1))
(propertize (format " · %s" revision) 'face `(:height 0.9)))))
(defun custom-modeline-icon-vc ()
(when vc-mode
(cond
((string-match "Git[:-]" vc-mode) (-custom-modeline-github-vc))
((string-match "SVN-" vc-mode) (-custom-modeline-svn-vc))
(t (format "%s" vc-mode)))))
#+end_src
******* TODO Flycheck checker information
:LOGBOOK:
- State "DONE" from "TODO" [2024-06-27 Thu 11:16]
- State "DONE" from "TODO" [2023-08-18 Fri 11:49]
:END:
#+begin_src elisp :tangle no
(defun custom-modeline-flycheck-status ()
(let* ((text (pcase flycheck-last-status-change
(`finished (if flycheck-current-errors
(let ((count (let-alist (flycheck-count-errors flycheck-current-errors)
(+ (or .warning 0) (or .error 0)))))
(format "✖ %s Issue%s" count (unless (eq 1 count) "s")))
"✔ No Issues"))
(`running "⟲ Running")
(`no-checker "⚠ No Checker")
(`not-checked "✖ Disabled")
(`errored "⚠ Error")
(`interrupted "⛔ Interrupted")
(`suspicious ""))))
(propertize text
'help-echo "Show Flycheck Errors"
'mouse-face '(:box 1)
'local-map (make-mode-line-mouse-map
'mouse-1 (lambda () (interactive) (flycheck-list-errors))))))
#+end_src
***** TODO Scroll to the first and last line of the buffer
#+begin_src elisp :tangle no
(setq scroll-error-top-bottom t)
#+end_src
***** DONE Narrow to region
#+begin_src elisp
(put 'narrow-to-region 'disabled nil)
#+end_src
***** DONE Paragraph text wrapping
#+begin_src elisp
(setq global-visual-line-mode t)
#+end_src
***** TODO Increase line spacing
#+begin_src elisp :tangle no
(setq line-spacing 6)
#+end_src
***** TODO RTL Support
:LOGBOOK:
- State "DONE" from "TODO" [2023-07-05 Wed 12:19]
:END:
For a correct RTL display you can add the following snippet to your init file:
#+begin_src elisp :tangle no
(defun set-bidi-env ()
(interactive)
(setq bidi-paragraph-direction 'nil)
)
(add-hook 'org-mode-hook 'set-bidi-env)
#+end_src
***** TODO File encoding system
#+begin_src elisp :tangle no
(prefer-coding-system 'utf-8)
(setq buffer-file-coding-system 'utf-8-auto-unix)
#+end_src
***** DONE Overwrite selected text
#+begin_src elisp
(delete-selection-mode t)
#+end_src
***** TODO Expand region
:LOGBOOK:
- State "DONE" from "NEXT" [2023-08-03 Thu 13:11]
:END:
#+begin_src elisp :tangle no
(use-package expand-region
:bind ("C-=" . er/expand-region)
)
#+end_src
**** TODO [3/22] 21 Frames and Graphical Displays
***** TODO 21.1 Mouse Commands for Editing
***** TODO 21.2 Mouse Commands for Words and Lines
***** TODO 21.3 Following References with the Mouse
***** TODO 21.4 Mouse Clicks for Menus
***** TODO 21.5 Mode Line Mouse Commands
***** TODO 21.6 Creating Frames
***** TODO 21.7 Frame Commands
***** TODO 21.8 Fonts
***** TODO 21.9 Speedbar Frames
***** TODO 21.10 Multiple Displays
***** TODO 21.11 Frame Parameters
***** DONE 21.12 Scroll Bars
:LOGBOOK:
- State "DONE" from "TODO" [2024-07-29 Mon 16:50]
:END:
#+begin_src elisp
(when window-system
(scroll-bar-mode 0)
)
#+end_src
***** TODO 21.13 Window Dividers
***** TODO 21.14 Drag and Drop
***** DONE 21.15 Menu Bars
:LOGBOOK:
- State "DONE" from "TODO" [2024-07-29 Mon 16:49]
:END:
#+begin_src elisp
(when window-system
(menu-bar-mode 0)
)
#+end_src
***** DONE 21.16 Tool Bars
:LOGBOOK:
- State "DONE" from "TODO" [2024-07-29 Mon 16:49]
:END:
#+begin_src elisp
(when window-system
(tool-bar-mode 0)
)
#+end_src
***** TODO 21.17 Tab Bars
***** TODO 21.18 Using Dialog Boxes
***** TODO 21.19 Tooltips
***** TODO 21.20 Mouse Avoidance
***** TODO 21.21 Non-Window Terminals
***** TODO 21.22 Using a Mouse in Text Terminals
**** DONE [7/7] Frames
:LOGBOOK:
- State "DONE" from "TODO" [2024-07-20 Sat 11:07]
:END:
***** DONE Set the initial frame size and position
:LOGBOOK:
- State "DONE" from "TODO" [2024-07-20 Sat 11:03]
- State "DONE" from "TODO" [2024-07-08 Mon 22:11]
:END:
#+begin_src elisp
;; initial frame
(setq initial-frame-alist
'((width . 192) ; characters in a line
(height . 37) ; number of lines
(top . 1) ; top position
(left . 1) ; left position
)
)
;; sebsequent frame
(setq default-frame-alist
'((width . 192) ; characters in a line
(height . 37) ; number of lines
)
)
#+end_src
***** DONE Set frame margins to zero, window margins to zero
#+begin_src elisp
(modify-all-frames-parameters '((internal-border-width . 0)))
#+end_src
***** DONE Initial screen
:LOGBOOK:
- State "DONE" from "TODO" [2024-07-19 Fri 13:59]
:END:
#+begin_src elisp
(setq inhibit-splash-screen t)
(setq inhibit-startup-message t)
(setq initial-scratch-message "")
(setq initial-major-mode 'org-mode)
#+end_src
***** DONE Startup echo message
#+begin_src elisp
(defun display-startup-echo-area-message ()
"Display a welcome message."
(message "Ladies and gentlemen, we are floating in space!")
)
#+end_src
***** DONE [[https://protesilaos.com/emacs/ef-themes][Theme]]
:LOGBOOK:
- State "DONE" from "TODO" [2024-07-16 Tue 19:50]
- State "DONE" from "TODO" [2024-07-10 Wed 17:06]
:END:
#+begin_src elisp
;; Make customisations that affect Emacs faces BEFORE loading a theme
;; (any change needs a theme re-load to take effect).
;; (require 'ef-themes)
(use-package ef-themes
:config
;; If you like two specific themes and want to switch between them, you
;; can specify them in `ef-themes-to-toggle' and then invoke the command
;; `ef-themes-toggle'. All the themes are included in the variable
;; `ef-themes-collection'.
(defvar ef-themes-to-toggle '(ef-summer ef-winter))
(defvar ef-themes-headings ; read the manual's entry or the doc string
'((0 variable-pitch light 1.9)
(1 variable-pitch light 1.8)
(2 variable-pitch regular 1.7)
(3 variable-pitch regular 1.6)
(4 variable-pitch regular 1.5)
(5 variable-pitch 1.4) ; absence of weight means `bold'
(6 variable-pitch 1.3)
(7 variable-pitch 1.2)
(t variable-pitch 1.1)))
;; They are nil by default...
(defvar ef-themes-mixed-fonts t)
(defvar ef-themes-variable-pitch-ui t)
;; Disable all other themes to avoid awkward blending:
(mapc #'disable-theme custom-enabled-themes)
;; Load the theme of choice:
(load-theme 'ef-winter :no-confirm)
;; OR use this to load the theme which also calls `ef-themes-post-load-hook':
(ef-themes-select 'ef-winter)
;; The themes we provide are recorded in the `ef-themes-dark-themes',
;; `ef-themes-light-themes'.
;; We also provide these commands, but do not assign them to any key:
;;
;; - `ef-themes-toggle'
;; - `ef-themes-select'
;; - `ef-themes-select-dark'
;; - `ef-themes-select-light'
;; - `ef-themes-load-random'
;; - `ef-themes-preview-colors'
;; - `ef-themes-preview-colors-current'
)
#+end_src
***** DONE Set the cursor shape and blinking
:LOGBOOK:
- State "DONE" from "TODO" [2024-07-20 Sat 11:05]
:END:
#+begin_src elisp
(setq-default cursor-type '(box . 1)) ; Bar cursor
(blink-cursor-mode -1) ; Don't blink the cursor
#+end_src
**** TODO [9/10] Windows
:LOGBOOK:
- State "DONE" from "DONE" [2024-07-16 Tue 20:04]
:END:
***** DONE Save windows arrangement
#+begin_src elisp
(when (fboundp 'winner-mode)
(winner-mode t)
)
#+end_src
***** DONE Switch to other-window
:LOGBOOK:
- State "DONE" from "TODO" [2024-07-16 Tue 20:04]
:END:
#+begin_src elisp
(use-package ace-window
:config
(defvar aw-dispatch-always nil) ; works for less than three buffers
:bind
("M-o" . ace-window)
)
#+end_src
***** DONE Neotree
:LOGBOOK:
- State "DONE" from "TODO" [2024-07-19 Fri 15:22]
- State "DONE" from "TODO" [2023-07-05 Wed 16:48]
:END:
#+begin_src elisp
(use-package neotree
:init (defvar neo-smart-open t)
:config (defvar neo-theme (if (display-graphic-p) 'icons 'arrow))
)
#+end_src
***** DONE Tab Line
:LOGBOOK:
- State "DONE" from "TODO" [2024-07-16 Tue 19:51]
:END:
#+begin_src elisp
(global-tab-line-mode)
#+end_src
***** DONE [3/3] Mode Line
:LOGBOOK:
- State "DONE" from "TODO" [2024-07-20 Sat 11:10]
- State "DONE" from "DONE" [2024-07-09 Tue 17:08]
:END:
****** DONE Basic settings
#+begin_src elisp
(use-package mood-line
;; Enable mood-line
:config
(mood-line-mode)
;; Use pretty Fira Code-compatible glyphs
(defvar mood-line-glyph-alist mood-line-glyphs-fira-code)
)
#+end_src
****** DONE [3/3] Format
:LOGBOOK:
- State "DONE" from "TODO" [2024-07-19 Fri 15:26]
:END:
******** DONE Default format
#+begin_src elisp
;; Default format:
;; * init.el 4:32 Top ELisp ! Issues: 2
(defvar mood-line-format mood-line-format-default)
#+end_src
******** CNCL Extended format
#+begin_src elisp :tangle no
;; Extended format:
;; * init.el 4:32:52 Top SPCx2 LF UTF-8 ELisp ! Issues: 2
(defvar mood-line-format mood-line-format-default-extended)
#+end_src
******** CNCL Custom format
#+begin_src elisp :tangle no
;; Custom format:
;; * init.el : ELisp Top 4:32 | ! Issues: 2
(setq mood-line-format
(mood-line-defformat
:left
(((mood-line-segment-buffer-status) . " ")
((mood-line-segment-buffer-name) . " : ")
(mood-line-segment-major-mode))
:right
(((mood-line-segment-scroll) . " ")
((mood-line-segment-cursor-position) . " ")
((when (mood-line-segment-checker) "|") . " ")
((mood-line-segment-checker) . " "))))
#+end_src
****** DONE [3/3] Glyphs
******** CNCL Default glyphs
#+begin_src elisp :tangle no
;; The default set of glyphs:
;; * myModifiedFile.js Replace*3 + main JavaScript ! Issues: 2
(defvar mood-line-glyph-alist mood-line-glyphs-ascii)
#+end_src
******** CNCL Fira Code-compatible Unicode glyphs
#+begin_src elisp :tangle no
;; A set of Fira Code-compatible Unicode glyphs:
;; ● myModifiedFile.js Replace×3 + main JavaScript → Issues: 2
(setq mood-line-glyph-alist mood-line-glyphs-fira-code)
#+end_src
******** DONE Unicode glyphs
#+begin_src elisp
;; A set of Unicode glyphs:
;; ● myModifiedFile.js Replace✕3 🞤 main JavaScript ⚑ Issues: 2
(defvar mood-line-glyph-alist mood-line-glyphs-unicode)
#+end_src
***** CNCL Add clock
:LOGBOOK:
- State "DONE" from "TODO" [2023-07-05 Wed 16:48]
:END:
Modify this later to show clock only in full-screen mode
#+begin_src elisp :tangle no
(display-time-mode nil)
#+end_src
***** DONE [[https://github.com/emacsmirror/diminish][Diminish]] minor modes from the mode line
:LOGBOOK:
- State "DONE" from "NEXT" [2023-08-03 Thu 13:05]
:END:
#+begin_src elisp
(use-package diminish
:demand t
:diminish (visual-line-mode . "ω")
:diminish abbrev-mode
:diminish auto-fill-function
)
#+end_src
***** DONE [[https://github.com/justbur/emacs-which-key][Which-key]]
Figure out the next keystroke. which-key package opens a small buffer at the bottom with suggestions for next keystroke and possible commands that are available
#+begin_src elisp
(use-package which-key
:config
(defvar which-key-sort-order 'which-key-key-order-alpha)
(defvar which-key-idle-delay 0.05)
(which-key-mode)
(which-key-setup-minibuffer)
(which-key-setup-side-window-right)
)
#+end_src
**** TODO [0/19] 22 International Character Set Support
***** TODO 22.1 Introduction to International Character Sets
***** TODO 22.2 Language Environments
***** TODO 22.3 Input Methods
***** TODO 22.4 Selecting an Input Method
***** TODO 22.5 Coding Systems
***** TODO 22.6 Recognizing Coding Systems
***** TODO 22.7 Specifying a Files Coding System
***** TODO 22.8 Choosing Coding Systems for Output
***** TODO 22.9 Specifying a Coding System for File Text
***** TODO 22.10 Coding Systems for Interprocess Communication
***** TODO 22.11 Coding Systems for File Names
***** TODO 22.12 Coding Systems for Terminal I/O
***** TODO 22.13 Fontsets
***** TODO 22.14 Defining Fontsets
***** TODO 22.15 Modifying Fontsets
***** TODO 22.16 Undisplayable Characters
***** TODO 22.17 Unibyte Editing Mode
***** TODO 22.18 Charsets
***** TODO 22.19 Bidirectional Editing
**** TODO [0/2] International
***** TODO [0/1] Fonts
:LOGBOOK:
- State "DONE" from [2023-08-22 Tue 11:10]
:END:
#+begin_src elisp
(set-face-attribute 'default nil :font "Cantarell") ;; default font
; (set-fontset-font t nil "sans-serif" nil 'append) ;; fallback font
(set-face-attribute 'fixed-pitch nil :family "Monospace")
; (set-fontset-font t 'arabic "Amiri") ;; default Arabic font
; (set-fontset-font t 'arabic "Simplified Arabic" nil 'append) ;; default Arabic fallback
; (set-fontset-font t 'arabic (font-spec :script 'arabic) nil 'append) ;; if font not available, don't display boxes
#+end_src
***** TODO [[https://github.com/rolandwalker/unicode-fonts][Unicode Fonts]]
[[https://www.emacswiki.org/emacs/UnicodeFonts][EmacsWiki]]: If you are using a language written in Chinese or Arabic script, try customizing unicode-fonts-skip-font-groups to control which script you see, and send a friendly bug report.
#+begin_src elisp :tangle no
(use-package unicode-fonts
:config
(defvar unicode-fonts-block-font-mapping
'(("Emoticons" ("Apple Color Emoji" "Symbola" "Quivira"))))
(defvar unicode-fonts-fontset-names '("fontset-default"))
(defvar unicode-skip-font-groups '(""))
(unicode-fonts-setup)
)
#+end_src
**** TODO [1/4] 23 Major and Minor Modes
***** TODO 23.1 Major Modes
***** TODO 23.2 Minor Modes
***** TODO 23.3 Choosing File Modes
***** CNCL Discover major mode
:LOGBOOK:
- State "CNCL" from "DONE" [2024-07-10 Wed 11:30] \\
Not needed
- State "DONE" from "TODO" [2023-07-05 Wed 16:48]
:END:
#+begin_src elisp :tangle no
(use-package discover-my-major
:bind (("C-h C-m" . discover-my-major)
("C-h M-m" . discover-my-mode)
)
)
#+end_src
**** TODO [0/4] 24 Indentation
***** TODO 24.1 Indentation Commands
***** TODO 24.2 Tab Stops
***** TODO 24.3 Tabs vs. Spaces
***** TODO 24.4 Convenience Features for Indentation
**** TODO [0/16] 25 Commands for Human Languages
***** TODO 25.1 Words
***** TODO 25.2 Sentences
***** TODO 25.3 Paragraphs
***** TODO 25.4 Pages
***** TODO 25.5 Quotation Marks
***** TODO [0/4] 25.6 Filling Text
****** TODO 25.6.1 Auto Fill Mode
****** TODO 25.6.2 Explicit Fill Commands
****** TODO 25.6.3 The Fill Prefix
****** TODO 25.6.4 Adaptive Filling
***** TODO 25.7 Case Conversion Commands
***** TODO 25.8 Text Mode
***** TODO [0/5] 25.9 Outline Mode
****** TODO 25.9.1 Format of Outlines
****** TODO 25.9.2 Outline Motion Commands
****** TODO 25.9.3 Outline Visibility Commands
****** TODO 25.9.4 Viewing One Outline in Multiple Views
****** TODO 25.9.5 Folding Editing
***** TODO [0/2] 25.10 Org Mode
****** TODO 25.10.1 Org as an organizer
****** TODO 25.10.2 Org as an authoring system
***** TODO [0/4] 25.11 TeX Mode
****** TODO 25.11.1 TeX Editing Commands
****** TODO 25.11.2 LaTeX Editing Commands
****** TODO 25.11.3 TeX Printing Commands
****** TODO 25.11.4 TeX Mode Miscellany
***** TODO 25.12 SGML and HTML Modes
***** TODO 25.13 Nroff Mode
***** TODO [0/7] 25.14 Enriched Text
****** TODO 25.14.1 Enriched Mode
****** TODO 25.14.2 Hard and Soft Newlines
****** TODO 25.14.3 Editing Format Information
****** TODO 25.14.4 Faces in Enriched Text
****** TODO 25.14.5 Indentation in Enriched Text
****** TODO 25.14.6 Justification in Enriched Text
****** TODO 25.14.7 Setting Other Text Properties
***** TODO [0/8] 25.15 Editing Text-based Tables
****** TODO 25.15.1 What is a Text-based Table?
****** TODO 25.15.2 Creating a Table
****** TODO 25.15.3 Table Recognition
****** TODO 25.15.4 Commands for Table Cells
****** TODO 25.15.5 Cell Justification
****** TODO 25.15.6 Table Rows and Columns
****** TODO 25.15.7 Converting Between Plain Text and Tables
****** TODO 25.15.8 Table Miscellany
***** TODO 25.16 Two-Column Editing
**** TODO [0/14] 26 Editing Programs
***** TODO 26.1 Major Modes for Programming Languages
***** TODO [0/4] 26.2 Top-Level Definitions, or Defuns
****** TODO 26.2.1 Left Margin Convention
****** TODO 26.2.2 Moving by Defuns
****** TODO 26.2.3 Imenu
****** TODO 26.2.4 Which Function Mode
***** TODO [0/5] 26.3 Indentation for Programs
****** TODO 26.3.1 Basic Program Indentation Commands
****** TODO 26.3.2 Indenting Several Lines
****** TODO 26.3.3 Customizing Lisp Indentation
****** TODO 26.3.4 Commands for C Indentation
****** TODO 26.3.5 Customizing C Indentation
***** TODO [0/3] 26.4 Commands for Editing with Parentheses
****** TODO 26.4.1 Expressions with Balanced Parentheses
****** TODO 26.4.2 Moving in the Parenthesis Structure
****** TODO 26.4.3 Matching Parentheses
***** TODO [0/3] 26.5 Manipulating Comments
****** TODO 26.5.1 Comment Commands
****** TODO 26.5.2 Multiple Lines of Comments
****** TODO 26.5.3 Options Controlling Comments
***** TODO [0/3] 26.6 Documentation Lookup
****** TODO 26.6.1 Info Documentation Lookup
****** TODO 26.6.2 Man Page Lookup
****** TODO 26.6.3 Emacs Lisp Documentation Lookup
***** TODO 26.7 Hideshow minor mode
***** TODO 26.8 Completion for Symbol Names
***** TODO 26.9 MixedCase Words
***** TODO 26.10 Semantic
***** TODO 26.11 Other Features Useful for Editing Programs
***** TODO [0/4] 26.12 C and Related Modes
****** TODO 26.12.1 C Mode Motion Commands
****** TODO 26.12.2 Electric C Characters
****** TODO 26.12.3 Hungry Delete Feature in C
****** TODO 26.12.4 Other Commands for C Mode
***** TODO 26.13 Asm Mode
***** TODO [0/6] 26.14 Fortran Mode
****** TODO 26.14.1 Motion Commands
****** TODO [0/5] 26.14.2 Fortran Indentation
******* TODO 26.14.2.1 Fortran Indentation and Filling Commands
******* TODO 26.14.2.2 Continuation Lines
******* TODO 26.14.2.3 Line Numbers
******* TODO 26.14.2.4 Syntactic Conventions
******* TODO 26.14.2.5 Variables for Fortran Indentation
****** TODO 26.14.3 Fortran Comments
****** TODO 26.14.4 Auto Fill in Fortran Mode
****** TODO 26.14.5 Checking Columns in Fortran
****** TODO 26.14.6 Fortran Keyword Abbrevs
**** TODO [0/11] 27 Compiling and Testing Programs
***** TODO 27.1 Running Compilations under Emacs
***** TODO 27.2 Compilation Mode
***** TODO 27.3 Subshells for Compilation
***** TODO 27.4 Searching with Grep under Emacs
***** TODO 27.5 Finding Syntax Errors On The Fly
***** TODO [0/5] 27.6 Running Debuggers Under Emacs
****** TODO 27.6.1 Starting GUD
****** TODO 27.6.2 Debugger Operation
****** TODO 27.6.3 Commands of GUD
****** TODO 27.6.4 GUD Customization
****** TODO [0/8] 27.6.5 GDB Graphical Interface
******* TODO 27.6.5.1 GDB User Interface Layout
******* TODO 27.6.5.2 Source Buffers
******* TODO 27.6.5.3 Breakpoints Buffer
******* TODO 27.6.5.4 Threads Buffer
******* TODO 27.6.5.5 Stack Buffer
******* TODO 27.6.5.6 Other GDB Buffers
******* TODO 27.6.5.7 Watch Expressions
******* TODO 27.6.5.8 Multithreaded Debugging
***** TODO 27.7 Executing Lisp Expressions
***** TODO 27.8 Libraries of Lisp Code for Emacs
***** TODO 27.9 Evaluating Emacs Lisp Expressions
***** TODO 27.10 Lisp Interaction Buffers
***** TODO 27.11 Running an External Lisp
**** TODO [0/7] 28 Maintaining Large Programs
***** TODO [0/13] 28.1 Version Control
****** TODO [0/7] 28.1.1 Introduction to Version Control
******* TODO 28.1.1.1 Understanding the Problems it Addresses
******* TODO 28.1.1.2 Supported Version Control Systems
******* TODO 28.1.1.3 Concepts of Version Control
******* TODO 28.1.1.4 Merge-based vs Lock-based Version Control
******* TODO 28.1.1.5 Changeset-based vs File-based Version Control
******* TODO 28.1.1.6 Decentralized vs Centralized Repositories
******* TODO 28.1.1.7 Types of Log File
****** TODO 28.1.2 Version Control and the Mode Line
****** TODO [0/3] 28.1.3 Basic Editing under Version Control
******* TODO 28.1.3.1 Basic Version Control with Merging
******* TODO 28.1.3.2 Basic Version Control with Locking
******* TODO 28.1.3.3 Advanced Control in C-x v v
****** TODO 28.1.4 Features of the Log Entry Buffer
****** TODO 28.1.5 Registering a File for Version Control
****** TODO 28.1.6 Examining And Comparing Old Revisions
****** TODO 28.1.7 VC Change Log
****** TODO 28.1.8 Undoing Version Control Actions
****** TODO 28.1.9 Ignore Version Control Files
****** TODO [0/2] 28.1.10 VC Directory Mode
******* TODO 28.1.10.1 The VC Directory Buffer
******* TODO 28.1.10.2 VC Directory Commands
****** TODO [0/4] 28.1.11 Version Control Branches
******* TODO 28.1.11.1 Switching between Branches
******* TODO 28.1.11.2 Pulling/Pushing Changes into/from a Branch
******* TODO 28.1.11.3 Merging Branches
******* TODO 28.1.11.4 Creating New Branches
****** TODO [0/4] 28.1.12 Miscellaneous Commands and Features of VC
******* TODO 28.1.12.1 Change Logs and VC
******* TODO 28.1.12.2 Deleting and Renaming Version-Controlled Files
******* TODO 28.1.12.3 Revision Tags
******* TODO 28.1.12.4 Inserting Version Control Headers
****** TODO [0/3] 28.1.13 Customizing VC
******* TODO 28.1.13.1 General Options
******* TODO 28.1.13.2 Options for RCS and SCCS
******* TODO 28.1.13.3 Options specific for CVS
***** TODO [0/4] 28.2 Working with Projects
****** TODO 28.2.1 Project Commands That Operate on Files
****** TODO 28.2.2 Project Commands That Operate on Buffers
****** TODO 28.2.3 Switching Projects
****** TODO 28.2.4 Managing the Project List File
***** TODO [0/2] 28.3 Change Logs
****** TODO 28.3.1 Change Log Commands
****** TODO 28.3.2 Format of ChangeLog
***** TODO [0/3] 28.4 Find Identifier References
****** TODO [0/4] 28.4.1 Find Identifiers
******* TODO 28.4.1.1 Looking Up Identifiers
******* TODO 28.4.1.2 Commands Available in the *xref* Buffer
******* TODO 28.4.1.3 Searching and Replacing with Identifiers
******* TODO 28.4.1.4 Identifier Inquiries
****** TODO [0/3] 28.4.2 Tags Tables
******* TODO 28.4.2.1 Source File Tag Syntax
******* TODO 28.4.2.2 Creating Tags Tables
******* TODO 28.4.2.3 Etags Regexps
****** TODO 28.4.3 Selecting a Tags Table
***** TODO 28.5 Emacs Development Environment
***** TODO [0/7] 28.6 Merging Files with Emerge
****** TODO 28.6.1 Overview of Emerge
****** TODO 28.6.2 Submodes of Emerge
****** TODO 28.6.3 State of a Difference
****** TODO 28.6.4 Merge Commands
****** TODO 28.6.5 Exiting Emerge
****** TODO 28.6.6 Combining the Two Versions
****** TODO 28.6.7 Fine Points of Emerge
***** TODO 28.7 Bug Reference
**** TODO [0/8] 29 Abbrevs
***** TODO 29.1 Abbrev Concepts
***** TODO 29.2 Defining Abbrevs
***** TODO 29.3 Controlling Abbrev Expansion
***** TODO 29.4 Abbrevs Suggestions
***** TODO 29.5 Examining and Editing Abbrevs
***** TODO 29.6 Saving Abbrevs
***** TODO 29.7 Dynamic Abbrev Expansion
***** TODO 29.8 Customizing Dynamic Abbreviation
**** TODO [0/22] 30 Dired, the Directory Editor
***** TODO 30.1 Entering Dired
***** TODO 30.2 Navigation in the Dired Buffer
***** TODO 30.3 Deleting Files with Dired
***** TODO 30.4 Flagging Many Files at Once
***** TODO 30.5 Visiting Files in Dired
***** TODO 30.6 Dired Marks vs. Flags
***** TODO 30.7 Operating on Files
***** TODO 30.8 Shell Commands in Dired
***** TODO 30.9 Transforming File Names in Dired
***** TODO 30.10 File Comparison with Dired
***** TODO 30.11 Subdirectories in Dired
***** TODO 30.12 Subdirectory Switches in Dired
***** TODO 30.13 Moving Over Subdirectories
***** TODO 30.14 Hiding Subdirectories
***** TODO 30.15 Updating the Dired Buffer
***** TODO 30.16 Dired and find
***** TODO 30.17 Editing the Dired Buffer
***** TODO 30.18 Viewing Image Thumbnails in Dired
***** TODO 30.19 Other Dired Features
***** TODO Basic settings
#+begin_src elisp :tangle no
(use-package dired
:init
(setq dired-dwim-target t)
(setq dired-recursive-copies 'top)
(setq dired-recursive-deletes 'top)
(setq dired-listing-switches "-alh")
(setq dired-listing-switches "-agho --group-directories-first") ; Sort Dired buffers
(setq dired-dwim-target t) ; Copy and move files netween dired buffers
:config
(add-hook 'dired-mode-hook 'dired-hide-details-mode)
(add-hook 'dired-mode-hook 'all-the-icons-dired-mode)
:bind (:map dired-mode-map
("C-c C-e" . wdired-change-to-wdired-mode))
)
#+end_src
***** TODO Images in dired
#+begin_src elisp :tangle no
;; Image-dired Keyboard shortcuts
(with-eval-after-load 'dired
(define-key dired-mode-map (kbd "C-t C-d") 'image-dired)
(define-key dired-mode-map (kbd "C-<return>") 'image-dired-dired-display-external)
)
(setq image-dired-external-viewer "/usr/bin/gimp") ; Define external image viewer/edito
(put 'dired-find-alternate-file 'disabled nil) ; Open dired in same buffer
#+end_src
***** TODO Icons in dired
#+begin_src elisp :tangle no
(use-package all-the-icons-dired
:after dired all-the-icons
:if (display-graphic-p)
)
#+end_src
***** TODO [[https://github.com/DerBeutlin/date2name.el][Date2name: add ISO timestamps to files in dired]]
:PROPERTIES:
:TITLE: GitHub - DerBeutlin/date2name.el: Emacs package to add ISO timestamps to files in dired
:URI: https://github.com/DerBeutlin/date2name.el
:CREATED: [2023-01-28 Sat 06:20]
:END:
:LOGBOOK:
- State "DONE" from "TODO" [2023-07-12 Wed 12:44]
:END:
#+begin_src elisp :tangle no
(use-package date2name)
#+end_src
**** TODO [0/4] 37 Document Viewing
***** TODO 37.3 DocView Slicing
#+begin_src elisp
(setq doc-view-continuous t)
#+end_src