logo

Emacs Config

emacs.png

Figure 1: Emacs Screenshot

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 'tempel)
(require 'denote)
(require 'denote-menu)
(require 'app-launcher)

(set-face-attribute 'default nil :font "Inconsolata LGC" :height 235)
(set-face-attribute 'fixed-pitch nil :font "Inconsolata LGC" :height 235)
(set-face-attribute 'variable-pitch nil :font "Inconsolata LGC" :height 235)

(keymap-global-set "<escape>" 'keyboard-escape-quit)
(keymap-global-set "C-c n n" 'denote)
(keymap-global-set "C-c n l" 'denote-menu-list-notes)
(keymap-global-set "C-c t c" 'tempel-complete)
(keymap-global-set "C-c t e" 'tempel-expand)
(keymap-global-set "C-c t i" 'tempel-insert)
(keymap-global-set "C-c y" 'yank-from-kill-ring)

(load-theme 'yabaki t)

(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 10
      completion-styles '(basic initials partial-completion substring))

(setq enable-recursive-minibuffers t
      minibuffer-eldef-shorten-default t
      read-buffer-completion-ignore-case t
      read-file-name-completion-ignore-case t)

(setq denote-directory (expand-file-name "/bagheera/documents/notes")
      denote-known-keywords '("misc" "journal")
      denote-prompts '(keywords title))

(setq exwm-floating-border-color "plum"
      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") . exwm-floating-toggle-floating)
        (,(kbd "s-h") . split-window-horizontally)
        (,(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-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 exwm-title))

(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)

(setq gnus-agent nil
      gnus-article-over-scroll t
      gnus-article-skip-boring t
      gnus-article-sort-functions '(gnus-article-sort-by-date)
      gnus-auto-select-first nil
      gnus-directory (concat user-emacs-directory "/gnus/news")
      gnus-expert-user t
      gnus-gcc-mark-as-read t
      gnus-home-directory (concat user-emacs-directory "/gnus")
      gnus-inhibit-startup-message t
      gnus-message-archive-group "[Gmail]/Sent Mail"
      gnus-message-archive-method '(nnimap "imap.gmail.com")
      gnus-mime-display-multipart-related-as-mixed t
      gnus-novice-user nil
      gnus-permanently-visible-groups ".*"
      gnus-select-method '(nnimap "imap.gmail.com")
      gnus-summary-display-arrow nil
      gnus-thread-sort-functions '(gnus-thread-sort-by-most-recent-date)
      gnus-use-cache nil
      gnus-use-scoring nil)

(add-hook 'gnus-group-mode-hook 'gnus-topic-mode)

(setq message-send-mail-function 'smtpmail-send-it
      nnmail-expiry-target "nnimap+gmail:[Gmail]/Bin"
      nnmail-expiry-wait 'immediate
      smiley-style 'medium
      smtpmail-default-smtp-server "smtp.gmail.com"
      smtpmail-smtp-service 587
      user-full-name "David"
      user-mail-address "david.goudou@gmail.com")

(setq org-cycle-separator-lines 0
      org-edit-src-content-indentation 0
      org-ellipsis " [+]"
      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)

(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 '(("irc.eu.libera.chat" :port 6697 :nick "gksudo" :encryption tls :channels ("#gksudo" "#gentoo")))
      rcirc-short-buffer-name t
      rcirc-time-format "[%H:%M:%S] ")

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

(setq dired-listing-switches "-laGh1v --time-style=+%F --group-directories-first"
      eshell-prompt-function (lambda nil (concat (eshell/pwd) " ᛋ "))
      isearch-lax-whitespace t
      scroll-margin 4
      search-whitespace-regexp ".*?"
      show-paren-style 'expression
      suggest-key-bindings nil
      tab-always-indent 'complete
      vc-follow-symlinks t)

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

(setq tempel-path "~/.config/emacs/templates")

(setq auth-source-pass-filename "~/.local/share/pash"
      auth-sources '("~/.local/share/emacs/authinfo.gpg")
      epa-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-deferred-compilation t))

(blink-cursor-mode -1)
(menu-bar-mode -1)
(scroll-bar-mode -1)
(set-fringe-mode 4)
(tool-bar-mode -1)
(tooltip-mode -1)

(setq-default cursor-in-non-selected-windows nil
              cursor-type 'hbar
              help-window-select t
              inhibit-startup-buffer-menu t
              inhibit-startup-screen t
              mode-line-format (list " " "%b")
              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 90)
(add-to-list 'default-frame-alist '(alpha-background . 90))

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

And that's that

Generated by Org mode 9.6.1 in GNU Emacs 30.0.50