logo

Emacs Config

init.el

;;; init.el --- emacs config -*- lexical-binding: t; -*-

;; My Emacs packages are installed as Gentoo Linux packages
;; and added to the load path. All I need to do is require them

;; (require 'exwm)
(require 'denote)
;; (require 'app-launcher)

;; Fonts
(set-face-attribute 'default nil :font "Lotion" :height 300)
(set-face-attribute 'fixed-pitch nil :font "Lotion" :height 300)
(set-face-attribute 'variable-pitch nil :font "Lotion" :height 300)

;; Keys
(keymap-global-set "<escape>" 'keyboard-escape-quit)
(keymap-global-set "C-c b" 'ibuffer)
(keymap-global-set "C-c f" 'find-name-dired)
(keymap-global-set "C-c i" 'irc)
(keymap-global-set "C-c n" 'denote-open-or-create)
(keymap-global-set "C-c r" 'rmail)
(keymap-global-set "C-c y" 'yank-from-kill-ring)

;; Theme
(load-theme 'yabaki t)

;; Completions
(setq completion-auto-help 'always
      completion-auto-select nil
      completion-category-defaults nil
      completion-ignore-case t
      completions-format 'one-column
      completions-header-format nil
      completion-show-help nil
      completions-max-height 5
      completion-styles '(basic initials partial-completion substring))

(setq enable-recursive-minibuffers t
      minibuffer-default-prompt-format " [%s]"
      read-buffer-completion-ignore-case t
      read-file-name-completion-ignore-case t)

;; Ibuffer
(setq ibuffer-default-sorting-mode 'major-mode
      ibuffer-expert t)

;; Denote
(setq denote-directory "/bagheera/documents/notes"
      denote-known-keywords '("misc" "journal")
      denote-prompts '(keywords title))

;; EXWM (Disabled as I'm trying out marswm)
;; (setq exwm-floating-border-color "orange"
;;       exwm-floating-border-width 1
;;       exwm-input-global-keys
;;       `((,(kbd "s-.") . find-file)
;;         (,(kbd "s-,") . dired)
;;         (,(kbd "s-b") . switch-to-buffer)
;;         (,(kbd "s-c") . kill-this-buffer)
;;         (,(kbd "s-f") . find-name-dired)
;;         (,(kbd "s-h") . split-window-horizontally)
;;         (,(kbd "s-k") . kill-buffer)
;;         (,(kbd "s-n") . denote-open-or-create)
;;         (,(kbd "s-r") . rmail)
;;         (,(kbd "s-s") . sh/take-screenshot)
;;         (,(kbd "s-t") . exwm-layout-toggle-fullscreen)
;;         (,(kbd "s-v") . split-window-vertically)
;;         (,(kbd "s-w") . exwm-workspace-move-window)
;;         (,(kbd "s-x") . app-launcher-run-app)
;;         (,(kbd "s-y") . yank-from-kill-ring)
;;         (,(kbd "s-z") . scratch-buffer)
;;         (,(kbd "s-0") . (lambda () (interactive) (exwm-workspace-switch-create 0)))
;;         (,(kbd "s-1") . (lambda () (interactive) (exwm-workspace-switch-create 1)))
;;         (,(kbd "s-2") . (lambda () (interactive) (exwm-workspace-switch-create 2)))
;;         (,(kbd "s-3") . (lambda () (interactive) (exwm-workspace-switch-create 3)))
;;         (,(kbd "s-4") . (lambda () (interactive) (exwm-workspace-switch-create 4)))
;;         (,(kbd "s-5") . (lambda () (interactive) (exwm-workspace-switch-create 5)))
;;         (,(kbd "s-6") . (lambda () (interactive) (exwm-workspace-switch-create 6)))
;;         (,(kbd "s-7") . (lambda () (interactive) (exwm-workspace-switch-create 7)))
;;         (,(kbd "s-8") . (lambda () (interactive) (exwm-workspace-switch-create 8)))
;;         (,(kbd "s-9") . (lambda () (interactive) (exwm-workspace-switch-create 9))))
;;       exwm-input-prefix-keys
;;       '(?\M-x
;;         ?\M-:)
;;       exwm-layout-show-all-buffers nil
;;       exwm-workspace-number 10
;;       exwm-workspace-show-all-buffers nil)

;; (defun sh/exwm-rename-buffer ()
;;   (interactive)
;;   (exwm-workspace-rename-buffer
;;    (concat (if (<= (length exwm-title) 50) exwm-title
;;              (concat (substring exwm-title 0 49) "...")))))

;; (defun sh/take-screenshot ()
;;   (interactive)
;;   (let ((path (concat "/bagheera/screenshots/Screenshot-" (format-time-string "%Y-%m-%d-%H-%M-%S") ".png")))
;;     (start-process-shell-command "scrot" nil (concat "scrot " path))))

;; (add-hook 'exwm-update-title-hook 'sh/exwm-rename-buffer)

;; (exwm-enable)

;; Mail
(setq rmail-default-file (expand-file-name "~/.local/share/emacs/rmail/RMAIL")
      rmail-displayed-headers "^From:\\|^Subject:\\|^Date:\\|^Cc:"
      rmail-display-summary t
      rmail-file-name (expand-file-name "~/.local/share/emacs/rmail/RMAIL")
      rmail-mime-prefer-html nil
      rmail-movemail-program "/usr/bin/movemail"
      rmail-movemail-variant-in-use 'mailutils
      rmail-primary-inbox-list (list "imaps://david.goudou%40gmail.com@imap.gmail.com")
      rmail-remote-password-required t
      rmail-secondary-file-directory (expand-file-name "~/.local/share/emacs/rmail"))

(setq mail-source-movemail-program "/usr/bin/movemail"
      message-send-mail-function 'smtpmail-send-it
      smiley-style 'medium
      smtpmail-default-smtp-server "smtp.gmail.com"
      smtpmail-smtp-service 587
      smtpmail-smtp-user "david.goudou@gmail.com"
      user-full-name "David"
      user-mail-address "david.goudou@gmail.com")

;; Org Mode
(setq org-cycle-separator-lines 0
      org-edit-src-content-indentation 0
      org-ellipsis nil
      org-fontify-quote-and-verse-blocks t
      org-fontify-whole-heading-line t
      org-hide-block-startup nil
      org-hide-emphasis-markers t
      org-pretty-entities t
      org-src-fontify-natively t
      org-src-preserve-indentation nil
      org-src-tab-acts-natively nil
      org-startup-folded 'content
      org-startup-with-inline-images t)

;; IRC
(setopt rcirc-bridge-bot-alist '(("bridge" . "{\\(.+?\\)}[[:space:]]+")))
(setq rcirc-cycle-completion-flag t
      rcirc-fill-column 120
      rcirc-omit-unless-requested '("TOPIC" "NAMES")
      rcirc-prompt "Σ "
      rcirc-reconnect-delay 5
      rcirc-server-alist '(("seahorse.sh" :port 2602 :nick "gksudo" :encryption tls))
      rcirc-short-buffer-name t
      rcirc-time-format "[%d/%m %H:%M] ")

(add-hook 'rcirc-mode-hook 'rcirc-omit-mode)

;; Eshell
(setq eshell-directory-name (expand-file-name "~/.local/share/emacs/eshell")
      eshell-prompt-function (lambda nil (concat (eshell/pwd) " Σ ")))

;; Tree-sitter
(setq treesit-extra-load-path '("~/.local/share/emacs/tree-sitter")
      treesit-font-lock-level 4)

;; Searching
(setq isearch-lax-whitespace t
      isearch-lazy-count t
      isearch-repeat-on-direction-change t
      isearch-wrap-pause 'no
      search-whitespace-regexp ".*?")

;; Misc
(setq copy-region-blink-predicate 'always
      dired-kill-when-opening-new-dired-buffer t
      dired-listing-switches "-Alghot --group-directories-first"
      scroll-margin 4
      show-paren-style 'parenthesis
      suggest-key-bindings nil
      tab-always-indent 'complete
      vc-follow-symlinks t)

;; GPG
(setq auth-source-pass-filename (expand-file-name "~/.local/share/pash")
      epg-pinentry-mode 'loopback)

(auth-source-pass-enable)

early-init.el

;;; early-init.el --- earliest birds -*- lexical-binding: t; -*-

(setq user-emacs-directory (expand-file-name "~/.cache/emacs"))

(when (featurep 'native-compile)
  (setq native-comp-async-report-warnings-errors nil
        native-comp-jit-compilation t))

(blink-cursor-mode -1)
(menu-bar-mode -1)
(scroll-bar-mode -1)
(set-fringe-mode '(12 . 0))
(tool-bar-mode -1)
(tooltip-mode -1)

(setq-default cursor-in-non-selected-windows nil
              cursor-type 'box
              help-window-select t
              inhibit-startup-buffer-menu t
              inhibit-startup-screen t
              mode-line-compact t
              select-enable-clipboard t
              show-help-function nil)

(setq auto-save-default nil
      auto-save-list-file-prefix nil
      create-lockfiles nil
      custom-file (make-temp-file "emacs-custom")
      frame-resize-pixelwise t
      gc-cons-threshold (* 50 1000 1000)
      inhibit-splash-screen t
      inhibit-startup-message t
      initial-major-mode 'fundamental-mode
      initial-scratch-message ""
      load-prefer-newer 'noninteractive
      make-backup-files nil
      package-enable-at-startup nil
      package-native-compile t
      package-user-dir (concat user-emacs-directory "/packages")
      ring-bell-function 'ignore
      use-package-always-ensure t)

(set-frame-parameter nil 'alpha-background 100)
(add-to-list 'default-frame-alist '(alpha-background . 100))

;; Local Variables:
;; no-byte-compile: t
;; End:
;;; early-init.el ends here

And that's that

Generated by Org mode 9.6.6 in GNU Emacs 30.0.50