diff --git a/README.org b/README.org index 013501e..0a9b92d 100644 --- a/README.org +++ b/README.org @@ -56,176 +56,161 @@ :config (mode-line-bell-mode)) #+END_SRC - #+BEGIN_SRC emacs-lisp +* Input and Text Manipulation +#+BEGIN_SRC emacs-lisp + ;; Better mouse scrolling + (setq mouse-wheel-progressive-speed nil) - ;;; Buffer input and interaction + ;; Auto-pair parenthesis + (electric-pair-mode 1) - ;; Better mouse scrolling - (setq mouse-wheel-progressive-speed nil) + ;; Automatically trim trailing whitespace on save + (add-hook 'before-save-hook 'delete-trailing-whitespace) - ;; Use short yes/no answers - (setq-default use-short-answers t) - - ;; Auto-pair parenthesis - (electric-pair-mode 1) - - ;; VIM emulation - (unless (package-installed-p 'evil) - (package-install 'evil)) - (setq - ;; Scroll up with C-u - evil-want-C-u-scroll t - ;; Yank to EOL with Y - evil-want-Y-yank-to-eol t - ;; Create split windows below - evil-split-window-below t - ;; Create vsplit windows to the right - evil-vsplit-window-right t) - (require 'evil) - (evil-mode 1) - - ;; Automatically trim trailing whitespace on save - (add-hook 'before-save-hook 'delete-trailing-whitespace) - - ;;; General interface - - ;; Completion UI - (unless (package-installed-p 'vertico) - (package-install 'vertico)) - (require 'vertico) - (vertico-mode 1) - - ;; Improve directory navigation - (define-key vertico-map (kbd "RET") #'vertico-directory-enter) - (define-key vertico-map (kbd "DEL") #'vertico-directory-delete-word) - (define-key vertico-map (kbd "M-d") #'vertico-directory-delete-char) - - ;;; Extended completion utilities - (unless (package-installed-p 'consult) - (package-install 'consult)) - (global-set-key [rebind switch-to-buffer] #'consult-buffer) - (global-set-key (kbd "C-c j") #'consult-line) - (global-set-key (kbd "C-c i") #'consult-imenu) - (setq read-buffer-completion-ignore-case t - read-file-name-completion-ignore-case t - completion-ignore-case t) - - ;;; LSP Support - (unless (package-installed-p 'eglot) - (package-install 'eglot)) - - ;; Enable LSP support by default in programming buffers - (add-hook 'prog-mode-hook #'eglot-ensure) - - ;; Create a memorable alias for `eglot-ensure'. - (defalias 'start-lsp-server #'eglot) - - ;; Completion style - (unless (package-installed-p 'orderless) - (package-install 'orderless)) - (require 'orderless) - (setq completion-styles '(orderless basic) - completion-category-overrides '((file (styles basic partial-completion)))) - - ;; Persist history over restarts - (require 'savehist) - (savehist-mode 1) - - - ;;; Inline static analysis - - ;; Enabled inline static analysis - (add-hook 'prog-mode-hook #'flymake-mode) - - ;; Display messages when idle, without prompting - (setq help-at-pt-display-when-idle t) - - ;; Message navigation bindings - (with-eval-after-load 'flymake - (define-key flymake-mode-map (kbd "C-c n") #'flymake-goto-next-error) - (define-key flymake-mode-map (kbd "C-c p") #'flymake-goto-prev-error)) - - ;;; Pop-up completion - (unless (package-installed-p 'corfu) - (package-install 'corfu)) - - ;; Enable autocompletion by default in programming buffers - (add-hook 'prog-mode-hook #'corfu-mode) - - ;; Enable automatic completion. - (setq corfu-auto t) - - - - ;;; Git client - (unless (package-installed-p 'magit) - (package-install 'magit)) - - ;; Bind the `magit-status' command to a convenient key. - (global-set-key (kbd "C-c g") #'magit-status) - - ;;; Indication of local VCS changes - (unless (package-installed-p 'diff-hl) - (package-install 'diff-hl)) - - ;; Enable `diff-hl' support by default in programming buffers - (add-hook 'prog-mode-hook #'diff-hl-mode) - - - - ;;; Go Support - (unless (package-installed-p 'go-mode) - (package-install 'go-mode)) - - ;;; JSON Support - (unless (package-installed-p 'json-mode) - (package-install 'json-mode)) - - ;;; Lua Support - (unless (package-installed-p 'lua-mode) - (package-install 'lua-mode)) - - ;;; Rust Support - (unless (package-installed-p 'rust-mode) - (package-install 'rust-mode)) - - ;;; YAML Support - (unless (package-installed-p 'yaml-mode) - (package-install 'yaml-mode)) - - ;;; Markdown support - (unless (package-installed-p 'markdown-mode) - (package-install 'markdown-mode)) - - - - - - ;;; EditorConfig support - (unless (package-installed-p 'editorconfig) - (package-install 'editorconfig)) - - ;; Enable EditorConfig - (editorconfig-mode t) - - ;;; In-Emacs Terminal Emulation - (unless (package-installed-p 'eat) - (package-install 'eat)) - - ;; Close the terminal buffer when the shell terminates. - (setq eat-kill-buffer-on-exit t) - - ;; Enable mouse-support. - (setq eat-enable-mouse t) - - ;;; Jump to arbitrary positions - (unless (package-installed-p 'avy) - (package-install 'avy)) - (global-set-key (kbd "C-c z") #'avy-goto-word-1) - - ;; Store automatic customisation options elsewhere - (setq custom-file (locate-user-emacs-file "custom.el")) - (when (file-exists-p custom-file) - (load custom-file)) + ;;; VIM emulation + (use-package evil + :ensure t + :init + (setq + ;; Scroll up with C-u + evil-want-C-u-scroll t + ;; Yank to EOL with Y + evil-want-Y-yank-to-eol t + ;; Create split windows below + evil-split-window-below t + ;; Create vsplit windows to the right + evil-vsplit-window-right t) + :config (evil-mode)) + ;; Org extension for Evil + (use-package evil-org + :ensure t + :after org + :hook (org-mode . evil-org-mode)) +#+END_SRC + +* General Interface Improvements +#+BEGIN_SRC emacs-lisp + ;; Use short yes/no answers + (setq-default use-short-answers t) + + ;;; Completion UI + (use-package vertico + :ensure t + :config + (vertico-mode) + ;; Improve directory navigation + (define-key vertico-map (kbd "RET") #'vertico-directory-enter) + (define-key vertico-map (kbd "DEL") #'vertico-directory-delete-word) + (define-key vertico-map (kbd "M-d") #'vertico-directory-delete-char)) + + ;;; Completion style + (use-package orderless + :ensure t + :config + (setq completion-styles '(orderless basic) + completion-category-overrides '((file (styles basic partial-completion))))) + + ;;; Extended completion utilities + (use-package consult + :ensure t + :config + (global-set-key [rebind switch-to-buffer] #'consult-buffer) + (global-set-key (kbd "C-c j") #'consult-line) + (global-set-key (kbd "C-c i") #'consult-imenu)) + + ;; Completion options + (setq read-buffer-completion-ignore-case t + read-file-name-completion-ignore-case t + completion-ignore-case t) +#+END_SRC + +* Programming Extensions +#+BEGIN_SRC emacs-lisp + ;;; LSP support + (use-package eglot + :ensure t + ;; Enable LSP support by default in programming buffers + :hook (prog-mode-hook . eglot-ensure) + :config + ;; Create a memorable alias for `eglot-ensure'. + (defalias 'start-lsp-server #'eglot)) + + ;;; Static analysis + (use-package flymake + :hook (prog-mode-hook . flymake-mode) + :config + ;; Display messages when idle, without prompting + (setq help-at-pt-display-when-idle t) + ;; Message navigation bindings + (define-key flymake-mode-map (kbd "C-c n") #'flymake-goto-next-error) + (define-key flymake-mode-map (kbd "C-c p") #'flymake-goto-prev-error)) + + ;;; Pop-up completion + (use-package corfu + :ensure t + ;; Enable autocompletion by default in programming buffers + :hook (prog-mode-hook . corfu-mode) + ;; Enable automatic completion + :init (setq corfu-auto t)) + + ;;; Git client + (use-package magit + :ensure t + :config + ;; Bind the `magit-status' command to a convenient key. + (global-set-key (kbd "C-c g") #'magit-status)) + + ;;; Diff indication + (use-package diff-hl + :ensure t + ;; Enable `diff-hl' support by default in programming buffers + :hook (prog-mode-hook . diff-hl-mode)) + + ;;; Extra language modes + (use-package go-mode + :ensure t) + (use-package json-mode + :ensure t) + (use-package lua-mode + :ensure t) + (use-package rust-mode + :ensure t) + (use-package yaml-mode + :ensure t) + (use-package markdown-mode + :ensure t) + + ;;; EditorConfig support + (use-package editorconfig + :ensure t + :config (editorconfig-mode)) + + ;;; Terminal emulator + (use-package eat + :ensure t + :config + (setq + ;; Close the terminal buffer when the shell terminates + eat-kill-buffer-on-exit t + ;; Enable mouse support + eat-enable-mouse t)) + + ;;; Jump to arbitrary positions + (use-package avy + :ensure t + :config + (global-set-key (kbd "C-c z") #'avy-goto-word-1)) +#+END_SRC + +* Etcetera +#+BEGIN_SRC emacs-lisp + ;; Store automatic customization options elsewhere + (setq custom-file (locate-user-emacs-file "custom.el")) + (when (file-exists-p custom-file) + (load custom-file)) + + ;; Persist history over restarts + (use-package savehist + :config (savehist-mode)) #+END_SRC