Files
memex/2_notes/help-emacs.org

63 KiB
Raw Blame History

TODO [1/59] Reorganize this file to follow Emacs manual

TODO Distribution
TODO Introduction
TODO [0/4] 1 The Organization of the Screen
TODO 1.1 Point
TODO 1.2 The Echo Area
TODO 1.3 The Mode Line
TODO 1.4 The Menu Bar
TODO 2 Kinds of User Input
TODO 3 Keys
TODO 4 Keys and Commands
TODO 5 Entering Emacs
TODO 6 Exiting Emacs
TODO [1/11] 7 Basic Editing Commands
CNCL 7.1 Inserting Text
  • State "CNCL" from "TODO" [2024-07-29 Mon 16:24]
TODO 7.2 Changing the Location of Point
TODO 7.3 Erasing
TODO 7.4 Undoing Changes
TODO 7.5 Files
TODO 7.6 Help
TODO 7.7 Blank Lines
TODO 7.8 Continuation Lines
TODO 7.9 Cursor Position Information
TODO 7.10 Numeric Arguments
TODO 7.11 Repeating a Command
TODO [2/8] 8 The Minibuffer
TODO 8.1 Using the Minibuffer
TODO 8.2 Minibuffers for File Names
TODO 8.3 Editing in the Minibuffer
TODO [1/8] 8.4 Completion
TODO 8.4.1 Completion Example
TODO 8.4.2 Completion Commands
TODO 8.4.3 Completion Exit
TODO 8.4.4 How Completion Alternatives Are Chosen
TODO 8.4.5 Completion Options
TODO [0/1] Company
  • State "DONE" from "TODO" [2023-07-05 Wed 16:46]
  (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)
  	   )
      )
  (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))

    )
  (use-package company-capf
    :after company
    :config
    (add-to-list 'company-backends '(company-capf))
    )
  (use-package company-ispell
    :after company
    )
  (add-to-list 'company-backends '(company-ispell))
  (use-package company-files
    :after company
    )
  (add-to-list 'company-backends '(company-files))
TODO Required for proportional font
  • State "DONE" from "TODO" [2023-07-05 Wed 16:46]
  (use-package company-posframe
    :diminish company-posframe-mode
    :config (company-posframe-mode)
    )
DONE [5/5] Helm
  • State "DONE" from "NEXT" [2023-08-18 Fri 12:57]
CNCL Basic Helm
  (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))
  	 )
    )
CNCL Interface to silversearch-ag for fast search among entire folders
  • State "DONE" from "TODO" [2024-02-12 Mon 16:13]
  (use-package helm-ag)
CNCL Display firefox bookmarks with emacs helm interface   emacs web archive
  • State "CNCL" from "TODO" [2023-08-18 Fri 12:56]
    Not using Firefox bookmarks for now.
  (use-package helm-firefox)
CNCL Allow refiling to level, override Helm to complete refiling target
  • State "DONE" from "TODO" [2023-07-07 Fri 16:50]
  (setq org-refile-use-outline-path 'file)
CNCL Shell history
  • State "DONE" from "TODO" [2023-08-18 Fri 13:01]
  (use-package helm-shell-history)
TODO [4/5] Vertico, Marginalia, All-the-icons-completion, and Orderless
  • State "DONE" from "DONE" [2024-07-19 Fri 14:12]
  • State "DONE" from "TODO" [2024-07-19 Fri 13:56]
DONE Vertico
  • State "DONE" from "TODO" [2024-07-19 Fri 13:34]
  (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))
  )
  (use-package savehist
    :init
    (savehist-mode)
    )
;; 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))
DONE Marginalia
  • State "DONE" from "TODO" [2024-07-19 Fri 13:35]
  (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))
    )
DONE Orderless

