Commit d0a4273e91df
Changed files (9)
tools
emacs
scratch
users
vincent
dev
tools/emacs/scratch/config/00-base.el
@@ -1,44 +0,0 @@
-;;; 00-base.el --- -*- lexical-binding: t; -*-
-;;; Commentary:
-;;; Emacs *absolute* base configuration
-;;; Code:
-
-(setq frame-title-form '("%b")) ;; do not add "GNU Emacs at โฆ"
-(setq use-short-answers t) ;; for emacs and above, replace defalias yes-or-no-p
-(setq read-answer-short t) ;; accepts single-character answers, very similar to above
-
-(put 'overwrite-mode 'disabled t) ;; I don't really want to use overwrite-mod, ever
-(setq initial-buffer-choice t) ;; always start with *scratch*
-
-(setq use-dialog-box nil) ;; never use dialog box (no mouse >:D)
-(setq use-file-dialog nil) ;; never use file dialog (gtk)
-(setq echo-keystrokes 0.1) ;; display command keystrokes quickly
-
-(global-unset-key (kbd "C-z"))
-(global-unset-key (kbd "C-x C-z"))
-(global-unset-key (kbd "C-h h"))
-
-;; Custom file management
-(defconst vde/custom-file (locate-user-emacs-file "custom.el")
- "File used to store settings from Customization UI.")
-
-(setq minibuffer-prompt-properties
- '(read-only t cursor-intangible t face minibuffer-prompt))
-
-(add-hook 'minibuffer-setup-hook #'cursor-intangible-mode)
-
-(use-package cus-edit
- :config
- (setq
- custom-file vde/custom-file
- custom-buffer-done-kill nil ; Kill when existing
- custom-buffer-verbose-help nil ; Remove redundant help text
- custom-unlispify-tag-names nil ; Show me the real variable name
- custom-unlispify-menu-entries nil)
- (unless (file-exists-p custom-file)
- (write-region "" nil custom-file))
-
- (load vde/custom-file 'no-error 'no-message))
-
-(provide '00-base)
-;;; 00-base.el ends here
tools/emacs/scratch/config/00-clean.el
@@ -1,64 +0,0 @@
-;;; 00-clean.el --- -*- lexical-binding: t; -*-
-;;; Commentary:
-;;; no-littering and recentf configurations
-;;; Note: this file is autogenerated from an org-mode file.
-;;; Code:
-(use-package recentf
- :config
- (setq recentf-max-saved-items 200
- recentf-auto-cleanup 360
- recentf-show-file-shortcuts-flag nil)
- (recentf-mode 1)
- (add-to-list 'recentf-exclude "^/\\(?:ssh\\|su\\|sudo\\)?:")
- ;; Magic advice to rename entries in recentf when moving files in
- ;; dired.
- (defun rjs/recentf-rename-notify (oldname newname &rest args)
- (if (file-directory-p newname)
- (rjs/recentf-rename-directory oldname newname)
- (rjs/recentf-rename-file oldname newname)))
-
- (defun rjs/recentf-rename-file (oldname newname)
- (setq recentf-list
- (mapcar (lambda (name)
- (if (string-equal name oldname)
- newname
- oldname))
- recentf-list))
- recentf-cleanup)
-
- (defun rjs/recentf-rename-directory (oldname newname)
- ;; oldname, newname and all entries of recentf-list should already
- ;; be absolute and normalised so I think this can just test whether
- ;; oldname is a prefix of the element.
- (setq recentf-list
- (mapcar (lambda (name)
- (if (string-prefix-p oldname name)
- (concat newname (substring name (length oldname)))
- name))
- recentf-list))
- recentf-cleanup)
-
- (advice-add 'dired-rename-file :after #'rjs/recentf-rename-notify))
-
-(use-package no-littering ; Keep .emacs.d clean
- :config
- (require 'recentf)
- (add-to-list 'recentf-exclude no-littering-var-directory)
- (add-to-list 'recentf-exclude no-littering-etc-directory)
-
- ;; Move this in its own thing
- (setq
- create-lockfiles nil
- delete-old-versions t
- kept-new-versions 6
- kept-old-versions 2
- version-control t)
-
- (setq
- backup-directory-alist
- `((".*" . ,(no-littering-expand-var-file-name "backup/")))
- auto-save-file-name-transforms
- `((".*" ,(no-littering-expand-var-file-name "auto-save/") t))))
-
-(provide '00-clean)
-;;; 00-clean.el ends here
tools/emacs/scratch/config/config-appearance.el
@@ -1,250 +0,0 @@
-;;; config-appearance.el --- -*- lexical-binding: t -*-
-;;; Commentary:
-;;; Appearance configuration
-;;; Code:
-
-;; Extract this
-(use-package emacs
- :defer 3
- :bind ("C-c f r" . mu-reset-fonts)
- :commands (mu-reset-fonts)
- :hook (after-init . mu-reset-fonts)
- :config
- ;; For displaying emojies ๐๐ฆ
- (set-fontset-font t 'symbol "Apple Color Emoji")
- (set-fontset-font t 'symbol "Noto Color Emoji" nil 'append)
- (set-fontset-font t 'symbol "Segoe UI Emoji" nil 'append)
- (set-fontset-font t 'symbol "Symbola" nil 'append)
- (defun mu-reset-fonts ()
- "Reset fonts to my preferences."
- (interactive)
- (when (member font-family-mono (font-family-list))
- (set-face-attribute 'default nil
- :family font-family-mono
- :height font-height)
- (set-face-attribute 'fixed-pitch nil
- :family font-family-mono))
- (when (member font-family-sans (font-family-list))
- (set-face-attribute 'variable-pitch nil
- :family font-family-sans
- :weight 'regular))
- (set-fontset-font t 'symbol "Apple Color Emoji")
- (set-fontset-font t 'symbol "Noto Color Emoji" nil 'append)
- (set-fontset-font t 'symbol "Segoe UI Emoji" nil 'append)
- (set-fontset-font t 'symbol "Symbola" nil 'append)))
-
-(use-package emacs
- :config
- (setq-default line-number-display-limit-width 10000
- indicate-buffer-boundaries 'left
- indicate-empty-lines +1)
- (line-number-mode 1)
- (column-number-mode 1)
- ;; let's enable it for all programming major modes
- (add-hook 'prog-mode-hook #'hl-line-mode)
- ;; and for all modes derived from text-mode
- (add-hook 'text-mode-hook #'hl-line-mode))
-
-(use-package hl-todo
- :commands (hl-todo-mode)
- :hook ((prog-mode . hl-todo-mode)))
-
-(use-package frame
- :unless noninteractive
- :commands vde/cursor-type-mode
- :config
- (setq-default cursor-type 'box)
- (setq-default cursor-in-non-selected-windows '(bar . 2))
- (setq-default blink-cursor-blinks 50)
- (setq-default blink-cursor-interval nil) ; 0.75 would be my choice
- (setq-default blink-cursor-delay 0.2)
-
- (blink-cursor-mode -1)
-
- (define-minor-mode vde/cursor-type-mode
- "Toggle between static block and pulsing bar cursor."
- :init-value nil
- :global t
- (if vde/cursor-type-mode
- (progn
- (setq-local blink-cursor-interval 0.75
- cursor-type '(bar . 2)
- cursor-in-non-selected-windows 'hollow)
- (blink-cursor-mode 1))
- (dolist (local '(blink-cursor-interval
- cursor-type
- cursor-in-non-selected-windows))
- (kill-local-variable `,local))
- (blink-cursor-mode -1))))
-
-(use-package emacs
- :config
- (setq-default custom-safe-themes t)
- (setq-default custom--inhibit-theme-enable nil)
-
- (defun vde/before-load-theme (&rest args)
- "Clear existing theme settings instead of layering them.
-Ignores `ARGS'."
- (mapc #'disable-theme custom-enabled-themes))
-
- (advice-add 'load-theme :before #'vde/before-load-theme))
-
-(use-package emacs
- :config
- (setq window-divider-default-right-width 1)
- (setq window-divider-default-bottom-width 1)
- (setq window-divider-default-places 'right-only)
- :hook (after-init . window-divider-mode))
-
-(use-package tab-bar
- :unless noninteractive
- :config
- (setq-default tab-bar-close-button-show nil)
- (setq-default tab-bar-close-last-tab-choice 'tab-bar-mode-disable)
- (setq-default tab-bar-close-tab-select 'recent)
- (setq-default tab-bar-new-tab-choice t)
- (setq-default tab-bar-new-tab-to 'right)
- (setq-default tab-bar-position nil)
- (setq-default tab-bar-show t)
- (setq-default tab-bar-tab-hints nil)
- (setq-default tab-bar-tab-name-function 'vde/tab-bar-tab-name)
-
- (defun vde/tab-bar-tab-name ()
- "Generate tab name from the buffer of the selected window *or* project."
- (cond
- ((project-current) (let ((project-path (vde-project--project-current)))
- (cond ((string-prefix-p "~/src" project-path)
- (directory-file-name (file-relative-name project-path "~/src")))
- ((string-prefix-p "~/desktop" project-path)
- (directory-file-name (file-relative-name project-path "~/desktop")))
- ((string-prefix-p "/etc" project-path)
- (directory-file-name (file-relative-name project-path "/etc")))
- (t
- (file-relative-name project-path)))))
- (t (tab-bar-tab-name-current-with-count))))
-
- (defun vde/complete-tab-bar-tab-dwim ()
- "Do-What-I-Mean function for getting to a `tab-bar-mode' tab.
-If no other tab exists, create one and switch to it. If there is
-one other tab (so two in total) switch to it without further
-questions. Else use completion to select the tab to switch to."
- (interactive)
- (let ((tabs (mapcar (lambda (tab)
- (alist-get 'name tab))
- (tab-bar--tabs-recent))))
- (cond ((eq tabs nil)
- (tab-new))
- ((eq (length tabs) 1)
- (tab-next))
- (t
- (tab-bar-switch-to-tab
- (completing-read "Select tab: " tabs nil t))))))
-
- :bind (("C-x t t" . vde/complete-tab-bar-tab-dwim)
- ("C-x t s" . tab-switcher)))
-
-(use-package moody
- :unless noninteractive
- :config
- (setq-default x-underline-at-descent-line t
- ;; Show buffer position percentage starting from top
- mode-line-percent-position '(-3 "%o"))
-
- (setq-default mode-line-format
- '("%e"
- mode-line-front-space
- mode-line-client
- mode-line-modified
- mode-line-remote
- mode-line-frame-identification
- mode-line-buffer-identification " " mode-line-position
- (vc-mode vc-mode)
- (multiple-cursors-mode mc/mode-line)
- " " mode-line-modes
- mode-line-end-spaces))
-
- (setq-default global-mode-string (remove 'display-time-string global-mode-string)
- mode-line-end-spaces
- (list (propertize " " 'display '(space :align-to (- right 19)))
- 'display-time-string))
- (advice-add #'vc-git-mode-line-string :filter-return #'my-replace-git-status)
- (defun my-replace-git-status (tstr)
- (let* ((tstr (replace-regexp-in-string "Git" "" tstr))
- (first-char (substring tstr 0 1))
- (rest-chars (substring tstr 1)))
- (cond
- ((string= ":" first-char) ;;; Modified
- (replace-regexp-in-string "^:" "~ " tstr))
- ((string= "-" first-char) ;; No change
- (replace-regexp-in-string "^-" "- " tstr))
- (t tstr))))
- (moody-replace-mode-line-buffer-identification)
- (moody-replace-vc-mode))
-
-(use-package minions
- :unless noninteractive
- :config
- (setq-default minions-mode-line-lighter "ฮป="
- minions-mode-line-delimiters '("" . "")
- minions-direct '(flycheck-mode))
- (minions-mode +1))
-
-(use-package time
- :unless noninteractive
- :config
- (setq-default display-time-24hr-format t
- display-time-day-and-date t
- display-time-world-list '(("Europe/Paris" "Paris")
- ("Europe/London" "London")
- ("America/New_York" "Boston")
- ("America/Los_Angeles" "San Francisco")
- ("Asia/Calcutta" "Bangalore")
- ("Australia/Brisbane" "Brisbane"))
- display-time-string-forms
- '((format "%s %s %s, %s:%s"
- dayname
- monthname day
- 24-hours minutes)))
- (display-time))
-
-(use-package lin
- :unless noninteractive
- :config
- (setq lin-face 'lin-blue)
- (setq lin-mode-hooks
- '(bongo-mode-hook
- dired-mode-hook
- elfeed-search-mode-hook
- git-rebase-mode-hook
- ibuffer-mode-hook
- ilist-mode-hook
- ledger-report-mode-hook
- log-view-mode-hook
- magit-log-mode-hook
- mu4e-headers-mode
- notmuch-search-mode-hook
- notmuch-tree-mode-hook
- occur-mode-hook
- org-agenda-mode-hook
- tabulated-list-mode-hook))
- (lin-global-mode))
-
-(use-package tooltip
- :unless noninteractive
- :config
- (setq tooltip-delay 0.5)
- (setq tooltip-short-delay 0.5)
- (setq x-gtk-use-system-tooltips nil)
- (setq tooltip-frame-parameters
- '((name . "tooltip")
- (internal-border-width . 6)
- (border-width . 0)
- (no-special-glyphs . t)))
- :hook (after-init-hook . tooltip-mode))
-
-(use-package alert
- :config
- (setq alert-default-style 'libnotify))
-
-(provide 'config-appearance)
-;;; config-appearance.el ends here
tools/emacs/scratch/config/config-misc.el
@@ -1,17 +0,0 @@
-;;; config-misc.el --- -*- lexical-binding: t; -*-
-;;; Commentary:
-;;; Miscellaneous modes configuration
-;;; Code:
-
-(use-package helpful
- :unless noninteractive
- :bind (("C-h f" . helpful-callable)
- ("C-h F" . helpful-function)
- ("C-h M" . helpful-macro)
- ("C-c h S" . helpful-at-point)
- ("C-h k" . helpful-key)
- ("C-h v" . helpful-variable)
- ("C-h C" . helpful-command)))
-
-(provide 'config-misc)
-;;; config-misc.el ends here
tools/emacs/scratch/config/config-windows.el
@@ -1,82 +0,0 @@
-;;; config-windows.el --- -*- lexical-binding: t; -*-
-;; Commentary:
-;;; Windows configuration
-;; Code:
-
-;; By default, emacs distinguishes between automatic and manual window switching.
-;; It can make it weird, soโฆ let's make sure it has the same behavior for both
-;; See: https://www.masteringemacs.org/article/demystifying-emacs-window-manager
-(setq switch-to-buffer-obey-display-actions t)
-(setq switch-to-buffer-in-dedicated-window 'pop)
-
-(use-package winner
- :unless noninteractive
- :defer 5
- :config
- (winner-mode 1))
-
-(use-package windmove
- :unless noninteractive
- :commands (windmove-left windmove-right windmove-down windmove-up)
- :bind (("C-M-<up>" . windmove-up)
- ("C-M-<right>" . windmove-right)
- ("C-M-<down>" . windmove-down)
- ("C-M-<left>" . windmove-left)))
-
-(use-package emacs
- :unless noninteractive
- :bind (("M-o" . other-window))
- :config
- ;; left, top, right, bottom
- (setq window-sides-slots '(1 1 1 2))
- ;; Configure `display-buffer' behaviour for some special buffers
- ;; To get a list of action, `C-u C-h a ^display-buffer-[^-]'.
- (setq-default display-buffer-alist
- '(
- ;; helpful buffers are displayed on top
- ("\\*\\(helpful\\).*"
- (display-buffer-in-side-window)
- (window-height . 0.25)
- (side . top)
- (slot . 0)
- (display-buffer-reuse-window display-buffer-pop-up-window)
- (inhibit-same-window . t))
- ;; compilation buffer rules
- ;; compilation can be "per project", like `*home-compilation*'.
- ("\\*.*Compilation.*\\*"
- display-buffer-reuse-window)
- ;; `*info*' should be display on a side window, with a 80 width
- ;; and no-delete-other-windows (`C-x 1' will not hide this one)
- ("\\*info\\*"
- (display-buffer-in-side-window)
- (side . right)
- (slot . 0)
- (window-width . 80)
- (window-parameters
- (no-delete-other-windows . t)))
- ;; vterm rules : reuse a window with vtrm or vterm-copy-mode
- ("\\*vterm.*\\*"display-buffer-reuse-mode-window
- ;; change to `t' to not reuse same window
- (inhibit-same-window . nil)
- (mode vterm-mode vterm-copy-mode))
- ;; eshell/shells ruls
- ("\\*.*e?shell.*"
- display-buffer-in-direction
- (direction . bottom)
- (window . root)
- (window-height . 0.3))
- ;; Collecting "relatively random" buffers in the same window
- (,(rx (| "*xref*"
- "*grep*"
- "*Occur*"))
- display-buffer-reuse-window
- (inhibit-same-window . nil))
- ;; FIXME: this is an example, tailor this for go dev (and rust, โฆ)
- ("^test[-_]"
- display-buffer-in-direction
- (direction . right))
- ))
- )
-
-(provide 'config-windows)
-;;; config-windows ends here
tools/emacs/scratch/eshell/lastdir
@@ -1,2 +0,0 @@
-~/src/home/tools/emacs
-/ssh:aomi.home:/home/vincent/src
tools/emacs/scratch/init.el
@@ -1,173 +0,0 @@
-(setq user-emacs-directory "~/.config/emacs/scratch")
-
-;; Do not initialize installed packages
-(setq package-enable-at-startup nil)
-
-;; Do not resize the frame at this early stage
-(setq frame-inhibit-implied-resize t)
-
-;; Disable GUI elements
-(menu-bar-mode -1)
-(tool-bar-mode -1)
-(scroll-bar-mode -1)
-(horizontal-scroll-bar-mode -1)
-
-(setq gc-cons-threshold 402653184
- gc-cons-percentage 0.6)
-
-(add-to-list 'load-path (expand-file-name (concat user-emacs-directory "/../lisp/")))
-(add-to-list 'load-path (expand-file-name (concat user-emacs-directory "/lisp/")))
-
-(require 'init-func)
-(require 'modus-themes)
-(defun vde/modus-vivendi ()
- "Enable modus-vivendi with some customizations."
- (interactive)
- (setq modus-themes-mode-line '(moody))
- (modus-themes-load-vivendi))
-(defun vde/modus-operandi ()
- "Enable modus-operandi with some customizations."
- (interactive)
- (setq modus-themes-mode-line '(moody))
- (modus-themes-load-operandi))
-(vde/modus-operandi)
-
-(defconst font-height 130
- "Default font-height to use.")
-(defconst font-family-mono "Ubuntu Mono"
- "Default monospace font-family to use.")
-(defconst font-family-sans "Ubuntu Sans"
- "Default sans font-family to use.")
-;; Middle/Near East: ืฉืืื, ุงูุณููุงู
ุนูููู
-(when (member "Noto Sans Arabic" (font-family-list))
- (set-fontset-font t 'arabic "Noto Sans Arabic"))
-(when (member "Noto Sans Hebrew" (font-family-list))
- (set-fontset-font t 'arabic "Noto Sans Hebrew"))
-;; Africa: แ แแ
-(when (member "Noto Sans Ethiopic" (font-family-list))
- (set-fontset-font t 'ethiopic "Noto Sans Ethiopic"))
-
-;; If font-family-mono or font-family-sans are not available, use the default Emacs face
-(when (member font-family-mono (font-family-list))
- (set-face-attribute 'default nil
- :family font-family-mono
- :height font-height)
- (set-face-attribute 'fixed-pitch nil
- :family font-family-mono))
-(when (member font-family-sans (font-family-list))
- (set-face-attribute 'variable-pitch nil
- :family font-family-sans
- :weight 'regular))
-
-(set-fontset-font t 'symbol "Apple Color Emoji")
-(set-fontset-font t 'symbol "Noto Color Emoji" nil 'append)
-(set-fontset-font t 'symbol "Segoe UI Emoji" nil 'append)
-(set-fontset-font t 'symbol "Symbola" nil 'append)
-
-;; Ignore X resources; its settings would be redundant with the other settings
-;; in this file and can conflict with later config (particularly where the
-;; cursor color is concerned).
-(advice-add #'x-apply-session-resources :override #'ignore)
-
-;; - Reseting garbage collection and file-name-handler values.
-(add-hook 'after-init-hook
- `(lambda ()
- (setq gc-cons-threshold 67108864 ; 64mb
- gc-cons-percentage 0.1
- file-name-handler-alist file-name-handler-alist-original)
- (garbage-collect)) t)
-
-(defconst emacs-start-time (current-time))
-
-(let ((minver 26))
- (unless (>= emacs-major-version minver)
- (error "Your Emacs is too old -- this configuration requires v%s or higher" minver)))
-
-;; load early-init.el before Emacs 27.0
-;; (unless (>= emacs-major-version 27)
-;; (message "Early init: Emacs Version < 27.0")
-;; (load (expand-file-name "early-init.el" user-emacs-directory)))
-
-(setq inhibit-default-init t) ; Disable the site default settings
-
-(setq inhibit-startup-message t
- inhibit-startup-screen t
- inhibit-startup-buffer-menu t)
-
-;; Needs to be in early-init
-(setq native-comp-async-report-warnings-errors 'silent) ; emacs28 with native compilation
-
-(setq confirm-kill-emacs #'y-or-n-p)
-(setq initial-major-mode 'fundamental-mode
- initial-scratch-message nil)
-
-(prefer-coding-system 'utf-8)
-(set-default-coding-systems 'utf-8)
-(set-language-environment 'utf-8)
-(set-selection-coding-system 'utf-8)
-(set-terminal-coding-system 'utf-8)
-
-(require 'package)
-
-;; (setq package-archives nil) ;; To rely only on packages from nix
-(setq package-archives
- '(("melpa" . "http://melpa.org/packages/")
- ("org" . "https://orgmode.org/elpa/")
- ("gnu" . "https://elpa.gnu.org/packages/")))
-
-(setq package-archive-priorities
- '(("melpa" . 3)
- ("org" . 2)
- ("gnu" . 1)))
-
-(require 'tls)
-
-;; From https://github.com/hlissner/doom-emacs/blob/5dacbb7cb1c6ac246a9ccd15e6c4290def67757c/core/core-packages.el#L102
-(setq gnutls-verify-error (not (getenv "INSECURE")) ; you shouldn't use this
- tls-checktrust gnutls-verify-error
- tls-program (list "gnutls-cli --x509cafile %t -p %p %h"
- ;; compatibility fallbacks
- "gnutls-cli -p %p %h"
- "openssl s_client -connect %h:%p -no_ssl2 -no_ssl3 -ign_eof"))
-
-;; Initialise the packages, avoiding a re-initialisation.
-(unless (bound-and-true-p package--initialized)
- (setq package-enable-at-startup nil)
- (package-initialize))
-
-(setq load-prefer-newer t) ; Always load newer compiled files
-(setq ad-redefinition-action 'accept) ; Silence advice redefinition warnings
-
-;; Configure `use-package' prior to loading it.
-(eval-and-compile
- (setq use-package-always-ensure nil)
- (setq use-package-always-defer nil)
- (setq use-package-always-demand nil)
- (setq use-package-expand-minimally nil)
- (setq use-package-enable-imenu-support t))
-
-(unless (package-installed-p 'use-package)
- (package-refresh-contents)
- (package-install 'use-package))
-
-(eval-when-compile
- (require 'use-package))
-
-(setenv "SSH_AUTH_SOCK" "/run/user/1000/gnupg/S.gpg-agent.ssh")
-
-(vde/el-load-dir (concat user-emacs-directory "/config/"))
-(if (file-exists-p (downcase (concat user-emacs-directory "/hosts/" (vde/short-hostname) ".el")))
- (load-file (downcase (concat user-emacs-directory "/hosts/" (vde/short-hostname) ".el"))))
-
-(let ((elapsed (float-time (time-subtract (current-time)
- emacs-start-time))))
- (message "Loading %s...done (%.3fs)" load-file-name elapsed))
-
-(add-hook 'after-init-hook
- `(lambda ()
- (let ((elapsed
- (float-time
- (time-subtract (current-time) emacs-start-time))))
- (message "Loading %s...done (%.3fs) [after-init]"
- ,load-file-name elapsed))) t)
-
tools/emacs/scratch/projects
@@ -1,3 +0,0 @@
-;;; -*- lisp-data -*-
-(("~/src/tektoncd/pipeline/")
- ("~/src/home/"))
users/vincent/dev/emacs.nix
@@ -124,6 +124,7 @@ let
smartparens
symbol-overlay
trashed
+ treesit-auto
try
undo-tree
use-package