first commit
This commit is contained in:
12
profiles/desktop/.emacs.d/early-init.el
Normal file
12
profiles/desktop/.emacs.d/early-init.el
Normal file
@@ -0,0 +1,12 @@
|
||||
;; set native compilation cache directory
|
||||
(startup-redirect-eln-cache
|
||||
(convert-standard-filename
|
||||
(expand-file-name "~/.cache/emacs/eln-cache/")))
|
||||
|
||||
;; performance tuning
|
||||
;; set as recommended at https://emacs-lsp.github.io/lsp-mode/page/performance/
|
||||
(setq gc-cons-threshold 100000000)
|
||||
(setq read-process-output-max (* 1024 1024)) ;; 1mb
|
||||
(setenv "LSP_USE_PLISTS" "true")
|
||||
(setq lsp-idle-delay 0.500)
|
||||
(setq lsp-log-io nil) ; if set to true can cause a performance hit
|
||||
20
profiles/desktop/.emacs.d/init.el
Normal file
20
profiles/desktop/.emacs.d/init.el
Normal file
@@ -0,0 +1,20 @@
|
||||
;;; init.el --- my emacs config -*- lexical-binding: t -*-
|
||||
;;; Commentary:
|
||||
|
||||
;; set load path
|
||||
(add-to-list 'load-path "~/.emacs.d/modules")
|
||||
|
||||
;; include modules containing various configs
|
||||
(dolist (module '(common
|
||||
package-manager
|
||||
user-interface
|
||||
editing
|
||||
programming
|
||||
org-mode
|
||||
sysadm
|
||||
erc
|
||||
misc))
|
||||
(require module))
|
||||
|
||||
(provide 'init)
|
||||
;;; init.el ends here
|
||||
80
profiles/desktop/.emacs.d/lisp/custom-settings.el
Normal file
80
profiles/desktop/.emacs.d/lisp/custom-settings.el
Normal file
@@ -0,0 +1,80 @@
|
||||
;;; custom-settings.el --- settings made by custom -*- lexical-binding: t -*-
|
||||
;;; Commentary:
|
||||
|
||||
(custom-set-faces
|
||||
;; custom-set-faces was added by Custom.
|
||||
;; If you edit it by hand, you could mess it up, so be careful.
|
||||
;; Your init file should contain only one such instance.
|
||||
;; If there is more than one, they won't work right.
|
||||
'(ansi-color-black ((t (:foreground "#000000"))))
|
||||
'(ansi-color-blue ((t (:foreground "#004f9e"))))
|
||||
'(ansi-color-bright-black ((t (:foreground "#5d5d5d"))))
|
||||
'(ansi-color-bright-blue ((t (:foreground "#0071ff"))))
|
||||
'(ansi-color-bright-cyan ((t (:foreground "#4bb8fd"))))
|
||||
'(ansi-color-bright-green ((t (:foreground "#7bc91f"))))
|
||||
'(ansi-color-bright-magenta ((t (:foreground "#ff1d62"))))
|
||||
'(ansi-color-bright-red ((t (:foreground "#ff361e"))))
|
||||
'(ansi-color-bright-white ((t (:foreground "#ffffff"))))
|
||||
'(ansi-color-bright-yellow ((t (:foreground "#ffd00a"))))
|
||||
'(ansi-color-cyan ((t (:foreground "#2aa7e7"))))
|
||||
'(ansi-color-green ((t (:foreground "#6ab017"))))
|
||||
'(ansi-color-magenta ((t (:foreground "#ec0048"))))
|
||||
'(ansi-color-red ((t (:foreground "#e1321a"))))
|
||||
'(ansi-color-yellow ((t (:foreground "#ffc005"))))
|
||||
'(eat-term-color-0 ((t (:foreground "#000000"))))
|
||||
'(eat-term-color-1 ((t (:foreground "#e1321a"))))
|
||||
'(eat-term-color-10 ((t (:foreground "#7bc91f"))))
|
||||
'(eat-term-color-11 ((t (:foreground "#ffd00a"))))
|
||||
'(eat-term-color-12 ((t (:foreground "#0071ff"))))
|
||||
'(eat-term-color-13 ((t (:foreground "#ff1d62"))))
|
||||
'(eat-term-color-14 ((t (:foreground "#4bb8fd"))))
|
||||
'(eat-term-color-15 ((t (:foreground "#ffffff"))))
|
||||
'(eat-term-color-2 ((t (:foreground "#6ab017"))))
|
||||
'(eat-term-color-3 ((t (:foreground "#ffc005"))))
|
||||
'(eat-term-color-4 ((t (:foreground "#004f9e"))))
|
||||
'(eat-term-color-5 ((t (:foreground "#ec0048"))))
|
||||
'(eat-term-color-6 ((t (:foreground "#2aa7e7"))))
|
||||
'(eat-term-color-7 ((t (:foreground "#f2f2f2"))))
|
||||
'(eat-term-color-8 ((t (:foreground "#5d5d5d"))))
|
||||
'(eat-term-color-9 ((t (:foreground "#ff361e"))))
|
||||
'(term-color-black ((t (:background "#000000" :foreground "#000000"))))
|
||||
'(term-color-blue ((t (:background "#004f9e" :foreground "#004f9e"))))
|
||||
'(term-color-bright-black ((t (:background "#5d5d5d" :foreground "#5d5d5d"))))
|
||||
'(term-color-bright-blue ((t (:background "#0071ff" :foreground "#0071ff"))))
|
||||
'(term-color-bright-cyan ((t (:background "#4bb8fd" :foreground "#4bb8fd"))))
|
||||
'(term-color-bright-green ((t (:background "#7bc91f" :foreground "#7bc91f"))))
|
||||
'(term-color-bright-magenta ((t (:background "#ff1d62" :foreground "#ff1d62"))))
|
||||
'(term-color-bright-red ((t (:background "#ff361e" :foreground "#ff361e"))))
|
||||
'(term-color-bright-white ((t (:background "#ffffff" :foreground "#ffffff"))))
|
||||
'(term-color-bright-yellow ((t (:background "#ffd00a" :foreground "#ffd00a"))))
|
||||
'(term-color-cyan ((t (:background "#2aa7e7" :foreground "#2aa7e7"))))
|
||||
'(term-color-green ((t (:background "#6ab017" :foreground "#6ab017"))))
|
||||
'(term-color-magenta ((t (:background "#ec0048" :foreground "#ec0048"))))
|
||||
'(term-color-red ((t (:background "#e1321a" :foreground "#e1321a"))))
|
||||
'(term-color-white ((t (:background "#f2f2f2" :foreground "#f2f2f2"))))
|
||||
'(term-color-yellow ((t (:background "#ffc005" :foreground "#ffc005"))))
|
||||
'(vterm-color-black ((t (:background "#000000" :foreground "#000000"))))
|
||||
'(vterm-color-blue ((t (:background "#004f9e" :foreground "#004f9e"))))
|
||||
'(vterm-color-bright-black ((t (:background "#5d5d5d" :foreground "#5d5d5d"))))
|
||||
'(vterm-color-bright-blue ((t (:background "#0071ff" :foreground "#0071ff"))))
|
||||
'(vterm-color-bright-cyan ((t (:background "#4bb8fd" :foreground "#4bb8fd"))))
|
||||
'(vterm-color-bright-green ((t (:background "#7bc91f" :foreground "#7bc91f"))))
|
||||
'(vterm-color-bright-magenta ((t (:background "#ff1d62" :foreground "#ff1d62"))))
|
||||
'(vterm-color-bright-red ((t (:background "#ff361e" :foreground "#ff361e"))))
|
||||
'(vterm-color-bright-white ((t (:background "#ffffff" :foreground "#ffffff"))))
|
||||
'(vterm-color-bright-yellow ((t (:background "#ffd00a" :foreground "#ffd00a"))))
|
||||
'(vterm-color-cyan ((t (:background "#2aa7e7" :foreground "#2aa7e7"))))
|
||||
'(vterm-color-green ((t (:background "#6ab017" :foreground "#6ab017"))))
|
||||
'(vterm-color-magenta ((t (:background "#ec0048" :foreground "#ec0048"))))
|
||||
'(vterm-color-red ((t (:background "#e1321a" :foreground "#e1321a"))))
|
||||
'(vterm-color-white ((t (:background "#f2f2f2" :foreground "#f2f2f2"))))
|
||||
'(vterm-color-yellow ((t (:background "#ffc005" :foreground "#ffc005")))))
|
||||
(custom-set-variables
|
||||
;; custom-set-variables was added by Custom.
|
||||
;; If you edit it by hand, you could mess it up, so be careful.
|
||||
;; Your init file should contain only one such instance.
|
||||
;; If there is more than one, they won't work right.
|
||||
)
|
||||
|
||||
(provide 'custom-settings)
|
||||
;; custom-settings.el ends here
|
||||
493
profiles/desktop/.emacs.d/lisp/no-littering.el
Normal file
493
profiles/desktop/.emacs.d/lisp/no-littering.el
Normal file
@@ -0,0 +1,493 @@
|
||||
;;; no-littering.el --- Help keeping ~/.config/emacs clean -*- lexical-binding:t -*-
|
||||
|
||||
;; Copyright (C) 2016-2026 Jonas Bernoulli
|
||||
|
||||
;; Author: Jonas Bernoulli <emacs.no-littering@jonas.bernoulli.dev>
|
||||
;; Homepage: https://github.com/emacscollective/no-littering
|
||||
;; Keywords: convenience
|
||||
|
||||
;; Package-Version: 1.8.3
|
||||
;; Package-Requires: (
|
||||
;; (emacs "26.1")
|
||||
;; (compat "30.1"))
|
||||
|
||||
;; SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
;; This file is free software: you can redistribute it and/or modify
|
||||
;; it under the terms of the GNU General Public License as published
|
||||
;; by the Free Software Foundation, either version 3 of the License,
|
||||
;; or (at your option) any later version.
|
||||
;;
|
||||
;; This file is distributed in the hope that it will be useful,
|
||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;; GNU General Public License for more details.
|
||||
;;
|
||||
;; You should have received a copy of the GNU General Public License
|
||||
;; along with this file. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; Help keeping ~/.config/emacs clean.
|
||||
|
||||
;; The default paths used to store configuration files and persistent
|
||||
;; data are not consistent across Emacs packages. This isn't just a
|
||||
;; problem with third-party packages but even with built-in packages.
|
||||
|
||||
;; Some packages put these files directly in `user-emacs-directory'
|
||||
;; or $HOME or in a subdirectory of either of the two or elsewhere.
|
||||
;; Furthermore sometimes file names are used that don't provide any
|
||||
;; insight into what package might have created them.
|
||||
|
||||
;; This package sets out to fix this by changing the values of path
|
||||
;; variables to put configuration files in `no-littering-etc-directory'
|
||||
;; (defaulting to "etc/" under `user-emacs-directory', thus usually
|
||||
;; "~/.config/emacs/etc/") and persistent data files in
|
||||
;; `no-littering-var-directory' (defaulting to "var/" under
|
||||
;; `user-emacs-directory', thus usually "~/.emacs.d/var/"), and
|
||||
;; by using descriptive file names and subdirectories when appropriate.
|
||||
;; This is similar to a color-theme; a "path-theme" if you will.
|
||||
|
||||
;; We still have a long way to go until most built-in and many third-
|
||||
;; party path variables are properly "themed". Like a color-theme,
|
||||
;; this package depends on user contributions to accomplish decent
|
||||
;; coverage. Pull requests are highly welcome (but please follow the
|
||||
;; conventions described below and in the pull request template).
|
||||
|
||||
;; This package does not automatically migrate existing files to their
|
||||
;; new locations, but unless you want to, you also do not have to do
|
||||
;; it completely by hand. The contributed "migrate.org" provides some
|
||||
;; guidance and tools to help with the migration.
|
||||
|
||||
;;;; Usage
|
||||
|
||||
;; Load the feature `no-littering' as early as possible in your init
|
||||
;; file. Make sure you load it at least before you change any path
|
||||
;; variables using some other method.
|
||||
;;
|
||||
;; (require 'no-littering)
|
||||
|
||||
;; If you would like to use base directories different from what
|
||||
;; `no-littering' uses by default, then you have to set the respective
|
||||
;; variables before loading the feature.
|
||||
;;
|
||||
;; (eval-and-compile ; Ensure values don't differ at compile time.
|
||||
;; (setq no-littering-etc-directory
|
||||
;; (expand-file-name "config/" user-emacs-directory))
|
||||
;; (setq no-littering-var-directory
|
||||
;; (expand-file-name "data/" user-emacs-directory))
|
||||
;; (require 'no-littering)
|
||||
|
||||
;; For additional optional settings see "README.org".
|
||||
|
||||
;;;; Conventions
|
||||
|
||||
;; Please see the "README.org" file in this repository or the exported
|
||||
;; version at https://emacsmirror.net/manual/no-littering.html.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'cl-lib)
|
||||
(require 'compat)
|
||||
|
||||
(defvar no-littering-etc-directory
|
||||
(expand-file-name (convert-standard-filename "etc/") user-emacs-directory)
|
||||
"The directory where packages place their configuration files.
|
||||
This variable has to be set before `no-littering' is loaded.")
|
||||
|
||||
(defvar no-littering-var-directory
|
||||
(expand-file-name (convert-standard-filename "var/") user-emacs-directory)
|
||||
"The directory where packages place their persistent data files.
|
||||
This variable has to be set before `no-littering' is loaded.")
|
||||
|
||||
;;;###autoload
|
||||
(defun no-littering-expand-etc-file-name (file)
|
||||
"Expand filename FILE relative to `no-littering-etc-directory'."
|
||||
(expand-file-name (convert-standard-filename file)
|
||||
no-littering-etc-directory))
|
||||
|
||||
;;;###autoload
|
||||
(defun no-littering-expand-var-file-name (file)
|
||||
"Expand filename FILE relative to `no-littering-var-directory'."
|
||||
(expand-file-name (convert-standard-filename file)
|
||||
no-littering-var-directory))
|
||||
|
||||
(cl-letf (((symbol-function 'etc)
|
||||
(symbol-function #'no-littering-expand-etc-file-name))
|
||||
((symbol-function 'var)
|
||||
(symbol-function #'no-littering-expand-var-file-name)))
|
||||
(make-directory no-littering-etc-directory t)
|
||||
(make-directory no-littering-var-directory t)
|
||||
(with-no-warnings ; many of these variables haven't been defined yet
|
||||
|
||||
;;; Built-in packages
|
||||
|
||||
(setq abbrev-file-name (etc "abbrev.el"))
|
||||
(setq auto-insert-directory (etc "auto-insert/"))
|
||||
(setq auto-save-list-file-prefix (var "auto-save/sessions/"))
|
||||
(setq bookmark-default-file (var "bookmark-default.el"))
|
||||
(setq calc-settings-file (etc "calc-settings.el"))
|
||||
(setq desktop-dirname (var "desktop/"))
|
||||
(setq desktop-path (list desktop-dirname))
|
||||
(setq diary-file (var "diary"))
|
||||
(setq ecomplete-database-file (var "ecomplete-database.el"))
|
||||
(setq ede-project-placeholder-cache-file (var "ede-projects.el"))
|
||||
(setq erc-dcc-get-default-directory (var "erc/dcc/"))
|
||||
(setq erc-log-channels-directory (var "erc/log-channels/"))
|
||||
(setq erc-startup-file-list (list (etc "erc/startup.el")
|
||||
(etc "erc/startup")
|
||||
".ercrc.el"
|
||||
".ercrc"))
|
||||
(setq eshell-aliases-file (etc "eshell/aliases"))
|
||||
;; This controls where `eshell-history-file-name' is places.
|
||||
;; Other files belong in "etc/" so theme their variables directly.
|
||||
(setq eshell-directory-name (var "eshell/"))
|
||||
(setq eshell-login-script (etc "eshell/login"))
|
||||
(setq eshell-rc-script (etc "eshell/rc"))
|
||||
(setq eudc-options-file (etc "eudc-options.el"))
|
||||
(setq eww-bookmarks-directory (var "eww/"))
|
||||
(setq filesets-menu-cache-file (var "filesets-menu-cache.el"))
|
||||
(setq gamegrid-user-score-file-directory (var "gamegrid-user-score/"))
|
||||
(setq gnus-dribble-directory (var "gnus/dribble/"))
|
||||
(setq gnus-init-file (etc "gnus/init.el"))
|
||||
;; Gnus hardcodes newsrc.eld to be based on gnus-startup-file.
|
||||
(setq gnus-startup-file (etc "gnus/newsrc"))
|
||||
(setq ido-save-directory-list-file (var "ido-save-directory-list.el"))
|
||||
(setq ielm-history-file-name (var "ielm-history.eld"))
|
||||
(setq image-dired-db-file (var "image-dired/db.el"))
|
||||
(setq image-dired-dir (var "image-dired/"))
|
||||
(setq image-dired-gallery-dir (var "image-dired/gallery/"))
|
||||
(setq image-dired-temp-image-file (var "image-dired/temp-image"))
|
||||
(setq image-dired-temp-rotate-image-file (var "image-dired/temp-rotate-image"))
|
||||
(setq Info-saved-history-file (var "info-saved-history.eld"))
|
||||
(setq kkc-init-file-name (var "kkc-init.el"))
|
||||
(setq multisession-directory (var "multisession/"))
|
||||
(setq newsticker-cache-filename (var "newsticker/cache.el"))
|
||||
(setq newsticker-dir (var "newsticker/data/"))
|
||||
(setq nsm-settings-file (var "nsm-settings.el"))
|
||||
(setq org-clock-persist-file (var "org/clock-persist.el"))
|
||||
(setq org-id-locations-file (var "org/id-locations.el"))
|
||||
(setq org-persist-directory (var "org/persist/"))
|
||||
(setq org-publish-timestamp-directory (var "org/timestamps/"))
|
||||
(setq persist--directory-location (var "persist/"))
|
||||
(setq project-list-file (var "project-list.el"))
|
||||
(setq quickurl-url-file (var "quickurl-url.el"))
|
||||
(setq rcirc-log-directory (var "rcirc-log/"))
|
||||
(setq recentf-save-file (var "recentf-save.el"))
|
||||
(setq remember-data-directory (var "remember/data.d/"))
|
||||
(setq remember-data-file (var "remember/data"))
|
||||
(setq save-place-file (var "save-place.el"))
|
||||
(setq savehist-file (var "savehist.el"))
|
||||
(setq semanticdb-default-save-directory (var "semantic/"))
|
||||
(setq server-auth-dir (var "server/auth/"))
|
||||
(setq shadow-info-file (var "shadow/info.el"))
|
||||
(setq shadow-todo-file (var "shadow/todo.el"))
|
||||
(setq shared-game-score-directory (var "shared-game-score/"))
|
||||
(setq srecode-map-save-file (var "srecode-map.el"))
|
||||
(setq timeclock-file (var "timeclock"))
|
||||
(setq tramp-auto-save-directory (var "tramp/auto-save/"))
|
||||
(setq tramp-persistency-file-name (var "tramp/persistency.el"))
|
||||
(setq type-break-file-name (var "type-break.el"))
|
||||
(setq url-cache-directory (var "url/cache/"))
|
||||
(setq url-configuration-directory (var "url/"))
|
||||
(setq url-cookie-file (var "url/cookies.el"))
|
||||
(setq url-history-file (var "url/history.el"))
|
||||
|
||||
(eval-after-load 'desktop '(make-directory desktop-dirname t))
|
||||
(eval-after-load 'erc '(make-directory erc-dcc-get-default-directory t))
|
||||
(eval-after-load 'eshell `(with-file-modes #o700
|
||||
(make-directory ,(etc "eshell/") t)))
|
||||
(eval-after-load 'eww '(make-directory eww-bookmarks-directory t))
|
||||
(eval-after-load 'gnus `(make-directory ,(etc "gnus/") t))
|
||||
(eval-after-load 'gnus '(make-directory gnus-dribble-directory t))
|
||||
(eval-after-load 'newsticker `(make-directory ,(var "newsticker/") t))
|
||||
(eval-after-load 'org `(make-directory ,(var "org/") t))
|
||||
(eval-after-load 'shadowfile `(make-directory ,(var "shadow/") t))
|
||||
(eval-after-load 'treesit `(push ,(var "treesit/") treesit-extra-load-path))
|
||||
|
||||
;;; Third-party packages
|
||||
|
||||
(setq abm-file (var "autobookmarks.el"))
|
||||
(setq ac-comphist-file (var "ac-comphist.el"))
|
||||
(setq amx-save-file (var "amx-save.el"))
|
||||
(setq anaconda-mode-installation-directory (var "anaconda-mode/"))
|
||||
(setq annotate-file (var "annotations.el"))
|
||||
(setq async-byte-compile-log-file (var "async-bytecomp.log"))
|
||||
(setq autocrypt-save-file (var "autocrypt-data.eld"))
|
||||
(setq auto-package-update-last-update-day-path (var "auto-package-update-last-update-day"))
|
||||
(setq bbdb-file (var "bbdb/bbdb.el"))
|
||||
(setq bbdb-vcard-directory (var "bbdb/vcard/"))
|
||||
(setq binky-cache-directory (var "binky/cache/"))
|
||||
(setq blamer-avatar-folder (var "blamer/avatars/"))
|
||||
(setq bm-repository-file (var "bm-repository.el"))
|
||||
(setq bmkp-bmenu-commands-file (var "bmkp/bmenu-commands.el"))
|
||||
(setq bmkp-current-bookmark-file (var "bmkp/current-bookmark.el"))
|
||||
(setq bmkp-last-bookmark-file (var "bmkp/last-bookmark.el"))
|
||||
(setq bookiez-file (var "bookiez"))
|
||||
(setq cider-repl-history-file (var "cider-repl-history.el"))
|
||||
(setq clm/logging-dir (var "command-log-mode/logging/"))
|
||||
(setq code-review-db-database-file (var "code-review/database.sqlite"))
|
||||
(setq code-review-download-dir (var "code-review/downloads/"))
|
||||
(setq code-review-log-file (var "code-review/log"))
|
||||
(setq company-statistics-file (var "company/statistics.el"))
|
||||
(setq company-tabnine-binaries-folder (var "company/tabnine-binaries"))
|
||||
(setq conventional-changelog-tmp-dir (var "conventional-changelog/"))
|
||||
(setq copilot-install-dir (var "copilot/"))
|
||||
(setq dap-breakpoints-file (var "dap/breakpoints.el"))
|
||||
(setq dap-java-test-runner (var "lsp-java/eclipse.jdt.ls/test-runner/junit-platform-console-standalone.jar"))
|
||||
(setq dap-utils-extension-path (var "dap/extensions/"))
|
||||
(setq dape-adapter-dir (var "dape/adapters/"))
|
||||
(setq dape-default-breakpoints-file (var "dape/breakpoints.eld"))
|
||||
(setq debbugs-gnu-persistency-file (var "debbugs.el"))
|
||||
(setq detached-db-directory (var "detached/db/"))
|
||||
(setq detached-session-directory (var "detached/sessions/"))
|
||||
(setq devdocs-browser-cache-directory (var "devdocs/browser-cache/"))
|
||||
(setq devdocs-data-dir (var "devdocs/data/"))
|
||||
(setq dired-recent-directories-file (var "dired-recent-directories.el"))
|
||||
(setq dirvish-cache-dir (var "dirvish/cache"))
|
||||
(setq efar-state-file-name (var "efar-state.eld"))
|
||||
(setq eglot-fsharp-server-install-dir (var "eglot/servers/fsharp/"))
|
||||
(setq elbank-data-file (var "elbank-data.el"))
|
||||
(setq elfeed-autotag-files (list (etc "elfeed/autotags.org")))
|
||||
(setq elfeed-db-directory (var "elfeed/db/"))
|
||||
(setq elfeed-enclosure-default-dir (var "elfeed/enclosures/"))
|
||||
(setq elfeed-score-rule-stats-file (var "elfeed/score/score-rule-stats.eld"))
|
||||
(setq elfeed-score-score-file (etc "elfeed/score/score.el"))
|
||||
(setq elgrep-data-file (var "elgrep-data.el"))
|
||||
(setq elisp-autofmt-cache-directory (var "elisp-autofmt/cache/"))
|
||||
(setq elmo-msgdb-directory (var "elmo/"))
|
||||
(setq elmo-split-log-file (var "elmo/split-log"))
|
||||
(setq elpher-bookmarks-file (var "elpher-bookmarks.el"))
|
||||
(setq emacs-gc-stats-file (var "emacs-gc-stats.eld"))
|
||||
(setq ement-sessions-file (var "ement-sessions.el"))
|
||||
(setq emms-directory (var "emms/"))
|
||||
(setq emojify-emojis-dir (var "emojify/"))
|
||||
(setq epkg-repository (var "epkgs/"))
|
||||
(setq equake-persistent-display-file (var "equake-persistent-display"))
|
||||
(setq fontaine-latest-state-file (var "fontaine-latest-state.eld"))
|
||||
(setq forge-database-file (var "forge/database.sqlite"))
|
||||
(setq forge-post-directory (var "forge/posts/"))
|
||||
(setq geben-temporary-file-directory (var "geben/"))
|
||||
(setq geiser-repl-history-filename (var "geiser/repl-history"))
|
||||
(setq gnus-notes-file (var "gnus-notes/articles.el"))
|
||||
(setq gnus-notes-top-dir (var "gnus-notes/"))
|
||||
(setq gptel-crowdsourced-prompts-file (var "gptel-crowdsourced-prompts.csv"))
|
||||
(setq gptel-gh-token-file (var "gptel/gh-token"))
|
||||
(setq gptel-gh-github-token-file (var "gptel/gh-github-token"))
|
||||
(setq grammalecte-settings-file (etc "grammalecte-settings.el"))
|
||||
(setq hackernews-visited-links-file (var "hackernews/visited-links.el"))
|
||||
(setq harpoon-cache-file (var "harpoon/"))
|
||||
(setq helm-adaptive-history-file (var "helm/adaptive-history.el"))
|
||||
(setq helm-backup-path (var "helm/backup/"))
|
||||
(setq helm-github-stars-cache-file (var "helm/github-stars-cache.el"))
|
||||
(setq helm-net-curl-log-file (var "helm/helm-curl.log"))
|
||||
(setq historian-save-file (var "historian-save.el"))
|
||||
(setq indium-workspace-file (var "indium/workspaces.el"))
|
||||
(setq irfc-directory (var "irfc/"))
|
||||
(setq irony-user-dir (var "irony/"))
|
||||
(setq jabber-avatar-cache-directory (var "jabber/avatar-cache"))
|
||||
(setq jabber-history-dir (var "jabber/history"))
|
||||
(setq keyfreq-file (var "keyfreq.el"))
|
||||
(setq keyfreq-file-lock (var "keyfreq.lock"))
|
||||
(setq libbcel-oauth-store-filename (var "libbcel-oauth-store.el.gpg"))
|
||||
(setq linkmarks-file (var "linkmarks.org"))
|
||||
(setq litable-list-file (var "litable-list.el"))
|
||||
(setq logview-cache-filename (var "logview-cache"))
|
||||
(setq logview-views-file (etc "logview-views"))
|
||||
(setq lookup-init-directory (etc "lookup/"))
|
||||
(setq lsp-clojure-workspace-dir (var "lsp-clojure/workspace/"))
|
||||
(setq lsp-eslint-library-choices-file (var "lsp/eslint-library-choices.el"))
|
||||
(setq lsp-java-server-install-dir (var "lsp-java/eclipse.jdt.ls/server/"))
|
||||
(setq lsp-java-workspace-dir (var "lsp-java/workspace/"))
|
||||
(setq lsp-ltex-user-rules-path (var "lsp-ltex/"))
|
||||
(setq lsp-python-ms-dir (var "lsp-python-ms/"))
|
||||
(setq lsp-server-install-dir (var "lsp/server/"))
|
||||
(setq lsp-session-file (var "lsp/session.el"))
|
||||
(setq magithub-cache-file (var "magithub/cache.el"))
|
||||
(setq magithub-dir (var "magithub/"))
|
||||
(setq mastodon-client--token-file (var "mastodon-client--token"))
|
||||
(setq mc/list-file (var "mc-list.el"))
|
||||
(setq meghanada-server-install-dir (var "meghanada/"))
|
||||
(setq multi-compile-history-file (var "multi-compile-history.el"))
|
||||
(setq nix-buffer-directory-name (var "nix-buffer/"))
|
||||
(setq nomad-tramp-script-directory (var "nomad-tramp/"))
|
||||
;; The value of this variable MUST NOT end with ".el" but the
|
||||
;; actual file name MUST end with ".el". Use "git blame" for
|
||||
;; more information.
|
||||
(setq notmuch-init-file (etc "notmuch-init"))
|
||||
(setq nov-save-place-file (var "nov-save-place.el"))
|
||||
(setq omnisharp-cache-directory (var "omnisharp/cache"))
|
||||
(setq org-caldav-backup-file (var "org/caldav/backup.org"))
|
||||
(setq org-caldav-save-directory (var "org/caldav/save"))
|
||||
(setq org-gcal-dir (var "org/gcal/"))
|
||||
(setq org-journal-cache-file (var "org/journal-cache.el"))
|
||||
(setq org-node-data-dir (var "org/node/"))
|
||||
(setq org-node-fakeroam-data-dir (var "org/node-fakeroam/"))
|
||||
(setq org-recent-headings-save-file (var "org/recent-headings.el"))
|
||||
(setq org-registry-file (var "org/registry.el"))
|
||||
(setq org-roam-db-location (var "org/org-roam.db"))
|
||||
(setq package-quickstart-file (var "package-quickstart.el"))
|
||||
(setq pandoc-data-dir (etc "pandoc-mode/"))
|
||||
(setq parinfer-rust-library-directory (var "parinfer-rust/"))
|
||||
(setq pcache-directory (var "pcache/"))
|
||||
(setq pdf-view-restore-filename (var "pdf-view-restore.el"))
|
||||
(setq persist--directory-location (var "persist/"))
|
||||
(setq persistent-scratch-save-file (var "persistent-scratch.el"))
|
||||
(setq persp-save-dir (var "persp-mode/"))
|
||||
(setq pomm-state-file-location (var "pomm/state"))
|
||||
(setq pomm-third-time-state-file-location (var "pomm/third-time-state"))
|
||||
(setq prescient-save-file (var "prescient-save.el"))
|
||||
(setq projectile-cache-file (var "projectile/cache.el"))
|
||||
(setq projectile-known-projects-file (var "projectile/known-projects.el"))
|
||||
(setq psession-elisp-objects-default-directory (var "psession/"))
|
||||
(setq purpose-default-layout-file (etc "window-purpose/default-layout.el"))
|
||||
(setq purpose-layout-dirs (list (etc "window-purpose/layouts/")))
|
||||
(setq pyim-dcache-directory (var "pyim/dcache/"))
|
||||
(setq quack-dir (var "quack/"))
|
||||
(setq racket-repl-command-file (etc "racket-mode/repl.rkt"))
|
||||
(setq racket-repl-history-directory (var "racket-mode/repl-history/"))
|
||||
(setq request-storage-directory (var "request/storage/"))
|
||||
(setq rfc-mode-directory (var "rfc-mode/"))
|
||||
(setq rime-user-data-dir (var "rime/"))
|
||||
(setq rmh-elfeed-org-files (list (etc "elfeed/rmh-elfeed.org")))
|
||||
(setq runner-init-file (var "runner-init.el"))
|
||||
(setq save-kill-file-name (var "save-kill.el"))
|
||||
(setq save-visited-files-location (var "save-visited-files-location"))
|
||||
(setq session-save-file (var "session.el"))
|
||||
(setq shell-maker-history-path (var "shell-maker/"))
|
||||
(setq sly-mrepl-history-file-name (var "sly/mrepl-history"))
|
||||
(setq smex-save-file (var "smex-save.el"))
|
||||
(setq speed-type-gb-dir (var "speed-type/"))
|
||||
(setq spell-fu-directory (var "spell-fu/"))
|
||||
(setq svg-lib-icons-dir (var "svg-lib/icons/"))
|
||||
(setq sx-cache-directory (var "sx/cache/"))
|
||||
(setq tabspaces-session-file (var "tabspaces-session.eld"))
|
||||
(setq tempel-path (etc "tempel/templates.eld"))
|
||||
(setq tldr-directory-path (var "tldr/"))
|
||||
(setq transient-history-file (var "transient/history.el"))
|
||||
(setq transient-levels-file (etc "transient/levels.el"))
|
||||
(setq transient-values-file (etc "transient/values.el"))
|
||||
(setq treemacs-last-error-persist-file (var "treemacs/persist-last-error.org"))
|
||||
(setq treemacs-persist-file (var "treemacs/persist.org"))
|
||||
(setq undo-fu-session-directory (var "undo-fu-session/"))
|
||||
(setq undohist-directory (var "undohist/"))
|
||||
(setq uptimes-database (var "uptimes.el"))
|
||||
(setq user-emacs-ensime-directory (var "ensime/"))
|
||||
(setq vimish-fold-dir (var "vimish-fold/"))
|
||||
(setq wl-address-file (etc "wanderlust/address"))
|
||||
(setq wl-alias-file (etc "wanderlust/alias"))
|
||||
(setq wl-folders-file (etc "wanderlust/folders"))
|
||||
(setq wl-init-file (etc "wanderlust/init.el"))
|
||||
(setq wl-temporary-file-directory (var "wanderlust-tmp"))
|
||||
(setq wl-x-face-file (etc "wanderlust/x-face"))
|
||||
(setq x86-lookup-cache-directory (var "x86-lookup/cache/"))
|
||||
(setq xkcd-cache-dir (var "xkcd/"))
|
||||
(setq yas-snippet-dirs (list (etc "yasnippet/snippets/")))
|
||||
|
||||
(eval-after-load 'bbdb `(make-directory ,(var "bbdb/") t))
|
||||
(eval-after-load 'bookmark+-1 `(make-directory ,(var "bmkp/") t))
|
||||
(eval-after-load 'command-log-mode '(make-directory clm/logging-dir t))
|
||||
(eval-after-load 'company `(make-directory ,(var "company/") t))
|
||||
(eval-after-load 'dape '(make-directory dape-adapter-dir t))
|
||||
(eval-after-load 'elfeed `(make-directory ,(var "elfeed/") t))
|
||||
(eval-after-load 'emojify '(make-directory emojify-emojis-dir t))
|
||||
(eval-after-load 'geiser `(make-directory ,(var "geiser/") t))
|
||||
(eval-after-load 'helm `(make-directory ,(var "helm/") t))
|
||||
(eval-after-load 'jabber '(make-directory jabber-avatar-cache-directory t))
|
||||
(eval-after-load 'jabber '(make-directory jabber-history-dir t))
|
||||
(eval-after-load 'lookup '(make-directory lookup-init-directory t))
|
||||
(eval-after-load 'lsp-mode `(make-directory ,(var "lsp/") t))
|
||||
(eval-after-load 'org-caldav '(make-directory org-caldav-save-directory t))
|
||||
(eval-after-load 'pomm `(make-directory ,(var "pomm/") t))
|
||||
(eval-after-load 'projectile `(make-directory ,(var "projectile/") t))
|
||||
(eval-after-load 'sly `(make-directory ,(var "sly/") t))
|
||||
(eval-after-load 'sx '(make-directory sx-cache-directory t))
|
||||
(eval-after-load 'wl `(make-directory ,(etc "wanderlust") t))
|
||||
(eval-after-load 'xkcd '(make-directory xkcd-cache-dir t))
|
||||
(eval-after-load 'yasnippet '(make-directory (car yas-snippet-dirs) t))
|
||||
))
|
||||
|
||||
;;; Advices
|
||||
|
||||
(define-advice emacs-session-filename (:override (session-id) no-littering)
|
||||
"Construct a filename to save the session in, based on SESSION-ID.
|
||||
Unconditionally return a filename in `no-littering-var-directory'."
|
||||
(let ((dir (no-littering-expand-var-file-name "emacs-session/")))
|
||||
(make-directory dir t)
|
||||
(expand-file-name session-id dir)))
|
||||
|
||||
;;; Backups
|
||||
|
||||
(defvar undo-tree-history-directory-alist)
|
||||
|
||||
;;;###autoload
|
||||
(defun no-littering-theme-backups ()
|
||||
"Theme locations where backups of various sorts are created.
|
||||
|
||||
The purpose of this package is to store data files of various
|
||||
sorts in a handful of central locations, instead of spreading
|
||||
them all over the place. When doing that for temporary files,
|
||||
which contain backups of some sort, that increases the odds that
|
||||
sensitive data is written to disk in clear text and/or that such
|
||||
clear text files persist longer, if they would be created anyway.
|
||||
|
||||
Because of that, simply loading `no-littering' does not theme
|
||||
certain, potentially unsafe variables. Instead, this function is
|
||||
provided, so that you can decide whether to take the risk or not.
|
||||
|
||||
Calling this function sets these variables:
|
||||
- `auto-save-file-name-transforms' (built-in)
|
||||
- `backup-directory-alist' (built-in)
|
||||
- `undo-tree-history-directory-alist' (from `undo-tree')
|
||||
|
||||
The default values of these variables cause additional files to
|
||||
be created in the same directories as the files that are being
|
||||
visited. Calling this function changes the values of these
|
||||
variables, so that this is only done for visited files located in
|
||||
certain directories. For all other visited files, the additional
|
||||
files are created in files inside `no-littering-var-directory'.
|
||||
|
||||
Additional files are created in the same directory as the visited
|
||||
file, for files located in:
|
||||
- \"/tmp/\"
|
||||
- \"/dev/shm\"
|
||||
- `temporary-file-directory'
|
||||
|
||||
With these settings it is still possible that sensitive data is
|
||||
written to additional files, but you are more likely to spot it,
|
||||
and because these directories usually use a `tmpfs' file-system,
|
||||
the leaked secrets should not persist after a reboot.
|
||||
|
||||
If you do *not* call this function, then these additional files
|
||||
are always created in the same directory as the visited files,
|
||||
regardless of the location of the visited files. In other words,
|
||||
even when using the default values, there is a significant risk
|
||||
of leaking sensitive data, and if you want to reduce that, then
|
||||
you must turn of these features completely."
|
||||
(setq auto-save-file-name-transforms
|
||||
`(("\\`/[^/]*:\\([^/]*/\\)*\\([^/]*\\)\\'"
|
||||
,(concat (file-name-as-directory temporary-file-directory) "\\2") t)
|
||||
("\\`/tmp\\([^/]*/\\)*\\(.*\\)\\'" "\\2")
|
||||
("\\`/dev/shm\\([^/]*/\\)*\\(.*\\)\\'" "\\2")
|
||||
(".*" ,(no-littering-expand-var-file-name "auto-save/") t)))
|
||||
(setq backup-directory-alist
|
||||
(delete-dups
|
||||
`((,(concat "\\`" (file-name-as-directory temporary-file-directory)))
|
||||
("\\`/tmp/" . nil)
|
||||
("\\`/dev/shm/" . nil)
|
||||
("." . ,(no-littering-expand-var-file-name "backup/")))))
|
||||
(setq undo-tree-history-directory-alist
|
||||
(delete-dups
|
||||
`((,(concat "\\`" (file-name-as-directory temporary-file-directory)))
|
||||
("\\`/tmp/" . nil)
|
||||
("\\`/dev/shm/" . nil)
|
||||
("." . ,(no-littering-expand-var-file-name "undo-tree-hist/")))))
|
||||
)
|
||||
|
||||
;;; _
|
||||
(provide 'no-littering)
|
||||
;; Local Variables:
|
||||
;; indent-tabs-mode: nil
|
||||
;; lisp-indent-local-overrides: ((cond . 0) (interactive . 0))
|
||||
;; End:
|
||||
;;; no-littering.el ends here
|
||||
49
profiles/desktop/.emacs.d/modules/common.el
Normal file
49
profiles/desktop/.emacs.d/modules/common.el
Normal file
@@ -0,0 +1,49 @@
|
||||
;;; common.el --- common stuff -*- lexical-binding: t -*-
|
||||
;;; Commentary:
|
||||
|
||||
;; add directory containing own stuff and helper utilities to load path
|
||||
(add-to-list 'load-path "~/.emacs.d/lisp")
|
||||
|
||||
;; keep ~/.emacs.d clean
|
||||
(setq no-littering-etc-directory "~/.emacs.d/")
|
||||
(let ((var "~/.cache/emacs/")
|
||||
(etc "~/.emacs.d/"))
|
||||
(make-directory var t)
|
||||
(setq no-littering-var-directory var)
|
||||
(setq lock-file-name-transforms `((".*" ,(concat var "lock-files/") t)))
|
||||
(setq custom-file (concat etc "lisp/custom-settings.el")))
|
||||
(require 'no-littering)
|
||||
(no-littering-theme-backups)
|
||||
|
||||
;; load settings set by customize
|
||||
(require 'custom-settings)
|
||||
|
||||
;; enable integration with pass
|
||||
(auth-source-pass-enable)
|
||||
;; copied from https://systemcrafters.net/emacs-tips/using-encrypted-passwords/
|
||||
(defun pt/lookup-password (&rest keys)
|
||||
(let ((result (apply #'auth-source-search keys)))
|
||||
(if result
|
||||
(funcall (plist-get (car result) :secret))
|
||||
nil)))
|
||||
|
||||
;; useful stuff
|
||||
(defmacro fmt (str)
|
||||
"Elisp string interpolation.
|
||||
Example:
|
||||
(fmt \"My name is #{user-full-name}, I am running Emacs #{(if (display-graphic-p) \\\"with a GUI\\\" \\\"in a terminal\\\".)}\""
|
||||
(let ((exprs nil))
|
||||
(with-temp-buffer
|
||||
(insert str)
|
||||
(goto-char 1)
|
||||
(while (re-search-forward "#{" nil t 1)
|
||||
(let ((here (point))
|
||||
(emptyp (eql (char-after) ?})))
|
||||
(unless emptyp (push (read (buffer-substring (point) (progn (forward-sexp 1) (point)))) exprs))
|
||||
(delete-region (- here 2) (progn (search-forward "}") (point)))
|
||||
(unless emptyp (insert "%s"))
|
||||
(ignore-errors (forward-char 1))))
|
||||
(append (list 'format (buffer-string)) (reverse exprs)))))
|
||||
|
||||
(provide 'common)
|
||||
;;; common.el ends here
|
||||
58
profiles/desktop/.emacs.d/modules/editing.el
Normal file
58
profiles/desktop/.emacs.d/modules/editing.el
Normal file
@@ -0,0 +1,58 @@
|
||||
;;; editing.el --- core editor config -*- lexical-binding: t -*-
|
||||
;;; Commentary:
|
||||
|
||||
;; follow symlinks
|
||||
(setq vc-follow-symlinks t)
|
||||
|
||||
;; complete brackets automatically
|
||||
(electric-pair-mode 1)
|
||||
(setq electric-pair-preserve-balance nil)
|
||||
|
||||
;; make C-k kill entire line when I'm at the start of line
|
||||
(setq kill-whole-line t)
|
||||
|
||||
;; key binding for copying lines
|
||||
(defun copy-line (arg)
|
||||
"Copy lines (as many as prefix argument) in the kill ring.
|
||||
Ease of use features:
|
||||
- Move to start of next line.
|
||||
- Appends the copy on sequential calls.
|
||||
- Use newline as last char even on the last line of the buffer.
|
||||
- If region is active, copy its lines."
|
||||
(interactive "p")
|
||||
(let ((beg (line-beginning-position))
|
||||
(end (line-end-position arg)))
|
||||
(when mark-active
|
||||
(if (> (point) (mark))
|
||||
(setq beg (save-excursion (goto-char (mark)) (line-beginning-position)))
|
||||
(setq end (save-excursion (goto-char (mark)) (line-end-position)))))
|
||||
(if (eq last-command 'copy-line)
|
||||
(kill-append (buffer-substring beg end) (< end beg))
|
||||
(kill-ring-save beg end)))
|
||||
(kill-append "\n" nil)
|
||||
(beginning-of-line (or (and arg (1+ arg)) 2))
|
||||
(if (and arg (not (= 1 arg))) (message "%d lines copied" arg)))
|
||||
(global-set-key "\C-cc" #'copy-line)
|
||||
|
||||
;; key binding for duplicating lines
|
||||
(defun duplicate-current-line (&optional n)
|
||||
"Duplicate current line, make more than 1 copy given a numeric argument."
|
||||
(interactive "p")
|
||||
(save-excursion
|
||||
(let ((nb (or n 1))
|
||||
(current-line (thing-at-point 'point)))
|
||||
;; when on last line, insert a newline first
|
||||
(when (or (= 1 (forward-line 1)) (eq (point) (point-max)))
|
||||
(insert "\n"))
|
||||
;; now insert as many time as requested
|
||||
(while (> n 0)
|
||||
(insert current-line)
|
||||
(cl-decf n)))))
|
||||
(global-set-key (kbd "\C-cd") #'duplicate-current-line)
|
||||
|
||||
;; persistent undo history
|
||||
(use-package undo-tree
|
||||
:hook (after-init . global-undo-tree-mode))
|
||||
|
||||
(provide 'editing)
|
||||
;;; editing.el ends here
|
||||
46
profiles/desktop/.emacs.d/modules/erc.el
Normal file
46
profiles/desktop/.emacs.d/modules/erc.el
Normal file
@@ -0,0 +1,46 @@
|
||||
;;; erc.el --- erc config -*- lexical-binding: t -*-
|
||||
;;; Commentary:
|
||||
|
||||
(defun pt/erc-connect-network (network)
|
||||
"Connect to Libera IRC network."
|
||||
(erc-tls :server "paraboletancza.org"
|
||||
:port 6697
|
||||
:user (fmt "whiteman808/#{network}")
|
||||
:password (pt/lookup-password :host "znc.paraboletancza.org" :user "whiteman808")
|
||||
:full-name "whiteman808"))
|
||||
|
||||
(use-package erc
|
||||
:custom
|
||||
;; user data
|
||||
(erc-nick "whiteman808")
|
||||
(erc-user-full-name "whiteman808")
|
||||
;; protect me from accidentally sending excess lines
|
||||
(erc-inhibit-multiline-input t)
|
||||
(erc-send-whitespace-lines t)
|
||||
(erc-ask-about-multiline-input t)
|
||||
;; scroll all windows to prompt when submitting input
|
||||
(erc-scrolltobottom-all t)
|
||||
;; reconnect automatically using a fancy strategy
|
||||
(erc-server-reconnect-function #'erc-server-delayed-check-reconnect)
|
||||
(erc-server-reconnect-timeout 30)
|
||||
;; show new buffers in the current window instead of a split
|
||||
(erc-interactive-display 'buffer)
|
||||
;; highlight references to me
|
||||
(erc-keywords '("whiteman808" "whiteman809"))
|
||||
:hook
|
||||
;; automatically connect to irc
|
||||
;; (after-init . (lambda nil
|
||||
;; (pt/erc-connect-network "Libera")
|
||||
;; (pt/erc-connect-network "PIRC")))
|
||||
;; enable matching keywords
|
||||
(erc-mode . erc-match-mode)
|
||||
;; insert a newline when I hit <RET> at the prompt, and prefer
|
||||
;; something more deliberate for actually sending messages
|
||||
;; :bind (:map erc-mode-map
|
||||
;; ("RET" . nil)
|
||||
;; ("C-c C-c" . #'erc-send-current-line))
|
||||
;; emphasize buttonized text in notices
|
||||
:custom-face (erc-notice-face ((t (:slant italic :weight unspecified)))))
|
||||
|
||||
(provide 'erc)
|
||||
;;; erc.el ends here
|
||||
11
profiles/desktop/.emacs.d/modules/misc.el
Normal file
11
profiles/desktop/.emacs.d/modules/misc.el
Normal file
@@ -0,0 +1,11 @@
|
||||
;;; misc.el --- various useful stuff -*- lexical-binding: t -*-
|
||||
;;; Commentary:
|
||||
|
||||
;; stuff related to window manager
|
||||
(use-package i3wm-config-mode
|
||||
:config
|
||||
(add-to-list 'auto-mode-alist '("/sway/.*config.*/" . i3wm-config-mode))
|
||||
(add-to-list 'auto-mode-alist '("/sway/config\\'" . i3wm-config-mode)))
|
||||
|
||||
(provide 'misc)
|
||||
;;; misc.el ends here
|
||||
30
profiles/desktop/.emacs.d/modules/org-mode.el
Normal file
30
profiles/desktop/.emacs.d/modules/org-mode.el
Normal file
@@ -0,0 +1,30 @@
|
||||
;;; org-mode.el --- org mode config -*- lexical-binding: t -*-
|
||||
;;; Commentary:
|
||||
|
||||
;; essential stuff
|
||||
(use-package org
|
||||
:hook
|
||||
(org-mode . (lambda nil
|
||||
(when (display-graphic-p)
|
||||
(org-indent-mode 1))))
|
||||
;; (org-mode . (lambda nil
|
||||
;; (push '("[ ]" . "") prettify-symbols-alist)
|
||||
;; (push '("[X]" . "" ) prettify-symbols-alist)
|
||||
;; (push '("[-]" . "" ) prettify-symbols-alist)
|
||||
;; (prettify-symbols-mode)))
|
||||
:custom
|
||||
(org-hide-leading-stars t)
|
||||
(org-hide-emphasis-markers t))
|
||||
|
||||
;; org-modern
|
||||
(use-package org-modern
|
||||
:custom
|
||||
(org-modern-list
|
||||
'((?- . "•")
|
||||
(?+ . "‣")))
|
||||
:hook
|
||||
(org-mode . org-modern-mode)
|
||||
(org-agenda-finalize . org-modern-agenda))
|
||||
|
||||
(provide 'org-mode)
|
||||
;;; org-mode.el ends here
|
||||
26
profiles/desktop/.emacs.d/modules/package-manager.el
Normal file
26
profiles/desktop/.emacs.d/modules/package-manager.el
Normal file
@@ -0,0 +1,26 @@
|
||||
;;; package-manager.el --- bootstrap straight.el -*- lexical-binding: t -*-
|
||||
;;; Commentary:
|
||||
|
||||
;; bootstrap straight.el
|
||||
(defvar bootstrap-version)
|
||||
(let ((bootstrap-file
|
||||
(expand-file-name
|
||||
"straight/repos/straight.el/bootstrap.el"
|
||||
(or (bound-and-true-p straight-base-dir)
|
||||
user-emacs-directory)))
|
||||
(bootstrap-version 7))
|
||||
(unless (file-exists-p bootstrap-file)
|
||||
(with-current-buffer
|
||||
(url-retrieve-synchronously
|
||||
"https://raw.githubusercontent.com/radian-software/straight.el/develop/install.el"
|
||||
'silent 'inhibit-cookies)
|
||||
(goto-char (point-max))
|
||||
(eval-print-last-sexp)))
|
||||
(load bootstrap-file nil 'nomessage))
|
||||
|
||||
;; configure package manager
|
||||
(straight-use-package 'use-package)
|
||||
(setq straight-use-package-by-default t)
|
||||
|
||||
(provide 'package-manager)
|
||||
;;; package-manager.el ends here
|
||||
171
profiles/desktop/.emacs.d/modules/programming.el
Normal file
171
profiles/desktop/.emacs.d/modules/programming.el
Normal file
@@ -0,0 +1,171 @@
|
||||
;;; programming.el --- core programming settings -*- lexical-binding: t -*-
|
||||
;;; Commentary:
|
||||
|
||||
;; default indentation settings
|
||||
(setq-default indent-tabs-mode nil)
|
||||
(setq-default tab-width 4)
|
||||
|
||||
;; code diagnostics
|
||||
(use-package flycheck
|
||||
:custom
|
||||
(flycheck-display-error-delay 1.0)
|
||||
:hook
|
||||
(prog-mode . (lambda nil
|
||||
(when (not (derived-mode-p 'emacs-lisp-mode))
|
||||
(flycheck-mode))))
|
||||
(yaml-mode . flycheck-mode))
|
||||
|
||||
;; lsp support
|
||||
(use-package lsp-mode
|
||||
:custom
|
||||
(lsp-keymap-prefix "C-c l")
|
||||
(lsp-auto-guess-root t)
|
||||
:hook
|
||||
(prog-mode . (lambda nil
|
||||
(when (not (derived-mode-p 'emacs-lisp-mode))
|
||||
(lsp-deferred))))
|
||||
(TeX-mode . lsp-deferred)
|
||||
(lsp-mode . lsp-enable-which-key-integration))
|
||||
|
||||
(use-package lsp-ui
|
||||
:custom
|
||||
(lsp-ui-sideline-show-diagnostics t)
|
||||
(lsp-ui-sideline-show-hover nil)
|
||||
(lsp-ui-sideline-show-code-actions nil)
|
||||
(lsp-ui-sideline-update-mode 'line)
|
||||
(lsp-ui-peek-enable t)
|
||||
(lsp-ui-peek-show-directory t)
|
||||
(lsp-ui-doc-enable t)
|
||||
(lsp-ui-doc-position 'top)
|
||||
(lsp-ui-doc-side 'right)
|
||||
(lsp-ui-doc-show-with-cursor nil)
|
||||
(lsp-ui-doc-show-with-mouse nil)
|
||||
:bind
|
||||
(:map lsp-ui-mode-map
|
||||
([remap xref-find-definitions] . #'lsp-ui-peek-find-definitions)
|
||||
([remap xref-find-references] . #'lsp-ui-peek-find-references)
|
||||
("C-c l d" . #'lsp-ui-doc-toggle)))
|
||||
|
||||
;; autocompletion
|
||||
(defun pt/company-complete-func nil
|
||||
"Insert the common part of all candidates, or insert <TAB>."
|
||||
(interactive)
|
||||
(when (company-manual-begin)
|
||||
(let ((tick (buffer-chars-modified-tick)))
|
||||
(call-interactively #'company-complete-common)
|
||||
(when (eq tick (buffer-chars-modified-tick))
|
||||
(call-interactively #'company-abort)
|
||||
(call-interactively (key-binding "\t"))))))
|
||||
(use-package company
|
||||
:config
|
||||
(define-key company-active-map (kbd "<tab>") #'pt/company-complete-func)
|
||||
(define-key company-active-map (kbd "<TAB>") #'pt/company-complete-func)
|
||||
(define-key company-active-map (kbd "<backtab>") nil)
|
||||
(define-key company-active-map (kbd "C-p") #'company-cycle-backward)
|
||||
(define-key company-active-map (kbd "C-n") (lambda (&optional arg)
|
||||
(interactive "p")
|
||||
(let ((company-selection-wrap-around t))
|
||||
(call-interactively #'company-select-next))))
|
||||
:custom
|
||||
(company-minimum-prefix-length 1)
|
||||
(company-idle-delay (lambda () (if (company-in-string-or-comment) nil 0.3)))
|
||||
:hook
|
||||
(prog-mode . company-mode)
|
||||
(yaml-mode . company-mode)
|
||||
(TeX-mode . company-mode)
|
||||
(text-mode . company-mode)
|
||||
(conf-mode . company-mode))
|
||||
|
||||
;; project management
|
||||
(use-package projectile
|
||||
:commands projectile-mode
|
||||
:hook (after-init . projectile-mode)
|
||||
:bind
|
||||
(:map projectile-mode-map
|
||||
("C-c p" . #'projectile-command-map)))
|
||||
|
||||
;; web development
|
||||
(use-package web-mode
|
||||
:custom
|
||||
(web-mode-enable-auto-closing t)
|
||||
(web-mode-enable-auto-pairing t)
|
||||
(web-mode-enable-css-colorization t)
|
||||
(web-mode-markup-indent-offset 2)
|
||||
(web-mode-css-indent-offset 2)
|
||||
(web-mode-code-indent-offset 2)
|
||||
(web-mode-style-padding 0)
|
||||
(web-mode-script-padding 0)
|
||||
:mode
|
||||
(("\\.html?\\'" . web-mode)
|
||||
("\\.phtml\\'" . web-mode)
|
||||
("\\.php\\'" . web-mode)
|
||||
("\\.tpl\\'" . web-mode)
|
||||
("\\.[agj]sp\\'" . web-mode)
|
||||
("\\.as[cp]x\\'" . web-mode)
|
||||
("\\.erb\\'" . web-mode)
|
||||
("\\.mustache\\'" . web-mode)
|
||||
("\\.djhtml\\'" . web-mode)))
|
||||
|
||||
;; formatting code
|
||||
(use-package format-all
|
||||
:commands format-all-mode
|
||||
:hook (prog-mode . format-all-mode)
|
||||
:bind ("C-c f" . format-all-buffer)
|
||||
:config
|
||||
(define-format-all-formatter autopep8
|
||||
(:executable "autopep8")
|
||||
(:install "pip install autopep8")
|
||||
(:languages "Python")
|
||||
(:features)
|
||||
(:format (format-all--buffer-easy executable "-")))
|
||||
(define-format-all-formatter dockerfmt
|
||||
(:executable "dockerfmt")
|
||||
(:install "go install github.com/reteps/dockerfmt@latest")
|
||||
(:languages "Dockerfile")
|
||||
(:features)
|
||||
(:format (format-all--buffer-easy executable)))
|
||||
(setq-default format-all-formatters
|
||||
'(("C" (clang-format))
|
||||
("C++" (clang-format))
|
||||
("Shell" (beautysh))
|
||||
("HTML" (prettier))
|
||||
("XHTML" (prettier))
|
||||
("XML" (prettier))
|
||||
("CSS" (prettier))
|
||||
("Less" (prettier))
|
||||
("SCSS" (prettier))
|
||||
("JavaScript" (prettier))
|
||||
("JSON" (prettier))
|
||||
("JSX" (prettier))
|
||||
("TypeScript" (prettier))
|
||||
("TSX" (prettier))
|
||||
("YAML" (prettier))
|
||||
("TOML" (prettier))
|
||||
("LaTeX" (latexindent))
|
||||
("Lua" (stylua))
|
||||
("PHP" (prettier))
|
||||
("Python" (autopep8) (isort))
|
||||
("Perl" (perltidy))
|
||||
("Markdown" (prettier))
|
||||
("Dockerfile" (dockerfmt))
|
||||
("SQL" (pgformatter))
|
||||
("Nginx" (nginxfmt)))))
|
||||
|
||||
;; highlight words like todo
|
||||
(use-package hl-todo
|
||||
:custom
|
||||
(hl-todo-keyword-faces
|
||||
'(("FIXME" error bold)
|
||||
("TODO" org-todo)
|
||||
("DONE" org-done)
|
||||
("NOTE" bold)))
|
||||
:hook (prog-mode . hl-todo-mode))
|
||||
|
||||
;; various useful modes
|
||||
(use-package dockerfile-mode :commands dockerfile-mode)
|
||||
(use-package systemd :commands systemd-mode)
|
||||
(use-package nginx-mode :commands nginx-mode)
|
||||
(use-package yaml-mode :commands yaml-mode)
|
||||
|
||||
(provide 'programming)
|
||||
;;; programming.el ends here
|
||||
22
profiles/desktop/.emacs.d/modules/sysadm.el
Normal file
22
profiles/desktop/.emacs.d/modules/sysadm.el
Normal file
@@ -0,0 +1,22 @@
|
||||
;;; sysadm.el --- system administration stuff -*- lexical-binding: t -*-
|
||||
;;; Commentary:
|
||||
|
||||
;; terminal
|
||||
(use-package eat
|
||||
:straight (eat :type git
|
||||
:host codeberg
|
||||
:repo "akib/emacs-eat"
|
||||
:files ("*.el" ("term" "term/*.el") "*.texi"
|
||||
"*.ti" ("terminfo/e" "terminfo/e/*")
|
||||
("terminfo/65" "terminfo/65/*")
|
||||
("integration" "integration/*")
|
||||
(:exclude ".dir-locals.el" "*-tests.el"))))
|
||||
;; (use-package vterm)
|
||||
|
||||
;; developing pkgbuilds for arch linux
|
||||
(use-package pkgbuild-mode
|
||||
:commands pkgbuild-mode
|
||||
:mode "/PKGBUILD$")
|
||||
|
||||
(provide 'sysadm)
|
||||
;;; sysadm.el ends here
|
||||
89
profiles/desktop/.emacs.d/modules/user-interface.el
Normal file
89
profiles/desktop/.emacs.d/modules/user-interface.el
Normal file
@@ -0,0 +1,89 @@
|
||||
;;; user-interface.el --- user interface config -*- lexical-binding: t -*-
|
||||
;;; Commentary:
|
||||
|
||||
;; don't show startup message
|
||||
(setq inhibit-startup-screen t)
|
||||
|
||||
;; improve user interface
|
||||
(menu-bar-mode -1)
|
||||
(tool-bar-mode -1)
|
||||
(scroll-bar-mode -1)
|
||||
(defalias 'yes-or-no-p 'y-or-n-p) ; for portability
|
||||
(setopt use-short-answers t)
|
||||
|
||||
;; enable copy-pasting outside of emacs
|
||||
(setq x-select-enable-clipboard t)
|
||||
|
||||
;; disable ring bell sound
|
||||
(setq ring-bell-function 'ignore)
|
||||
|
||||
;; prefer vertical splits
|
||||
(setq split-width-threshold nil)
|
||||
|
||||
;; automatically wrap lines
|
||||
(global-visual-line-mode 1)
|
||||
|
||||
;; set default font
|
||||
(set-face-attribute 'default nil
|
||||
:family "Hack"
|
||||
:height 140
|
||||
:weight 'normal
|
||||
:width 'normal)
|
||||
(set-fontset-font t 'unicode (font-spec :family "Hack Nerd Font Mono" :height 200) nil)
|
||||
(set-fontset-font t 'symbol (font-spec :family "Font Awesome 7 Free" :height 200) nil)
|
||||
|
||||
;; color scheme
|
||||
(use-package catppuccin-theme
|
||||
:custom (catppuccin-flavor 'mocha)
|
||||
:config
|
||||
(set-frame-parameter nil 'alpha-background 80)
|
||||
(add-to-list 'default-frame-alist '(alpha-background . 80))
|
||||
(if (daemonp)
|
||||
(add-hook 'after-make-frame-functions (lambda (frame)
|
||||
(select-frame frame)
|
||||
(catppuccin-set-color 'base "unspecified-bg" 'mocha)
|
||||
(load-theme 'catppuccin t)))
|
||||
(progn (catppuccin-set-color 'base "#000000" 'mocha)
|
||||
(load-theme 'catppuccin :no-confirm))))
|
||||
|
||||
;; set transparency when running emacs in terminal
|
||||
(defun on-after-init ()
|
||||
(unless (display-graphic-p (selected-frame))
|
||||
(set-face-background 'default "unspecified-bg" (selected-frame))))
|
||||
(add-hook 'window-setup-hook 'on-after-init)
|
||||
|
||||
;; mode line
|
||||
(use-package doom-modeline
|
||||
:hook (after-init . doom-modeline-mode))
|
||||
|
||||
;; set cursor type and disable cursor blinking
|
||||
(blink-cursor-mode -1)
|
||||
(setq-default cursor-type '(hbar . 1))
|
||||
|
||||
;; display line numbers
|
||||
(setq display-line-numbers-width-start t)
|
||||
(dolist (mode '(prog-mode-hook
|
||||
yaml-mode-hook
|
||||
TeX-mode-hook
|
||||
markdown-mode-hook
|
||||
org-mode-hook
|
||||
conf-mode-hook))
|
||||
(add-hook mode #'display-line-numbers-mode))
|
||||
|
||||
;; enable commands hinting when pressing keys
|
||||
(which-key-mode 1)
|
||||
|
||||
;; better help
|
||||
(use-package helpful
|
||||
:bind
|
||||
(("C-h f" . helpful-callable)
|
||||
("C-h v" . helpful-variable)
|
||||
("C-h k" . helpful-key)
|
||||
("C-h x" . helpful-command)))
|
||||
|
||||
;; better switching between windows
|
||||
(use-package ace-window
|
||||
:bind ("M-o" . ace-window))
|
||||
|
||||
(provide 'user-interface)
|
||||
;;; user-interface.el ends here
|
||||
Reference in New Issue
Block a user