Seast space separated words with no order.

  (use-package orderless
    :config
    (setq completion-styles '(orderless basic))
    (setq completion-category-overrides '((file (styles basic partial-completion))))
    )
DONE Consult
  • State "DONE" from "TODO" [2024-07-19 Fri 13:35]
  ;; 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)
)
TODO All the icons completion
  • State "DONE" from "TODO" [2024-07-19 Fri 13:35]
  (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)
  )
TODO 8.5 Minibuffer History
DONE 8.6 Repeating Minibuffer Commands
  • State "DONE" from "TODO" [2024-07-24 Wed 11:30]

Instead of C-x o, C-x o, C-x o, you can use C-x o o o.

  (repeat-mode)
TODO 8.7 Entering passwords
DONE 8.8 Yes or No Prompts
  • State "DONE" from "TODO" [2024-07-24 Wed 11:30]
  (defalias 'yes-or-no-p 'y-or-n-p)
TODO 9 Running Commands by Name
TODO [1/11] 10 Help
DONE Add ~/org/info to when searching for INFO documentation after Info-mode has started
  ;; 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)
TODO 10.1 Help Summary
TODO 10.2 Documentation for a Key
TODO 10.3 Help by Command or Variable Name
TODO 10.4 Apropos
TODO 10.5 Help Mode Commands
TODO 10.6 Keyword Search for Packages
TODO 10.7 Help for International Language Support
TODO 10.8 Other Help Commands
TODO 10.9 Help Files
TODO 10.10 Help on Active Text and Tooltips
TODO [0/7] 11 The Mark and the Region
TODO 11.1 Setting the Mark
TODO 11.2 Commands to Mark Textual Objects
TODO 11.3 Operating on the Region
TODO 11.4 The Mark Ring
TODO 11.5 The Global Mark Ring
TODO 11.6 Shift Selection
TODO 11.7 Disabling Transient Mark Mode
TODO [0/6] 12 Killing and Moving Text
TODO [0/4] 12.1 Deletion and Killing
TODO 12.1.1 Deletion
TODO 12.1.2 Killing by Lines
TODO 12.1.3 Other Kill Commands
TODO 12.1.4 Options for Killing
TODO [0/3] 12.2 Yanking
TODO 12.2.1 The Kill Ring
TODO 12.2.2 Yanking Earlier Kills
TODO 12.2.3 Appending Kills
TODO [0/3] 12.3 “Cut and Paste” Operations on Graphical Displays
TODO 12.3.1 Using the Clipboard
TODO 12.3.2 Cut and Paste with Other Window Applications
TODO 12.3.3 Secondary Selection
TODO 12.4 Accumulating Text
TODO 12.5 Rectangles
TODO 12.6 CUA Bindings
TODO [0/8] 13 Registers
TODO 13.1 Saving Positions in Registers
TODO 13.2 Saving Text in Registers
TODO 13.3 Saving Rectangles in Registers
TODO 13.4 Saving Window Configurations in Registers
TODO 13.5 Keeping Numbers in Registers
TODO 13.6 Keeping File Names in Registers
TODO 13.7 Keyboard Macro Registers
TODO 13.8 Bookmarks
TODO [0/23] 14 Controlling the Display
TODO 14.1 Scrolling
TODO 14.2 Recentering
TODO 14.3 Automatic Scrolling
TODO 14.4 Horizontal Scrolling
TODO 14.5 Narrowing
TODO 14.6 View Mode
TODO 14.7 Follow Mode
TODO 14.8 Text Faces
TODO [0/2] 14.9 Colors for Faces
TODO 14.9.1 Color Names
TODO 14.9.2 RGB Triplets
TODO 14.10 Standard Faces
TODO 14.11 Text Scale
TODO 14.12 Font Lock mode
TODO 14.13 Interactive Highlighting
TODO 14.14 Window Fringes
TODO 14.15 Displaying Boundaries
TODO 14.16 Useless Whitespace
TODO 14.17 Selective Display
TODO 14.18 Optional Mode Line Features
TODO 14.19 How Text Is Displayed
TODO 14.20 Displaying the Cursor
TODO 14.21 Line Truncation
TODO 14.22 Visual Line Mode
TODO 14.23 Customization of Display
TODO [0/12] 15 Searching and Replacement
TODO [0/7] 15.1 Incremental Search
TODO 15.1.1 Basics of Incremental Search
TODO 15.1.2 Repeating Incremental Search
TODO 15.1.3 Isearch Yanking
TODO 15.1.4 Errors in Incremental Search
TODO 15.1.5 Special Input for Incremental Search
TODO 15.1.6 Not Exiting Incremental Search
TODO 15.1.7 Searching the Minibuffer
TODO 15.2 Nonincremental Search
TODO 15.3 Word Search
TODO 15.4 Symbol Search
TODO 15.5 Regular Expression Search
TODO 15.6 Syntax of Regular Expressions
TODO 15.7 Backslash in Regular Expressions
TODO 15.8 Regular Expression Example
TODO 15.9 Lax Matching During Searching
TODO [0/4] 15.10 Replacement Commands
TODO 15.10.1 Unconditional Replacement
TODO 15.10.2 Regexp Replacement
TODO 15.10.3 Replace Commands and Lax Matches
TODO 15.10.4 Query Replace
TODO 15.11 Other Search-and-Loop Commands
TODO 15.12 Tailoring Search to Your Needs
TODO [0/4] 16 Commands for Fixing Typos
TODO 16.1 Undo
TODO 16.2 Transposing Text
TODO 16.3 Case Conversion
TODO 16.4 Checking and Correcting Spelling
TODO [0/7] 17 Keyboard Macros
TODO 17.1 Basic Use
TODO 17.2 The Keyboard Macro Ring
TODO 17.3 The Keyboard Macro Counter
TODO 17.4 Executing Macros with Variations
TODO 17.5 Naming and Saving Keyboard Macros
TODO 17.6 Editing a Keyboard Macro
TODO 17.7 Stepwise Editing a Keyboard Macro
TODO [7/29] 18 File Handling
TODO 18.1 File Names
TODO 18.2 Visiting Files
TODO [0/6] 18.3 Saving Files
TODO 18.3.1 Commands for Saving Files
TODO [0/3] 18.3.2 Backup Files
TODO 18.3.2.1 Single or Numbered Backups
TODO 18.3.2.2 Automatic Deletion of Backups
TODO 18.3.2.3 Copying vs. Renaming
TODO 18.3.3 Customizing Saving of Files
TODO 18.3.4 Protection against Simultaneous Editing
TODO 18.3.5 Shadowing Files
TODO 18.3.6 Updating Time Stamps Automatically
TODO 18.4 Reverting a Buffer
TODO [0/1] 18.5 Auto Revert: Keeping buffers automatically up-to-date
TODO [0/2] 18.5.1 Auto Reverting Non-File Buffers
TODO 18.5.1.1 Auto Reverting the Buffer Menu
TODO 18.5.1.2 Auto Reverting Dired buffers
TODO [0/3] 18.6 Auto-Saving: Protection Against Disasters
TODO 18.6.1 Auto-Save Files
TODO 18.6.2 Controlling Auto-Saving
TODO 18.6.3 Recovering Data from Auto-Saves
TODO 18.7 File Name Aliases
TODO 18.8 File Directories
TODO 18.9 Comparing Files
TODO 18.10 Diff Mode
TODO 18.11 Copying, Naming and Renaming Files
TODO 18.12 Miscellaneous File Operations
TODO 18.13 Accessing Compressed Files
TODO 18.14 File Archives
TODO 18.15 Remote Files
TODO 18.16 Quoted File Names
TODO 18.17 File Name Cache
TODO 18.18 Convenience Features for Finding Files
TODO 18.19 Viewing Image Files
TODO 18.20 Filesets
DONE Recent files
  ;; Recentf mode changes
  (defvar recentf-max-saved-items 1000)
  (defvar recentf-exclude '("/tmp/" "/ssh:"))
  (recentf-mode)
DONE Backup

Keep folders clean (create new directory when not yet existing)

  (make-directory (expand-file-name "backups/" org-directory) t)
  (setq backup-directory-alist `(("." . ,(expand-file-name "backups/" org-directory))))
DONE Save versions
  • State "DONE" from "TODO" [2023-07-05 Wed 14:10]

I am not sure if I will end up using this or git, but here we are for now

(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)))
DONE Auto saving

Away from my file tree

  (setq auto-save-file-name-transforms `((".*" ,temporary-file-directory t))
        create-lockfiles nil)
DONE Large file warning
  • State "DONE" from "TODO" [2024-07-19 Fri 15:11]
  (setq large-file-warning-threshold (* 15 1024 1024))
DONE Move deleted files to trash
  • State "DONE" from "TODO" [2024-07-19 Fri 15:15]
  (setq delete-by-moving-to-trash t)
DONE Magit
  • State "DONE" from "TODO" [2024-07-19 Fri 15:15]
  (use-package magit)
TODO Filetags: manage filetags in the filename
  • State "DONE" from "TODO" [2023-07-12 Wed 12:43]
  (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)
    )
