Refactor Emacs for authoring workflows

This commit is contained in:
Fabio Scotto di Santolo
2026-08-20 15:35:38 +02:00
parent 6589b25f95
commit 474f0082bb
172 changed files with 881 additions and 3134 deletions

View File

@@ -1,4 +1,6 @@
;;; completion.el -*- lexical-binding: t; -*-
;;; completion.el --- Completion for writing -*- lexical-binding: t; -*-
(require 'use-package)
(use-package ivy
:ensure t
@@ -9,32 +11,6 @@
:ensure t
:defer t)
(use-package company
:ensure t
:custom
(company-tooltip-align-annotations 't)
(company-minimum-prefix-length 1)
(company-idle-delay 0.1)
:hook (prog-mode . company-mode))
(with-eval-after-load 'company
(add-hook 'bash-ts-mode-hook 'company-mode))
;; Static analysis for code base
(use-package flycheck
:ensure t
:hook (prog-mode . flycheck-mode)
:config
(setq flycheck-check-syntax-automatically '(save mode-enabled)))
;; Snippets
(use-package yasnippet
:ensure t
:config
(setq yas/root-directory
(list "~/.emacs.d/snippets") yas-indent-line 'fixed)
(yas-global-mode))
(use-package orderless
:ensure t
:custom
@@ -43,21 +19,18 @@
(completion-pcm-leading-wildcard t)
:config
(setq ivy-re-builders-alist '((t . orderless-ivy-re-builder)))
(add-to-list 'ivy-highlight-functions-alist '(orderless-ivy-re-builder . orderless-ivy-highlight)))
(add-to-list 'ivy-highlight-functions-alist
'(orderless-ivy-re-builder . orderless-ivy-re-builder-highlight)))
(defun just-one-face (fn &rest args)
(let ((orderless-match-faces [completions-common-part]))
(apply fn args)))
(advice-add 'company-capf--candidates :around #'just-one-face)
(use-package yasnippet
:ensure t
:config
(yas-global-mode))
(use-package smartparens
:ensure smartparens ;; install the package
:hook (prog-mode text-mode markdown-mode) ;; add `smartparens-mode` to these hooks
:ensure t
:hook (text-mode . smartparens-mode)
:config
;; load default config
(require 'smartparens-config))
(provide 'completion)
;;; completion.el ends here
(provide 'tools/completion)

View File

@@ -1,31 +0,0 @@
(use-package dap-mode
:ensure t
:after lsp-mode
:hook (lsp-mode . dap-mode)
:init
;; Enabling only some features
(setq dap-auto-configure-features '(sessions locals expressions repl))
:config
(dap-mode 1)
(dap-ui-mode 1)
(dap-ui-controls-mode 1)
;; Auto show breakpoints + REPL
(setq dap-ui-buffer-configurations
'(;; RIGHT SIDE — Debug data (like IntelliJ)
(dap-ui-locals . ((side . right) (slot . 1) (window-width . 0.30)))
(dap-ui-sessions . ((side . right) (slot . 2) (window-width . 0.30)))
(dap-ui-expressions . ((side . right) (slot . 3) (window-width . 0.30)))
;; BOTTOM — Console / REPL
(dap-ui-repl . ((side . bottom) (slot . 1) (window-height . 0.25)))
(dap-ui-console . ((side . bottom) (slot . 2) (window-height . 0.25)))))
;; Loading DAP adapters
;; For Python
(require 'dap-python)
(setq dap-python-debugger 'debugpy
dap-python-executable
(let ((uv-debugpy-python
(expand-file-name
"~/.local/share/uv/tools/debugpy/bin/python")))
(if (file-executable-p uv-debugpy-python)
uv-debugpy-python
"python3"))))

View File

@@ -1,36 +0,0 @@
;;; dired.el -*- lexical-binding: t; -*-
(use-package dired
:ensure nil
:commands (dired dired-jump)
:config
(setq delete-by-moving-to-trash t
dired-dwim-target t
dired-kill-when-opening-new-dired-buffer t
dired-listing-switches
"-l --almost-all --human-readable --group-directories-first --no-group")
(put 'dired-find-alternate-file 'disabled nil))
(use-package dirvish
:ensure t
:init
(dirvish-override-dired-mode)
:custom
(dirvish-use-header-line nil)
(dirvish-use-mode-line nil)
(dirvish-hide-details nil)
(dirvish-attributes nil)
(dirvish-large-directory-threshold 20000)
:config
(with-eval-after-load 'projectile
(setq projectile-switch-project-action #'projectile-dired))
:bind
(:map dirvish-mode-map
("?" . dirvish-dispatch)
("TAB" . dirvish-subtree-toggle)
("s" . dirvish-quicksort)
("h" . dired-up-directory)))
(provide 'tools/dired)
;;; dired.el ends here

View File

@@ -1,47 +0,0 @@
;;; lsp.el -*- lexical-binding: t; -*-
(use-package lsp-mode
:ensure t
:commands (lsp lsp-deferred)
:hook
((c-mode
c-ts-mode
c++-mode
c++-ts-mode
sh-mode
bash-ts-mode) . lsp-deferred)
:config
;; Performance
(setq lsp-enable-symbol-highlighting t
lsp-enable-snippet t
lsp-log-io nil
lsp-modeline-code-actions-enable nil
lsp-modeline-diagnostics-enable nil
lsp-signature-auto-activate nil
lsp-enable-on-type-formatting nil
lsp-completion-provider :capf
lsp-diagnostics-provider :flycheck
lsp-headerline-breadcrumb-enable nil
lsp-enable-indentation nil
;; Disable for huge projects
lsp-enable-file-watchers nil
lsp-idle-delay 0.5))
(use-package lsp-ui
:ensure t
:config
(setq lsp-ui-doc-enable t
lsp-ui-doc-delay 0.3
lsp-ui-sideline-enable t
lsp-ui-sideline-show-code-actions t))
(use-package consult-lsp
:ensure t
:after (consult lsp-mode)
:commands
(consult-lsp-symbols
consult-lsp-diagnostics))
(provide 'lsp)
;;; lsp.el ends here

View File

@@ -1,25 +0,0 @@
;;; project.el - lexical-binding *-*
(use-package projectile
:ensure t
:defer 1
:init
;; Root detection
(setq projectile-project-search-path '("~/Projects" "~/Work" "~/Progetti" "~/.local/src"))
(setq projectile-completion-system 'ivy)
:config
;; Performance
(setq projectile-enable-caching t)
(setq projectile-indexing-method 'hybrid)
(setq projectile-sort-order 'recently-active)
;; Projectile as single source of truth
(setq projectile-switch-project-action #'projectile-dired)
;; Use ripgrep if available
(when (executable-find "rg")
(setq projectile-generic-command "rg --files --hidden --glob '!.git'"))
;; Enable globally
(projectile-mode 1))
(provide 'project)
;;; project.el ends here

View File

@@ -1,13 +0,0 @@
;;; tramp.el -*- lexical-binding: t; -*-
(use-package tramp
:config
(setq tramp-use-ssh-controlmaster-options t)
(setq tramp-chunksize 500)
(setq tramp-verbose 0)
(setq tramp-gvfs-wget "wget --quiet")
(setq tramp-cache-read-persistent-cache t))
(provide 'tools/tramp)
;;; tramp.el ends here

View File

@@ -1,20 +0,0 @@
;;; treesitter.el -*- lexical-binding: t; -*-
(use-package treesit
:ensure nil
:config
(setq treesit-font-lock-level 4))
(use-package treesit-auto
:ensure t
:after treesit
:custom
(treesit-auto-install 'prompt)
(treesit-auto-langs '(bash c cpp dockerfile go gomod json markdown python rust yaml))
:config
(treesit-auto-add-to-auto-mode-alist 'all)
(global-treesit-auto-mode))
(provide 'treesitter)
;;; treesitter.el ends here