modular features framework
This commit is contained in:
parent
aeebec61e1
commit
b31053b761
|
|
@ -1,11 +0,0 @@
|
|||
;;; feature-apitest.el --- Brief description -*- lexical-binding: t; -*-
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'feature-pkg)
|
||||
|
||||
(pkg/require 'plz)
|
||||
|
||||
(provide 'feature-apitest)
|
||||
|
||||
;;; feature-apitest.el ends here.
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
;;; feature-async.el --- async functionality -*- lexical-binding: t; -*-
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'feature-pkg)
|
||||
|
||||
(pkg/require 'async)
|
||||
(pkg/require 'async-status)
|
||||
|
||||
(provide 'feature-async)
|
||||
|
||||
;;; feature-async.el ends here.
|
||||
|
|
@ -1,91 +1,27 @@
|
|||
;;; feature-base.el -- configure emacs behavior and user interface
|
||||
;;; feature-base.el -- defines the "base" configuration
|
||||
;;;
|
||||
;;; Commentary:
|
||||
;;; Exactly what it looks like.
|
||||
;;;
|
||||
;;; This file defines what modules should be loaded as part of the
|
||||
;;; "basic" editor configuration.
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(message "Loading base features...")
|
||||
(require 'module-base)
|
||||
(require 'module-detached)
|
||||
(require 'module-dired)
|
||||
(require 'module-async)
|
||||
(require 'module-alioth)
|
||||
(require 'module-which-key)
|
||||
(require 'module-multi-cursor)
|
||||
(require 'module-eshell)
|
||||
(require 'module-scratch)
|
||||
(require 'module-eyecandy)
|
||||
(require 'module-avy)
|
||||
(require 'module-snippets)
|
||||
(require 'module-browser)
|
||||
|
||||
|
||||
(defun copy-file-path-to-clipboard ()
|
||||
"Copy the current buffer's file path to the clipboard."
|
||||
(interactive)
|
||||
(let ((filepath (buffer-file-name)))
|
||||
(when filepath
|
||||
(kill-new filepath)
|
||||
(message "Copied file path: %s" filepath))))
|
||||
|
||||
(defun my-compile-init-file ()
|
||||
"Compile the init file."
|
||||
(let ((init-file (file-truename user-init-file)))
|
||||
(when (string= (buffer-file-name) init-file)
|
||||
(byte-compile-file init-file))))
|
||||
|
||||
(defun my/setup-elisp-formatting-key ()
|
||||
"Set up the formatting key for Emacs Lisp buffers."
|
||||
(local-set-key (kbd "C-c f") 'my/format-elisp-buffer))
|
||||
(add-hook 'emacs-lisp-mode-hook #'my/setup-elisp-formatting-key)
|
||||
|
||||
(defun my/reload-init-file ()
|
||||
"Reload the Emacs init file."
|
||||
(interactive)
|
||||
(load-file user-init-file))
|
||||
|
||||
(defun my/format-elisp-buffer ()
|
||||
"Format the whole elisp buffer."
|
||||
(interactive)
|
||||
(save-excursion
|
||||
(indent-region (point-min) (point-max))))
|
||||
|
||||
(tool-bar-mode -1)
|
||||
(setq backup-by-copying t
|
||||
completion-cycle-threshold 3
|
||||
create-lockfiles nil
|
||||
delete-old-versions t
|
||||
enable-recursive-minibuffers t
|
||||
focus-follows-mouse t
|
||||
indent-tabs-mode nil
|
||||
inhibit-startup-screen t
|
||||
kept-new-versions 20
|
||||
kept-old-versions 2
|
||||
minibuffer-prompt-properties '(read-only t cursor-intangible t
|
||||
face minibuffer-prompt)
|
||||
mouse-autoselect-window t
|
||||
read-extended-command-predicate #'command-completion-default-include-p
|
||||
read-process-output-max (* 1024 1024)
|
||||
tab-always-indent 'complete
|
||||
tab-width 4
|
||||
use-short-answers t
|
||||
version-control t
|
||||
backup-directory-alist `((".*" . ,(concat user-emacs-directory "backup")))
|
||||
read-extended-command-predicate #'command-completion-default-include-p
|
||||
gc-cons-threshold 100000000
|
||||
auth-sources '("~/.authinfo.gpg")
|
||||
warning-minimum-level :emergency
|
||||
text-mode-ispell-word-completion nil
|
||||
tramp-persistency-file-name "~/.config/emacs/tramp"
|
||||
tramp-inline-compress-start-size 1000)
|
||||
|
||||
;; load custom file
|
||||
(setq custom-file (expand-file-name "custom.el" user-emacs-directory))
|
||||
(when (file-exists-p custom-file)
|
||||
(load custom-file))
|
||||
|
||||
;; compile init.el on save
|
||||
(add-hook 'after-save-hook #'my-compile-init-file)
|
||||
|
||||
;; setup base key bindings
|
||||
(global-set-key (kbd "M-/") 'dabbrev-expand)
|
||||
(global-set-key (kbd "M-s r") 'replace-regexp)
|
||||
(global-set-key (kbd "M-s M-r") 'replace-string)
|
||||
(global-set-key (kbd "C-x E n p") #'narrow-to-page)
|
||||
(global-set-key (kbd "C-x E n f") #'narrow-to-defun)
|
||||
(global-set-key (kbd "C-x E n r") #'narrow-to-region)
|
||||
(global-set-key (kbd "C-x E w") #'widen)
|
||||
(global-set-key (kbd "C-x c r") #'my/reload-init-file)
|
||||
(global-set-key (kbd "C-x y b p") 'copy-file-path-to-clipboard)
|
||||
|
||||
(provide 'feature-base)
|
||||
|
||||
;;; feature-base.el ends here.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,14 @@
|
|||
;;; feature-better-minibuf.el -- knowledge management
|
||||
;;;
|
||||
;;; Commentary:
|
||||
;;;
|
||||
;;; Loads modules related to knowledge management.
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(require 'module-vertico)
|
||||
(require 'module-embark)
|
||||
|
||||
(provide 'feature-better-minibuf)
|
||||
|
||||
;;; feature-better-minibuf.el ends here.
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
;;; feature-bsgen.el -- bullshit generators
|
||||
;;;
|
||||
;;; Commentary:
|
||||
;;;
|
||||
;;; Loads modules related to generating plausible sounding bullshit.
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(require 'module-llm)
|
||||
|
||||
(provide 'feature-bsgen)
|
||||
;;; feature-bsgen.el ends here.
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
;;; feature-completion.el -- knowledge management
|
||||
;;;
|
||||
;;; Commentary:
|
||||
;;;
|
||||
;;; Loads modules related to knowledge management.
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(require 'module-orderless)
|
||||
|
||||
|
||||
(provide 'feature-completion)
|
||||
|
||||
;;; feature-completion.el ends here.
|
||||
|
|
@ -1,53 +1,14 @@
|
|||
;;; feature-consult.el --- setup consult for emacs
|
||||
;;; feature-consult.el -- knowledge management
|
||||
;;;
|
||||
;;; Commentary:
|
||||
;;; Setup consult for Emacs.
|
||||
;;;
|
||||
;;; Loads modules related to knowledge management.
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(require 'feature-pkg)
|
||||
(pkg/require 'consult)
|
||||
|
||||
(setq consult-preview-key nil)
|
||||
|
||||
;; use ripgrep
|
||||
(setq consult-ripgrep-command "rg --null --line-buffered --color=ansi --max-columns=1000 --no-heading --line-number . -e ARG OPTS")
|
||||
(setq consult-grep-command "rg --null --line-buffered --color=ansi --max-columns=1000 --no-heading --line-number . -e ARG OPTS")
|
||||
|
||||
;; mode-specific histories
|
||||
(setq consult-mode-histories
|
||||
'((comint-mode . comint-input-ring)
|
||||
(eshell-mode . eshell-history-ring)
|
||||
(geiser-repl-mode . geiser-repl--history)
|
||||
(inferior-python-mode . comint-input-ring)
|
||||
(minibuffer-local-map . consult-history)))
|
||||
|
||||
(consult-customize
|
||||
consult-theme
|
||||
:preview-key '(:debounce 0.2 any)
|
||||
consult-ripgrep consult-git-grep consult-grep
|
||||
consult-bookmark consult-recent-file consult-xref
|
||||
consult--source-bookmark consult--source-recent-file
|
||||
consult--source-project-recent-file
|
||||
:preview-key '(:debounce 0.4 any))
|
||||
|
||||
;; async search
|
||||
(setq consult-async-min-input 2
|
||||
consult-async-refresh-delay 0.15
|
||||
consult-async-input-throttle 0.2
|
||||
consult-async-input-debounce 0.1)
|
||||
|
||||
;; select xref locations with preview
|
||||
(setq xref-show-xrefs-function #'consult-xref
|
||||
xref-show-definitions-function #'consult-xref)
|
||||
|
||||
(global-set-key (kbd "C-s") #'consult-line)
|
||||
(global-set-key (kbd "C-r") #'consult-line-multi)
|
||||
(global-set-key (kbd "C-c h") #'consult-history)
|
||||
(global-set-key (kbd "C-c m") #'consult-mode-command)
|
||||
(global-set-key (kbd "C-c k") #'consult-kmacro)
|
||||
(global-set-key (kbd "C-c s") #'consult-ripgrep)
|
||||
|
||||
(require 'module-consult)
|
||||
(require 'module-consult-projectile)
|
||||
|
||||
(provide 'feature-consult)
|
||||
|
||||
;;; feature-consult.el ends here.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,24 @@
|
|||
;;; feature-dev.el -- knowledge management
|
||||
;;;
|
||||
;;; Commentary:
|
||||
;;;
|
||||
;;; Loads modules related to knowledge management.
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(require 'module-ctags)
|
||||
(require 'module-golang)
|
||||
(require 'module-golang-playground)
|
||||
(require 'module-python)
|
||||
(require 'module-web)
|
||||
(require 'module-protobuf)
|
||||
(require 'module-kotlin)
|
||||
(require 'module-yaml)
|
||||
(require 'module-json)
|
||||
(require 'module-rego)
|
||||
(require 'module-syntax)
|
||||
(require 'module-lmtf)
|
||||
(require 'module-apitest)
|
||||
|
||||
(provide 'feature-dev)
|
||||
;;; feature-dev.el ends here.
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
;;; feature-diagram.el -- diagramming modules
|
||||
;;;
|
||||
;;; Commentary:
|
||||
;;;
|
||||
;;; Loads modules related to diagramming.
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(require 'module-graphviz)
|
||||
(require 'module-plantuml)
|
||||
|
||||
(provide 'feature-diagram)
|
||||
;;; feature-diagram.el ends here.
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
;;; feature-feeds.el -- knowledge management
|
||||
;;;
|
||||
;;; Commentary:
|
||||
;;;
|
||||
;;; Loads modules related to knowledge management.
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(require 'module-rss)
|
||||
|
||||
(provide 'feature-feeds)
|
||||
|
||||
;;; feature-feeds.el ends here.
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
;;; feature-fuzzy.el -- fuzzy search
|
||||
;;;
|
||||
;;; Commentary:
|
||||
;;;
|
||||
;;; Loads modules related to knowledge management.
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
|
||||
(provide 'feature-fuzzy)
|
||||
;;; feature-fuzzy.el ends here.
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
;;; feature-golang-playground.el --- Brief description -*- lexical-binding: t; -*-
|
||||
;;; Commentary:
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'feature-pkg)
|
||||
|
||||
(pkg/require 'go-playground)
|
||||
|
||||
(provide 'feature-golang-playground)
|
||||
|
||||
;;; feature-golang-playground.el ends here.
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
;;; feature-json.el --- Brief description -*- lexical-binding: t; -*-
|
||||
;;; Commentary:
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'feature-pkg)
|
||||
|
||||
(pkg/require 'json-mode)
|
||||
|
||||
(add-to-list 'auto-mode-alist '("\\.json$" . json-mode))
|
||||
|
||||
(provide 'feature-json)
|
||||
|
||||
;;; feature-json.el ends here.
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
;;; feature-km.el -- knowledge management
|
||||
;;;
|
||||
;;; Commentary:
|
||||
;;;
|
||||
;;; Loads modules related to knowledge management.
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(require 'module-org)
|
||||
(require 'module-org-denote)
|
||||
(require 'module-denote)
|
||||
(require 'module-denote-multidir)
|
||||
(require 'module-denote-index)
|
||||
|
||||
(provide 'feature-km)
|
||||
;;; feature-km.el ends here.
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
;;; feature-kotlin.el --- Brief description -*- lexical-binding: t; -*-
|
||||
;;; Commentary:
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'feature-pkg)
|
||||
(pkg/require 'kotlin-mode)
|
||||
|
||||
;;(add-to-list 'auto-mode-alist ("\\.kt$" . kotlin-mode))
|
||||
|
||||
(provide 'feature-kotlin)
|
||||
|
||||
;;; feature-kotlin.el ends here.
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
;;; feature-project.el -- knowledge management
|
||||
;;;
|
||||
;;; Commentary:
|
||||
;;;
|
||||
;;; Loads modules related to knowledge management.
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(require 'module-projectile)
|
||||
|
||||
(provide 'feature-project)
|
||||
;;; feature-project.el ends here.
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
;;; feature-projectile.el --- project management
|
||||
;;; Commentary:
|
||||
;;; Project management for Emacs nerds.
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(require 'feature-pkg)
|
||||
(pkg/require 'projectile)
|
||||
|
||||
(projectile-mode +1)
|
||||
|
||||
(provide 'feature-projectile)
|
||||
|
||||
;;; feature-projectile.el ends here.
|
||||
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
;;; feature-protobuf.el --- Brief description -*- lexical-binding: t; -*-
|
||||
;;; Commentary:
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'feature-pkg)
|
||||
|
||||
(pkg/require 'protobuf-mode)
|
||||
|
||||
(add-to-list 'auto-mode-alist '("\\.proto$" . protobuf-mode))
|
||||
|
||||
(provide 'feature-protobuf)
|
||||
|
||||
;;; feature-protobuf.el ends here.
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
;;; feature-browser.el --- Brief description -*- lexical-binding: t; -*-
|
||||
;;; Commentary:
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'feature-pkg)
|
||||
|
||||
(pkg/require 'rego-mode)
|
||||
|
||||
(provide 'feature-rego)
|
||||
|
||||
;;; feature-rego.el ends here.
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
;;; feature-orderless.el --- rss feeds in emacs
|
||||
;;; Commentary:
|
||||
;;; Read RSS feeds in Emacs, stop browsing the web.
|
||||
;;;
|
||||
;;; Code:
|
||||
(require 'feature-pkg)
|
||||
|
||||
(pkg/require 'elfeed)
|
||||
|
||||
(provide 'feature-rss)
|
||||
|
||||
;;; feature-rss.el ends here.
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
;;; feature-vcs.el -- version control systems
|
||||
;;;
|
||||
;;; Commentary:
|
||||
;;;
|
||||
;;; Loads modules related to version control.
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(require 'module-magit)
|
||||
|
||||
(provide 'feature-vcs)
|
||||
;;; feature-vcs.el ends here.
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
;;; feature-which-key.el --- Brief description -*- lexical-binding: t; -*-
|
||||
;;; Commentary:
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'feature-pkg)
|
||||
|
||||
(pkg/require 'which-key)
|
||||
|
||||
(which-key-mode)
|
||||
|
||||
(provide 'feature-which-key)
|
||||
|
||||
;;; feature-which-key.el ends here.
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
;;; feature-yaml.el --- Brief description -*- lexical-binding: t; -*-
|
||||
;;; Commentary:
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'feature-pkg)
|
||||
(pkg/require 'yaml-mode)
|
||||
|
||||
(add-to-list 'auto-mode-alist '("\\.yml$" . yaml-mode))
|
||||
|
||||
(provide 'feature-yaml)
|
||||
|
||||
;;; feature-yaml.el ends here.
|
||||
|
|
@ -1,6 +1,13 @@
|
|||
;;; init.el --- Emacs configuration entry point
|
||||
;;; Commentary:
|
||||
;;; Configure Emacs.
|
||||
;;;
|
||||
;;; Configure Emacs. In this configuration, a "module" is a logical
|
||||
;;; unit of functionality, e.g., org or denote. The "module" consists
|
||||
;;; of loading and configuring zero or more Emacs packages. The
|
||||
;;; "feature" layer is designed to allow users to compose modules to
|
||||
;;; build features. A "feature" defines a larger capability composed
|
||||
;;; of zero or more modules (noting that a zero-module feature is
|
||||
;;; noop).
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
|
|
@ -14,57 +21,20 @@
|
|||
;; setup load paths
|
||||
(add-to-list 'load-path (expand-file-name "cfg" user-emacs-directory))
|
||||
(add-to-list 'load-path (expand-file-name "lisp" user-emacs-directory))
|
||||
(let* ((feature-directory (file-truename (expand-file-name "feature" user-emacs-directory)))
|
||||
(default-directory feature-directory))
|
||||
(add-to-list 'load-path feature-directory)
|
||||
(normal-top-level-add-subdirs-to-load-path))
|
||||
(add-to-list 'load-path (expand-file-name "module" user-emacs-directory))
|
||||
(add-to-list 'load-path (expand-file-name "feature" user-emacs-directory))
|
||||
|
||||
;; load base configuration and additional features
|
||||
(require 'feature-base) ; prep the beast
|
||||
(require 'feature-pkg) ; this comes right after feature-base
|
||||
(require 'feature-dired) ; dired stuff
|
||||
(require 'feature-async) ; asynchronous functions in emacs
|
||||
(require 'feature-alioth) ; when one computer isn't enough
|
||||
(require 'feature-which-key) ; memorization is for the birds
|
||||
(require 'feature-multi-cursor) ; do repeat yourself
|
||||
(require 'feature-org) ; when markdown isn't good enough
|
||||
(require 'feature-org-denote) ; denote extensions for org
|
||||
(require 'feature-ctags) ; a fork for your spaghetti
|
||||
(require 'feature-detached) ; attachment causes suffering
|
||||
(require 'feature-denote) ; a second brain
|
||||
(require 'feature-denote-multidir) ; a third, fourth, ... brain
|
||||
(require 'feature-denote-index) ; manage second-brain dementia
|
||||
(require 'feature-eyecandy) ; eye candy (themes, modeline...)
|
||||
(require 'feature-magit) ; git stuff
|
||||
(require 'feature-graphviz) ; diagrams for old people
|
||||
(require 'feature-plantuml) ; diagrams for less-old people
|
||||
(require 'feature-golang) ; gophers unite
|
||||
(require 'feature-golang-playground) ; for playing with go code
|
||||
(require 'feature-python) ; code that eats itself
|
||||
(require 'feature-web) ; a veritable fucking mess
|
||||
(require 'feature-protobuf) ; some google messaging shit
|
||||
(require 'feature-kotlin) ; java for the only mildly insane
|
||||
(require 'feature-yaml) ; because we all have to deal with it
|
||||
(require 'feature-json) ; data for argonauts
|
||||
(require 'feature-rego) ; some policy language we use at work
|
||||
(require 'feature-syntax) ; track wip, compile into submission
|
||||
(require 'feature-eshell) ; elisp shell
|
||||
(require 'feature-scratch) ; extend scratch buffers
|
||||
(require 'feature-orderless) ; fuzzy search
|
||||
(require 'feature-vertico) ; better minibuffer
|
||||
(require 'feature-embark) ; woof!
|
||||
(require 'feature-consult) ; consult
|
||||
(require 'feature-projectile) ; project management for nerds
|
||||
(require 'feature-consult-projectile) ; consult-projectile
|
||||
(require 'feature-rss) ; web browsing sucks
|
||||
(require 'feature-llm) ; generate some bullshit
|
||||
(require 'feature-snippets) ; lazy code generator
|
||||
(require 'feature-browser) ; when we really have to browse...
|
||||
(require 'feature-lmtf) ; lispy mctestface
|
||||
(require 'feature-apitest) ; api testing capabilities
|
||||
(require 'feature-avy) ; avy for quick jumping
|
||||
(require 'feature-base) ; prep the beast
|
||||
(require 'feature-km) ; knowledge management
|
||||
(require 'feature-better-minibuf) ; better minibuffer
|
||||
(require 'feature-completion) ; automatic completion
|
||||
(require 'feature-dev) ; coding
|
||||
(require 'feature-vcs) ; version control
|
||||
(require 'feature-diagram) ; diagramming in plain text!
|
||||
(require 'feature-project) ; project support
|
||||
(require 'feature-consult) ; consult is its own feature...
|
||||
(require 'feature-feeds) ; read newsfeeds
|
||||
|
||||
;; theme
|
||||
(load-theme 'misterioso)
|
||||
|
||||
;;; init.el ends here
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
;;; feature-alioth.el --- alioth automount -*- lexical-binding: t; -*-
|
||||
;;; module-alioth.el --- alioth automount -*- lexical-binding: t; -*-
|
||||
;;;
|
||||
;;; Commentary:
|
||||
;;; Automount alioth on demand.
|
||||
|
|
@ -35,6 +35,6 @@
|
|||
(expand-file-name default-directory))
|
||||
(ensure-alioth-mounted))))
|
||||
|
||||
(provide 'feature-alioth)
|
||||
(provide 'module-alioth)
|
||||
|
||||
;;; feature-alioth.el ends here.
|
||||
;;; module-alioth.el ends here.
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
;;; module-apitest.el --- Brief description -*- lexical-binding: t; -*-
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'module-pkg)
|
||||
|
||||
(pkg/require 'plz)
|
||||
|
||||
(provide 'module-apitest)
|
||||
|
||||
;;; module-apitest.el ends here.
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
;;; module-async.el --- async functionality -*- lexical-binding: t; -*-
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'module-pkg)
|
||||
|
||||
(pkg/require 'async)
|
||||
(pkg/require 'async-status)
|
||||
|
||||
(provide 'module-async)
|
||||
|
||||
;;; module-async.el ends here.
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
;;; feature-alioth.el --- alioth automounts -*- lexical-binding: t; -*-
|
||||
;;; module-alioth.el --- alioth automounts -*- lexical-binding: t; -*-
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
|
|
@ -21,6 +21,6 @@
|
|||
(let ((default-directory "~"))
|
||||
(shell-command "sshfs lkn@alioth.uberspace.de:/home/lkn/ ~/alioth")))
|
||||
|
||||
(provide 'feature-alioth)
|
||||
(provide 'module-alioth)
|
||||
|
||||
;;; feature-alioth.el ends here.
|
||||
;;; module-alioth.el ends here.
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
;;; feature-avy.el --- package management wrapper -*- lexical-binding: t; -*-
|
||||
;;; module-avy.el --- package management wrapper -*- lexical-binding: t; -*-
|
||||
;;;
|
||||
;;; Commentary:
|
||||
;;; Provides package management wrappers.
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(require 'feature-pkg)
|
||||
(require 'module-pkg)
|
||||
|
||||
(pkg/require 'avy)
|
||||
|
||||
|
|
@ -18,6 +18,6 @@
|
|||
(global-set-key (kbd "C-x j w") #'avy-goto-word-1)
|
||||
(global-set-key (kbd "C-x j .") #'avy-resume)
|
||||
|
||||
(provide 'feature-avy)
|
||||
(provide 'module-avy)
|
||||
|
||||
;;; feature-avy.el ends here.
|
||||
;;; module-avy.el ends here.
|
||||
|
|
@ -0,0 +1,88 @@
|
|||
;;; module-base.el -- configure emacs behavior and user interface
|
||||
;;;
|
||||
;;; Commentary:
|
||||
;;; Exactly what it looks like.
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(defun copy-file-path-to-clipboard ()
|
||||
"Copy the current buffer's file path to the clipboard."
|
||||
(interactive)
|
||||
(let ((filepath (buffer-file-name)))
|
||||
(when filepath
|
||||
(kill-new filepath)
|
||||
(message "Copied file path: %s" filepath))))
|
||||
|
||||
(defun my-compile-init-file ()
|
||||
"Compile the init file."
|
||||
(let ((init-file (file-truename user-init-file)))
|
||||
(when (string= (buffer-file-name) init-file)
|
||||
(byte-compile-file init-file))))
|
||||
|
||||
(defun my/setup-elisp-formatting-key ()
|
||||
"Set up the formatting key for Emacs Lisp buffers."
|
||||
(local-set-key (kbd "C-c f") 'my/format-elisp-buffer))
|
||||
(add-hook 'emacs-lisp-mode-hook #'my/setup-elisp-formatting-key)
|
||||
|
||||
(defun my/reload-init-file ()
|
||||
"Reload the Emacs init file."
|
||||
(interactive)
|
||||
(load-file user-init-file))
|
||||
|
||||
(defun my/format-elisp-buffer ()
|
||||
"Format the whole elisp buffer."
|
||||
(interactive)
|
||||
(save-excursion
|
||||
(indent-region (point-min) (point-max))))
|
||||
|
||||
(tool-bar-mode -1)
|
||||
(setq backup-by-copying t
|
||||
completion-cycle-threshold 3
|
||||
create-lockfiles nil
|
||||
delete-old-versions t
|
||||
enable-recursive-minibuffers t
|
||||
focus-follows-mouse t
|
||||
indent-tabs-mode nil
|
||||
inhibit-startup-screen t
|
||||
kept-new-versions 20
|
||||
kept-old-versions 2
|
||||
minibuffer-prompt-properties '(read-only t cursor-intangible t
|
||||
face minibuffer-prompt)
|
||||
mouse-autoselect-window t
|
||||
read-extended-command-predicate #'command-completion-default-include-p
|
||||
read-process-output-max (* 1024 1024)
|
||||
tab-always-indent 'complete
|
||||
tab-width 4
|
||||
use-short-answers t
|
||||
version-control t
|
||||
backup-directory-alist `((".*" . ,(concat user-emacs-directory "backup")))
|
||||
read-extended-command-predicate #'command-completion-default-include-p
|
||||
gc-cons-threshold 100000000
|
||||
auth-sources '("~/.authinfo.gpg")
|
||||
warning-minimum-level :emergency
|
||||
text-mode-ispell-word-completion nil
|
||||
tramp-persistency-file-name "~/.config/emacs/tramp"
|
||||
tramp-inline-compress-start-size 1000)
|
||||
|
||||
;; load custom file
|
||||
(setq custom-file (expand-file-name "custom.el" user-emacs-directory))
|
||||
(when (file-exists-p custom-file)
|
||||
(load custom-file))
|
||||
|
||||
;; compile init.el on save
|
||||
(add-hook 'after-save-hook #'my-compile-init-file)
|
||||
|
||||
;; setup base key bindings
|
||||
(global-set-key (kbd "M-/") 'dabbrev-expand)
|
||||
(global-set-key (kbd "M-s r") 'replace-regexp)
|
||||
(global-set-key (kbd "M-s M-r") 'replace-string)
|
||||
(global-set-key (kbd "C-x E n p") #'narrow-to-page)
|
||||
(global-set-key (kbd "C-x E n f") #'narrow-to-defun)
|
||||
(global-set-key (kbd "C-x E n r") #'narrow-to-region)
|
||||
(global-set-key (kbd "C-x E w") #'widen)
|
||||
(global-set-key (kbd "C-x c r") #'my/reload-init-file)
|
||||
(global-set-key (kbd "C-x y b p") 'copy-file-path-to-clipboard)
|
||||
|
||||
(provide 'module-base)
|
||||
|
||||
;;; module-base.el ends here.
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
;;; feature-browser.el --- Brief description -*- lexical-binding: t; -*-
|
||||
;;; module-browser.el --- Brief description -*- lexical-binding: t; -*-
|
||||
;;; Commentary:
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'eww)
|
||||
(setq shr-max-image-proportion 0.7)
|
||||
(setq shr-image-animate nil)
|
||||
(setq shr-max-image-proportion 0.7)
|
||||
(setq shr-image-animate nil)
|
||||
(setq browse-url-browser-function 'eww-browse-url)
|
||||
|
||||
;; for pages that require JS for some stupid reason...
|
||||
|
|
@ -21,6 +21,6 @@
|
|||
|
||||
(define-key eww-mode-map (kbd "C-c o") 'eww-open-in-default-browser)
|
||||
|
||||
(provide 'feature-browser)
|
||||
(provide 'module-browser)
|
||||
|
||||
;;; feature-browser.el ends here.
|
||||
;;; module-browser.el ends here.
|
||||
|
|
@ -1,12 +1,12 @@
|
|||
;;; feature-consult-projectile.el --- consult/projectile integration
|
||||
;;; module-consult-projectile.el --- consult/projectile integration
|
||||
;;; Commentary:
|
||||
;;; Integrate consult and projectile.
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(require 'feature-pkg)
|
||||
(require 'feature-consult)
|
||||
(require 'feature-projectile)
|
||||
(require 'module-pkg)
|
||||
(require 'module-consult)
|
||||
(require 'module-projectile)
|
||||
|
||||
(pkg/require 'consult-projectile)
|
||||
|
||||
|
|
@ -34,6 +34,6 @@
|
|||
(define-key projectile-command-map (kbd "/") #'consult-ripgrep)
|
||||
(define-key projectile-command-map (kbd "f") #'my-consult-projectile-find-file)
|
||||
|
||||
(provide 'feature-consult-projectile)
|
||||
(provide 'module-consult-projectile)
|
||||
|
||||
;;; feature-consult-projectile.el ends here.
|
||||
;;; module-consult-projectile.el ends here.
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
;;; module-consult.el --- setup consult for emacs
|
||||
;;; Commentary:
|
||||
;;; Setup consult for Emacs.
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(require 'module-pkg)
|
||||
(pkg/require 'consult)
|
||||
|
||||
(setq consult-preview-key nil)
|
||||
|
||||
;; use ripgrep
|
||||
(setq consult-ripgrep-command "rg --null --line-buffered --color=ansi --max-columns=1000 --no-heading --line-number . -e ARG OPTS")
|
||||
(setq consult-grep-command "rg --null --line-buffered --color=ansi --max-columns=1000 --no-heading --line-number . -e ARG OPTS")
|
||||
|
||||
;; mode-specific histories
|
||||
(setq consult-mode-histories
|
||||
'((comint-mode . comint-input-ring)
|
||||
(eshell-mode . eshell-history-ring)
|
||||
(geiser-repl-mode . geiser-repl--history)
|
||||
(inferior-python-mode . comint-input-ring)
|
||||
(minibuffer-local-map . consult-history)))
|
||||
|
||||
(consult-customize
|
||||
consult-theme
|
||||
:preview-key '(:debounce 0.2 any)
|
||||
consult-ripgrep consult-git-grep consult-grep
|
||||
consult-bookmark consult-recent-file consult-xref
|
||||
consult--source-bookmark consult--source-recent-file
|
||||
consult--source-project-recent-file
|
||||
:preview-key '(:debounce 0.4 any))
|
||||
|
||||
;; async search
|
||||
(setq consult-async-min-input 2
|
||||
consult-async-refresh-delay 0.15
|
||||
consult-async-input-throttle 0.2
|
||||
consult-async-input-debounce 0.1)
|
||||
|
||||
;; select xref locations with preview
|
||||
(setq xref-show-xrefs-function #'consult-xref
|
||||
xref-show-definitions-function #'consult-xref)
|
||||
|
||||
(global-set-key (kbd "C-s") #'consult-line)
|
||||
(global-set-key (kbd "C-r") #'consult-line-multi)
|
||||
(global-set-key (kbd "C-c h") #'consult-history)
|
||||
(global-set-key (kbd "C-c m") #'consult-mode-command)
|
||||
(global-set-key (kbd "C-c k") #'consult-kmacro)
|
||||
(global-set-key (kbd "C-c s") #'consult-ripgrep)
|
||||
|
||||
|
||||
(provide 'module-consult)
|
||||
|
||||
;;; module-consult.el ends here.
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
;;; feature-ctags.el --- Brief description -*- lexical-binding: t; -*-
|
||||
;;; module-ctags.el --- Brief description -*- lexical-binding: t; -*-
|
||||
;;; Commentary:
|
||||
|
||||
;;; Code:
|
||||
|
|
@ -15,6 +15,6 @@
|
|||
|
||||
(global-set-key (kbd "C-x E t") 'generate-tags-for-directory)
|
||||
|
||||
(provide 'feature-ctags)
|
||||
(provide 'module-ctags)
|
||||
|
||||
;;; feature-ctags.el ends here.
|
||||
;;; module-ctags.el ends here.
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
;;; feature-denote-index.el -- index and metadata for denote notes
|
||||
;;; module-denote-index.el -- index and metadata for denote notes
|
||||
;;;
|
||||
;;; Commentary:
|
||||
;;; Provides a mechanism for maintaining an index of
|
||||
|
|
@ -6,7 +6,7 @@
|
|||
;;;
|
||||
;;; Code:
|
||||
|
||||
(require 'feature-denote)
|
||||
(require 'module-denote)
|
||||
|
||||
(defvar my/denote-metadata-index-file (concat denote-directory "../denote-metadata.org")
|
||||
"Path to the metadata index file.")
|
||||
|
|
@ -88,6 +88,6 @@
|
|||
|
||||
(global-set-key (kbd "C-x n /") #'my/search-denote-notes)
|
||||
|
||||
(provide 'feature-denote-index)
|
||||
(provide 'module-denote-index)
|
||||
|
||||
;;; feature-denote-index.el ends here
|
||||
;;; module-denote-index.el ends here
|
||||
|
|
@ -1,13 +1,13 @@
|
|||
;;; feature-denote-multidir.el --- denote with multi-dir support
|
||||
;;; module-denote-multidir.el --- denote with multi-dir support
|
||||
;;;
|
||||
;;; Commentary:
|
||||
;;; Extend denote with support for multiple notes directories.
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(require 'feature-denote)
|
||||
(require 'feature-denote-index)
|
||||
(require 'feature-alioth) ;; depends on alioth for some functions
|
||||
(require 'module-denote)
|
||||
(require 'module-denote-index)
|
||||
(require 'module-alioth) ;; depends on alioth for some functions
|
||||
|
||||
(defvar my/denote-local-notes-directory "~/notes/")
|
||||
(defvar my/denote-remote-notes-directory "~/alioth/notes/")
|
||||
|
|
@ -73,6 +73,6 @@
|
|||
(global-set-key (kbd "C-x n d s") #'my/denote-switch-directory)
|
||||
(global-set-key (kbd "C-x n d d") #'my/denote-echo-current-directory)
|
||||
|
||||
(provide 'feature-denote-multidir)
|
||||
(provide 'module-denote-multidir)
|
||||
|
||||
;;; feature-denote-multidir.el ends here.
|
||||
;;; module-denote-multidir.el ends here.
|
||||
|
|
@ -1,12 +1,12 @@
|
|||
;;; feature-denote.el --- note taking
|
||||
;;; module-denote.el --- note taking
|
||||
;;;
|
||||
;;; Commentary:
|
||||
;;; Configure denote for note taking purposes.
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(require 'feature-pkg)
|
||||
(require 'feature-dired)
|
||||
(require 'module-pkg)
|
||||
(require 'module-dired)
|
||||
|
||||
(pkg/require 'denote)
|
||||
|
||||
|
|
@ -48,6 +48,6 @@
|
|||
(define-key map (kbd "C-x n r f") #'denote-dired-rename-marked-files-using-front-matter))
|
||||
|
||||
|
||||
(provide 'feature-denote)
|
||||
(provide 'module-denote)
|
||||
|
||||
;;; feature-denote.el ends here.
|
||||
;;; module-denote.el ends here.
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
;;; feature-detached.el --- dtach for Emacs
|
||||
;;; module-detached.el --- dtach for Emacs
|
||||
;;; Commentary:
|
||||
;;; Setup dtach and Emacs integration.
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(require 'feature-pkg)
|
||||
(require 'module-pkg)
|
||||
|
||||
(pkg/require 'detached)
|
||||
|
||||
|
|
@ -17,7 +17,7 @@
|
|||
(global-set-key [remap recompile] 'detached-compile-recompile)
|
||||
(global-set-key [remap detached-open-session] 'detached-consult-session)
|
||||
|
||||
(provide 'feature-detached)
|
||||
(provide 'module-detached)
|
||||
|
||||
;;; feature-detached.el ends here.
|
||||
;;; module-detached.el ends here.
|
||||
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
;;; feature-dired.el --- dired stuff
|
||||
;;; module-dired.el --- dired stuff
|
||||
;;; Commentary:
|
||||
;;; Configure Dired stuff.
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(require 'feature-pkg)
|
||||
(require 'module-pkg)
|
||||
(require 'dired)
|
||||
|
||||
(pkg/require 'dired-sidebar)
|
||||
|
|
@ -24,6 +24,6 @@
|
|||
(global-set-key (kbd "<f12>") 'dired-sidebar-toggle-sidebar)
|
||||
(define-key dired-mode-map (kbd "C-c d") 'my/dired-duplicate-file)
|
||||
|
||||
(provide 'feature-dired)
|
||||
(provide 'module-dired)
|
||||
|
||||
;;; feature-dired.el ends here.
|
||||
;;; module-dired.el ends here.
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
;;; feature-embark.el --- Brief description -*- lexical-binding: t; -*-
|
||||
;;; module-embark.el --- Brief description -*- lexical-binding: t; -*-
|
||||
;;; Commentary:
|
||||
|
||||
;;; Code:
|
||||
|
||||
|
||||
(require 'feature-pkg)
|
||||
(require 'module-pkg)
|
||||
(pkg/require 'embark)
|
||||
|
||||
(setq prefix-help-command #'embark-prefix-help-command)
|
||||
|
|
@ -18,6 +18,6 @@
|
|||
(global-set-key (kbd "C-;") #'embark-dwim)
|
||||
(global-set-key (kbd "C-h B") #'embark-bindings)
|
||||
|
||||
(provide 'feature-embark)
|
||||
(provide 'module-embark)
|
||||
|
||||
;;; feature-embark.el ends here.
|
||||
;;; module-embark.el ends here.
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
;;; feature-eshell.el --- eshell enhancements.
|
||||
;;; module-eshell.el --- eshell enhancements.
|
||||
;;; Commentary:
|
||||
;;; Configure eshell enhancements.
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(require 'feature-pkg)
|
||||
(require 'module-pkg)
|
||||
|
||||
(pkg/require 'eshell)
|
||||
(pkg/require 'eshell-autojump)
|
||||
|
|
@ -14,6 +14,6 @@
|
|||
|
||||
(global-set-key (kbd "C-<escape>") #'eshell-toggle)
|
||||
|
||||
(provide 'feature-eshell)
|
||||
(provide 'module-eshell)
|
||||
|
||||
;;; feature-eshell.el ends here.
|
||||
;;; module-eshell.el ends here.
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
;;; feature-eyecandy.el --- Brief description -*- lexical-binding: t; -*-
|
||||
;;; module-eyecandy.el --- Brief description -*- lexical-binding: t; -*-
|
||||
;;; Commentary:
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'feature-pkg)
|
||||
(require 'module-pkg)
|
||||
|
||||
;; themes
|
||||
(pkg/require 'acme-theme)
|
||||
|
|
@ -24,6 +24,6 @@
|
|||
;; fonts
|
||||
(pkg/require 'unicode-fonts)
|
||||
|
||||
(provide 'feature-eyecandy)
|
||||
(provide 'module-eyecandy)
|
||||
|
||||
;;; feature-eyecandy.el ends here.
|
||||
;;; module-eyecandy.el ends here.
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
;;; module-golang-playground.el --- Brief description -*- lexical-binding: t; -*-
|
||||
;;; Commentary:
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'module-pkg)
|
||||
|
||||
(pkg/require 'go-playground)
|
||||
|
||||
(provide 'module-golang-playground)
|
||||
|
||||
;;; module-golang-playground.el ends here.
|
||||
|
|
@ -1,15 +1,15 @@
|
|||
;;; feature-golang.el --- Brief description -*- lexical-binding: t; -*-
|
||||
;;; module-golang.el --- Brief description -*- lexical-binding: t; -*-
|
||||
;;; Commentary:
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'feature-pkg)
|
||||
(require 'module-pkg)
|
||||
|
||||
(pkg/require 'go-mode)
|
||||
|
||||
(add-to-list 'auto-mode-alist '("\\.go$" . go-mode))
|
||||
(add-hook 'before-save-hook #'gofmt-before-save)
|
||||
|
||||
(provide 'feature-golang)
|
||||
(provide 'module-golang)
|
||||
|
||||
;;; feature-golang.el ends here.
|
||||
;;; module-golang.el ends here.
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
;;; feature-graphviz.el --- Brief description -*- lexical-binding: t; -*-
|
||||
;;; module-graphviz.el --- Brief description -*- lexical-binding: t; -*-
|
||||
;;; Commentary:
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'feature-pkg)
|
||||
(require 'module-pkg)
|
||||
|
||||
(pkg/require 'graphviz-dot-mode)
|
||||
|
||||
|
|
@ -11,6 +11,6 @@
|
|||
(org-babel-do-load-languages
|
||||
'org-babel-load-languages '((dot . t))))
|
||||
|
||||
(provide 'feature-graphviz)
|
||||
(provide 'module-graphviz)
|
||||
|
||||
;;; feature-graphviz.el ends here.
|
||||
;;; module-graphviz.el ends here.
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
;;; module-json.el --- Brief description -*- lexical-binding: t; -*-
|
||||
;;; Commentary:
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'module-pkg)
|
||||
|
||||
(pkg/require 'json-mode)
|
||||
|
||||
(add-to-list 'auto-mode-alist '("\\.json$" . json-mode))
|
||||
|
||||
(provide 'module-json)
|
||||
|
||||
;;; module-json.el ends here.
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
;;; module-kotlin.el --- Brief description -*- lexical-binding: t; -*-
|
||||
;;; Commentary:
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'module-pkg)
|
||||
(pkg/require 'kotlin-mode)
|
||||
|
||||
;;(add-to-list 'auto-mode-alist ("\\.kt$" . kotlin-mode))
|
||||
|
||||
(provide 'module-kotlin)
|
||||
|
||||
;;; module-kotlin.el ends here.
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
;;; feature-llm.el --- bullshit generators -*- lexical-binding: t; -*-
|
||||
;;; module-llm.el --- bullshit generators -*- lexical-binding: t; -*-
|
||||
;;;
|
||||
;;; Commentary:
|
||||
;;; Provides interface to bullshit generators.
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(require 'feature-pkg)
|
||||
(require 'module-pkg)
|
||||
|
||||
(pkg/require 'ellama)
|
||||
(require 'llm-ollama)
|
||||
|
|
@ -28,6 +28,6 @@
|
|||
(pkg/require 'org-ai)
|
||||
(add-hook 'org-mode-hook #'org-ai-mode)
|
||||
|
||||
(provide 'feature-llm)
|
||||
(provide 'module-llm)
|
||||
|
||||
;;; feature-llm.el ends here.
|
||||
;;; module-llm.el ends here.
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
;;; feature-lmtf.el --- Brief description -*- lexical-binding: t; -*-
|
||||
;;; module-lmtf.el --- Brief description -*- lexical-binding: t; -*-
|
||||
;;; Commentary:
|
||||
|
||||
;;; Code:
|
||||
|
||||
|
||||
(require 'feature-pkg)
|
||||
(require 'module-pkg)
|
||||
|
||||
(straight-use-package
|
||||
'(lmtf :type git :host github :repo "lneely/lmtf"))
|
||||
|
|
@ -15,6 +15,6 @@
|
|||
(define-key emacs-lisp-mode-map (kbd "C-c t r") #'lmtf-show-results))
|
||||
|
||||
|
||||
(provide 'feature-lmtf)
|
||||
(provide 'module-lmtf)
|
||||
|
||||
;;; feature-lmtf.el ends here.
|
||||
;;; module-lmtf.el ends here.
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
;;; feature-magit.el --- git integration
|
||||
;;; module-magit.el --- git integration
|
||||
;;; Commentary:
|
||||
;;; Setup git integration with Emacs.
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(require 'feature-pkg)
|
||||
(require 'module-pkg)
|
||||
|
||||
(pkg/require 'magit)
|
||||
|
||||
|
|
@ -57,6 +57,6 @@
|
|||
(define-key my/magit-prefix-map "mm" #'magit-merge)
|
||||
(define-key my/magit-prefix-map "dd" #'magit-diff)
|
||||
|
||||
(provide 'feature-magit)
|
||||
(provide 'module-magit)
|
||||
|
||||
;;; feature-magit.el ends here.
|
||||
;;; module-magit.el ends here.
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
;;; feature-multi-cursor.el --- multiple cursors
|
||||
;;; module-multi-cursor.el --- multiple cursors
|
||||
;;; Commentary:
|
||||
;;; Multiple cursor support for Emacs.
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(require 'feature-pkg)
|
||||
(require 'module-pkg)
|
||||
(pkg/require 'multiple-cursors)
|
||||
|
||||
(multiple-cursors-mode 1)
|
||||
|
|
@ -14,6 +14,6 @@
|
|||
(global-set-key (kbd "C-<") 'mc/mark-previous-like-this)
|
||||
(global-set-key (kbd "C-x C->") 'mc/mark-all-like-this)
|
||||
|
||||
(provide 'feature-multi-cursor)
|
||||
(provide 'module-multi-cursor)
|
||||
|
||||
;;; feature-multi-cursor.el ends here.
|
||||
;;; module-multi-cursor.el ends here.
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
;;; feature-orderless.el --- fuzzy search
|
||||
;;; module-orderless.el --- fuzzy search
|
||||
;;; Commentary:
|
||||
;;; Setup fuzzy search for Emacs.
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(require 'feature-pkg)
|
||||
(require 'module-pkg)
|
||||
(pkg/require 'orderless)
|
||||
|
||||
(setq completion-styles '(orderless basic)
|
||||
|
|
@ -14,5 +14,5 @@
|
|||
orderless-matching-styles '(orderless-flex orderless-prefixes orderless-initialism)
|
||||
orderless-component-separator #'orderless-escapable-split-on-space)
|
||||
|
||||
(provide 'feature-orderless)
|
||||
;;; feature-orderless.el ends here.
|
||||
(provide 'module-orderless)
|
||||
;;; module-orderless.el ends here.
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
;;; feature-org-denote.el --- denote extensions for org-mode
|
||||
;;; module-org-denote.el --- denote extensions for org-mode
|
||||
;;; Commentary:
|
||||
;;; Setup org-mode denote extensions.
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(require 'feature-org)
|
||||
(require 'module-org)
|
||||
|
||||
(with-eval-after-load 'denote
|
||||
(defvar denote-org-capture-specifiers)
|
||||
|
|
@ -18,6 +18,6 @@
|
|||
:kill-buffer t
|
||||
:jump-to-captured t)))
|
||||
|
||||
(provide 'feature-org-denote)
|
||||
(provide 'module-org-denote)
|
||||
|
||||
;;; feature-org-denote.el ends here.
|
||||
;;; module-org-denote.el ends here.
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
;;; feature-org.el --- org-mode
|
||||
;;; module-org.el --- org-mode
|
||||
;;; Commentary:
|
||||
;;; Setup org-mode for Emacs.
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(require 'feature-pkg)
|
||||
(require 'module-pkg)
|
||||
(pkg/require 'org)
|
||||
|
||||
(require 'org)
|
||||
|
|
@ -113,6 +113,6 @@
|
|||
(global-set-key (kbd "C-x O t") 'my/visit-todo)
|
||||
(global-set-key (kbd "C-x O k") 'my/kill-all-org-agenda-buffers)
|
||||
|
||||
(provide 'feature-org)
|
||||
(provide 'module-org)
|
||||
|
||||
;;; feature-org.el ends here.
|
||||
;;; module-org.el ends here.
|
||||
|
|
@ -1,5 +1,16 @@
|
|||
;;; feature-pkg.el --- Brief description -*- lexical-binding: t; -*-
|
||||
;;; Commentary:
|
||||
;;;
|
||||
;;; This feature provides a simple and predictable package management
|
||||
;;; framework building upon built-in Emacs package management
|
||||
;;; features. Frameworks like use-package and leaf are nice, but
|
||||
;;; become difficult to manage and debug over time . feature-pkg.el
|
||||
;;; is the foundation for adding and removing features in this Emacs
|
||||
;;; configuration.
|
||||
;;;
|
||||
;;; Note that feature-pkg does not explicitly need to be required in
|
||||
;;; the main Emacs config, as it will be loaded as a dependency by
|
||||
;;; each feature.
|
||||
|
||||
;;; Code:
|
||||
|
||||
|
|
@ -76,6 +87,6 @@ If NOERROR is non-nil, don't signal an error if the file is not found."
|
|||
(eval-after-load (car (last ',packages))
|
||||
'(pkg/run-after-packages-load ',packages ,@body))))
|
||||
|
||||
(provide 'feature-pkg)
|
||||
(provide 'module-pkg)
|
||||
|
||||
;;; feature-pkg.el ends here.
|
||||
;;; module-pkg.el ends here.
|
||||
|
|
@ -1,8 +1,9 @@
|
|||
;;; feature-plantuml.el --- Brief description -*- lexical-binding: t; -*-
|
||||
;;; module-plantuml.el --- Brief description -*- lexical-binding: t; -*-
|
||||
;;; Commentary:
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'module-pkg)
|
||||
|
||||
(pkg/require 'plantuml-mode)
|
||||
|
||||
|
|
@ -15,6 +16,6 @@
|
|||
(org-babel-do-load-languages
|
||||
'org-babel-load-languages '((plantuml . t))))
|
||||
|
||||
(provide 'feature-plantuml)
|
||||
(provide 'module-plantuml)
|
||||
|
||||
;;; feature-plantuml.el ends here.
|
||||
;;; module-plantuml.el ends here.
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
;;; module-projectile.el --- project management
|
||||
;;; Commentary:
|
||||
;;; Project management for Emacs nerds.
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(require 'module-pkg)
|
||||
(pkg/require 'projectile)
|
||||
|
||||
(projectile-mode +1)
|
||||
|
||||
(provide 'module-projectile)
|
||||
|
||||
;;; module-projectile.el ends here.
|
||||
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
;;; module-protobuf.el --- Brief description -*- lexical-binding: t; -*-
|
||||
;;; Commentary:
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'module-pkg)
|
||||
|
||||
(pkg/require 'protobuf-mode)
|
||||
|
||||
(add-to-list 'auto-mode-alist '("\\.proto$" . protobuf-mode))
|
||||
|
||||
(provide 'module-protobuf)
|
||||
|
||||
;;; module-protobuf.el ends here.
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
;;; feature-python.el --- Brief description -*- lexical-binding: t; -*-
|
||||
;;; module-python.el --- Brief description -*- lexical-binding: t; -*-
|
||||
;;; Commentary:
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'feature-pkg)
|
||||
(require 'module-pkg)
|
||||
|
||||
(pkg/require 'python-mode)
|
||||
(pkg/require 'python-environment)
|
||||
|
|
@ -11,6 +11,6 @@
|
|||
(add-to-list 'auto-mode-alist '("\\.py$" . python-mode))
|
||||
(add-to-list 'auto-mode-alist '("BUILD\\'" . python-mode))
|
||||
|
||||
(provide 'feature-python)
|
||||
(provide 'module-python)
|
||||
|
||||
;;; feature-python.el ends here.
|
||||
;;; module-python.el ends here.
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
;;; module-browser.el --- Brief description -*- lexical-binding: t; -*-
|
||||
;;; Commentary:
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'module-pkg)
|
||||
|
||||
(pkg/require 'rego-mode)
|
||||
|
||||
(provide 'module-rego)
|
||||
|
||||
;;; module-rego.el ends here.
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
;;; module-orderless.el --- rss feeds in emacs
|
||||
;;; Commentary:
|
||||
;;; Read RSS feeds in Emacs, stop browsing the web.
|
||||
;;;
|
||||
;;; Code:
|
||||
(require 'module-pkg)
|
||||
|
||||
(pkg/require 'elfeed)
|
||||
|
||||
(provide 'module-rss)
|
||||
|
||||
;;; module-rss.el ends here.
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
;;; feature-scratch.el --- scratch buffer enhancements
|
||||
;;; module-scratch.el --- scratch buffer enhancements
|
||||
;;; Commentary:
|
||||
;;; Scratch buffer enhancements for Emacs.
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(require 'feature-pkg)
|
||||
(require 'module-pkg)
|
||||
(pkg/require 'scratch)
|
||||
(pkg/require 'persistent-scratch)
|
||||
|
||||
|
|
@ -29,6 +29,6 @@
|
|||
(global-set-key (kbd "C-c s") #'persistent-scratch-save)
|
||||
(global-set-key (kbd "C-c r") #'persistent-scratch-restore)
|
||||
|
||||
(provide 'feature-scratch)
|
||||
(provide 'module-scratch)
|
||||
|
||||
;;; feature-scratch.el ends here.
|
||||
;;; module-scratch.el ends here.
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
;;; feature-snippets.el --- Brief description -*- lexical-binding: t; -*-
|
||||
;;; module-snippets.el --- Brief description -*- lexical-binding: t; -*-
|
||||
;;; Commentary:
|
||||
|
||||
;;; Code:
|
||||
|
||||
|
||||
|
||||
(require 'feature-pkg)
|
||||
(require 'module-pkg)
|
||||
|
||||
(pkg/require 'yasnippet)
|
||||
(pkg/require 'yasnippet-snippets)
|
||||
|
|
@ -20,6 +20,6 @@
|
|||
(add-hook 'prog-mode-hook #'yas-minor-mode)
|
||||
(add-hook 'org-mode-hook #'yas-minor-mode)
|
||||
|
||||
(provide 'feature-snippets)
|
||||
(provide 'module-snippets)
|
||||
|
||||
;;; feature-snippets.el ends here.
|
||||
;;; module-snippets.el ends here.
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
;;; feature-syntax.el --- syntax related stuff
|
||||
;;; module-syntax.el --- syntax related stuff
|
||||
;;; Commentary:
|
||||
;;; Configure syntax-related settings.
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(require 'feature-pkg)
|
||||
(require 'module-pkg)
|
||||
|
||||
(pkg/require 'fic-mode)
|
||||
(pkg/require 'flycheck)
|
||||
|
|
@ -12,6 +12,6 @@
|
|||
(global-flycheck-mode)
|
||||
(setq flycheck-emacs-lisp-load-path 'inherit)
|
||||
|
||||
(provide 'feature-syntax)
|
||||
(provide 'module-syntax)
|
||||
|
||||
;;; feature-syntax.el ends here.
|
||||
;;; module-syntax.el ends here.
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
;;; feature-vertico.el --- better minibuffer
|
||||
;;; module-vertico.el --- better minibuffer
|
||||
;;; Commentary:
|
||||
;;; Better minibuffer for Emacs.
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(require 'feature-pkg)
|
||||
(require 'module-pkg)
|
||||
(pkg/require 'vertico)
|
||||
|
||||
|
||||
|
|
@ -21,5 +21,5 @@
|
|||
(define-key vertico-map (kbd "C-q") #'vertico-quick-insert)
|
||||
(define-key vertico-map (kbd "M-q") #'vertico-quick-exit))
|
||||
|
||||
(provide 'feature-vertico)
|
||||
;;; feature-vertico.el ends here.
|
||||
(provide 'module-vertico)
|
||||
;;; module-vertico.el ends here.
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
;;; feature-web.el --- Brief description -*- lexical-binding: t; -*-
|
||||
;;; module-web.el --- Brief description -*- lexical-binding: t; -*-
|
||||
;;; Commentary:
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'feature-pkg)
|
||||
(require 'module-pkg)
|
||||
|
||||
(pkg/require 'mmm-mode)
|
||||
(pkg/require 'multi-web-mode)
|
||||
|
|
@ -12,6 +12,6 @@
|
|||
|
||||
(add-to-list 'auto-mode-alist '("\\.php$" . php-mode))
|
||||
|
||||
(provide 'feature-web)
|
||||
(provide 'module-web)
|
||||
|
||||
;;; feature-web.el ends here.
|
||||
;;; module-web.el ends here.
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
;;; module-which-key.el --- Brief description -*- lexical-binding: t; -*-
|
||||
;;; Commentary:
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'module-pkg)
|
||||
|
||||
(pkg/require 'which-key)
|
||||
|
||||
(which-key-mode)
|
||||
|
||||
(provide 'module-which-key)
|
||||
|
||||
;;; module-which-key.el ends here.
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
;;; module-yaml.el --- Brief description -*- lexical-binding: t; -*-
|
||||
;;; Commentary:
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'module-pkg)
|
||||
(pkg/require 'yaml-mode)
|
||||
|
||||
(add-to-list 'auto-mode-alist '("\\.yml$" . yaml-mode))
|
||||
|
||||
(provide 'module-yaml)
|
||||
|
||||
;;; module-yaml.el ends here.
|
||||
Loading…
Reference in New Issue