TODO pandoc-mode
  • 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]
  (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
    )
DONE Install Pandoc - index

CLOSED: [2023-01-31 Tue 05:11]

TODO [0/7] 19 Using Multiple Buffers
TODO 19.1 Creating and Selecting Buffers
TODO 19.2 Listing Existing Buffers
TODO 19.3 Miscellaneous Buffer Operations
TODO 19.4 Killing Buffers
TODO 19.5 Operating on Several Buffers
TODO 19.6 Indirect Buffers
TODO [0/3] 19.7 Convenience Features and Customization of Buffer Handling
TODO 19.7.1 Making Buffer Names Unique
TODO 19.7.2 Fast minibuffer selection
TODO 19.7.3 Customizing Buffer Menus
TODO [3/9] Buffers
TODO [1/2] Icons
  • State "DONE" from "TODO" [2024-07-09 Tue 17:08]
DONE all-the-icons.el
  • 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]
  (use-package all-the-icons
    :if (display-graphic-p)
    )
TODO [0/4] all-the-icons Mode Line
  • 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]
  (setq mode-line-format '("%e"
  			 (:eval
  			  (concat
  			   (custom-modeline-modified)
  			   (custom-modeline-region-info)
  			   (custom-modeline-flycheck-status)
  			   (custom-modeline-icon-vc)
  			   )
  			  )
  			 )
        )
