From 91215a0ae339d281fcb6e6304130a682e00594cb Mon Sep 17 00:00:00 2001 From: Mike 'Fuzzy' Partin Date: Sat, 6 Jul 2024 08:43:51 -0700 Subject: [PATCH] making everything configurable, and turned off by default --- early-init.el | 5 + init.el | 26 +---- lib/thwap-co.el | 17 ++- lib/thwap-config.el | 194 +++++++++++++++++++++++++++++++++ lib/thwap-dash.el | 4 +- lib/thwap-defaults.el | 37 ++++++- lib/thwap-icons.el | 49 +++++++-- lib/thwap-lsp.el | 16 +-- lib/thwap-magit.el | 17 +-- lib/thwap-nerdtree.el | 59 +++++----- lib/thwap-org.el | 235 ++++++++++++++++++++++------------------ lib/thwap-projectile.el | 9 +- lib/thwap-theme.el | 28 ++++- 13 files changed, 502 insertions(+), 194 deletions(-) create mode 100644 lib/thwap-config.el diff --git a/early-init.el b/early-init.el index 64f8750..978015b 100644 --- a/early-init.el +++ b/early-init.el @@ -40,3 +40,8 @@ ;; Set up straight.el to use use-package (straight-use-package 'use-package) + +(defun thwap/add-key-binding (key command help-text) + "Add a key binding to the T.H.W.A.P. keymap" + (define-key thwap-map (kbd key) command) + (add-to-list 'thwap-help-lines (format "%-12s: %s" (concat "C-c t " key) help-text))) diff --git a/init.el b/init.el index cefae45..985510e 100644 --- a/init.el +++ b/init.el @@ -4,7 +4,10 @@ ;; 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. - '(tool-bar-mode nil)) + '(terraform-format-on-save t) + '(terraform-indent-level 2) + '(tool-bar-mode nil) + '(visible-bell 1)) (custom-set-faces ;; custom-set-faces was added by Custom. @@ -13,25 +16,8 @@ ;; If there is more than one, they won't work right. '(default ((t (:family "Noto Sans Mono" :foundry "GOOG" :slant normal :weight regular :height 90 :width normal))))) -(global-auto-revert-mode t) -(global-display-line-numbers-mode 1) -(setq warning-minimum-level :error) -(setq-default tab-width 2 - mode-line-format - '("%e" - mode-line-buffer-identification " " - mode-line-modified " " - mode-line-frame-identification " " - mode-line-mode)) -(setq tab-width 2) -(setq indent-tabs-mode 1) - -;; Set the default help lines -(setq thwap-help-lines '("--------------" - "All T.H.W.A.P. commands will start with 'C-c t'" - "" - "Welcome to the T.H.W.A.P. Emacs Dashboard")) - +;; thwap config +(require 'thwap-config) ;; thwap defaults (require 'thwap-defaults) ;; theme configuration diff --git a/lib/thwap-co.el b/lib/thwap-co.el index 9407f7e..30f3cd6 100644 --- a/lib/thwap-co.el +++ b/lib/thwap-co.el @@ -1,5 +1,18 @@ -(straight-use-package 'company) -(add-hook 'after-init-hook 'global-company-mode) +;; Company and auto-complete configuration +(when (and thwap-comp-enable-company (not thwap-comp-enable-auto-complete)) + (straight-use-package 'company) + (add-hook 'after-init-hook 'global-company-mode)) + +;; If auto-complete is enabled, enable it +(when (and thwap-comp-enable-auto-complete (not thwap-comp-enable-company)) + (straight-use-package 'auto-complete) + (ac-config-default)) + +;; If both are enabled, disable auto-complete +(when (and thwap-comp-enable-auto-complete thwap-comp-enable-company) + (message "Both company and auto-complete are enabled. These are mutually exclusive. Disabling auto-complete.") + (straight-use-package 'company) + (add-hook 'after-init-hook 'global-company-mode)) (provide 'thwap-co) diff --git a/lib/thwap-config.el b/lib/thwap-config.el new file mode 100644 index 0000000..a32cf7d --- /dev/null +++ b/lib/thwap-config.el @@ -0,0 +1,194 @@ +;; +;; Define the custom variables for the T.H.W.A.P. Emacs configuration. +;; + +;; define the group +(defgroup thwap-config-group nil + "T.H.W.A.P. Emacs configuration group." + :group 'convenience + :prefix "thwap-") + + +;; +;; Theme and appearance settings +;; + +;; modus themes toggle +(defcustom thwap-ui-enable-modus-themes nil + "Whether or not to install the modus themes." + :type 'boolean + :group 'thwap-config-group) + +;; doom themes toggle +(defcustom thwap-ui-enable-doom-themes nil + "Whether or not to install the doom themes." + :type 'boolean + :group 'thwap-config-group) + +;; sublime themes toggle +(defcustom thwap-ui-enable-sublime-themes nil + "Whether or not to install the sublime themes." + :type 'boolean + :group 'thwap-config-group) + +;; kaolin themes toggle +(defcustom thwap-ui-enable-kaolin-themes nil + "Whether or not to install the kaolin themes." + :type 'boolean + :group 'thwap-config-group) + +;; alect themes toggle +(defcustom thwap-ui-enable-alect-themes nil + "Whether or not to install the alect themes." + :type 'boolean + :group 'thwap-config-group) + +;; theme to load +(defcustom thwap-ui-theme 'wombat ;; 'modus-vivendi-tinted + "Name of the theme to load." + :type 'string + :group 'thwap-config-group) + +;; all-the-icons toggle +(defcustom thwap-ui-enable-all-the-icons nil + "Whether or not to enable all-the-icons." + :type 'boolean + :group 'thwap-config-group) + +;; nerd-icons toggle +(defcustom thwap-ui-enable-nerd-icons nil + "Whether or not to enable nerd-icons." + :type 'boolean + :group 'thwap-config-group) + + +;; +;; Tree browser packages +;; + +;; treemacs toggle +(defcustom thwap-fm-enable-treemacs nil + "Whether or not to enable treemacs." + :type 'boolean + :group 'thwap-config-group) + +;; neotree toggle +(defcustom thwap-fm-enable-neotree nil + "Whether or not to enable neotree." + :type 'boolean' + :group 'thwap-config-group) + + +;; +;; Completion packages +;; + +;; company toggle +(defcustom thwap-comp-enable-company nil + "Whether or not to enable company." + :type 'boolean + :group 'thwap-config-group) + +;; auto-complete toggle +(defcustom thwap-comp-enable-auto-complete nil + "Whether or not to enable auto-complete." + :type 'boolean + :group 'thwap-config-group) + + +;; +;; Language server packages +;; + +;; lsp toggle +(defcustom thwap-comp-enable-lsp nil + "Whether or not to enable lsp." + :type 'boolean + :group 'thwap-config-group) + + +;; +;; development assistance packages +;; + +;; projectile toggle +(defcustom thwap-dev-enable-projectile nil + "Whether or not to enable projectile." + :type 'boolean + :group 'thwap-config-group) + +;; magit toggle +(defcustom thwap-dev-enable-magit nil + "Whether or not to enable magit." + :type 'boolean + :group 'thwap-config-group) + + +;; +;; Org mode settings +;; +(defcustom thwap-org-enable-org nil + "Whether or not to enable org-mode." + :type 'boolean + :group 'thwap-config-group) + +(defcustom thwap-org-enable-org-bullets nil + "Whether or not to enable org-bullets." + :type 'boolean + :group 'thwap-config-group) + +(defcustom thwap-org-enable-org-super-agenda nil + "Whether or not to enable org-super-agenda." + :type 'boolean + :group 'thwap-config-group) + +(defcustom thwap-org-enable-org-modern nil + "Whether or not to enable org-modern." + :type 'boolean + :group 'thwap-config-group) + +(defcustom thwap-org-enable-org-timeblock nil + "Whether or not to enable org-timeblock." + :type 'boolean + :group 'thwap-config-group) + +(defcustom thwap-org-enable-org-download nil + "Whether or not to enable org-download." + :type 'boolean + :group 'thwap-config-group) + +(defcustom thwap-org-enable-org-roam nil + "Whether or not to enable org-roam." + :type 'boolean + :group 'thwap-config-group) + +(defcustom thwap-org-enable-org-roam-ui nil + "Whether or not to enable org-roam-ui." + :type 'boolean + :group 'thwap-config-group) + +(defcustom thwap-org-enable-ob-mermaid nil + "Whether or not to enable ob-mermaid." + :type 'boolean + :group 'thwap-config-group) + +(defcustom thwap-org-enable-org-transclusion nil + "Whether or not to enable org-transclusion." + :type 'boolean + :group 'thwap-config-group) + + +;; +;; Example usage +;; + +;; Example usage +(defun my-custom-function () + "Function that uses the custom variables." + (message "Custom variable 1: %s" thwap-config-enable-modus-themes) + (message "Custom variable 2: %s" thwap-config-theme) + (message "Custom variable 3: %s" thwap-config-enable-alltheicons)) + + +;; our provide statement +(provide 'thwap-config) diff --git a/lib/thwap-dash.el b/lib/thwap-dash.el index 4ac9164..6639d46 100644 --- a/lib/thwap-dash.el +++ b/lib/thwap-dash.el @@ -34,9 +34,7 @@ (setq dashboard-center-content t) (setq dashboard-vertically-center-content t) (setq dashboard-show-shortcuts t) -(setq dashboard-items '((recents . 7) - (projects . 7) - (agenda . 7))) +(setq dashboard-items '((agenda . 7))) (setq dashboard-startupify-list '(dashboard-insert-banner dashboard-insert-newline dashboard-insert-banner-title diff --git a/lib/thwap-defaults.el b/lib/thwap-defaults.el index 8f9bcc4..90bcaeb 100644 --- a/lib/thwap-defaults.el +++ b/lib/thwap-defaults.el @@ -1,21 +1,56 @@ +;; +;; Set some defaults +;; + +;; automatically revert buffers when they change on disk +(global-auto-revert-mode t) +;; display line numbers, TODO make this a config option for line number style +(global-display-line-numbers-mode 1) +;; set our default warning level to error +(setq warning-minimum-level :error) +;; set the default tab width to 2 spaces +(setq-default tab-width 2) +(setq tab-width 2) +(setq indent-tabs-mode 1) +;; Set the default help lines +(setq thwap-help-lines '("--------------" + "All T.H.W.A.P. commands will start with 'C-c t'" + "" + "Welcome to the T.H.W.A.P. Emacs Dashboard")) + +;; +;; Golden Ratio Mode helps with window sizing, and is a default feature +;; ;; golden-ratio (straight-use-package 'golden-ratio) (golden-ratio-mode 1) (setq golden-ratio-auto-scale t) + +;; +;; Set up the T.H.W.A.P. keybindings +;; + ;; The T.H.W.A.P. Map ;; This is the base starting point for the T.H.W.A.P. keybindings (define-prefix-command 'thwap-map) (global-set-key (kbd "C-c t") 'thwap-map) -;; General emacs stuff +;; Add a command to customize the T.H.W.A.P. group +(define-key thwap-map (kbd "C-c") (lambda () (interactive) (customize-group 'thwap-config-group))) +(add-to-list 'thwap-help-lines "C-c t C-c : Customize this T.H.W.A.P. Emacs Installation") + +;; quick commenting/uncommenting of a region is just too useful (define-key thwap-map (kbd "c") 'comment-or-uncomment-region) (add-to-list 'thwap-help-lines "C-c t c : Comment or uncomment region") +;; eval buffer is also very useful (define-key thwap-map (kbd "e b") 'eval-buffer) (add-to-list 'thwap-help-lines "C-c t e b : Eval buffer") + +;; our provide statement (provide 'thwap-defaults) diff --git a/lib/thwap-icons.el b/lib/thwap-icons.el index b936735..4dd6a63 100644 --- a/lib/thwap-icons.el +++ b/lib/thwap-icons.el @@ -1,14 +1,41 @@ -(use-package all-the-icons - :ensure t - :straight t) -;; :if (display-graphic-p)) -(use-package all-the-icons-completion - :ensure t - :straight t - :defer -;; :if (display-graphic-p) - :init - (all-the-icons-completion-mode 1)) +(when (and thwap-ui-enable-all-the-icons (not thwap-ui-enable-nerd-icons)) + (use-package all-the-icons + :ensure t + :straight t + :hook (dired-mode . all-the-icons-dired-mode)) + (use-package all-the-icons-completion + :ensure t + :straight t + :defer + :init + (all-the-icons-completion-mode 1))) + +(when (and thwap-ui-enable-nerd-icons (not thwap-ui-enable-all-the-icons)) + (use-package nerd-icons + :straight (nerd-icons + :type git + :host github + :repo "rainstormstudio/nerd-icons.el" + :files (:defaults "data")) + :custom + ;; The Nerd Font you want to use in GUI + ;; "Symbols Nerd Font Mono" is the default and is recommended + ;; but you can use any other Nerd Font if you want + (nerd-icons-font-family "Symbols Nerd Font Mono") + )) + +(when (and thwap-ui-enable-nerd-icons thwap-ui-enable-all-the-icons) + (message "Both all-the-icons and nerd-icons are enabled. Disabling nerd-icons.") + (use-package all-the-icons-dired + :ensure t + :straight t + :hook (dired-mode . all-the-icons-dired-mode)) + (use-package all-the-icons-completion + :ensure t + :straight t + :defer + :init + (all-the-icons-completion-mode 1))) (provide 'thwap-icons) diff --git a/lib/thwap-lsp.el b/lib/thwap-lsp.el index 353cc3c..d5029fc 100644 --- a/lib/thwap-lsp.el +++ b/lib/thwap-lsp.el @@ -1,11 +1,11 @@ -(straight-use-package 'lsp-mode) - -(setq gc-cons-threshold 100000000) -(setq read-process-output-max (* 1024 1024)) - -(define-key thwap-map (kbd "l") 'lsp-keymap-prefix) -(add-to-list 'thwap-help-lines "C-c t l : lsp-keymap-prefix") -;; (lsp-enable-which-key-integration t) +(when thwap-comp-enable-lsp + (straight-use-package 'lsp-mode) + (straight-use-package 'lsp-ui) + (straight-use-package 'lsp-treemacs) + (setq gc-cons-threshold 100000000) + (setq read-process-output-max (* 1024 1024)) + (define-key thwap-map (kbd "l") 'lsp-keymap-prefix) + (add-to-list 'thwap-help-lines "C-c t l : lsp-keymap-prefix")) (provide 'thwap-lsp) diff --git a/lib/thwap-magit.el b/lib/thwap-magit.el index 7d25f4a..da586f4 100644 --- a/lib/thwap-magit.el +++ b/lib/thwap-magit.el @@ -1,14 +1,9 @@ -(straight-use-package 'magit) - -;; Enable magit forge -(straight-use-package 'forge) - -;; Enable magit-todos -(straight-use-package 'magit-todos) - -;; Magit stuff -(define-key thwap-map (kbd "g s") 'magit-status) -(add-to-list 'thwap-help-lines "C-c t g s : magit-status") +(when thwap-dev-enable-magit + (straight-use-package 'magit) + (straight-use-package 'forge) + (straight-use-package 'magit-todos) + (define-key thwap-map (kbd "g s") 'magit-status) + (add-to-list 'thwap-help-lines "C-c t g s : magit-status")) (provide 'thwap-magit) diff --git a/lib/thwap-nerdtree.el b/lib/thwap-nerdtree.el index fb234a1..e7c1dee 100644 --- a/lib/thwap-nerdtree.el +++ b/lib/thwap-nerdtree.el @@ -1,30 +1,37 @@ -(use-package neotree - :demand t - :straight t - :config - (global-set-key [f8] 'neotree-toggle)) -(define-key thwap-map (kbd "C-n") 'neotree-toggle) -(add-to-list 'thwap-help-lines "C-c t C-n : Toggle Neotree") +(when (and thwap-fm-enable-neotree (not thwap-fm-enable-treemacs)) + (use-package neotree + :straight t + :config + (global-set-key [f8] 'neotree-toggle) + (define-key thwap-map (kbd "C-n") 'neotree-toggle) + (add-to-list 'thwap-help-lines "C-c t C-n : Toggle Neotree"))) -;; (use-package treemacs -;; :straight t -;; :ensure t -;; :demand t -;; :config -;; (global-set-key [f8] 'treemacs) -;; (progn -;; (setq treemacs-follow-after-init t -;; treemacs-width 35 -;; treemacs-indentation 2 -;; treemacs-git-integration t -;; treemacs-collapse-dirs 3 -;; treemacs-silent-refresh t -;; treemacs-change-root-without-asking t -;; treemacs-sorting 'alphabetic-desc -;; treemacs-show-hidden-files t -;; treemacs-never-persist nil -;; treemacs-is-never-other-window t -;; treemacs-goto-tag-strategy 'refetch-index))) + +(when (and thwap-fm-enable-treemacs (not thwap-fm-enable-neotree)) + (use-package treemacs + :straight t + :ensure t + :demand t + :config + (global-set-key [f8] 'treemacs) + (progn + (setq treemacs-follow-after-init t + treemacs-width 35 + treemacs-indentation 2 + treemacs-git-integration t + treemacs-collapse-dirs 3 + treemacs-silent-refresh t + treemacs-change-root-without-asking t + treemacs-sorting 'alphabetic-desc + treemacs-show-hidden-files t + treemacs-never-persist nil + treemacs-is-never-other-window t + treemacs-goto-tag-strategy 'refetch-index))) + (define-key thwap-map (kbd "C-n") 'treemacs) + (add-to-list 'thwap-help-lines "C-c t C-n : Toggle Treemacs")) + +(when (and thwap-fm-enable-treemacs thwap-ui-enable-kaolin-themes (not thwap-fm-enable-neotree)) + (kaolin-treemacs-theme)) (provide 'thwap-nerdtree) diff --git a/lib/thwap-org.el b/lib/thwap-org.el index 8c09577..b1e0575 100644 --- a/lib/thwap-org.el +++ b/lib/thwap-org.el @@ -1,23 +1,3 @@ - -;; -;; Ensure Org mode is installed and loaded -;; - -;; base -(straight-use-package 'org) -;; functionality / configuration -(straight-use-package 'org-bullets) -(straight-use-package 'org-modern) -(straight-use-package 'org-super-agenda) -(straight-use-package 'org-timeblock) -;; content related packages -(straight-use-package 'org-download) -(straight-use-package 'ob-mermaid) -;; org-roam stuff -(straight-use-package 'org-roam) -(straight-use-package 'org-roam-ui) -(straight-use-package 'org-transclusion) - ;; ;; Helper functions ;; @@ -42,92 +22,141 @@ (setq org-timeblock-files (thwap/list-files-with-extension "~/.org-agenda" "org")) (setq org-timeblock-inbox-file "~/.org-agenda/tasks.org")) + +;; +;; Ensure Org mode is installed and loaded +;; + +;; base +(when thwap-org-enable-org + (straight-use-package 'org) + (setq browse-url-browser-function 'browse-url-generic + browse-url-generic-program "firefox-esr" + org-log-done 'time + org-startup-indented t + org-hide-leading-stars t + org-support-shift-select t + org-directory "~/.org-agenda" + org-default-notes-file "~/.org-agenda/notes.org" + org-export-with-sub-superscripts t + org-export-with-toc t) + (thwap/org-agenda-files-update) + (setq org-todo-keywords + '((sequence "TODO" "IN-PROGRESS" "EPIC" "WAITING" "WONTDO" "DONE"))) + (setq org-capture-templates + `(("T" "THWAP TODO" entry (file+headline "~/.org-agenda/tasks.org" "THWAP Tasks") + "* TODO %?\n %i\n %a") + ("A" "APFM TODO" entry (file+headline "~/.org-agenda/tasks.org" "APFM Tasks") + "* TODO %?\n %i\n %a") + ("L" "LIFE TODO" entry (file+headline "~/.org-agenda/tasks.org" "LIFE Tasks") + "* TODO %?\n %i\n %a") + ("a" "Appointment" entry (file+headline "~/.org-agenda/events.org" "Appointments") + "* %?\n %i\n %a" :clock-in t :clock-resume t) + ("e" "Schedule Event" entry (file+headline "~/.org-agenda/events.org" "Events") + "* %?\n %i\n %a" :clock-in t :clock-resume t) + ("m" "Schedule Meeting" entry (file+headline "~/.org-agenda/events.org" "Meetings") + "* %?\n %i\n %a" :clock-in t :clock-resume t) + ("n" "Note" entry (file "~/.org-agenda/notes.org") + "* %?\n %i\n %a" :clock-in t :clock-resume t) + ("i" "Idea" entry (file "~/.org-agenda/ideas.org") + "* %? :IDEA: \n%t" :clock-in t :clock-resume t))) + (org-babel-do-load-languages + 'org-babel-load-languages + '((emacs-lisp . t) + (python . t) + (org . t) + (ruby . t) + (shell . t))) + (add-hook 'org-mode-hook 'thwap/org-agenda-files-update) + (add-hook 'org-mode-hook 'visual-line-mode) + ;; Org mode stuff + (thwap/add-key-binding "o l" 'org-store-link "Store a link to the current location in the kill ring.") + ;; (define-key thwap-map (kbd "o l") 'org-store-link) + ;; (add-to-list 'thwap-help-lines "C-c t o l : Store a link to the current location in the kill ring.") + (thwap/add-key-binding "o C-l" 'org-toggle-link-display "Toggle the display of links.") + ;; (define-key thwap-map (kbd "o C-l") 'org-toggle-link-display) + ;; (add-to-list 'thwap-help-lines "C-c t o C-l : Toggle the display of links.") + (thwap/add-key-binding "o a" 'org-agenda "Open the Org agenda.") + ;; (define-key thwap-map (kbd "o a") 'org-agenda) + ;; (add-to-list 'thwap-help-lines "C-c t o a : Open the Org agenda.") + (thwap/add-key-binding "o n" 'org-capture "Capture a new task.") + ;; (define-key thwap-map (kbd "o n") 'org-capture) + ;; (add-to-list 'thwap-help-lines "C-c t o n : Capture a new task.") + (thwap/add-key-binding "o t" 'org-todo-list "Open the Org TODO list.") + ;; (define-key thwap-map (kbd "o t") 'org-todo-list) + ;; (add-to-list 'thwap-help-lines "C-c t o t : Open the Org TODO list.") + (thwap/add-key-binding "o c i" 'org-clock-in "Clock in to the current task.") + ;; (define-key thwap-map (kbd "o c i") 'org-clock-in) + ;; (add-to-list 'thwap-help-lines "C-c t o c i : Clock in to the current task.") + (thwap/add-key-binding "o c o" 'org-clock-out "Clock out of the current task.") + ;; (define-key thwap-map (kbd "o c o") 'org-clock-out) + ;; (add-to-list 'thwap-help-lines "C-c t o c o : Clock out of the current task.") + (thwap/add-key-binding "o c r" 'org-clock-report "Generate a clock report.") + ;; (define-key thwap-map (kbd "o c r") 'org-clock-report) + ;; (add-to-list 'thwap-help-lines "C-c t o c r : Generate a clock report.") + (thwap/add-key-binding "o r" 'org-refile "Refile the current task.") + ;; (define-key thwap-map (kbd "o r") 'org-refile) + ;; (add-to-list 'thwap-help-lines "C-c t o r : Refile the current task.") + (thwap/add-key-binding "o e" 'org-export-dispatch "Export the current buffer.")) + ;; (define-key thwap-map (kbd "o e") 'org-export-dispatch) + ;; (add-to-list 'thwap-help-lines "C-c t o e : Export the current buffer.")) + +;; org-bullets +(when (and thwap-org-enable-org thwap-org-enable-org-bullets) + (straight-use-package 'org-bullets) + (add-hook 'org-mode-hook (lambda () (org-bullets-mode 1)))) + +;; org-super-agenda +(when (and thwap-org-enable-org thwap-org-enable-org-super-agenda) + (straight-use-package 'org-super-agenda) + (add-hook 'org-agenda-mode-hook 'org-super-agenda-mode)) + +;; org-modern +(when (and thwap-org-enable-org thwap-org-enable-org-modern) + (straight-use-package 'org-modern)) + +;; org-timeblock +(when (and thwap-org-enable-org thwap-org-enable-org-timeblock) + (straight-use-package 'org-timeblock)) + +;; org-download +(when (and thwap-org-enable-org thwap-org-enable-org-download) + (add-hook 'dired-mode-hook 'org-download-enable)) + +;; ob-mermaid +(when (and thwap-org-enable-org thwap-org-enable-ob-mermaid) + (straight-use-package 'ob-mermaid) + (add-to-list 'org-src-lang-modes '("mermaid" . mermaid)) + (add-to-list 'org-babel-load-languages '(mermaid . t))) + +;; org-roam +(when (and thwap-org-enable-org thwap-org-enable-org-roam) + (setq org-roam-directory "~/.org-agenda") + (setq org-roam-db-location "~/.org-agenda/org-roam.db") + (setq org-roam-completion-everywhere t) + (setq org-roam-capture-templates + '(("d" "default" plain "%?" + :if-new (file+head "%<%Y%m%d%H%M%S>-${slug}.org" "#+title: ${title}\n") + :unnarrowed t))) + (add-hook 'after-init-hook 'org-roam-mode) + (add-hook 'org-mode-hook 'org-roam-mode) + (add-hook 'org-mode-hook 'org-roam-ui-mode)) + +;; org-roam-ui +(when (and thwap-org-enable-org thwap-org-enable-org-roam thwap-org-enable-org-roam-ui) + (straight-use-package 'org-roam-ui) + (setq org-roam-ui-sync-theme t) + (setq org-roam-ui-follow t) + (setq org-roam-ui-update-on-save t)) + +;; org-transclusion +(when (and thwap-org-enable-org thwap-org-enable-org-transclusion) + (straight-use-package 'org-transclusion)) + + ;; ;; Org mode configuration ;; -(setq browse-url-browser-function 'browse-url-generic - browse-url-generic-program "firefox-esr") - -;; Basic Org mode settings -(setq org-log-done 'time - org-startup-indented t - org-hide-leading-stars t - org-support-shift-select t - org-directory "~/.org-agenda" - org-default-notes-file "~/.org-agenda/notes.org") - -;; Configure Org agenda -(thwap/org-agenda-files-update) - -;; Configure TODO keywords -(setq org-todo-keywords - '((sequence "TODO" "IN-PROGRESS" "EPIC" "WAITING" "WONTDO" "DONE"))) - -;; Set up capture templates -(setq org-capture-templates - `(("T" "THWAP TODO" entry (file+headline "~/.org-agenda/tasks.org" "THWAP Tasks") - "* TODO %?\n %i\n %a") - ("A" "APFM TODO" entry (file+headline "~/.org-agenda/tasks.org" "APFM Tasks") - "* TODO %?\n %i\n %a") - ("L" "LIFE TODO" entry (file+headline "~/.org-agenda/tasks.org" "LIFE Tasks") - "* TODO %?\n %i\n %a") - ("a" "Appointment" entry (file+headline "~/.org-agenda/events.org" "Appointments") - "* %?\n %i\n %a" :clock-in t :clock-resume t) - ("e" "Schedule Event" entry (file+headline "~/.org-agenda/events.org" "Events") - "* %?\n %i\n %a" :clock-in t :clock-resume t) - ("m" "Schedule Meeting" entry (file+headline "~/.org-agenda/events.org" "Meetings") - "* %?\n %i\n %a" :clock-in t :clock-resume t) - ("n" "Note" entry (file "~/.org-agenda/notes.org") - "* %?\n %i\n %a" :clock-in t :clock-resume t) - ("i" "Idea" entry (file "~/.org-agenda/ideas.org") - "* %? :IDEA: \n%t" :clock-in t :clock-resume t))) - -;; Configure Org export settings -(setq org-export-with-sub-superscripts t) -(setq org-export-with-toc t) - -;; Enable Babel languages -(org-babel-do-load-languages - 'org-babel-load-languages - '((emacs-lisp . t) - (python . t) - (org . t) - (ruby . t) - (shell . t))) - - -;; Visual line mode for Org mode -(add-hook 'org-mode-hook 'thwap/org-agenda-files-update) -(add-hook 'org-mode-hook 'visual-line-mode) - -;; org-bullets hooks -(add-hook 'org-mode-hook (lambda () (org-bullets-mode 1))) - -;; Org mode stuff -(define-key thwap-map (kbd "o l") 'org-store-link) -(add-to-list 'thwap-help-lines "C-c t o l : Store a link to the current location in the kill ring.") -(define-key thwap-map (kbd "o C-l") 'org-toggle-link-display) -(add-to-list 'thwap-help-lines "C-c t o C-l : Toggle the display of links.") -;; agenda stuff -(define-key thwap-map (kbd "o n") 'org-capture) -(add-to-list 'thwap-help-lines "C-c t o n : Capture a new task.") -(define-key thwap-map (kbd "o a") 'org-agenda) -(add-to-list 'thwap-help-lines "C-c t o a : Open the Org agenda.") -(define-key thwap-map (kbd "o t") 'org-todo-list) -(add-to-list 'thwap-help-lines "C-c t o t : Open the Org TODO list.") -;; time management stuff -(define-key thwap-map (kbd "o c i") 'org-clock-in) -(add-to-list 'thwap-help-lines "C-c t o c i : Clock in to the current task.") -(define-key thwap-map (kbd "o c o") 'org-clock-out) -(add-to-list 'thwap-help-lines "C-c t o c o : Clock out of the current task.") -(define-key thwap-map (kbd "o c r") 'org-clock-report) -(add-to-list 'thwap-help-lines "C-c t o c r : Generate a clock report.") -;; refile stuff -(define-key thwap-map (kbd "o r") 'org-refile) -(add-to-list 'thwap-help-lines "C-c t o r : Refile the current task.") -;; export stuff -(define-key thwap-map (kbd "o e") 'org-export-dispatch) -(add-to-list 'thwap-help-lines "C-c t o e : Export the current buffer.") (provide 'thwap-org) diff --git a/lib/thwap-projectile.el b/lib/thwap-projectile.el index 2892be7..16c6005 100644 --- a/lib/thwap-projectile.el +++ b/lib/thwap-projectile.el @@ -1,8 +1,7 @@ -(straight-use-package 'projectile) - -;; Projectile keybindings -(define-key thwap-map (kbd "p") 'projectile-command-map) -(add-to-list 'thwap-help-lines "C-c t p : Projectile commands") +(when thwap-dev-enable-projectile + (straight-use-package 'projectile) + (define-key thwap-map (kbd "p") 'projectile-command-map) + (add-to-list 'thwap-help-lines "C-c t p : Projectile commands")) (provide 'thwap-projectile) diff --git a/lib/thwap-theme.el b/lib/thwap-theme.el index 313d748..318b8d9 100644 --- a/lib/thwap-theme.el +++ b/lib/thwap-theme.el @@ -1,9 +1,29 @@ ;; theme bits -(straight-use-package 'modus-themes) -(require 'modus-themes) -;; (load-theme 'modus-vivendi-tritanopia :no-confirm) -(load-theme 'modus-vivendi-tinted :no-confirm) +(when thwap-ui-enable-modus-themes + (straight-use-package 'modus-themes) + (require 'modus-themes)) + +(when thwap-ui-enable-doom-themes + (straight-use-package 'doom-themes) + (require 'doom-themes)) + +(when thwap-ui-enable-sublime-themes + (straight-use-package 'sublime-themes) + (require 'sublime-themes)) + +(when thwap-ui-enable-kaolin-themes + (straight-use-package 'kaolin-themes) + (require 'kaolin-themes)) + +(when thwap-ui-enable-alect-themes + (straight-use-package 'alect-themes) + (require 'alect-themes)) + +;; load the theme specified in the config +;; if things look wonky, you probably either need to install the +;; theme or you need to check your spelling. +(load-theme thwap-ui-theme :no-confirm) (provide 'thwap-theme)