diff options
Diffstat (limited to 'init')
37 files changed, 299 insertions, 0 deletions
diff --git a/init/company/init-company.el b/init/company/init-company.el new file mode 100644 index 0000000..633efe7 --- /dev/null +++ b/init/company/init-company.el @@ -0,0 +1,8 @@ +(require 'company) + +(setq company-idle-delay 0 + company-clang-executable "/usr/lib/llvm/11/bin/clang" + company-clang-insert-arguments nil + company-minimum-prefix-length 1) + +(provide 'init-company) diff --git a/init/conf-mode/init-conf-mode-hooks.el b/init/conf-mode/init-conf-mode-hooks.el new file mode 100644 index 0000000..c662e45 --- /dev/null +++ b/init/conf-mode/init-conf-mode-hooks.el @@ -0,0 +1 @@ +(setq conf-mode-hook (copy-tree text-mode-hook)) diff --git a/init/conf-mode/init-conf-mode.el b/init/conf-mode/init-conf-mode.el new file mode 100644 index 0000000..4a77537 --- /dev/null +++ b/init/conf-mode/init-conf-mode.el @@ -0,0 +1,5 @@ +(require 'init-text-mode) + +(load "init-conf-mode-hooks") + +(provide 'init-conf-mode) diff --git a/init/dir-locals/eglot-dir-locals.el b/init/dir-locals/eglot-dir-locals.el new file mode 100644 index 0000000..9fff9e8 --- /dev/null +++ b/init/dir-locals/eglot-dir-locals.el @@ -0,0 +1,6 @@ +((rust-mode . ((eval . (eglot-ensure)) + (eglot-workspace-configuration . ((:rust-analyzer . (:checkOnSave + (:command "clippy"))))) + (rust-format-on-save . t) + (rust-format-goto-problem . t) + (rust-rustfmt-switches . ("--edition" "2021"))))) diff --git a/init/dired/init-dired.el b/init/dired/init-dired.el new file mode 100644 index 0000000..1d47ccf --- /dev/null +++ b/init/dired/init-dired.el @@ -0,0 +1,4 @@ +(setq dired-listing-switches "-alh" + dired-kill-when-opening-new-dired-buffer t) + +(provide 'init-dired) diff --git a/init/display-buffer/init-display-buffer-best-side.el b/init/display-buffer/init-display-buffer-best-side.el new file mode 100644 index 0000000..e0f588a --- /dev/null +++ b/init/display-buffer/init-display-buffer-best-side.el @@ -0,0 +1,7 @@ +(defun init-display-buffer-frame-wide-p () + (> (frame-pixel-width) (/ (x-display-pixel-width) 2))) + +(defun init-display-buffer-best-side (buffer alist) + (let* ((side (funcall (alist-get 'which-side alist))) + (alist (append (cdr alist) (list (cons 'side side))))) + (display-buffer-in-side-window buffer alist))) diff --git a/init/display-buffer/init-display-buffer.el b/init/display-buffer/init-display-buffer.el new file mode 100644 index 0000000..f1c4290 --- /dev/null +++ b/init/display-buffer/init-display-buffer.el @@ -0,0 +1,5 @@ +(setq display-buffer-base-action '(display-buffer-same-window display-buffer-reuse-window)) + +(load "init-display-buffer-best-side") + +(provide 'init-display-buffer) diff --git a/init/eglot/init-eglot-servers.el b/init/eglot/init-eglot-servers.el new file mode 100644 index 0000000..2dce402 --- /dev/null +++ b/init/eglot/init-eglot-servers.el @@ -0,0 +1,9 @@ +(defvar init-eglot-server-clangd '((c-mode c++-mode) . + ("clangd" + "--header-insersion=never"))) + +(defvar init-eglot-server-rust-analyzer '((rust-mode) . + ("rust-analyzer"))) + +(add-to-list 'eglot-server-programs init-eglot-server-clangd) +(add-to-list 'eglot-server-programs init-eglot-server-rust-analyzer) diff --git a/init/eglot/init-eglot.el b/init/eglot/init-eglot.el new file mode 100644 index 0000000..dd85cca --- /dev/null +++ b/init/eglot/init-eglot.el @@ -0,0 +1,7 @@ +(require 'eglot) + +(setq eglot-autoshutdown t) + +(load "init-eglot-servers") + +(provide 'init-eglot) diff --git a/init/eldoc/init-eldoc.el b/init/eldoc/init-eldoc.el new file mode 100644 index 0000000..c4568e0 --- /dev/null +++ b/init/eldoc/init-eldoc.el @@ -0,0 +1,4 @@ +(setq eldoc-idle-delay 0 + eldoc-echo-area-use-multiline-p 5) + +(provide 'init-eldoc) diff --git a/init/electric/init-electric.el b/init/electric/init-electric.el new file mode 100644 index 0000000..7d668b6 --- /dev/null +++ b/init/electric/init-electric.el @@ -0,0 +1,7 @@ +(require 'electric) +(require 'elec-pair) + +(add-to-list 'electric-pair-pairs '("?(" . "?)")) +(add-to-list 'electric-pair-pairs '("?{" . "?}")) + +(provide 'init-electric) diff --git a/init/flycheck/init-flycheck-cargo-has-command-p-fix.el b/init/flycheck/init-flycheck-cargo-has-command-p-fix.el new file mode 100644 index 0000000..48d53d6 --- /dev/null +++ b/init/flycheck/init-flycheck-cargo-has-command-p-fix.el @@ -0,0 +1,7 @@ +(defun init-flycheck-rust-cargo-has-command-p (command) + (let* ((commands (process-lines "cargo" "--list")) + (trimmed (-map (lambda (row) (-slice row 4 (string-search " " 4))) commands))) + (seq-contains-p (-rest trimmed) command))) + +(advice-add 'flycheck-rust-cargo-has-command-p + :override 'init-flycheck-rust-cargo-has-command-p) diff --git a/init/flycheck/init-flycheck.el b/init/flycheck/init-flycheck.el new file mode 100644 index 0000000..ee59ef8 --- /dev/null +++ b/init/flycheck/init-flycheck.el @@ -0,0 +1,15 @@ +(require 'flycheck) + +(load "init-flycheck-cargo-has-command-p-fix") + +(add-hook 'flycheck-error-list-mode-hook (lambda () (visual-line-mode 1))) + +(add-to-list 'display-buffer-alist '("\\*Flycheck errors.*" + (init-display-buffer-best-side) + (which-side . (lambda () + (if (init-display-buffer-frame-wide-p) + 'right + 'bottom))))) + + +(provide 'init-flycheck) diff --git a/init/flymake/init-flymake-hooks.el b/init/flymake/init-flymake-hooks.el new file mode 100644 index 0000000..a19bc3c --- /dev/null +++ b/init/flymake/init-flymake-hooks.el @@ -0,0 +1,2 @@ +(add-hook 'flymake-diagnostics-buffer-mode-hook (lambda () + (visual-line-mode 1))) diff --git a/init/flymake/init-flymake.el b/init/flymake/init-flymake.el new file mode 100644 index 0000000..0fbd45a --- /dev/null +++ b/init/flymake/init-flymake.el @@ -0,0 +1,12 @@ +(require 'flymake) + +(load "init-flymake-hooks") + +(add-to-list 'display-buffer-alist '("\\*Flymake diagnostics.*" + (init-display-buffer-best-side) + (which-side . (lambda () + (if (init-display-buffer-frame-wide-p) + 'right + 'bottom))))) + +(provide 'init-flymake) diff --git a/init/garbage-collection/init-garbage-collection.el b/init/garbage-collection/init-garbage-collection.el new file mode 100644 index 0000000..96b2252 --- /dev/null +++ b/init/garbage-collection/init-garbage-collection.el @@ -0,0 +1,3 @@ +(setq gc-cons-threshold (* (expt 1024 2) 25)) + +(provide 'init-garbage-collection) diff --git a/init/ibuffer/init-ibuffer-filter-groups.el b/init/ibuffer/init-ibuffer-filter-groups.el new file mode 100644 index 0000000..fbdd8ff --- /dev/null +++ b/init/ibuffer/init-ibuffer-filter-groups.el @@ -0,0 +1,10 @@ +(setq ibuffer-saved-filter-groups + '(("default" + ("Misc" (and (name . "^\\*.*$") + (not (mode . Man-mode)))) + ("Dired" (mode . dired-mode)) + ("Man" (mode . Man-mode))))) + +(add-hook 'ibuffer-mode-hook (lambda () (ibuffer-switch-to-saved-filter-groups "default"))) + +(provide 'init-ibuffer-filter-groups) diff --git a/init/ibuffer/init-ibuffer-human-readable-size.el b/init/ibuffer/init-ibuffer-human-readable-size.el new file mode 100644 index 0000000..6d62521 --- /dev/null +++ b/init/ibuffer/init-ibuffer-human-readable-size.el @@ -0,0 +1,16 @@ +(define-ibuffer-column size-human-readable + (:name "Size" :inline t) + (let ((size (buffer-size))) + (cond + ((> size (expt 1000 4)) + (error "buffer is over 1TB large!")) + ((> size (expt 1000 3)) + (format "%sG" (/ size (expt 1000 3)))) + ((> size (expt 1000 2)) + (format "%sM" (/ size (expt 1000 2)))) + ((> size 1000) + (format "%sK" (/ size 1000))) + (t + (format "%sB" size))))) + +(provide 'init-ibuffer-human-readable-size) diff --git a/init/ibuffer/init-ibuffer-never-show.el b/init/ibuffer/init-ibuffer-never-show.el new file mode 100644 index 0000000..0cf8db2 --- /dev/null +++ b/init/ibuffer/init-ibuffer-never-show.el @@ -0,0 +1,13 @@ +(defvar init-ibuffer-never-show '("^\\*Messages\\*$" + "^\\*Help\\*$" + "^\\*Completions\\*$" + "^\\*Backtrace\\*$" + "^\\*Async-native-compile-log\\*$" + "^\\*Native-compile-Log\\*$" + "^\\*Warnings\\*$")) + +(mapc (lambda (p) + (add-to-list 'ibuffer-never-show-predicates p)) + init-ibuffer-never-show) + +(provide 'init-ibuffer-never-show) diff --git a/init/ibuffer/init-ibuffer.el b/init/ibuffer/init-ibuffer.el new file mode 100644 index 0000000..209328c --- /dev/null +++ b/init/ibuffer/init-ibuffer.el @@ -0,0 +1,22 @@ +(require 'ibuffer) +(require 'ibuf-ext) +(require 'init-ibuffer-human-readable-size) +(require 'init-ibuffer-never-show) +(require 'init-ibuffer-filter-groups) + +(setq ibuffer-display-summary nil + ibuffer-expert t) + +(setq ibuffer-formats + '((mark modified read-only locked " " + (name 32 32 :left :elide) + " " + (size-human-readable 5 5 :right) + " " + (mode 16 16 :left :elide) + " " filename-and-process) + (mark " " + (name 16 -1) + " " filename))) + +(provide 'init-ibuffer) diff --git a/init/keys/init-keys.el b/init/keys/init-keys.el new file mode 100644 index 0000000..4bbaa5e --- /dev/null +++ b/init/keys/init-keys.el @@ -0,0 +1,12 @@ +(global-unset-key (kbd "<left>")) +(global-unset-key (kbd "<right>")) +(global-unset-key (kbd "<up>")) +(global-unset-key (kbd "<down>")) +(global-unset-key (kbd "<C-left>")) +(global-unset-key (kbd "<C-right>")) +(global-unset-key (kbd "<C-up>")) +(global-unset-key (kbd "<C-down>")) +(global-set-key (kbd "C-x k") 'kill-buffer) +(global-set-key (kbd "C-x C-b") 'ibuffer) + +(provide 'init-keys) diff --git a/init/lsp-mode/init-lsp-mode-disable-install-server.el b/init/lsp-mode/init-lsp-mode-disable-install-server.el new file mode 100644 index 0000000..ed5e73a --- /dev/null +++ b/init/lsp-mode/init-lsp-mode-disable-install-server.el @@ -0,0 +1,40 @@ +(setq lsp-server-install-dir "/somewhere/that/doesnt/exist") + +(defun init-lsp-mode-disable-install-server-error () + (error "lsp-mode server install features have been disabled")) + +(advice-add 'lsp-install-server + :around + 'init-lsp-mode-disable-install-server-error) + +(advice-add 'lsp-update-server + :around + 'init-lsp-mode-disable-install-server-error) + +(advice-add 'lsp-update-servers + :around + 'init-lsp-mode-disable-install-server-error) + +(advice-add 'lsp-download-install + :around + 'init-lsp-mode-disable-install-server-error) + +(advice-add 'lsp-download-path + :around + 'init-lsp-mode-disable-install-server-error) + +(advice-add 'lsp-async-start-process + :around + 'init-lsp-mode-disable-install-server-error) + +(advice-add 'lsp--download-status + :around + 'init-lsp-mode-disable-install-server-error) + +(advice-add 'lsp--install-server-internal + :around + 'init-lsp-mode-disable-install-server-error) + +(advice-add 'lsp--npm-dependency-install + :around + 'init-lsp-mode-disable-install-server-error) diff --git a/init/lsp-mode/init-lsp-mode.el b/init/lsp-mode/init-lsp-mode.el new file mode 100644 index 0000000..f77e503 --- /dev/null +++ b/init/lsp-mode/init-lsp-mode.el @@ -0,0 +1,19 @@ +(require 'lsp-mode) +(require 'flycheck) + +(setq lsp-enable-dap-auto-configure nil + lsp-enable-folding nil + lsp-enable-indentation t + lsp-enable-on-type-formatting nil + lsp-completion-enable nil + lsp-enable-snippet nil + lsp-modeline-code-actions-enable nil + lsp-lens-enable nil + lsp-signature-auto-activate nil + lsp-eldoc-render-all t + lsp-rls-server-command nil + lsp-enable-suggest-server-download nil) + +(load "init-lsp-mode-disable-install-server") + +(provide 'init-lsp-mode) diff --git a/init/man/init-man.el b/init/man/init-man.el new file mode 100644 index 0000000..521f491 --- /dev/null +++ b/init/man/init-man.el @@ -0,0 +1,3 @@ +(setq Man-notify-method 'pushy) + +(provide 'init-man) diff --git a/init/native-comp/init-native-comp.el b/init/native-comp/init-native-comp.el new file mode 100644 index 0000000..9ae0489 --- /dev/null +++ b/init/native-comp/init-native-comp.el @@ -0,0 +1,3 @@ +(setq native-comp-async-jobs-number (string-to-number (shell-command-to-string "nproc"))) + +(provide 'init-native-comp) diff --git a/init/package/init-package.el b/init/package/init-package.el new file mode 100644 index 0000000..3e2129d --- /dev/null +++ b/init/package/init-package.el @@ -0,0 +1,4 @@ +(setq package-archives nil + package-check-signature 'all) + +(provide 'init-package) diff --git a/init/prog-mode/init-prog-mode-hooks.el b/init/prog-mode/init-prog-mode-hooks.el new file mode 100644 index 0000000..a3c63e0 --- /dev/null +++ b/init/prog-mode/init-prog-mode-hooks.el @@ -0,0 +1 @@ +(setq prog-mode-hook (copy-tree text-mode-hook)) diff --git a/init/prog-mode/init-prog-mode.el b/init/prog-mode/init-prog-mode.el new file mode 100644 index 0000000..eec9811 --- /dev/null +++ b/init/prog-mode/init-prog-mode.el @@ -0,0 +1,5 @@ +(require 'init-text-mode) + +(load "init-prog-mode-hooks") + +(provide 'init-prog-mode) diff --git a/init/project/init-project-find-rust-projects.el b/init/project/init-project-find-rust-projects.el new file mode 100644 index 0000000..65359bd --- /dev/null +++ b/init/project/init-project-find-rust-projects.el @@ -0,0 +1,4 @@ +(add-to-list 'project-find-functions (lambda (directory) + (let ((rust-project (locate-dominating-file directory "Cargo.toml"))) + (when rust-project + (cons 'transient rust-project))))) diff --git a/init/project/init-project.el b/init/project/init-project.el new file mode 100644 index 0000000..2e83d81 --- /dev/null +++ b/init/project/init-project.el @@ -0,0 +1,3 @@ +(load "init-project-find-rust-projects") + +(provide 'init-project) diff --git a/init/recentf/init-recentf.el b/init/recentf/init-recentf.el new file mode 100644 index 0000000..293db0d --- /dev/null +++ b/init/recentf/init-recentf.el @@ -0,0 +1,4 @@ +(setq recentf-max-menu-items 25 + recentf-max-saved-items 25) + +(provide 'init-recentf) diff --git a/init/savehist/init-savehist.el b/init/savehist/init-savehist.el new file mode 100644 index 0000000..7e6e311 --- /dev/null +++ b/init/savehist/init-savehist.el @@ -0,0 +1,11 @@ +(require 'savehist) + +(setq savehist-file (expand-file-name "savehist" user-emacs-directory) + savehist-save-minibuffer-history t) + +(add-to-list 'savehist-additional-variables 'command-history) + +(unless (file-exists-p savehist-file) + (make-empty-file savehist-file)) + +(provide 'init-savehist) diff --git a/init/text-mode/init-text-mode-hooks.el b/init/text-mode/init-text-mode-hooks.el new file mode 100644 index 0000000..f740e0c --- /dev/null +++ b/init/text-mode/init-text-mode-hooks.el @@ -0,0 +1,9 @@ +(add-hook 'text-mode-hook (lambda () + (display-line-numbers-mode 1) + (visual-line-mode 1) + (display-fill-column-indicator-mode 1) + (electric-pair-mode 1) + (electric-indent-mode 1) + (setq-local display-fill-column-indicator-column 120) + (when (require 'highlight-indentation nil t) + (highlight-indentation-mode 1)))) diff --git a/init/text-mode/init-text-mode.el b/init/text-mode/init-text-mode.el new file mode 100644 index 0000000..4318c95 --- /dev/null +++ b/init/text-mode/init-text-mode.el @@ -0,0 +1,3 @@ +(load "init-text-mode-hooks") + +(provide 'init-text-mode) diff --git a/init/tramp/init-tramp-connection-properties.el b/init/tramp/init-tramp-connection-properties.el new file mode 100644 index 0000000..88f2dfd --- /dev/null +++ b/init/tramp/init-tramp-connection-properties.el @@ -0,0 +1,2 @@ +(add-to-list 'tramp-connection-properties (list (regexp-quote (format "/sudo:root@%s:" system-name)) + "session-timeout" (* 60 20))) diff --git a/init/tramp/init-tramp-sudo-hang-fix.el b/init/tramp/init-tramp-sudo-hang-fix.el new file mode 100644 index 0000000..3882f28 --- /dev/null +++ b/init/tramp/init-tramp-sudo-hang-fix.el @@ -0,0 +1,3 @@ +(defun sudo-edit () + (interactive) + (find-file (format "/sudo:root@%s:%s" system-name (read-file-name "Edit as root: ")))) diff --git a/init/tramp/init-tramp.el b/init/tramp/init-tramp.el new file mode 100644 index 0000000..aad0582 --- /dev/null +++ b/init/tramp/init-tramp.el @@ -0,0 +1,10 @@ +(require 'tramp) + +(setq password-cache nil + password-cache-expiry 0 + tramp-persistency-file-name nil) + +(load "init-tramp-connection-properties") +(load "init-tramp-sudo-hang-fix") + +(provide 'init-tramp) |