TODO Modified or read only
  • State "DONE" from "TODO" [2024-06-27 Thu 11:15]
     (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)))
                     )
         )
       )
TODO Region marking
  • State "DONE" from "TODO" [2024-06-27 Thu 11:15]
  • State "DONE" from "TODO" [2023-08-18 Fri 12:16]
  (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))))))
TODO Version control icon
  • 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]
  (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)))))
TODO Flycheck checker information
  • State "DONE" from "TODO" [2024-06-27 Thu 11:16]
  • State "DONE" from "TODO" [2023-08-18 Fri 11:49]
  (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))))))
TODO Scroll to the first and last line of the buffer
 (setq scroll-error-top-bottom t)
DONE Narrow to region
  (put 'narrow-to-region 'disabled nil)
DONE Paragraph text wrapping
  (setq global-visual-line-mode t)
TODO Increase line spacing
  (setq line-spacing 6)
TODO RTL Support
  • State "DONE" from "TODO" [2023-07-05 Wed 12:19]

For a correct RTL display you can add the following snippet to your init file:

    (defun set-bidi-env ()
      (interactive)
      (setq bidi-paragraph-direction 'nil)
      )

  (add-hook 'org-mode-hook 'set-bidi-env)
TODO File encoding system
  (prefer-coding-system 'utf-8)
  (setq buffer-file-coding-system 'utf-8-auto-unix)
DONE Overwrite selected text
  (delete-selection-mode t)
TODO Expand region
  • State "DONE" from "NEXT" [2023-08-03 Thu 13:11]
  (use-package expand-region
    :bind ("C-=" . er/expand-region)
    )
TODO [0/8] 20 Multiple Windows
TODO 20.1 Concepts of Emacs Windows
TODO 20.2 Splitting Windows
TODO 20.3 Using Other Windows
TODO 20.4 Displaying in Another Window
TODO 20.5 Deleting and Resizing Windows
TODO [0/2] 20.6 Displaying a Buffer in a Window
TODO 20.6.1 How display-buffer works
TODO 20.6.2 Displaying non-editable buffers.
TODO 20.7 Convenience Features for Window Handling
TODO 20.8 Window Tab Line
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
  • State "DONE" from "TODO" [2024-07-29 Mon 16:50]
  (when window-system
    (scroll-bar-mode 0)
    )
TODO 21.13 Window Dividers
TODO 21.14 Drag and Drop
DONE 21.15 Menu Bars
  • State "DONE" from "TODO" [2024-07-29 Mon 16:49]
  (when window-system
    (menu-bar-mode 0)
    )
DONE 21.16 Tool Bars
  • State "DONE" from "TODO" [2024-07-29 Mon 16:49]
  (when window-system
    (tool-bar-mode 0)
    )
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
  • State "DONE" from "TODO" [2024-07-20 Sat 11:07]
DONE Set the initial frame size and position
  • State "DONE" from "TODO" [2024-07-20 Sat 11:03]
  • State "DONE" from "TODO" [2024-07-08 Mon 22:11]
  ;; 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
          )
        )
DONE Set frame margins to zero, window margins to zero
  (modify-all-frames-parameters '((internal-border-width . 0)))
DONE Initial screen
  • State "DONE" from "TODO" [2024-07-19 Fri 13:59]
  (setq inhibit-splash-screen t)
  (setq inhibit-startup-message t)
  (setq initial-scratch-message "")
  (setq initial-major-mode 'org-mode)
DONE Startup echo message
  (defun display-startup-echo-area-message ()
    "Display a welcome message."
    (message "Ladies and gentlemen, we are floating in space!")
    )
DONE Theme
  • State "DONE" from "TODO" [2024-07-16 Tue 19:50]
  • State "DONE" from "TODO" [2024-07-10 Wed 17:06]
   ;; 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'
    )
DONE Set the cursor shape and blinking
  • State "DONE" from "TODO" [2024-07-20 Sat 11:05]
  (setq-default cursor-type '(box . 1)) ; Bar cursor
  (blink-cursor-mode -1) ; Don't blink the cursor
TODO [9/10] Windows
  • State "DONE" from "DONE" [2024-07-16 Tue 20:04]
DONE Save windows arrangement
  (when (fboundp 'winner-mode)
    (winner-mode t)
    )
DONE Switch to other-window
  • State "DONE" from "TODO" [2024-07-16 Tue 20:04]
  (use-package ace-window
    :config
    (defvar aw-dispatch-always nil) ; works for less than three buffers
    :bind
    ("M-o" . ace-window)
      )
DONE Neotree
  • State "DONE" from "TODO" [2024-07-19 Fri 15:22]
  • State "DONE" from "TODO" [2023-07-05 Wed 16:48]
  (use-package neotree
    :init (defvar neo-smart-open t)
    :config (defvar neo-theme (if (display-graphic-p) 'icons 'arrow))
  )
DONE Tab Line
  • State "DONE" from "TODO" [2024-07-16 Tue 19:51]
  (global-tab-line-mode)
DONE [3/3] Mode Line
  • State "DONE" from "TODO" [2024-07-20 Sat 11:10]
  • State "DONE" from "DONE" [2024-07-09 Tue 17:08]
DONE Basic settings
  (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)
  )
DONE [3/3] Format
  • State "DONE" from "TODO" [2024-07-19 Fri 15:26]
DONE Default format
  ;; Default format:
  ;;   * init.el  4:32 Top                                         ELisp  ! Issues: 2
  (defvar mood-line-format mood-line-format-default)
CNCL Extended format
  ;; Extended format:
  ;;   * init.el  4:32:52 Top                    SPCx2  LF  UTF-8  ELisp  ! Issues: 2
  (defvar mood-line-format mood-line-format-default-extended)
CNCL Custom format
  ;; 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)            . "  "))))
