From 6e565ee5423993b37310cb3ec61dd2a87d53c83f Mon Sep 17 00:00:00 2001 From: Mike 'Fuzzy' Partin Date: Thu, 4 Jul 2024 22:48:54 -0700 Subject: [PATCH] initial commit --- .gitignore | 1 + early-init.el | 3 + init.el | 74 +++++++++++++++++++++++++ lib/thwap-co.el | 5 ++ lib/thwap-go.el | 8 +++ lib/thwap-lsp.el | 10 ++++ lib/thwap-org.el | 129 +++++++++++++++++++++++++++++++++++++++++++ lib/thwap-theme.el | 8 +++ thwap.d/.placeholder | 0 9 files changed, 238 insertions(+) create mode 100644 .gitignore create mode 100644 early-init.el create mode 100644 init.el create mode 100644 lib/thwap-co.el create mode 100644 lib/thwap-go.el create mode 100644 lib/thwap-lsp.el create mode 100644 lib/thwap-org.el create mode 100644 lib/thwap-theme.el create mode 100644 thwap.d/.placeholder diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b25c15b --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*~ diff --git a/early-init.el b/early-init.el new file mode 100644 index 0000000..99d0ae3 --- /dev/null +++ b/early-init.el @@ -0,0 +1,3 @@ + +;; And disable package at startup +(setq package-enable-at-startup nil) diff --git a/init.el b/init.el new file mode 100644 index 0000000..d53b54c --- /dev/null +++ b/init.el @@ -0,0 +1,74 @@ +;; Add our custom site dir +(add-to-list 'load-path (expand-file-name "lib" user-emacs-directory)) +(add-to-list 'load-path (expand-file-name "thwap.d" user-emacs-directory)) + +;; bootstrap straight, which we will use for everything + +(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)) + +;; custom set stuff +(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. + '(tool-bar-mode nil)) + +(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. + '(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) + +;; 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-t") 'thwap-map) + +;; theme configuration + +(require 'thwap-theme) + +;; company configuration + +(require 'thwap-co) + +;; LSP configuration + +(require 'thwap-lsp) + +;; org configuration + +(require 'thwap-org) + +;; golang configuration + +(require 'thwap-go) diff --git a/lib/thwap-co.el b/lib/thwap-co.el new file mode 100644 index 0000000..9407f7e --- /dev/null +++ b/lib/thwap-co.el @@ -0,0 +1,5 @@ + +(straight-use-package 'company) +(add-hook 'after-init-hook 'global-company-mode) + +(provide 'thwap-co) diff --git a/lib/thwap-go.el b/lib/thwap-go.el new file mode 100644 index 0000000..09acd62 --- /dev/null +++ b/lib/thwap-go.el @@ -0,0 +1,8 @@ +(require 'thwap-lsp) + +(straight-use-package 'go-mode) + +(setq lsp-go-analyses '((shadow . t) + (simplifycompositelit . :json-false))) + + diff --git a/lib/thwap-lsp.el b/lib/thwap-lsp.el new file mode 100644 index 0000000..145c2cc --- /dev/null +++ b/lib/thwap-lsp.el @@ -0,0 +1,10 @@ + +(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) +;; (lsp-enable-which-key-integration t) + +(provide 'thwap-lsp) diff --git a/lib/thwap-org.el b/lib/thwap-org.el new file mode 100644 index 0000000..5c4b078 --- /dev/null +++ b/lib/thwap-org.el @@ -0,0 +1,129 @@ + +;; +;; 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 +;; + +;; Function to get a unique filename for Org-capture +(defun thwap/org-capture-get-unique-filename () + "Generate a unique filename for Org-capture." + (let ((filename (format "~/.org-agenda/syncup__issue__%s.org" (format-time-string "%Y%m%d%H%M%S")))) + (message "Inside function: Generated filename: %s" filename) + filename)) + +(defun thwap/list-files-with-extension (dir extension) + "Recursively list all files in DIR with the given EXTENSION, suitable for org-agenda-files." + (let ((files '())) + (dolist (file (directory-files-recursively dir (concat "\\." extension "\\'"))) + (push file files)) + (nreverse files))) + +;; (defun thwap/list-files-with-extension (dir extension) +;; "Recursively list all files in DIR with the given EXTENSION." +;; (let ((files '())) +;; (dolist (file (directory-files-recursively dir (concat "\\." extension "\\'"))) +;; (push file files)) +;; files)) + +(defun thwap/org-agenda-files-update () + "Update the org-agenda-files variable." + (setq org-agenda-files (thwap/list-files-with-extension "~/.org-agenda" "org")) + (setq org-timeblock-files (thwap/list-files-with-extension "~/.org-agenda" "org")) + (setq org-timeblock-inbox-file "~/.org-agenda/tasks.org")) + +;; +;; 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-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) +(define-key thwap-map (kbd "o C-l") 'org-toggle-link-display) +;; agenda stuff +(define-key thwap-map (kbd "o n") 'org-capture) +(define-key thwap-map (kbd "o a") 'org-agenda) +(define-key thwap-map (kbd "o t") 'org-todo-list) +;; time management stuff +(define-key thwap-map (kbd "o c i") 'org-clock-in) +(define-key thwap-map (kbd "o c o") 'org-clock-out) +(define-key thwap-map (kbd "o c r") 'org-clock-report) +;; refile stuff +(define-key thwap-map (kbd "o r") 'org-refile) +;; export stuff +(define-key thwap-map (kbd "o e") 'org-export-dispatch) + +(provide 'thwap-org) diff --git a/lib/thwap-theme.el b/lib/thwap-theme.el new file mode 100644 index 0000000..a4b35d3 --- /dev/null +++ b/lib/thwap-theme.el @@ -0,0 +1,8 @@ + +;; theme bits + +(straight-use-package 'modus-themes) +(require 'modus-themes) +(load-theme 'modus-vivendi-tritanopia :no-confirm) + +(provide 'thwap-theme) diff --git a/thwap.d/.placeholder b/thwap.d/.placeholder new file mode 100644 index 0000000..e69de29