diff options
Diffstat (limited to 'emacs')
-rw-r--r-- | emacs | 911 |
1 files changed, 0 insertions, 911 deletions
@@ -1,911 +0,0 @@ -(menu-bar-mode -1) -(tool-bar-mode -1) -(scroll-bar-mode -1) -(pixel-scroll-mode) - -(require 'package) -(setq frame-title-format - `((buffer-file-name "%f" "%b") - ,(format " - Emacs" ))) - -(with-eval-after-load 'package - (add-to-list 'package-archives '("nongnu" . "https://elpa.nongnu.org/nongnu/"))) -(with-eval-after-load 'package - (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))) -(package-initialize t) -(setq url-http-attempt-keepalives nil) -(when (not package-archive-contents) - (package-refresh-contents)) - -(setq kill-whole-line t) - -;; wl-copy -(setq wl-copy-process nil) -(defun wl-copy (text) - (setq wl-copy-process (make-process :name "wl-copy" - :buffer nil - :command '("wl-copy") - :connection-type 'pipe - :noquery t)) - (process-send-string wl-copy-process text) - (process-send-eof wl-copy-process)) - -(defun wl-paste () - (if (and wl-copy-process (process-live-p wl-copy-process)) - nil - (shell-command-to-string "wl-paste -n | tr -d \r"))) - -(setq interprogram-cut-function 'wl-copy - interprogram-paste-function 'wl-paste) - -;; God mode -(unless (package-installed-p 'god-mode) - (package-install 'god-mode)) - -(require 'god-mode) -(god-mode-all) -(global-set-key (kbd "<escape>") #'god-local-mode) -(define-key god-local-mode-map (kbd "i") #'god-local-mode) -(define-key god-local-mode-map (kbd ".") #'repeat) -(global-set-key (kbd "C-x C-1") #'delete-other-windows) -(define-key god-local-mode-map (kbd "[") #'next-buffer) -(define-key god-local-mode-map (kbd "]") #'previous-buffer) - -;; Expand-region -(unless (package-installed-p 'expand-region) - (package-install 'expand-region)) -(require 'expand-region) - -(global-set-key (kbd "C-,") 'er/expand-region) -;; Keybindings -(global-set-key (kbd "C-c C-k") #'eldoc) -(define-key god-local-mode-map (kbd "C-c d [") #'flymake-goto-prev-error) -(define-key god-local-mode-map (kbd "C-c d ]") #'flymake-goto-next-error) -(define-key god-local-mode-map (kbd "C-c v ]") #'diff-hl-next-hunk) -(define-key god-local-mode-map (kbd "C-c v [") #'diff-hl-prev-hunk) - - -(defun m/newline-insert-above () - "Create line above, exit god mode" - (interactive) - (beginning-of-line) - (newline-and-indent) - (previous-line) - (god-local-mode -1)) - -(define-key god-local-mode-map (kbd "C-S-O") #'m/newline-insert-above) - -(defun m/newline-insert-below () - "Create line below, exit god mode" - (interactive) - (end-of-line) - (newline-and-indent) - (god-local-mode -1)) - -(define-key god-local-mode-map (kbd "C-o") #'m/newline-insert-below) - -(add-hook 'god-local-mode-hook - (lambda () (if (bound-and-true-p god-local-mode) - (setq cursor-type 'box) - (setq cursor-type 'bar)))) - -(defun m/update-cursor-type () - (setq cursor-type (if (or god-local-mode buffer-read-only) 'box 'bar))) -(add-hook 'post-command-hook #'m/update-cursor-type) - -(defun m/quit () - "Quit current window or buffer. Taken from meow-quit" - (interactive) - (if (> (seq-length (window-list (selected-frame))) 1) - (quit-window) - (previous-buffer))) - -(define-key god-local-mode-map (kbd "C-q") #'m/quit) - -(require 'god-mode-isearch) -(define-key isearch-mode-map (kbd "<escape>") #'god-mode-isearch-activate) -(define-key god-mode-isearch-map (kbd "<escape>") #'god-mode-isearch-disable) - -(delete-selection-mode 1) - -(unless (package-installed-p 'avy) - (package-install 'avy)) - -(keymap-global-set "C-'" 'avy-goto-char) - -;; Setup custom keys for avy -(custom-set-variables '(avy-keys '(97 114 115 116 100 104 110 101 105 111))) - - -(unless (package-installed-p 'hyperbole) - (package-install 'hyperbole)) -(require 'hyperbole) -(hyperb:init) - - -;; Direnv -(unless (package-installed-p 'direnv) - (package-install 'direnv)) - -(use-package direnv - :config - (direnv-mode)) - -(setq direnv-show-paths-in-summary nil) -(setq direnv-always-show-summary nil) - -;; Prompt -(add-hook 'eshell-mode-hook - (defun my-eshell-mode-hook () - (require 'eshell-z))) - -(defun marcc/eshell-prompt () - (setq eshell-prompt-regexp "^-- ") - (format "%s\n-- " (abbreviate-file-name (eshell/pwd)))) -(setq eshell-prompt-function #'marcc/eshell-prompt) - -;; Print git branch in dired et.c. -(unless (package-installed-p 'git-ps1-mode) - (package-install 'git-ps1-mode)) - -(require 'git-ps1-mode) - - -;;Theme -(unless (package-installed-p 'almost-mono-themes) - (package-install 'almost-mono-themes)) -(use-package almost-mono-themes - :config - (load-theme 'almost-mono-white t)) - -(set-face-attribute 'default nil :font "Iosevka Term Curly" :height 100) -(set-face-attribute 'variable-pitch nil :font "Iosevka Etoile" :height 90) -(setq-default line-spacing 0.5) -(setq display-time-format "%a, %d/%m, %H:%M") -(display-time-mode) -(display-battery-mode) -(tab-bar-mode) - -(add-hook 'Info-mode-hook 'variable-pitch-mode) -(add-hook 'woman-mode-hook 'variable-pitch-mode) -(setq flymake-fringe-indicator-position 'left-fringe - diff-hl-side 'right) - -(custom-set-variables '(fringe-mode '(5 . 5) nil (fringe))) -(set-face-attribute 'fringe nil :background "#FFF") -(add-to-list 'default-frame-alist '(internal-border-width . 4)) - -;; Disable splash screen -(setq inhibit-startup-screen t) - -;; Ripgrep -(unless (package-installed-p 'rg) - (package-install 'rg)) -(require 'rg) - -;; Slime -(unless (package-installed-p 'slime) - (package-install 'slime)) - - -;; Hyperbole -(unless (package-installed-p 'hyperbole) - (package-install 'hyperbole)) - -(hyperbole-mode 1) - -;;; Git client -(unless (package-installed-p 'magit) - (package-install 'magit)) - -;; Tempel -(unless (package-installed-p 'tempel) - (package-install 'tempel)) - -(use-package tempel - ;; Require trigger prefix before template name when completing. - ;; :custom - ;; (tempel-trigger-prefix "<") - :bind (("M-+" . tempel-complete) ;; Alternative tempel-expand - ("M-*" . tempel-insert)) - - :init - - ;; Setup completion at point - (defun tempel-setup-capf () - ;; Add the Tempel Capf to `completion-at-point-functions'. - ;; `tempel-expand' only triggers on exact matches. Alternatively use - ;; `tempel-complete' if you want to see all matches, but then you - ;; should also configure `tempel-trigger-prefix', such that Tempel - ;; does not trigger too often when you don't expect it. NOTE: We add - ;; `tempel-expand' *before* the main programming mode Capf, such - ;; that it will be tried first. - (setq-local completion-at-point-functions - (cons #'tempel-expand - completion-at-point-functions))) - - (add-hook 'conf-mode-hook 'tempel-setup-capf) - (add-hook 'prog-mode-hook 'tempel-setup-capf) - (add-hook 'text-mode-hook 'tempel-setup-capf) - - ;; Optionally make the Tempel templates available to Abbrev, - ;; either locally or globally. `expand-abbrev' is bound to C-x '. - ;; (add-hook 'prog-mode-hook #'tempel-abbrev-mode) - ;; (global-tempel-abbrev-mode) - ) - -;; Eat - terminal emulator -(unless (package-installed-p 'eat) - (package-install 'eat)) - - -;; Vundo -(unless (package-installed-p 'vundo) - (package-install 'vundo)) - -;; Backups - -(setq backup-directory-alist - `((".*" . ,temporary-file-directory)) - auto-save-file-name-transforms - `((".*" ,temporary-file-directory t))) - -;; 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) - -;; Devdocs -(unless (package-installed-p 'devdocs) - (package-install 'devdocs)) - -(global-set-key (kbd "C-h D") 'devdocs-lookup) -(add-hook 'terraform-mode-hook - (lambda () (setq-local devdocs-current-docs '("terraform")))) - -;; LSP -(unless (package-installed-p 'tuareg) - (package-install 'tuareg)) -(unless (package-installed-p 'nix-ts-mode) - (package-install 'nix-ts-mode)) -(require 'nix-ts-mode) -(add-to-list 'auto-mode-alist '("\\.nix\\'" . nix-ts-mode)) -(use-package tree-sitter-langs - :ensure t - :defer t) - -(global-tree-sitter-mode) -(setq treesit-language-source-alist - '((bash "https://github.com/tree-sitter/tree-sitter-bash") - (cmake "https://github.com/uyha/tree-sitter-cmake") - (css "https://github.com/tree-sitter/tree-sitter-css") - (elisp "https://github.com/Wilfred/tree-sitter-elisp") - (go "https://github.com/tree-sitter/tree-sitter-go") - (html "https://github.com/tree-sitter/tree-sitter-html") - (javascript "https://github.com/tree-sitter/tree-sitter-javascript" "master" "src") - (json "https://github.com/tree-sitter/tree-sitter-json") - (make "https://github.com/alemuller/tree-sitter-make") - (ocaml "https://github.com/alemuller/tree-sitter-ocaml") - (markdown "https://github.com/ikatyang/tree-sitter-markdown") - (python "https://github.com/tree-sitter/tree-sitter-python") - (nix "https://github.com/tree-sitter/tree-sitter-nix") - (toml "https://github.com/tree-sitter/tree-sitter-toml") - (tsx "https://github.com/tree-sitter/tree-sitter-typescript" "master" "tsx/src") - (typescript "https://github.com/tree-sitter/tree-sitter-typescript" "master" "typescript/src") - (yaml "https://github.com/ikatyang/tree-sitter-yaml"))) - - -;; Project -(bind-key "C-x p s" 'eat-project) - -(use-package eglot - :ensure t) - -;; Allegedly speeds up eglot -(fset #'jsonrpc--log-event #'ignore) - -(add-hook 'tuareg-mode-hook 'eglot-ensure) - -;; When tuareg is loaded, autoformat on save -(add-hook 'tuareg-mode-hook - (lambda () - (add-hook 'before-save-hook 'eglot-format nil t))) - -(add-hook 'typescript-mode-hook 'eglot-ensure) -(setq-default indent-tabs-mode nil - tab-stop-list () - tab-width 2) - -(cl-defmethod project-root ((project (head eglot-project))) - (cdr project)) - -(defun my-project-try-tsconfig-json (dir) - (when-let* ((found (locate-dominating-file dir "tsconfig.json"))) - (cons 'eglot-project found))) - -(add-hook 'project-find-functions - 'my-project-try-tsconfig-json nil nil) - -(unless (package-installed-p 'terraform-mode) - (package-install 'terraform-mode)) - -(use-package terraform-mode - ;; if using straight - ;; :straight t - - ;; if using package.el - ;; :ensure t - :custom (terraform-indent-level 2) - :config - (defun my-terraform-mode-init () - ;; if you want to use outline-minor-mode - ;; (outline-minor-mode 1) - ) - - (add-hook 'terraform-mode-hook 'my-terraform-mode-init)) - -(add-hook 'terraform-mode-hook 'eglot-ensure) - -(add-to-list 'auto-mode-alist '("\\.ts\\'" . typescript-ts-mode)) -(add-to-list 'auto-mode-alist '("\\.tsx\\'" . tsx-ts-mode)) -(add-to-list 'auto-mode-alist '("\\.tf\\'" . terraform-mode)) -(add-to-list 'auto-mode-alist '("\\.json\\'" . json-mode)) -(add-to-list 'auto-mode-alist '("\\.ml\\'" . tuareg-mode)) -(add-to-list 'auto-mode-alist '("\\.mli\\'" . tuareg-mode)) -(add-to-list 'auto-mode-alist '("emacs" . emacs-lisp-mode)) - -'(eglot-extend-to-xref t) -'(eglot-autoreconnect t) -(add-hook 'eglot-managed-mode-hook - (lambda () - "Make sure Eldoc will show us all of the feedback at point." - (setq-local eldoc-documentation-strategy - #'eldoc-documentation-compose))) - -;; Commands - -(defun ocaml-print-rapper-type () - (interactive) - (insert (shell-command-to-string "ocaml-rapper-helper"))) - -;; HTML + Liquid -(add-to-list 'auto-mode-alist '("\\.liquid\\'" . html-mode)) -(with-eval-after-load 'eglot - (add-to-list 'eglot-server-programs - '(html-mode . ("vscode-html-language-server" "--stdio")) - '(css-mode . ("vscode-css-language-server" "--stdio")))) - - -(unless (package-installed-p 'prettier-js) - (package-install 'prettier-js)) -(unless (package-installed-p 'add-node-modules-path) - (package-install 'add-node-modules-path)) -(unless (package-installed-p 'smartparens) - (package-install 'smartparens)) - -(add-hook 'typescript-ts-mode-hook 'prettier-js-mode) -(add-hook 'tsx-ts-mode 'prettier-js-mode) -(add-hook 'typescript-ts-mode-hook #'smartparens-mode) -(add-hook 'json-ts-mode-hook #'smartparens-mode) -(add-hook 'tuareg-mode-hook #'smartparens-mode) -(add-hook 'terraform-mode-hook #'smartparens-mode) - -(setq eglot-prefer-plaintext 1 - eldoc-echo-area-use-multiline-p t - eldoc-echo-area-prefer-doc-buffer t - eglot-events-buffer-size 0 - eglot-autoshutdown t) - - -(add-hook 'eglot-managed-mode-hook (lambda () (eglot-inlay-hints-mode 0))) -(add-hook 'eglot-managed-mode-hook (lambda () (global-eldoc-mode -1))) -(add-hook 'eglot-managed-mode-hook (lambda () (keymap-local-set "C-c C-x C-a" 'eglot-code-actions))) -(add-hook 'eglot-managed-mode-hook (lambda () (keymap-local-set "C-c C-x C-r" 'eglot-rename))) - -(global-eldoc-mode -1) - -;; Disable copilot warning logs -(setq warning-minimum-level :error) - -;; Markdown mode to correctly show markdown -(unless (package-installed-p 'markdown-mode) - (package-install 'markdown-mode)) -(use-package markdown-mode) - -(setq markdown-enable-highlighting-syntax t) -(setq markdown-hide-urls t) -(setq markdown-hide-markup t) - - -(unless (package-installed-p 'consult) - (package-install 'consult)) -(global-set-key [rebind switch-to-buffer] #'consult-buffer) -(global-set-key (kbd "C-x C-r") #'consult-ripgrep) -(global-set-key (kbd "C-x C-f") #'consult-fd) - -(setq consult-async-refresh-delay 0.0) -(setq consult-async-input-throttle 0.0) -(setq consult-async-input-debounce 0.02) - -;; Vertico + Marginalia + Orderless auto complete -(unless (package-installed-p 'vertico) - (package-install 'vertico)) -(use-package vertico - :init - (vertico-mode) - (use-package savehist - :init - (savehist-mode)) - ) -(vertico-reverse-mode) -(setq vertico-resize nil) -;; Completion -(setq completion-in-region-function - (lambda (&rest args) - (apply (if vertico-mode - #'consult-completion-in-region - #'completion--in-region) - args))) -(unless (package-installed-p 'orderless) - (package-install 'orderless)) - -(unless (package-installed-p 'marginalia) - (package-install 'marginalia)) - -(use-package marginalia - :init - (marginalia-mode)) - -(use-package orderless - :ensure t - :custom - (completion-styles '(orderless basic)) - (completion-category-overrides '((file (styles basic partial-completion))))) - -;; Miscellaneous options -(setq-default major-mode - (lambda () ; guess major mode from file name - (unless buffer-file-name - (let ((buffer-file-name (buffer-name))) - (set-auto-mode))))) -(setq confirm-kill-emacs #'yes-or-no-p) -(setq window-resize-pixelwise t - frame-resize-pixelwise t) -(save-place-mode t) -(savehist-mode t) -(recentf-mode t) -(defalias 'yes-or-no #'y-or-n-p) - -;; Store automatic customisation options elsewhere -(setq custom-file (locate-user-emacs-file "custom.el")) -(when (file-exists-p custom-file) - (load custom-file)) - -;; Pairs -(bind-key "M-{" 'insert-pair) -(bind-key "M-}" 'insert-pair) -(bind-key "M-]" 'insert-pair) -(bind-key "M-[" 'insert-pair) -(bind-key "M-]" 'insert-pair) -(bind-key "M-`" 'insert-pair) -(bind-key "M-\"" 'insert-pair) -(bind-key "M-'" 'insert-pair) -(bind-key "M-<" 'insert-pair) - -;; Guix integration -(unless (package-installed-p 'geiser-mit) - (package-install 'geiser-mit)) -(unless (package-installed-p 'geiser-guile) - (package-install 'geiser-guile)) -(unless (package-installed-p 'ac-geiser) - (package-install 'ac-geiser)) -(unless (package-installed-p 'macrostep-geiser) - (package-install 'macrostep-geiser)) -(unless (package-installed-p 'guix) - (package-install 'guix)) - -;; Utils -(defun marc/close-all-buffers-except-current () - (interactive) - (mapc 'kill-buffer (delete (current-buffer) (buffer-list)))) - -;; which-key -(unless (package-installed-p 'which-key) - (package-install 'which-key)) -(require 'which-key) -(which-key-mode) -(which-key-enable-god-mode-support) - -;; Fossil -(unless (package-installed-p 'vc-fossil) - (package-install 'vc-fossil)) - -;; Dired -(add-hook 'dired-after-readin-hook 'dired-hide-details-mode 'append) -(eval-after-load "dired" '(define-key dired-mode-map (kbd "b") 'dired-up-directory)) -(eval-after-load "dired" '(define-key dired-mode-map (kbd "N") 'dired-create-empty-file)) -(eval-after-load "dired" '(define-key dired-mode-map (kbd "+") 'dired-create-directory)) -(put 'dired-find-alternate-file 'disabled nil) - - -;; Copilot -(unless (package-installed-p 'quelpa) - (package-install 'quelpa)) -(unless (package-installed-p 'quelpa-use-package) - (package-install 'quelpa-use-package)) - -(require 'quelpa) -(require 'quelpa-use-package) - -(use-package copilot - :quelpa (copilot :fetcher github - :repo "zerolfx/copilot.el" - :branch "main" - :files ("dist" "*.el"))) - - -(define-key copilot-completion-map (kbd "<tab>") 'copilot-accept-completion) -(define-key copilot-completion-map (kbd "TAB") 'copilot-accept-completion) - -;; Org -(require 'org) -(transient-mark-mode 1) -(add-hook 'org-mode-hook 'variable-pitch-mode) -;; Use with aspell -(setq ispell-list-command "--list") -(add-hook 'org-mode-hook 'flyspell-mode) -(add-hook 'org-mode-hook 'visual-line-mode) -(setq org-agenda-use-tag-inheritance nil) -(setq org-agenda-use-tag-inheritance '(search timeline agenda)) - -(setq org-directory "~/marcvault") - -(defun marcc/get-journal-file-today () - "Get journal path" - (let ((fpath (concat org-directory "/Journal/" (format-time-string "%Y-%m-%d.org")))) - (expand-file-name fpath))) - -(defun journal-file-today () - "Create and load a journal file based on today's date." - (interactive) - (find-file (marcc/get-journal-file-today))) - -(defun marcc/search-notes () - "Get journal path" - (let ((fpath (concat org-directory "/Journal/" (format-time-string "%Y-%m-%d.org")))) - (expand-file-name fpath))) - -(setq org-capture-templates - `(("t" "Todo" entry (file "~/marcvault/todo.org" ) - "* TODO %?\n %i\n %a") - ("u" "Usage" entry (file "~/marcvault/usage-tips.org") - "* %?\n" - :empty-lines 1) - ("j" "Journal" - entry (file ,(concat org-directory "/Journal/" (format-time-string "%Y-%m-%d.org"))) - "* %?\n[%(format-time-string \"%Y-%m-%d %H:%M\")]\n%i\n%a" - :empty-lines 1))) - -(add-hook 'marc-minor-mode-hook 'smartparens-mode) -(add-hook 'flyspell-mode-hook (lambda () (define-key flyspell-mode-map (kbd "C-,") nil))) -(setq org-adapt-indentation t - org-hide-leading-stars t - org-startup-indented t - org-startup-truncated nil - org-hide-emphasis-markers t - org-agenda-files (directory-files-recursively "~/marcvault/" "\\.org$") - org-log-done 'time - org-todo-keywords '((sequence "TODO" "IDEA" "|" "DONE")) - org-todo-keyword-faces '(("TODO" . org-todo) - ("IDEA" . "blue") - ("DONE" . "green")) - org-odd-levels-only t) - - - -;; Keybindings -(defvar marc-minor-mode-map (make-keymap) "marc-minor-mode keymap.") -(define-key marc-minor-mode-map (kbd "C-c C-k") 'eldoc) -(define-key marc-minor-mode-map (kbd "C-c , .") 'journal-file-today) -(define-key marc-minor-mode-map (kbd "C-c , c") 'org-capture) -(define-key marc-minor-mode-map (kbd "C-c , a") 'org-agenda) -(define-key marc-minor-mode-map (kbd "C-c , s") 'consult-org-agenda) -(define-key marc-minor-mode-map (kbd "C-c , /") 'consult-org-heading) -(define-key marc-minor-mode-map (kbd "C-,") 'er/expand-region) -(define-key marc-minor-mode-map (kbd "C-'") 'avy-goto-char) -(define-minor-mode marc-minor-mode - "A minor mode so that my key settings aren't shadowed by other major/minor modes" - t " marc" marc-minor-mode-map) - -;; Isearch -;; Case insensitive -(setq case-fold-search t) - -;; Ligatures -(unless (package-installed-p 'ligature) - (package-install 'ligature)) - -(use-package ligature - :config - ;; Enable the "www" ligature in every possible major mode - (ligature-set-ligatures 't '("www")) - ;; Enable traditional ligature support in eww-mode, if the - ;; `variable-pitch' face supports it - (ligature-set-ligatures 'eww-mode '("ff" "fi" "ffi")) - ;; Enable all Pragmata Pro in programming modes - (ligature-set-ligatures 'prog-mode '( "<|||" "<==>" "<!--" "~~>" "||=" "||>" - "===" "==>" "=!=" "=>>" "=<<" "=/=" "!==" - ">=>" ">>=" ">>>" ">>-" ">->" "->>" "-->" "---" "-<<" - "<~~" "<~>" "<*>" "<||" "<|>" "<$>" "<==" "<=>" "<=<" "<->" - "<--" "<-<" "<<=" "<<-" "<<<" "<+>" "</>" "#_(" - "+++" "/==" "_|_" "&&" "^=" "~=" - "~>" "*>" "*/" "||" "|}" "|]" "|=" "|>" "|-" "[[" "]]" - "[|" "]#" "::" ":=" ":>" ":<" "$>" "==" "=>" "!=" "|==>" "|>-" - ">=" ">>" ">-" "-~" "-|" "->" "--" "-<" "<~" "<*" "<|" "~>>" "\\=>" - "<$" "<=" - "##" "#(" "#?" "#_" ".." "+>" "++" - "?=" "/=" - "|<<" "\\==" "^>>" "^>>" "|+|" "|->" "|-->" "\\-:" "[FIXME]" - "[TODO]" "[WARN]" "!=" "&&&")) - ;; Enables ligature checks globally in all buffers. You can also do it - ;; per mode with `ligature-mode'. - (global-ligature-mode t)) - -;; RSS - Elfeed -(unless (package-installed-p 'elfeed) - (package-install 'elfeed)) -(unless (package-installed-p 'elfeed-protocol) - (package-install 'elfeed-protocol)) -(unless (package-installed-p 'password-store) - (package-install 'password-store)) - -(elfeed-protocol-enable) -;;(setq elfeed-use-curl t) -(setq elfeed-set-timeout 36000 - elfeed-curl-extra-arguments '("--insecure") ;necessary for https without a trust certificate - elfeed-protocol-fever-fetch-category-as-tag t - elfeed-protocol-feeds '(("fever+https://freshrss@rss.mccd.space" - :api-url "https://rss.mccd.space/api/fever.php" - :password (password-store-get "mccd/freshrss") - ))) - -(defun marc/elfeed-refresh () - (interactive) - (mark-whole-buffer) - (cl-loop for entry in (elfeed-search-selected) - do (elfeed-untag-1 entry 'unread)) - (elfeed-search-update--force) - (elfeed-protocol-fever-reinit "fever+https://freshrss@rss.mccd.spaceD")) - -(let* ((proto-id "fever+https://freshrss@rss.mccd.space") - (last-id (elfeed-protocol-fever-get-update-mark proto-id 'update))) - (elfeed-protocol-fever-set-update-mark proto-id 'update (- last-id 1000))) - -;; Elfeed -(setq elfeed-sort-order 'ascending - elfeed-protocol-enabled-protocols '(fever) - elfeed-protocol-fever-update-unread-only t) - -;; Web browser -(unless (package-installed-p 'w3m) - (package-install 'w3m)) - -(setq w3m-search-default-engine "duckduckgo") - -;; Gemini and Gopher -(unless (package-installed-p 'elpher) - (package-install 'elpher)) - - -(setq message-kill-buffer-on-exit t) -(setq message-sendmail-envelope-from 'header) - -;; pinentry -(setq epa-pinentry-mode 'loopback) -(defun pinentry-emacs (desc prompt ok error) - (let ((str (read-passwd (concat (replace-regexp-in-string "%22" "\"" (replace-regexp-in-string "%0A" "\n" desc)) prompt ": ")))) - str)) - - -;; ERC -(require 'erc-join) -(erc-autojoin-mode 1) -(setq erc-autojoin-channels-alist - '(("irc.libera.chat" "#emacs" "#guix" "#nyxt"))) -(setq erc-nick "mccd") - - -(custom-set-variables - ;; custom-set-variables was added by Custom. - ;; If you edit it by hand, you could mess it up, so be careful. - ;; Your init file should contain only one such instance. - ;; If there is more than one, they won't work right. - '(avy-keys '(97 114 115 116 100 104 110 101 105 111)) - '(blink-cursor-mode nil) - '(compile-command " ") - '(confirm-nonexistent-file-or-buffer nil) - '(consult-fd-args - '((if - (executable-find "fdfind" 'remote) - "fdfind" "fd") - "--full-path --color=never --hidden")) - '(diff-hl-side 'right) - '(display-line-numbers-major-tick 0) - '(display-line-numbers-minor-tick 0) - '(display-line-numbers-width nil) - '(eglot-extend-to-xref t) - '(eldoc-echo-area-use-multiline-p t) - '(erc-autojoin-mode t) - '(erc-button-mode t) - '(erc-fill-mode t) - '(erc-hide-timestamps nil) - '(erc-irccontrols-mode t) - '(erc-list-mode t) - '(erc-match-mode t) - '(erc-menu-mode t) - '(erc-move-to-prompt-mode t) - '(erc-netsplit-mode t) - '(erc-networks-mode t) - '(erc-nick "mccd") - '(erc-noncommands-mode t) - '(erc-pcomplete-mode t) - '(erc-readonly-mode t) - '(erc-ring-mode t) - '(erc-stamp-mode t) - '(erc-timestamp-format-left "%a %H:%M\12") - '(erc-timestamp-format-right " ") - '(erc-track-minor-mode t) - '(erc-track-mode t) - '(flymake-fringe-indicator-position 'left-fringe) - '(flymake-mode-line-format '(" " flymake-mode-line-counters)) - '(fringe-mode '(5 . 5) nil (fringe)) - '(god-mode-lighter-string "God") - '(grep-command "ugrep") - '(markdown-code-block-braces t) - '(markdown-enable-highlighting-syntax t) - '(markdown-enable-wiki-links t) - '(markdown-fontify-code-block-default-mode nil) - '(markdown-fontify-code-blocks-natively t) - '(markdown-hide-urls t) - '(markdown-link-space-sub-char "-") - '(markdown-max-image-size '(300 . 300)) - '(markdown-wiki-link-search-type '(sub-directories parent-directories project)) - '(meow-esc-mode t) - '(meow-global-mode t) - '(mode-line-compact 'long) - '(mode-line-percent-position nil) - '(mode-line-position-line-format '(" ")) - '(mu4e-modeline-mode nil) - '(org-babel-load-languages '((emacs-lisp . t) (lisp . t) (shell . t))) - '(org-fold-core-style 'overlays) - '(package-selected-packages - '(slime eat avy monotropic-theme tempel vundo add-node-modules-path prettier password-store vc-fossil eldoc-box mu4e direnv elpher w3m elfeed-protocol elfeed ligature copilot f editorconfig s quelpa-use-package quelpa org-mime org-journal which-key consult orderless vertico markdown-mode smartparens tree-sitter-langs diff-hl magit corfu rg almost-mono-themes git-ps1-mode meow)) - '(project-switch-commands - '((project-find-file "Find file" nil) - (project-find-regexp "Find regexp" nil) - (project-find-dir "Find directory" nil) - (project-vc-dir "VC-Dir" nil) - (consult-project-buffer "Find buffer" "b") - (eat-project "Eat terminal" 101))) - '(resize-mini-frames nil) - '(resize-mini-windows t) - '(rg-align-line-number-field-length 2) - '(safe-local-variable-values - '((eval progn - (require 'lisp-mode) - (defun emacs27-lisp-fill-paragraph - (&optional justify) - (interactive "P") - (or - (fill-comment-paragraph justify) - (let - ((paragraph-start - (concat paragraph-start "\\|\\s-*\\([(;\"]\\|\\s-:\\|`(\\|#'(\\)")) - (paragraph-separate - (concat paragraph-separate "\\|\\s-*\".*[,\\.]$")) - (fill-column - (if - (and - (integerp emacs-lisp-docstring-fill-column) - (derived-mode-p 'emacs-lisp-mode)) - emacs-lisp-docstring-fill-column fill-column))) - (fill-paragraph justify)) - t)) - (setq-local fill-paragraph-function #'emacs27-lisp-fill-paragraph)) - (eval modify-syntax-entry 43 "'") - (eval modify-syntax-entry 36 "'") - (eval modify-syntax-entry 126 "'") - (geiser-repl-per-project-p . t) - (eval with-eval-after-load 'yasnippet - (let - ((guix-yasnippets - (expand-file-name "etc/snippets/yas" - (locate-dominating-file default-directory ".dir-locals.el")))) - (unless - (member guix-yasnippets yas-snippet-dirs) - (add-to-list 'yas-snippet-dirs guix-yasnippets) - (yas-reload-all)))) - (eval setq-local guix-directory - (locate-dominating-file default-directory ".dir-locals.el")) - (eval add-to-list 'completion-ignored-extensions ".go"))) - '(tab-bar-format '(tab-bar-format-align-right tab-bar-format-global)) - '(tab-bar-show t) - '(vc-handled-backends '(Git Fossil)) - '(vertico-flat-annotate t) - '(vertico-flat-format - '(:multiple - #("{%s}" 0 1 - (face minibuffer-prompt) - 3 4 - (face minibuffer-prompt)) - :single - #("[%s]" 0 1 - (face minibuffer-prompt) - 1 3 - (face success) - 3 4 - (face minibuffer-prompt)) - :prompt - #("(%s)" 0 1 - (face minibuffer-prompt) - 3 4 - (face minibuffer-prompt)) - :separator - #(" | " 0 3 - (face minibuffer-prompt)) - :ellipsis - #("…" 0 1 - (face minibuffer-prompt)) - :no-match "[No match]")) - '(vertico-flat-mode nil) - '(vertico-resize nil) - '(window-resize-pixelwise t)) -(custom-set-faces - ;; custom-set-faces was added by Custom. - ;; If you edit it by hand, you could mess it up, so be careful. - ;; Your init file should contain only one such instance. - ;; If there is more than one, they won't work right. - '(diff-hl-insert ((t (:background "green" :foreground "green")))) - '(dired-directory ((t (:inherit font-lock-function-name-face :weight bold)))) - '(elfeed-search-feed-face ((t (:foreground "dim gray")))) - '(elfeed-search-tag-face ((t (:slant italic)))) - '(elpher-gemini-heading1 ((t (:inherit bold :height 1.2 :family "Iosevka Etoile")))) - '(elpher-gemini-preformatted ((t (:inherit variable-pitch)))) - '(erc-action-face ((t (:inherit erc-default-face :weight bold)))) - '(erc-default-face ((t (:family "Iosevka Etoile")))) - '(erc-input-face ((t (:foreground "green")))) - '(erc-my-nick-face ((t (:foreground "green" :weight bold)))) - '(erc-nick-default-face ((t (:inherit erc-default-face :weight bold)))) - '(erc-nick-msg-face ((t (:foreground "medium blue" :weight bold)))) - '(erc-notice-face ((t (:inherit erc-default-face :foreground "SlateBlue" :weight bold)))) - '(erc-prompt-face ((t (:foreground "Black" :weight bold)))) - '(erc-timestamp-face ((t (:inherit erc-default-face :foreground "gray" :weight bold)))) - '(eww-form-file ((t (:background "#808080" :foreground "white" :box (:line-width (2 . 2) :style released-button))))) - '(eww-form-submit ((t (:background "#808080" :foreground "white" :box (:line-width (2 . 2) :style released-button))))) - '(eww-valid-certificate ((t (:foreground "black" :weight bold)))) - '(font-lock-function-name-face ((t (:weight normal)))) - '(font-lock-preprocessor-face ((t (:slant normal)))) - '(font-lock-string-face ((t (:foreground "#5A5DA5")))) - '(font-lock-type-face ((t (:slant normal :weight normal)))) - '(gnus-header-content ((t (:inherit gnus-header :slant italic)))) - '(gnus-header-from ((t (:inherit gnus-header)))) - '(gnus-header-name ((t (:inherit gnus-header)))) - '(gnus-header-subject ((t (:inherit gnus-header)))) - '(god-mode-lighter ((t (:inherit error)))) - '(highlight ((t (:background "azure2")))) - '(line-number ((t (:foreground "#999999")))) - '(markdown-code-face ((t nil))) - '(markdown-fontify-code-block-natively t) - '(markdown-pre-face ((t (:inherit markdown-code-face)))) - '(meow-position-highlight-number ((t (:inherit default :background "grey80" :foreground "white")))) - '(show-paren-match ((t (:background "gainsboro" :foreground "green" :slant oblique :weight bold)))) - '(tab-bar ((t (:family "Iosevka Aile" :background "#FFF" :foreground "black" :box (:line-width (4 . 4) :color "#FFF") :height 0.90)))) - '(tab-bar-tab ((t (:inherit tab-bar :box nil)))) - '(tuareg-font-lock-operator-face ((t nil))) - '(variable-pitch ((t (:family "Iosevka Etoile")))) - '(variable-pitch-text ((t (:inherit variable-pitch :height 1.0))))) - - - |