DONE [3/3] Glyphs
CNCL Default glyphs
  ;; The default set of glyphs:
  ;;   * myModifiedFile.js  Replace*3                 + main  JavaScript  ! Issues: 2
  (defvar mood-line-glyph-alist mood-line-glyphs-ascii)
CNCL Fira Code-compatible Unicode glyphs
  ;; 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)
DONE Unicode glyphs
  ;; A set of Unicode glyphs:
  ;;   ● myModifiedFile.js  Replace✕3                 🞤 main  JavaScript  ⚑ Issues: 2
  (defvar mood-line-glyph-alist mood-line-glyphs-unicode)
CNCL Add clock
  • State "DONE" from "TODO" [2023-07-05 Wed 16:48]

Modify this later to show clock only in full-screen mode

(display-time-mode nil)
DONE Diminish minor modes from the mode line
  • State "DONE" from "NEXT" [2023-08-03 Thu 13:05]
   (use-package diminish
     :demand t
     :diminish (visual-line-mode . "ω")
     :diminish abbrev-mode
     :diminish auto-fill-function
     )
DONE 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

  (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)
    )
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
  • State "DONE" from [2023-08-22 Tue 11:10]
  (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
TODO Unicode Fonts

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.

  (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)
    )
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
  • State "CNCL" from "DONE" [2024-07-10 Wed 11:30]
    Not needed
  • State "DONE" from "TODO" [2023-07-05 Wed 16:48]
  (use-package discover-my-major
    :bind (("C-h C-m" . discover-my-major)
           ("C-h M-m" . discover-my-mode)
           )
    )
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
  (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))
    )
