diff options
author | Franck Cuny <franck@fcuny.net> | 2023-06-01 19:35:59 -0700 |
---|---|---|
committer | Franck Cuny <franck@fcuny.net> | 2023-06-01 19:35:59 -0700 |
commit | a187752c824b47052d33d3bc12749b5a7d2e8191 (patch) | |
tree | d939397496dcae8a7634a93b159fab57ee1752ec /emacs/custom | |
parent | elfeed: add more feeds (diff) | |
download | emacs.d-a187752c824b47052d33d3bc12749b5a7d2e8191.tar.gz |
🤡
Change-Id: I06b104d79deac199f9cd9cdae705e333d23cc852
Diffstat (limited to 'emacs/custom')
-rw-r--r-- | emacs/custom/my-completion.el | 88 | ||||
-rw-r--r-- | emacs/custom/my-conf.el | 32 | ||||
-rw-r--r-- | emacs/custom/my-dired.el | 13 | ||||
-rw-r--r-- | emacs/custom/my-edit.el | 40 | ||||
-rw-r--r-- | emacs/custom/my-eldoc.el | 18 | ||||
-rw-r--r-- | emacs/custom/my-elfeed.el | 48 | ||||
-rw-r--r-- | emacs/custom/my-eshell.el | 112 | ||||
-rw-r--r-- | emacs/custom/my-flymake.el | 25 | ||||
-rw-r--r-- | emacs/custom/my-git.el | 50 | ||||
-rw-r--r-- | emacs/custom/my-lang-go.el | 25 | ||||
-rw-r--r-- | emacs/custom/my-lang-nix.el | 16 | ||||
-rw-r--r-- | emacs/custom/my-lang-python.el | 32 | ||||
-rw-r--r-- | emacs/custom/my-lang-rust.el | 16 | ||||
-rw-r--r-- | emacs/custom/my-lsp.el | 23 | ||||
-rw-r--r-- | emacs/custom/my-navigation.el | 56 | ||||
-rw-r--r-- | emacs/custom/my-org.el | 136 | ||||
-rw-r--r-- | emacs/custom/my-packages.el | 108 | ||||
-rw-r--r-- | emacs/custom/my-prog.el | 63 | ||||
-rw-r--r-- | emacs/custom/my-settings.el | 82 | ||||
-rw-r--r-- | emacs/custom/my-text.el | 53 | ||||
-rw-r--r-- | emacs/custom/my-tramp.el | 24 | ||||
-rw-r--r-- | emacs/custom/my-tree-sitter.el | 21 | ||||
-rw-r--r-- | emacs/custom/my-ui.el | 94 |
23 files changed, 0 insertions, 1175 deletions
diff --git a/emacs/custom/my-completion.el b/emacs/custom/my-completion.el deleted file mode 100644 index e66f0ce..0000000 --- a/emacs/custom/my-completion.el +++ /dev/null @@ -1,88 +0,0 @@ -;;; my-completion.el --- Configure parts related to completion -*- lexical-binding: t -*- - -;;; Commentary: - -;;; Code: - -(require 'cape) -(require 'consult) -(require 'corfu) -(require 'corfu-popupinfo) -(require 'orderless) -(require 'marginalia) -(require 'savehist) -(require 'vertico) - -;;; settings -;; save the mini buffer's history -(savehist-mode t) -(setq savehist-file (expand-file-name "var/history" user-emacs-directory)) - -(setq completion-styles '(orderless basic)) -(setq completion-category-defaults nil) - -(setq corfu-cycle t) ;; Enable cycling for `corfu-next/previous' -(setq corfu-auto t) ;; Enable auto completion -(setq corfu-max-width 80) ;; Default is 100 and is too wide - -(defun corfu-send-shell (&rest _) - "Send completion candidate when inside comint/eshell." - (cond - ((and (derived-mode-p 'eshell-mode) (fboundp 'eshell-send-input)) - (eshell-send-input)) - ((and (derived-mode-p 'comint-mode) (fboundp 'comint-send-input)) - (comint-send-input)))) - -(advice-add #'corfu-insert :after #'corfu-send-shell) - -;; enable corfu popup mode -(corfu-popupinfo-mode t) - -;; transition quickly -(setq corfu-popupinfo-delay '(0.25 . 0.1)) - -;; don't hide the popup when -;; transitioning between candidates -(setq corfu-popupinfo-hide nil) - -;; Silence the pcomplete capf, no errors or messages! -(advice-add 'pcomplete-completions-at-point :around #'cape-wrap-silent) - -;; Ensure that pcomplete does not write to the buffer -;; and behaves as a pure `completion-at-point-function'. -(advice-add 'pcomplete-completions-at-point :around #'cape-wrap-purify) - -(vertico-mode t) ;; Enable vertico globally -(marginalia-mode t) ;; Enable marginalia globally -(global-corfu-mode) ;; Enable corfu globally - -(add-to-list 'completion-at-point-functions #'cape-file) -(add-to-list 'completion-at-point-functions #'cape-abbrev) -(add-to-list 'completion-at-point-functions #'cape-ispell) - -;;; bindings -(global-set-key (kbd "C-c m") 'consult-mode-command) -(global-set-key (kbd "C-x b") 'consult-buffer) -(global-set-key (kbd "C-x 4 b") 'consult-buffer-other-window) -(global-set-key (kbd "C-x r b") 'consult-bookmark) -(global-set-key (kbd "C-x p b") 'consult-project-buffer) -(global-set-key (kbd "C-c i") 'consult-imenu) -(global-set-key (kbd "C-c f") 'consult-git-grep) -(global-set-key (kbd "C-c /") 'consult-ripgrep) -(global-set-key (kbd "C-c r") 'consult-recent-file) -(global-set-key (kbd "M-y") 'consult-yank-pop) -(global-set-key (kbd "M-g e") 'consult-compile-error) -(global-set-key (kbd "M-g f") 'consult-flymake) -(global-set-key (kbd "M-g M-g") 'consult-goto-line) -(global-set-key (kbd "M-g O") 'consult-outline) -(global-set-key (kbd "M-g o") 'consult-org-heading) -(global-set-key (kbd "M-g m") 'consult-mark) -(global-set-key (kbd "M-g k") 'consult-global-mark) -(global-set-key (kbd "M-s l") 'consult-line) -(global-set-key (kbd "M-s L") 'consult-line-multi) - -;;; hooks - -(provide 'my-completion) - -;;; my-completion.el ends here diff --git a/emacs/custom/my-conf.el b/emacs/custom/my-conf.el deleted file mode 100644 index 7b1dd13..0000000 --- a/emacs/custom/my-conf.el +++ /dev/null @@ -1,32 +0,0 @@ -;;; my-conf.el --- Configure modes related to configuration files -*- lexical-binding: t -*- - -;;; Commentary: -;; Provides configuration for modes that are related to configuration -;; files. - -;;; Code: - -(add-to-list 'auto-mode-alist '("\\.yml\\'" . yaml-mode)) -(add-to-list 'auto-mode-alist '("_SWARP10_METADATA\\'" . yaml-mode)) ;; roblox related -(add-to-list 'auto-mode-alist '("\\.yaml\\'" . yaml-mode)) -(add-to-list 'auto-mode-alist '("Dockerfile\\'" . dockerfile-mode)) -(add-to-list 'auto-mode-alist '("\\.tf\\'" . terraform-mode)) - -(customize-set-variable 'dockerfile-use-sudo t) -(customize-set-variable 'dockerfile-use-buildkit t) - -(customize-set-variable 'json-reformat:indent-width 2) -(customize-set-variable 'js-indent-level 2) -(customize-set-variable 'css-indent-offset 2) - -(add-hook 'terraform-mode-hook 'terraform-format-on-save-mode) - -(defun my/js-mode-hook () - "Hooks for `js-mode'." - ;; format the buffer with `jq' - (local-set-key (kbd "C-c C-f") 'jq-format-json-buffer)) - -(add-hook 'js-mode-hook 'my/js-mode-hook) - -(provide 'my-conf) -;;; my-conf.el ends here diff --git a/emacs/custom/my-dired.el b/emacs/custom/my-dired.el deleted file mode 100644 index 92ab5b0..0000000 --- a/emacs/custom/my-dired.el +++ /dev/null @@ -1,13 +0,0 @@ -;;; my-dired.el --- Configure `dired' - -;;; Commentary: - -;;; Code: - -(customize-set-variable 'dired-dwim-target t) -(customize-set-variable 'dired-listing-switches "-ahl --time-style=long-iso --group-directories-first") -(customize-set-variable 'dired-recursive-deletes 'always) -(customize-set-variable 'dired-recursive-copies 'always) - -(provide 'my-dired) -;;; my-dired.el ends here diff --git a/emacs/custom/my-edit.el b/emacs/custom/my-edit.el deleted file mode 100644 index 6a9911c..0000000 --- a/emacs/custom/my-edit.el +++ /dev/null @@ -1,40 +0,0 @@ -;;; my-edit.el --- Configure parts related to editing -*- lexical-binding: t -*- - -;;; Commentary: - -;;; Code: -(require 'autorevert) - -;;; settings -(setq global-auto-revert-non-file-buffers t) -(setq auto-revert-verbose nil) - -(global-auto-revert-mode t) - -(setq show-paren-delay 0 - show-paren-highlight-openparen t - show-paren-when-point-inside-paren t - show-paren-when-point-in-periphery t) -(show-paren-mode 1) - -;; don't assume that sentences should have two spaces after period. -(setq sentence-end-double-space nil) - -;; switch to view-mode whenever you are in a read-only buffer (e.g. -;; switched to it using C-x C-q). -(setq view-read-only t) - -;;; bindings -(global-set-key (kbd "M-j") 'join-line) - -;;; hooks -(defun my/whitespace-setup () - "Configure whitespace mode." - (setq-local show-trailing-whitespace t)) - -;; turn on my configuration for white spaces on a few modes -(dolist (hook '(prog-mode-hook text-mode-hook conf-mode-hook outline-mode-hook)) - (add-hook hook 'my/whitespace-setup)) - -(provide 'my-edit) -;;; my-edit.el ends here diff --git a/emacs/custom/my-eldoc.el b/emacs/custom/my-eldoc.el deleted file mode 100644 index ff3dc0c..0000000 --- a/emacs/custom/my-eldoc.el +++ /dev/null @@ -1,18 +0,0 @@ -;;; my-eldoc.el --- eldoc configuration -*- lexical-binding: t -*- -;; Author: Franck Cuny <franck@fcuny.net> - -;;; Commentary: - -;;; Code: - -(setq eldoc-idle-delay 1 - eldoc-documentation-strategy #'eldoc-documentation-default - eldoc-echo-area-prefer-doc-buffer 'maybe - eldoc-echo-area-use-multiline-p nil) - -(when (boundp eldoc-echo-area-display-truncation-message) - (setq eldoc-echo-area-display-truncation-message nil)) - -(provide 'my-eldoc) - -;;; my-eldoc.el ends here diff --git a/emacs/custom/my-elfeed.el b/emacs/custom/my-elfeed.el deleted file mode 100644 index a9ce043..0000000 --- a/emacs/custom/my-elfeed.el +++ /dev/null @@ -1,48 +0,0 @@ -;;; my-elfeed.el --- Configure elfeed -*- lexical-binding: t -*- - -;;; Commentary: - -;;; Code: - -(require 'elfeed) -(require 'elfeed-org) - -(with-eval-after-load 'elfeed-search - '(define-key elfeed-search-mode-map (kbd "*") 'elfeed-toggle-star)) - -(add-hook 'after-init-hook 'elfeed-org) - -(customize-set-variable 'elfeed-search-filter "@1-month-ago +unread") -(customize-set-variable 'rmh-elfeed-org-files (list (expand-file-name "etc/elfeed.org" user-emacs-directory))) - -(defalias 'elfeed-toggle-star - (elfeed-expose #'elfeed-search-toggle-all 'star)) - -;; set colors for some specific tags -(defface elfeed-face-tag-mustread - '((t :foreground "#f00")) - "This is a custom font face for the `mustread' tag in Elfeed." - :group 'elfeed) - -(with-eval-after-load 'elfeed - (setq elfeed-search-face-alist - '((mustread elfeed-face-tag-mustread) - (unread elfeed-search-unread-title-face)))) - -(defun my/elfeed-show-visit-eww () - "Visit the current entry in eww." - (interactive) - (let ((link (elfeed-entry-link elfeed-show-entry))) - (when link - (eww link)))) - -;; disable proportional fonts when displaying HTML content. -(advice-add #'elfeed-insert-html - :around - (lambda (fun &rest r) - (let ((shr-use-fonts nil)) - (apply fun r)))) - -(provide 'my-elfeed) - -;;; my-elfeed.el ends here diff --git a/emacs/custom/my-eshell.el b/emacs/custom/my-eshell.el deleted file mode 100644 index 87179ec..0000000 --- a/emacs/custom/my-eshell.el +++ /dev/null @@ -1,112 +0,0 @@ -;;; my-eshell.el --- Configure eshell -*- lexical-binding: t -*- - -;;; Commentary: - -;;; Code: - -(require 'cl-seq) -(require 'vc) -(require 'eshell) -(require 'esh-mode) -(require 'esh-module) - -(setq eshell-modules-list - '(eshell-alias - eshell-basic - eshell-cmpl - eshell-dirs - eshell-glob - eshell-hist - eshell-ls - eshell-pred - eshell-prompt - eshell-script - eshell-term - eshell-tramp - eshell-unix)) - -(require 'em-alias) -(require 'em-basic) -(require 'em-dirs) -(require 'em-glob) -(require 'em-hist) -(require 'em-term) -(require 'em-tramp) -(require 'em-prompt) - -(defun my/eshell-mode-setup () - "Configures various aliases for eshell." - (eshell/alias "e" "find-file $1") - (eshell/alias "emacs" "find-file $1") - (eshell/alias "ee" "find-file-other-window $1") - (eshell/alias "ll" "ls -l") - (eshell/alias "lla" "ls -la") - (eshell/alias "d" "dired $1") - (eshell/alias "gs" "vc-diff") - (eshell/alias "cal" "calendar") - (eshell/alias "agenda" "org-agenda")) - -(defvar-local my/eshell-output-buffer "*Exported eshell output*" - "Name of buffer with the last output of Eshell command.") - -(defvar-local my/eshell-output-delimiter "---" - "Delimiter for successive `prot-eshell-export' outputs.") - -(defun my/eshell--command-prompt-output () - "Capture last command prompt and its output." - (let ((beg (save-excursion - (goto-char (eshell-beginning-of-input)) - (goto-char (pos-bol))))) - (when (derived-mode-p 'eshell-mode) - (buffer-substring-no-properties beg (eshell-end-of-output))))) - -;; https://gitlab.com/protesilaos/dotfiles/-/blob/master/emacs/.emacs.d/prot-lisp/prot-eshell.el#L114 -(defun my/eshell-export () - "Produce a buffer with output of the last Eshell command. -If `my/eshell-output-buffer' does not exist, create it. Else -append to it, while separating multiple outputs with -`my/eshell-output-delimiter'." - (interactive) - (let ((eshell-output (my/eshell--command-prompt-output))) - (with-current-buffer (get-buffer-create my/eshell-output-buffer) - (goto-char (point-max)) - (unless (eq (point-min) (point-max)) - (insert (format "\n%s\n\n" my/eshell-output-delimiter))) - (goto-char (pos-bol)) - (insert eshell-output) - (switch-to-buffer-other-window (current-buffer))))) - -(defun my/short-pwd (path) - "Turn a PATH of the form /foo/bar/baz into /f/b/baz, like fish shell." - (let* ((home-path (replace-regexp-in-string (expand-file-name "~") - "~" - path)) - (current-dir (split-string home-path "/")) - (cdir (last current-dir)) - (head (butlast current-dir))) - (concat (mapconcat (lambda (s) - (if (string= "" s) nil - (substring s 0 1))) - head - "/") - (if head "/" nil) - (car cdir)))) - -(defmacro with-face (str &rest properties) - "Set the PROPERTIES for the given STR." - `(propertize ,str 'face (list ,@properties))) - -(define-key eshell-mode-map (kbd "C-c e e") 'my/eshell-export) - -(customize-set-variable 'eshell-scroll-to-bottom-on-input 'all) -(customize-set-variable 'eshell-hist-ignoredups t) -(customize-set-variable 'eshell-save-history-on-exit t) -(customize-set-variable 'eshell-cd-on-directory t) -(customize-set-variable 'eshell-prefer-lisp-functions t) -(customize-set-variable 'eshell-destroy-buffer-when-process-dies t) - -(add-hook 'eshell-mode-hook 'my/eshell-mode-setup) - -(provide 'my-eshell) - -;;; my-eshell.el ends here diff --git a/emacs/custom/my-flymake.el b/emacs/custom/my-flymake.el deleted file mode 100644 index 40f6ab9..0000000 --- a/emacs/custom/my-flymake.el +++ /dev/null @@ -1,25 +0,0 @@ -;;; my-flymake.el --- configure flymake -*- lexical-binding: t -*- -;; Author: Franck Cuny <franck@fcuny.net> - -;;; Commentary: - -;;; Code: - -(require 'flymake) - -;;; settings -(setq flymake-start-on-save-buffer t) -(setq elisp-flymake-byte-compile-load-path load-path) - -;;; 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) -(define-key flymake-mode-map (kbd "C-c ! d") 'flymake-show-diagnostics-buffer) - -;;; hooks -(dolist (hook '(prog-mode-hook conf-mode-hook)) - (add-hook hook 'flymake-mode)) - -(provide 'my-flymake) - -;;; my-flymake.el ends here diff --git a/emacs/custom/my-git.el b/emacs/custom/my-git.el deleted file mode 100644 index 2270f91..0000000 --- a/emacs/custom/my-git.el +++ /dev/null @@ -1,50 +0,0 @@ -;;; my-git --- configures git for emacs -*- lexical-binding: t -*- - -;;; Commentary: - -;;; Code: - -(require 'magit) -(require 'git-link) - -;;; settings -(setq vc-follow-symlinks t) - -;; we're not barbarians -(setq git-commit-summary-max-length 70) - -;; open the link in the browser -(setq git-link-open-in-browser 't) - -;; I prefer to have the status buffer in full frame -(setq magit-display-buffer-function #'magit-display-buffer-fullframe-status-v1) - -;; expand a number of sections with magit -(add-to-list 'magit-section-initial-visibility-alist '(untracked . show)) -(add-to-list 'magit-section-initial-visibility-alist '(unstaged . show)) -(add-to-list 'magit-section-initial-visibility-alist '(unpulled . show)) -(add-to-list 'magit-section-initial-visibility-alist '(unpushed . show)) - -(add-to-list 'auto-mode-alist '("\\.gitconfig\\'" . gitconfig-mode)) -(add-to-list 'auto-mode-alist '("\\.git/config\\'" . gitconfig-mode)) -(add-to-list 'auto-mode-alist '("\\.gitmodules\\'" . gitconfig-mode)) -(add-to-list 'auto-mode-alist '("\\.gitignore\\'" . gitconfig-mode)) -(add-to-list 'auto-mode-alist '("\\.dockerignore\\'" . gitconfig-mode)) -(add-to-list 'auto-mode-alist '("\\.gitattributes\\'" . gitattributes-mode)) - -;;; bindings -(global-set-key (kbd "C-x g") 'magit-status) -(global-set-key (kbd "C-c g l") 'git-link) -(global-set-key (kbd "C-c g c") 'git-link-commit) - -;;; hooks -(defun my/git-commit-auto-fill () - "Ensures that the commit body does not exceed 72 characters." - (setq-local fill-column 72) - (setq-local comment-auto-fill-only-comments nil)) - -(add-hook 'git-commit-mode-hook 'my/git-commit-auto-fill) - -(provide 'my-git) - -;;; my-git.el ends here diff --git a/emacs/custom/my-lang-go.el b/emacs/custom/my-lang-go.el deleted file mode 100644 index 7dde8c4..0000000 --- a/emacs/custom/my-lang-go.el +++ /dev/null @@ -1,25 +0,0 @@ -;;; my-lang-go.el --- configure emacs for go -*- lexical-binding: t -*- -;; Author: Franck Cuny <franck@fcuny.net> - -;;; Commentary: - -;;; Code: - -(require 'go-mode) -(require 'gotest) -(require 'eglot) - -(add-hook 'go-mode-hook 'eglot-ensure) - -(add-hook 'go-mode-hook - (lambda () - (setq tab-width 4) - (setq compile-command "go build -v && go test -v && go vet"))) - -(add-hook 'go-mode-hook - (lambda() - (add-hook 'before-save-hook 'eglot-format-buffer nil t))) - -(provide 'my-lang-go) - -;;; my-lang-go.el ends here diff --git a/emacs/custom/my-lang-nix.el b/emacs/custom/my-lang-nix.el deleted file mode 100644 index 6e17ee3..0000000 --- a/emacs/custom/my-lang-nix.el +++ /dev/null @@ -1,16 +0,0 @@ -;;; my-lang-nix.el --- configure emacs for nix -*- lexical-binding: t -*- -;; Author: Franck Cuny <franck@fcuny.net> - -;;; Commentary: - -;;; Code: - -(require 'eglot) -(require 'nix-mode) - -(add-hook 'nix-mode-hook 'eglot-ensure) -(add-hook 'nix-mode-hook #'(lambda() (add-hook 'before-save-hook 'eglot-format-buffer nil t))) - -(provide 'my-lang-nix) - -;;; my-lang-nix.el ends here diff --git a/emacs/custom/my-lang-python.el b/emacs/custom/my-lang-python.el deleted file mode 100644 index 10c1cd9..0000000 --- a/emacs/custom/my-lang-python.el +++ /dev/null @@ -1,32 +0,0 @@ -;;; my-lang-python.el --- Configures emacs for python -*- lexical-binding: t -*- -;; Author: Franck Cuny <franck@fcuny.net> - -;;; Commentary: - -;;; Code: - -(require 'python) - -(setq python-interpreter "ipython3") -(setq python-shell-interpreter "python3") -(setq python-shell-interpreter-args "-i") - -;;; bindings -(define-key python-mode-map (kbd "C-h f") 'python-eldoc-at-point) - -;;; hooks -;; if black is present, enable it -(when (executable-find "black") - (require 'blacken) - (add-hook 'python-mode-hook 'blacken-mode)) - -(when (executable-find "pylsp") - (add-hook 'python-mode-hook 'eglot-ensure) - ;; https://github.com/python-lsp/python-lsp-server/blob/develop/CONFIGURATION.md - (setq-default eglot-workspace-configuration - '((pylsp (plugins (flake8 (enabled . :json-false)) - (pycodestyle (enabled . :json-false))))))) - -(provide 'my-lang-python) - -;;; my-lang-python.el ends here diff --git a/emacs/custom/my-lang-rust.el b/emacs/custom/my-lang-rust.el deleted file mode 100644 index b0d3904..0000000 --- a/emacs/custom/my-lang-rust.el +++ /dev/null @@ -1,16 +0,0 @@ -;;; my-lang-rust.el --- configure emacs for rust -*- lexical-binding: t -*- -;; Author: Franck Cuny <franck@fcuny.net> - -;;; Commentary: - -;;; Code: - -(require 'rustic) - -(setq rustic-format-on-save t) -(setq rustic-lsp-client 'eglot) -(setq rustic-lsp-server 'rust-analyzer) - -(provide 'my-lang-rust) - -;;; my-lang-rust.el ends here diff --git a/emacs/custom/my-lsp.el b/emacs/custom/my-lsp.el deleted file mode 100644 index 40ba785..0000000 --- a/emacs/custom/my-lsp.el +++ /dev/null @@ -1,23 +0,0 @@ -;;; my-lsp.el --- Configures emacs for LSP -*- lexical-binding: t -*- -;; Author: Franck Cuny <franck@fcuny.net> - -;;; Commentary: - -;;; Code: - -(require 'eglot) - -;; settings related to performance -;; https://emacs-lsp.github.io/lsp-mode/page/performance/ -(setq read-process-output-max (* 1024 1024)) ;; 1mb -(setq gc-cons-threshold 100000000) ;; 100mb - -(global-set-key (kbd "C-c l e") #'eglot) -(define-key eglot-mode-map (kbd "C-c l s") #'eglot-shutdown) -(define-key eglot-mode-map (kbd "C-c l r") #'eglot-rename) -(define-key eglot-mode-map (kbd "C-c l a") #'eglot-code-actions) -(define-key eglot-mode-map (kbd "C-c l o") #'eglot-code-action-organize-imports) - -(provide 'my-lsp) - -;;; my-lsp.el ends here diff --git a/emacs/custom/my-navigation.el b/emacs/custom/my-navigation.el deleted file mode 100644 index 06de92e..0000000 --- a/emacs/custom/my-navigation.el +++ /dev/null @@ -1,56 +0,0 @@ -;;; my-navigation.el --- Configure parts related to navigation -*- lexical-binding: t -*- - -;;; Commentary: - -;;; Code: - -(require 'bookmark) -(require 'project) -(require 'recentf) -(require 'rg) -(require 'transient) - -;;; settings -(setq help-window-select t) ;; select help window when opening it - -;; where to store the list of projects -(setq project-list-file (expand-file-name "var/projects" user-emacs-directory)) - -(setq project-switch-commands - '((?f "File" project-find-file) - (?d "Dired" project-dired) - (?b "Buffer" project-switch-to-buffer) - (?e "Eshell" project-eshell) - (?m "Magit status" magit-project-status) - (?r "Search" rg-project))) - -(setq bookmark-save-flag 1) -(setq bookmark-default-file (expand-file-name "var/bookmarks" user-emacs-directory)) - -(setq rg-group-result t) -(setq rg-show-columns t) -(setq rg-align-position-numbers t) -(setq rg-align-line-number-field-length 3) -(setq rg-align-column-number-field-length 3) -(setq rg-align-line-column-separator "#") -(setq rg-align-position-content-separator "|") - -;; where to store the list of recent files -(setq recentf-save-file (expand-file-name "var/recentf" user-emacs-directory)) -(setq recentf-max-saved-items 500) -(setq recentf-exclude '(".gz" ".xz" ".zip" "tmp/" "/ssh:")) - -;; where to store transient's history -(setq transient-history-file (expand-file-name "var/transient-history.el" user-emacs-directory)) - -;;; bindings -(global-set-key (kbd "C-x C-b") 'ibuffer) -(global-set-key (kbd "M-g i") 'imenu) - -;;; hooks -(add-hook 'after-init-hook 'recentf-mode) -(add-hook 'after-init-hook 'which-key-mode) - -(provide 'my-navigation) - -;;; my-navigation.el ends here diff --git a/emacs/custom/my-org.el b/emacs/custom/my-org.el deleted file mode 100644 index 85716d3..0000000 --- a/emacs/custom/my-org.el +++ /dev/null @@ -1,136 +0,0 @@ -;;; my-org.el --- Configure org-mode -*- lexical-binding: t -*- -;;; Commentary: -;;; Code: - -(require 'org) -(require 'org-agenda) -(require 'org-capture) -(require 'org-archive) -(require 'org-cliplink) -(require 'ox) -(require 'ox-md) - -(defvar my/org-directory - (if (memq window-system '(mac ns)) - (expand-file-name "~/workspace/notebooks/") - (expand-file-name "~/documents/notes/"))) - -(add-hook 'org-mode-hook 'org-indent-mode) -(add-hook 'org-mode-hook 'org-hide-block-all) -(add-hook 'org-mode-hook 'visual-line-mode) -(add-hook 'org-capture-after-finalize-hook 'org-save-all-org-buffers) -(add-hook 'org-capture-prepare-finalize-hook 'org-save-all-org-buffers) - -(global-set-key (kbd "C-c c") 'org-capture) -(global-set-key (kbd "C-c a") 'org-agenda) - -(defvar load-language-list '((emacs-lisp . t) - (python . t) - (shell . t))) - -(setq org-directory my/org-directory) -(setq org-hide-emphasis-markers t) ;; hide emphasis markup -(setq org-archive-subtree-add-inherited-tags t) ;; when archiving, inherit the tags from the parent -(setq org-pretty-entities t) ;; display unicode characters -(setq org-log-done 'time) ;; log the time of completion -(setq org-log-into-drawer t) ;; insert state change in the drawer -(setq org-cycle-separator-lines 0) -(setq org-startup-folded 'content) -(setq org-todo-keywords '((sequence "TODO" "WAITING" "|" "DONE" "CANCELED"))) - -(setq org-priority-start-cycle-with-default nil) ;; Start one over/under default value. -(setq org-highest-priority ?A) -(setq org-lowest-priority ?D) -(setq org-default-priority ?C) ;; Ensures unset tasks have low priority. - -(setq org-refile-use-cache nil) -(setq org-refile-targets `((,(expand-file-name "tasks.org" org-directory) :maxlevel . 1) - (,(expand-file-name "notes.org" org-directory) :maxlevel . 1))) -(setq org-refile-use-outline-path 'file) -(setq org-outline-path-complete-in-steps nil) -(setq org-refile-allow-creating-parent-nodes 'confirm) - -;; org babel related -(setq org-src-fontify-natively t) -(setq org-src-preserve-indentation t) ;; prevent the conversion of spaces into tabs (necessary for Python code exports) -(setq org-edit-src-content-indentation t) - -(setq org-return-follows-link t) ;; I want to follow links on RET - -;; some configurations for exporting document -(setq org-export-with-toc nil) -(setq org-export-with-section-numbers nil) - -;; a few abbreviations I use regularly -(setq org-link-abbrev-alist - '(("src" . "~/workspace/%s") - ("jira" . "https://jira.rbx.com/browse/%s") - ("go" . "http://go/%s"))) - -(setq org-blank-before-new-entry (quote ((heading . nil) (plain-list-item . nil)))) -(setq org-reverse-note-order t) - -(setq org-agenda-files `(,(expand-file-name "inbox.org" org-directory) - ,(expand-file-name "notes.org" org-directory) - ,(expand-file-name "tasks.org" org-directory) - ,(expand-file-name "bookmarks.org" org-directory) - ,(expand-file-name "journal.org" org-directory))) -(setq org-agenda-show-all-dates t) -(setq calendar-week-start-day 1) -(setq org-agenda-custom-commands nil) -(setq org-agenda-start-on-weekday 1) - -(add-to-list 'org-agenda-custom-commands - '("A" "Agenda for today" - ((agenda "" ((org-agenda-span 'day) - (org-agenda-start-day (org-today)))) - (todo "TODO" - ((org-agenda-overriding-header "To Refile") - (org-agenda-files `(,(expand-file-name "inbox.org" org-directory))))) - (todo "STARTED" - ((org-agenda-overriding-header "In Progress"))) - (todo "WAITING" - ((org-agenda-overriding-header "Blocked"))) - (todo "TODO" - ((org-agenda-overriding-header "Not yet started") - (org-agenda-skip-function '(org-agenda-skip-entry-if 'deadline 'scheduled))))))) - -(setq org-capture-templates -`(("t" "tasks" entry (file "inbox.org") - "* TODO [#D] %?\n:PROPERTIES:\n:CREATED: %U\n:END:\n") - - ("T" "TIL" entry (file+headline "til.org" "Today I learned") - "* %^{title} :%^{tag}:\n:PROPERTIES:\n:CREATED: %U\n:END:\n%?\nSource: %^C") - - ("n" "note" entry (file "notes.org") - "* %?\n:PROPERTIES:\n:CREATED: %T\n:END:\n") - - ("f" "feed" entry (file "inbox.org") - ,(concat "* TODO [#D] %:elfeed-entry-title :feed:\n" - ":PROPERTIES:\n:CREATED: %T\n:END:\n" - "%a\n")) - - ("b" "bookmark" entry (file "bookmarks.org") - ,(concat "* %(org-cliplink-capture) :%^{tag}:\n" - ":PROPERTIES:\n:CREATED: %T\n:END:%?\n") :prepend t :empty-lines 1) - - ("j" "journal" entry (file+olp+datetree "journal.org") - "* %?\n:PROPERTIES:\n:CREATED: %T\n:END:\n" :tree-type day))) - -;; https://stackoverflow.com/questions/20164918/how-to-untick-checkboxes-in-org-mode-for-the-next-cyclic-repetitive-task -(defun my/org-reset-checkbox-state-maybe () - "Reset all checkboxes in an entry if the `RESET_CHECK_BOXES' property is set." - (interactive "*") - (if (org-entry-get (point) "RESET_CHECK_BOXES") - (org-reset-checkbox-state-subtree))) - -(defun my/org-reset-checkbox-when-done () - "Reset all checkboxes in an entry when the state is DONE." - (when (member org-state org-done-keywords) ;; org-state dynamically bound in org.el/org-todo - (my/org-reset-checkbox-state-maybe))) - -(add-hook 'org-after-todo-state-change-hook 'my/org-reset-checkbox-when-done) - -(provide 'my-org) - -;;; my-org.el ends here diff --git a/emacs/custom/my-packages.el b/emacs/custom/my-packages.el deleted file mode 100644 index 62cfac0..0000000 --- a/emacs/custom/my-packages.el +++ /dev/null @@ -1,108 +0,0 @@ -;;; my-packages.el --- List of packages to install -*- lexical-binding: t -*- -;; Author: Franck Cuny <franck@fcuny.net> - -;;; Commentary: - -;;; Code: - -(require 'package) -(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/")) - -(defvar my/package-list - '(eglot - ;; python - blacken - python-docstring - python-mode - - ;; go - go-mode - gotest - - ;; nix - nix-mode - - ;; rust - rustic - - ;; various configuration formats - chef-mode - dockerfile-mode - fish-mode - hcl-mode - jq-format - protobuf-mode - systemd - terraform-doc - terraform-mode - toml-mode - yaml-mode - - ;; git - git-commit - git-link - git-modes - magit - - ;; elfeed - elfeed - elfeed-org - - ;; org-mode - org-cliplink - - ;; various text modes - markdown-mode - - ;; tree-sitter - tree-sitter - tree-sitter-langs - - ;; navigation - cape - consult - corfu - marginalia - orderless - vertico - which-key - yasnippet - - ;; themes - standard-themes - - ;; packages to interact with external tools - exec-path-from-shell - envrc - rg) - "List of packages to be installed.") - -(defun my/packages-installed-p () - "Check if all packages in `my/package-list' are installed." - (cl-every #'package-installed-p my/package-list)) - -(defun my/require-package (package) - "Install PACKAGE unless already installed." - (unless (memq package my/package-list) - (add-to-list 'my/package-list package)) - (unless (package-installed-p package) - (package-install package))) - -(defun my/require-packages (packages) - "Ensure PACKAGES are installed. -Missing packages are installed automatically." - (mapc #'my/require-package packages)) - -(defun my/install-packages () - "Install all packages listed in `my/package-list'." - (unless (my/packages-installed-p) - ;; check for new packages (package versions) - (message "%s" "Reloading packages DB...") - (package-refresh-contents) - (message "%s" " done.") - ;; install the missing packages - (my/require-packages my/package-list))) - -(provide 'my-packages) - -;;; my-packages.el ends here diff --git a/emacs/custom/my-prog.el b/emacs/custom/my-prog.el deleted file mode 100644 index 8314ab9..0000000 --- a/emacs/custom/my-prog.el +++ /dev/null @@ -1,63 +0,0 @@ -;;; my-prog.el --- Configures emacs for various programming languages -*- lexical-binding: t -*- - -;;; Commentary: - -;;; Code: -(customize-set-variable 'Man-notify-method 'aggressive) -(customize-set-variable 'Man-fontify-manpage-flag t) - -;; turn on `electric-pair-mode' on `prog-mode' and `conf-mode-hook' -(dolist (hook '(prog-mode-hook conf-mode-hook)) - (add-hook hook 'electric-pair-mode)) - -;; Skip over warnings and info messages in compilation -(customize-set-variable 'compilation-skip-threshold 2) -;; Don't freeze when process reads from stdin -(customize-set-variable 'compilation-disable-input t) -;; Show three lines of context around the current message -(customize-set-variable 'compilation-context-lines 3) -;; Jump to first error -(customize-set-variable 'compilation-scroll-output 'first-error) - -;; yasnippet is required to support place holders with eglot -(dolist (hook '(prog-mode-hook conf-mode-hook org-mode-hook)) - (add-hook hook 'yas-minor-mode)) - -;; where to wrap comments -(require 'newcomment) -(setq comment-fill-column 120) -(setq comment-auto-fill-only-comments t) - -(dolist (hook '(prog-mode-hook conf-mode-hook)) - (add-hook hook 'auto-fill-mode)) - -(defun my/sh-mode-hook () - "Hooks for `sh-mode'." - ;; shell scripts are made executable - (add-hook 'after-save-hook 'executable-make-buffer-file-executable-if-script-p) - (customize-set-variable 'sh-indentation 2) - (customize-set-variable 'sh-basic-offset 2)) - -(add-hook 'sh-mode-hook 'my/sh-mode-hook) - -(defun my/makefile-mode-hook () - "Hooks for `makefile-mode'." - ;; I want small tabs when working in a Makefile - (setq tab-width 2)) - -(add-hook 'makefile-mode-hook 'my/makefile-mode-hook) - -(defun my/elisp-mode-hook () - "Hooks for `elisp-mode'." - (define-key emacs-lisp-mode-map (kbd "C-c C-e") 'eval-buffer) - (define-key emacs-lisp-mode-map (kbd "C-c C-r") 'eval-region)) - -(add-hook 'emacs-lisp-mode-hook 'my/elisp-mode-hook) - -(define-key prog-mode-map (kbd "C-c C-h") 'eldoc) -(dolist (hook '(prog-mode-hook conf-mode-hook)) - (add-hook hook 'turn-on-eldoc-mode)) - -(provide 'my-prog) - -;;; my-prog.el ends here diff --git a/emacs/custom/my-settings.el b/emacs/custom/my-settings.el deleted file mode 100644 index b17f4a6..0000000 --- a/emacs/custom/my-settings.el +++ /dev/null @@ -1,82 +0,0 @@ -;;; my-settings.el --- Sets a number of defaults -*- lexical-binding: t -*- - -;;; Commentary: - -;;; Code: - -(require 'url-cookie) - -;; set utf-8 as the default encoding -(prefer-coding-system 'utf-8-unix) -(setq locale-coding-system 'utf-8) -(set-language-environment 'utf-8) -(set-terminal-coding-system 'utf-8) -(set-keyboard-coding-system 'utf-8) - -;; alias yes-or-no to y-or-n -(fset 'yes-or-no-p 'y-or-n-p) - -(setq auto-save-default nil) ;; don't auto save files -(setq auto-save-list-file-prefix nil) ;; no backups -(setq create-lockfiles nil) ;; don't use a lock file -(setq confirm-kill-emacs #'yes-or-no-p) ;; ask before killing emacs -(setq make-backup-files nil) ;; really no backups -(setq minibuffer-message-timeout 0.5) ;; How long to display an echo-area message -(setq next-screen-context-lines 5) ;; scroll 5 lines at a time -(setq require-final-newline t) ;; ensure newline exists at the end of the file -(setq ring-bell-function 'ignore) ;; really no bell -(setq tab-always-indent 'complete) ;; when using TAB, always indent -(setq visible-bell nil) ;; no bell -(setq column-number-mode t) ;; show column number in the mode line -(setq-default indent-tabs-mode nil) ;; turn off tab indentation -(setq-default cursor-type 'box) ;; cursor is a horizontal bar -(setq-default delete-by-moving-to-trash t) ;; delete files by moving them to the trash -(setq initial-scratch-message "") ;; empty scratch buffer -(setq garbage-collection-messages t) ;; log when the gc kicks in - -;; where to store cookies -(setq url-cookie-file (expand-file-name "var/url/cookies" user-emacs-directory)) - -(custom-set-variables - '(use-file-dialog nil) - '(use-dialog-box nil) - '(inhibit-startup-screen t) - '(inhibit-startup-message t) - '(inhibit-startup-echo-area-message t)) - -(setq user-full-name "Franck Cuny" - user-mail-address "franck@fcuny.net" - add-log-mailing-address "franck@fcuny.net") - -(customize-set-variable 'history-length 1000) -(customize-set-variable 'history-delete-duplicates t) - -(add-hook 'after-init-hook 'midnight-mode) - -(customize-set-variable 'save-place-forget-unreadable-files t) -(add-hook 'after-init-hook #'save-place-mode) - -(when (memq window-system '(mac ns)) - (require 'exec-path-from-shell) - (exec-path-from-shell-initialize)) - -(unless (and (fboundp 'server-running-p) - (server-running-p)) - (server-start)) - -(require 'yasnippet) - -;; I want the snippets under `etc' -(defvar my/yasnippets (expand-file-name "etc/snippets" user-emacs-directory)) - -(if (and (file-exists-p my/yasnippets) (not (member my/yasnippets yas-snippet-dirs))) - (setq yas--default-user-snippets-dir my/yasnippets)) - -;; the default (tab) conflicts with corfu for completion -(define-key yas-minor-mode-map (kbd "C-c y") #'yas-expand) - -(yas-global-mode 1) - -(provide 'my-settings) - -;;; my-settings.el ends here diff --git a/emacs/custom/my-text.el b/emacs/custom/my-text.el deleted file mode 100644 index 37f9773..0000000 --- a/emacs/custom/my-text.el +++ /dev/null @@ -1,53 +0,0 @@ -;;; my-text.el --- configures modes related to text -*- lexical-binding: t -*- - -;;; Commentary: - -;;; Code: - - -;; BUG: this is a work around for markdown-mode - without this, imenu -;; won't work in that mode, which is preventing efficient navigation. -;; The following link has more details: -;; https://github.com/jrblevin/markdown-mode/issues/578#issuecomment-1126380098 -(require 'comp) -(setq native-comp-deferred-compilation-deny-list '("markdown-mode\\.el$")) - -(require 'markdown-mode) -(require 'ispell) -(require 'abbrev) - -;;; settings -(setq ispell-program-name (executable-find "aspell")) -(setq ispell-dictionary "en_US") -(setq ispell-extra-args '("--camel-case")) - -(add-to-list 'auto-mode-alist - '("\\.\\(md\\|markdown\\)$" . markdown-mode) auto-mode-alist) - -;; use GitHub's markdown flavor for README files -(add-to-list 'auto-mode-alist '("README\\.md\\'" . gfm-mode)) - -(when (executable-find "pandoc") - (setq markdown-command "pandoc -f markdown -t html")) - -(setq only-global-abbrevs nil) -(setq abbrev-file-name (expand-file-name "var/abbrev_defs" user-emacs-directory)) -(let ((table text-mode-abbrev-table)) - (define-abbrev table "github" "GitHub") - (define-abbrev table "emacs" "Emacs")) - -;;; bindings - -;;; hooks -(add-hook 'text-mode-hook 'flyspell-mode) -(add-hook 'text-mode-hook 'goto-address-mode) - -(dolist (hook '(prog-mode-hook conf-mode-hook)) - (add-hook hook 'flyspell-prog-mode)) - -(dolist (hook '(text-mode-hook git-commit-mode-hook)) - (add-hook hook 'abbrev-mode)) - -(provide 'my-text) - -;;; my-text.el ends here diff --git a/emacs/custom/my-tramp.el b/emacs/custom/my-tramp.el deleted file mode 100644 index 897d48c..0000000 --- a/emacs/custom/my-tramp.el +++ /dev/null @@ -1,24 +0,0 @@ -;;; my-tramp.el --- Configure tramp -*- lexical-binding: t -*- - -;;; Commentary: - -;;; Code: - -(customize-set-variable 'tramp-default-method "ssh") -(customize-set-variable 'tramp-histfile-override t) -(customize-set-variable 'tramp-ssh-controlmaster-options "-o ControlMaster=auto -o ControlPath='tramp.%%C'") - -(defcustom my/ssh-hosts '("192.168.0.1:9922" - "192.168.0.106") - "List of hosts I regularly connect to." - :type '(repeat string) - :group 'tramp) - -(defun my/ssh-cd-home () - "Prompt for an SSH host and open a DIRED buffer on that machine." - (interactive) - (let ((machine (completing-read "Machine: " my/ssh-hosts))) - (find-file (format "/ssh:%s:~" machine)))) - -(provide 'my-tramp) -;;; my-tramp.el ends here diff --git a/emacs/custom/my-tree-sitter.el b/emacs/custom/my-tree-sitter.el deleted file mode 100644 index d19362e..0000000 --- a/emacs/custom/my-tree-sitter.el +++ /dev/null @@ -1,21 +0,0 @@ -;;; my-tree-sitter.el --- configure emacs for tree-sitter -*- lexical-binding: t -*- -;; Author: Franck Cuny <franck@fcuny.net> - -;;; Commentary: - -;;; Code: - -(require 'tree-sitter) -(require 'tree-sitter-langs) - -;; enable tree-sitter mode for all supported major modes -(global-tree-sitter-mode) - -;; the minor mode tree-sitter-hl-mode provides the framework for syntax -;; highlighting. It overrides the regex-based highlighting provided by -;; font-lock-mode, using the syntax tree provided by tree-sitter-mode -(add-hook 'tree-sitter-after-on-hook #'tree-sitter-hl-mode) - -(provide 'my-tree-sitter) - -;;; my-tree-sitter.el ends here diff --git a/emacs/custom/my-ui.el b/emacs/custom/my-ui.el deleted file mode 100644 index 228baea..0000000 --- a/emacs/custom/my-ui.el +++ /dev/null @@ -1,94 +0,0 @@ -;;; my-ui.el --- configure UI elements -*- lexical-binding: t -*- - -;;; Commentary: - -;;; Code: - -;; cleaning up the UI -(scroll-bar-mode -1) -(tool-bar-mode -1) -(menu-bar-mode -1) -(blink-cursor-mode -1) - -;;; no fringe on the right side -(set-fringe-mode '(8 . 0)) - -(when (memq window-system '(mac ns)) - (add-to-list 'default-frame-alist '(font . "Source Code Pro-15")) - (add-to-list 'default-frame-alist '(fullscreen . maximized)) - (add-to-list 'default-frame-alist '(ns-appearance . nil)) - (add-to-list 'default-frame-alist '(ns-transparent-titlebar . nil)) - (when (boundp 'ns-use-native-fullscreen) - (setq ns-use-native-fullscreen nil)) - (when (boundp 'mac-allow-anti-aliasing) - (setq mac-allow-anti-aliasing t))) - -(when (memq window-system '(x pgtk)) - (set-face-attribute 'default nil :font "Source Code Pro" :height 130) - ;; this is a fall back in the case we have Unicode characters. - ;; For example, with this settings, the following source is - ;; rendered correctly 😇 😀 and 🤢 - (set-fontset-font t 'symbol "Noto Color Emoji" nil 'append)) - -(customize-set-variable 'display-time-24hr-format t) -(customize-set-variable 'display-time-day-and-date t) -(customize-set-variable 'display-time-format "%a %e %b, %H:%M") -(customize-set-variable 'display-time-interval 60) -(customize-set-variable 'display-time-default-load-average nil) -(customize-set-variable 'zoneinfo-style-world-list - '(("UTC" "UTC") - ("America/Los_Angeles" "Berkeley") - ("America/Denver" "Mountain Time") - ("America/Chicago" "Central Time") - ("America/New_York" "New York") - ("Europe/London" "London") - ("Europe/Paris" "Paris") - ("Asia/Calcutta" "Bangalore") - ("Asia/Tokyo" "Tokyo"))) - -;; the following setup only works with emacs >=28 I think -(when (boundp 'world-clock-list) - (setq world-clock-list t)) - -(when (boundp 'world-clock-time-format) - ;; UTC => 02:42 +0000 Wednesday 20 April - ;; Berkeley => 19:42 -0700 Tuesday 19 April - (setq world-clock-time-format "%R %z %A %d %B")) - -(when (boundp 'world-clock-timer-enable) - (setq world-clock-timer-enable t)) - -(when (boundp 'world-clock-timer-second) - (setq world-clock-timer-second 60)) - -;; Disable help mouse-overs for mode-line as they provide little to no benefits -(setq mode-line-default-help-echo nil - show-help-function nil) - -(setq display-buffer-alist - `( - ("\\*\\(.* # Help.*\\|Help\\|xref\\)\\*" ; See the hooks for `visual-line-mode' - (display-buffer-reuse-mode-window display-buffer-in-side-window) - (window-width . 0.35) - (side . left) - (slot . 0)) - ("\\*\\(Flymake diagnostics\\|Package-Lint\\).*" - (display-buffer-in-side-window) - (window-height . 0.16) - (side . top) - (slot . 0)) - ("\\*\\(Backtrace\\|Warnings\\|Compile-Log\\|Flymake log\\|Async Shell Command\\)\\*" - (display-buffer-in-side-window) - (window-height . 0.16) - (side . top) - (slot . 2)) - ("\\*\\(wclock\\|slo-calculator\\).*" - (display-buffer-in-side-window) - (window-width . 0.35) - (side . left) - (slot . 0)))) - -(add-hook 'help-mode-hook 'visual-line-mode) - -(provide 'my-ui) -;;; my-ui.el ends here |