mirror of
https://github.com/fscotto/infra.git
synced 2026-09-28 03:03:49 +00:00
Refactor Emacs for authoring workflows
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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"))))
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user