TODO Images in dired
  ;; 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
TODO Icons in dired
  (use-package all-the-icons-dired
    :after dired all-the-icons
    :if (display-graphic-p)
    )
TODO Date2name: add ISO timestamps to files in dired
  • State "DONE" from "TODO" [2023-07-12 Wed 12:44]
  (use-package date2name)
TODO [0/10] 31 The Calendar and the Diary
TODO [0/3] 31.1 Movement in the Calendar
TODO 31.1.1 Motion by Standard Lengths of Time
TODO 31.1.2 Beginning or End of Week, Month or Year
TODO 31.1.3 Specified Dates
TODO 31.2 Scrolling in the Calendar
TODO 31.3 Counting Days
TODO 31.4 Miscellaneous Calendar Commands
TODO 31.5 Writing Calendar Files
TODO 31.6 Holidays
TODO 31.7 Times of Sunrise and Sunset
TODO 31.8 Phases of the Moon
TODO [0/3] 31.9 Conversion To and From Other Calendars
TODO 31.9.1 Supported Calendar Systems
TODO 31.9.2 Converting To Other Calendars
TODO 31.9.3 Converting From Other Calendars
TODO [0/10] 31.10 The Diary
TODO 31.10.1 The Diary File
TODO 31.10.2 Displaying the Diary
TODO 31.10.3 Date Formats
TODO 31.10.4 Commands to Add to the Diary
TODO 31.10.5 Special Diary Entries
TODO 31.10.6 Appointments
TODO 31.10.7 Importing and Exporting Diary Entries
TODO 31.11 Daylight Saving Time
TODO 31.12 Summing Time Intervals
TODO [0/10] 31.13 More advanced features of the Calendar and Diary
TODO 31.13.1 Customizing the Calendar
TODO 31.13.2 Customizing the Holidays
TODO 31.13.3 Converting from the Mayan Calendar
TODO 31.13.4 Date Display Format
TODO 31.13.5 Time Display Format
TODO 31.13.6 Customizing the Diary
TODO 31.13.7 Diary Entries Using non-Gregorian Calendars
TODO 31.13.8 Diary Display
TODO 31.13.9 Fancy Diary Display
TODO 31.13.10 Sexp Entries and the Fancy Diary Display
TODO [0/7] 32 Sending Mail
TODO 32.1 The Format of the Mail Buffer
TODO 32.2 Mail Header Fields
TODO 32.3 Mail Aliases
TODO [0/4] 32.4 Mail Commands
TODO 32.4.1 Mail Sending
TODO 32.4.2 Mail Header Editing
TODO 32.4.3 Citing Mail
TODO 32.4.4 Mail Miscellany
TODO 32.5 Mail Signature
TODO 32.6 Mail Amusements
TODO 32.7 Mail-Composition Methods
TODO [0/20] 33 Reading Mail with Rmail
TODO 33.1 Basic Concepts of Rmail
TODO 33.2 Scrolling Within a Message
TODO 33.3 Moving Among Messages
TODO 33.4 Deleting Messages
TODO 33.5 Rmail Files and Inboxes
TODO 33.6 Multiple Rmail Files
TODO 33.7 Copying Messages Out to Files
TODO 33.8 Labels
TODO 33.9 Rmail Attributes
TODO 33.10 Sending Replies
TODO [0/2] 33.11 Summaries
TODO 33.11.1 Making Summaries
TODO 33.11.2 Editing in Summaries
TODO 33.12 Sorting the Rmail File
TODO 33.13 Display of Messages
TODO 33.14 Rmail and Coding Systems
TODO 33.15 Editing Within a Message
TODO 33.16 Digest Messages
TODO 33.17 Reading Rot13 Messages
TODO 33.18 movemail program
TODO 33.19 Retrieving Mail from Remote Mailboxes
TODO 33.20 Retrieving Mail from Local Mailboxes in Various Formats
TODO [0/4] 34 Email and Usenet News with Gnus
TODO 34.1 Gnus Buffers
TODO 34.2 When Gnus Starts Up
TODO 34.3 Using the Gnus Group Buffer
TODO 34.4 Using the Gnus Summary Buffer
TODO 35 Host Security
TODO 36 Network Security
TODO [0/4] 37 Document Viewing
TODO 37.1 DocView Navigation
TODO 37.2 DocView Searching
TODO 37.3 DocView Slicing
  (setq doc-view-continuous t)
TODO 37.4 DocView Conversion
TODO [0/11] 38 Running Shell Commands from Emacs
TODO 38.1 Single Shell Commands
TODO 38.2 Interactive Subshell
TODO 38.3 Shell Mode
TODO 38.4 Shell Prompts
TODO [0/3] 38.5 Shell Command History
TODO 38.5.1 Shell History Ring
TODO 38.5.2 Shell History Copying
TODO 38.5.3 Shell History References
TODO 38.6 Directory Tracking
TODO 38.7 Shell Mode Options
TODO 38.8 Emacs Terminal Emulator
TODO 38.9 Term Mode
TODO 38.10 Remote Host Shell
TODO 38.11 Serial Terminal
TODO [0/3] 39 Using Emacs as a Server
TODO 39.1 TCP Emacs server
TODO 39.2 Invoking emacsclient
TODO 39.3 emacsclient Options
TODO [0/4] 40 Printing Hard Copies
TODO 40.1 PostScript Hardcopy
TODO 40.2 Variables for PostScript Hardcopy
TODO 40.3 Printing Package
TODO 41 Sorting Text
TODO [0/4] 42 Editing Pictures
TODO 42.1 Basic Editing in Picture Mode
TODO 42.2 Controlling Motion after Insert
TODO 42.3 Picture Mode Tabs
TODO 42.4 Picture Mode Rectangle Commands
TODO 43 Editing Binary Files
TODO 44 Saving Emacs Sessions
TODO 45 Recursive Editing Levels
TODO [0/5] 46 Hyperlinking and Web Navigation Features
TODO 46.1 Web Browsing with EWW
TODO 46.2 Embedded WebKit Widgets
TODO 46.3 Following URLs
TODO 46.4 Activating URLs
TODO 46.5 Finding Files and URLs at Point
TODO 47 Games and Other Amusements
TODO [0/4] 48 Emacs Lisp Packages
TODO 48.1 The Package Menu Buffer
TODO 48.2 Package Statuses
TODO 48.3 Package Installation
TODO 48.4 Package Files and Directory Layout
TODO [0/5] 49 Customization
TODO [0/8] 49.1 Easy Customization Interface
TODO 49.1.1 Customization Groups
TODO 49.1.2 Browsing and Searching for Settings
TODO 49.1.3 Changing a Variable
TODO 49.1.4 Saving Customizations
TODO 49.1.5 Customizing Faces
TODO 49.1.6 Customizing Specific Items
TODO 49.1.7 Custom Themes
TODO 49.1.8 Creating Custom Themes
TODO [0/8] 49.2 Variables
TODO 49.2.1 Examining and Setting Variables
TODO 49.2.2 Hooks
TODO 49.2.3 Local Variables
TODO 49.2.4 Local Variables in Files
TODO 49.2.4.1 Specifying File Variables
TODO 49.2.4.2 Safety of File Variables
TODO 49.2.5 Per-Directory Local Variables
TODO 49.2.6 Per-Connection Local Variables
TODO [0/11] 49.3 Customizing Key Bindings
TODO 49.3.1 Keymaps
TODO 49.3.2 Prefix Keymaps
TODO 49.3.3 Local Keymaps
TODO 49.3.4 Minibuffer Keymaps
TODO 49.3.5 Changing Key Bindings Interactively
TODO 49.3.6 Rebinding Keys in Your Init File
TODO 49.3.7 Modifier Keys
TODO 49.3.8 Rebinding Function Keys
TODO 49.3.9 Named ASCII Control Characters
TODO 49.3.10 Rebinding Mouse Buttons
TODO 49.3.11 Disabling Commands
TODO [0/6] 49.4 The Emacs Initialization File
TODO 49.4.1 Init File Syntax
TODO 49.4.2 Init File Examples
TODO 49.4.3 Terminal-specific Initialization
TODO 49.4.4 How Emacs Finds Your Init File
TODO 49.4.5 Non-ASCII Characters in Init Files
TODO 49.4.6 The Early Init File
TODO 49.5 Keeping Persistent Authentication Information
TODO 50 Quitting and Aborting
TODO [0/9] 51 Dealing with Emacs Trouble
TODO 51.1 If DEL Fails to Delete
TODO 51.2 Recursive Editing Levels
TODO 51.3 Garbage on the Screen
TODO 51.4 Garbage in the Text
TODO 51.5 Running out of Memory
TODO 51.6 When Emacs Crashes
TODO 51.7 Recovery After a Crash
TODO 51.8 Emergency Escape
TODO 51.9 Long Lines
TODO [0/5] 52 Reporting Bugs
TODO 52.1 Reading Existing Bug Reports and Known Problems
TODO 52.2 When Is There a Bug
TODO 52.3 Understanding Bug Reporting
TODO 52.4 Checklist for Bug Reports
TODO 52.5 Sending Patches for GNU Emacs
TODO [0/2] 53 Contributing to Emacs Development
TODO 53.1 Coding Standards
TODO 53.2 Copyright Assignment