diff --git a/bindings.el b/bindings.el index f39bee1..ab3fd92 100644 --- a/bindings.el +++ b/bindings.el @@ -160,6 +160,7 @@ :desc "Test project" "T" #'projectile-test-project :desc "Pop up scratch buffer" "x" #'doom/open-project-scratch-buffer :desc "Switch to scratch buffer" "X" #'doom/switch-to-project-scratch-buffer + :desc "Justfile Commands" "j" #'justl (:when (and (modulep! :tools taskrunner) (or (modulep! :completion ivy) (modulep! :completion helm))) @@ -167,15 +168,15 @@ ;;; i --- insert (:prefix-map ("i" . "insert") - (:when (> emacs-major-version 28) - :desc "Emoji" "e" #'emoji-search) - (:when (modulep! :ui emoji) - :desc "Emoji" "e" #'emojify-insert-emoji) - :desc "Current file name" "f" #'+default/insert-file-path - :desc "Current file path" "F" (cmd!! #'+default/insert-file-path t) - :desc "Snippet" "s" #'+default/insert-snippet - :desc "Unicode" "u" #'insert-char - :desc "From clipboard" "y" #'+default/yank-pop) + (:when (> emacs-major-version 28) + :desc "Emoji" "e" #'emoji-search) + (:when (modulep! :ui emoji) + :desc "Emoji" "e" #'emojify-insert-emoji) + :desc "Current file name" "f" #'+default/insert-file-path + :desc "Current file path" "F" (cmd!! #'+default/insert-file-path t) + :desc "Snippet" "s" #'+default/insert-snippet + :desc "Unicode" "u" #'insert-char + :desc "From clipboard" "y" #'+default/yank-pop) ;;; s --- search @@ -295,8 +296,8 @@ :desc "Magit buffer log" "L" #'magit-log-buffer-file :desc "Git stage file" "S" #'magit-stage-file :desc "Git unstage file" "U" #'magit-unstage-file - :desc "Git push current" "P" #'magit-push-implicitly - :desc "Git push with options" "p" #'magit-push + :desc "Git push current" "P" #'magit-push-implicitly + :desc "Git push with options" "p" #'magit-push (:prefix ("f" . "find") :desc "Find file" "f" #'magit-find-file :desc "Find gitconfig file" "g" #'magit-find-git-config-file @@ -313,13 +314,13 @@ :desc "Browse issues" "I" #'forge-browse-issues :desc "Browse pull requests" "P" #'forge-browse-pullreqs) (:prefix ("l" . "list") - (:when (modulep! :tools gist) - :desc "List gists" "g" #'+gist:list) - :desc "List repositories" "r" #'magit-list-repositories - :desc "List submodules" "s" #'magit-list-submodules - :desc "List issues" "i" #'forge-list-issues - :desc "List pull requests" "p" #'forge-list-pullreqs - :desc "List notifications" "n" #'forge-list-notifications) + (:when (modulep! :tools gist) + :desc "List gists" "g" #'+gist:list) + :desc "List repositories" "r" #'magit-list-repositories + :desc "List submodules" "s" #'magit-list-submodules + :desc "List issues" "i" #'forge-list-issues + :desc "List pull requests" "p" #'forge-list-pullreqs + :desc "List notifications" "n" #'forge-list-notifications) (:prefix ("c" . "create") :desc "Initialize repo" "r" #'magit-init :desc "Clone repo" "R" #'magit-clone @@ -357,7 +358,7 @@ :desc "Jump to references" "D" #'+lookup/references :desc "Evaluate buffer/region" "e" #'+eval/buffer-or-region :desc "Evaluate & replace region" "E" #'+eval:replace-region - :desc "Toggle Fold" "z" #'+fold/toggle + :desc "Toggle Fold" "z" #'+fold/toggle :desc "Format buffer/region" "f" #'+format/region-or-buffer :desc "Find implementations" "i" #'+lookup/implementations :desc "Jump to documentation" "k" #'+lookup/documentation @@ -365,7 +366,10 @@ :desc "Find type definition" "t" #'+lookup/type-definition :desc "Delete trailing whitespace" "w" #'delete-trailing-whitespace :desc "Delete trailing newlines" "W" #'doom/delete-trailing-newlines - :desc "List errors" "x" #'+default/diagnostics) + :desc "List errors" "x" #'+default/diagnostics + :desc "Spaces -> Tabs" "" #'tabify + :desc "Tabs -> Spaces" "" #'untabify) + ;;; q --- quit/restart (:prefix-map ("q" . "quit/session") @@ -380,8 +384,8 @@ :desc "Save session to file" "S" #'doom/save-session :desc "Restore session from file" "L" #'doom/load-session :desc "Restart & restore Emacs" "r" #'doom/restart-and-restore - :desc "Restart Emacs" "R" #'doom/restart) - ) + :desc "Restart Emacs" "R" #'doom/restart)) + ;; some helpful general keys (map! "s-c" #'kill-ring-save @@ -408,20 +412,10 @@ "M-" nil "M-" nil) -;; Smartparens bindings set to be called with localleader + l as prefix (map! - :map lisp-mode-map :localleader - :prefix ("l" . "Lisps") - "f" #'sp-forward-sexp - "b" #'sp-backward-sexp - "u" #'sp-unwrap-sexp - "k" #'sp-kill-sexp - "s" #'sp-forward-slurp-sexp - "r" #'sp-forward-barf-sexp - "(" #'sp-wrap-round - "[" #'sp-wrap-square - "{" #'sp-wrap-curly) + :map lisp-mode-map + :desc "Load cl-patterns helpers" "p" #'cl-patterns-helpers-load) (map! :map smartparens-mode-map diff --git a/config.el b/config.el index 3ddb10d..611901d 100644 --- a/config.el +++ b/config.el @@ -25,7 +25,7 @@ (set-keyboard-coding-system 'utf-8) (prefer-coding-system 'utf-8) -(setq org-directory "~/Library/Mobile Documents/iCloud~md~obsidian/Documents/Primary/org/") +(setq org-directory "~/Library/Mobile Documents/iCloud~md~obsidian/Documents/Primary") ;; Modeline ;; - add current workspace name @@ -62,6 +62,11 @@ (+global-word-wrap-mode +1) ; default to soft word wrap (delete-selection-mode 1) ; delete stuff! (setq delete-active-region t) ; delete selected stuff! +(setq shell-file-name (executable-find "bash")) + +(setq-default vterm-shell (executable-find "fish")) + +(setq-default explicit-shell-file-name (executable-find "fish")) ;; remove org agenda from the splash screen (assoc-delete-all "Open org-agenda" +doom-dashboard-menu-sections) @@ -82,7 +87,7 @@ window-resize-pixelwise t))) ;; tabs! i like them -(setq-default indent-tabs-mode t) +;; (setq-default indent-tabs-mode t) (setq-default tab-width 2) ;; import all my customized keybindings based on doom evil mode, but without evil. @@ -102,6 +107,9 @@ (after! smart-tabs-mode (smart-tabs-insinuate 'c 'javascript 'python)) +(after! meow + (meow-vterm-enable)) + ;; Add consult-line searches to isearch history (both regular and regex) -- can now use meow 'n' to continue search as well as isearch (advice-add #'consult-line :after (lambda (&rest _) @@ -147,7 +155,7 @@ "s-M-" 'centaur-tabs-backward)) ;; use kitty for terminal-here -(setq terminal-here-mac-terminal-command '("kitty" "@" "launch" "--type" "tab")) +(setq terminal-here-mac-terminal-command '("kitty" "@" "launch" "--type=tab")) ;; set project paths and ignore buffers (setq projectile-project-search-path '(("~/Source" . 2))) @@ -171,8 +179,8 @@ ;; better completions for sly (after! sly (setq sly-lisp-implementations - '((sbcl ("sbcl" "--dynamic-space-size" "10000")) - (ciel ("sbcl" "--core" "/Users/emenel/quicklisp/local-projects/CIEL/ciel-core" "--eval" "(in-package :ciel-user)" "--dynamic-space-size" "2600")))) + '((sbcl ("sbcl" "--dynamic-space-size" "12000")) + (ciel ("sbcl" "--core" "/Users/emenel/quicklisp/local-projects/CIEL/ciel-core" "--eval" "(in-package :ciel-user)" "--dynamic-space-size" "2600")))) (setq sly-default-lisp 'sbcl) (setq sly-complete-symbol-function 'sly-flex-completions)) @@ -184,9 +192,9 @@ (defun cl-patterns-helpers-load () (interactive) (sly-eval-async '(cl:namestring (asdf:system-source-directory (asdf:find-system 'cl-patterns))) - (lambda (path) - (load (concat path "res/emacs/cl-patterns-helpers") nil nil nil t) - (load (concat path "res/emacs/cl-patterns-skeletons") nil nil nil t))) + (lambda (path) + (load (concat path "res/emacs/cl-patterns-helpers") nil nil nil t) + (load (concat path "res/emacs/cl-patterns-skeletons") nil nil nil t))) (define-key sly-mode-map (kbd "C-c p") 'cl-patterns-play-or-end-context-or-select-pdef) (define-key sly-mode-map (kbd "C-c P") 'cl-patterns-play-or-stop-context-or-select-pdef) (define-key sly-mode-map (kbd "C-c s") 'cl-patterns-stop-all) @@ -199,7 +207,7 @@ (setq exec-path (append exec-path '("/Applications/SuperCollider.app/Contents/MacOS/"))) ;; tidal cycles! -(setq tidal-boot-script-path "~/.cabal/share/aarch64-osx-ghc-9.4.2/tidal-1.9.3/BootTidal.hs") +;; (setq tidal-boot-script-path "~/.cabal/share/aarch64-osx-ghc-9.4.2/tidal-1.9.3/BootTidal.hs") ;; add platformio to ino files (add-to-list 'auto-mode-alist '("\\.ino\\'" . arduino-mode)) @@ -215,4 +223,27 @@ (custom-set-faces! '(line-number :foreground "#424242")) +;; mu4e +(set-email-account! "matt@emenel.ca" + '((mu4e-sent-folder . "/matt@emenel.ca/Sent") + (mu4e-drafts-folder . "/matt@emenel.ca/Drafts") + (mu4e-trash-folder . "/matt@emenel.ca/Trash") + (mu4e-refile-folder . "/matt@emenel.ca/Archive") + (mu4e-spam-folder . "/matt@emenel.ca/Spam") + (smtpmail-smtp-user . "matt@emenel.ca") + (user-mail-address . "matt@emenel.ca") ;; only needed for mu < 1.4 + (mu4e-compose-signature . "---")) + t) + +;; (after! mu4e +;; (add-to-list 'mu4e-bookmarks +;; '( :name "Inbox" +;; :query "maildir:/INBOX" +;; :key ?i) +;; '( :name "Inbox Unread" +;; :query "maildir:/INBOX and flag:unread" +;; :key ?o))) + +(use-package! kbd-mode) + (server-start) diff --git a/init.el b/init.el index 87f1b21..8bdb01a 100644 --- a/init.el +++ b/init.el @@ -88,28 +88,28 @@ :tools chezmoi - ;;ansible + ansible biblio ; Writes a PhD for you (citation needed) - ;;debugger ; FIXME stepping through code, to help you add bugs + debugger ; FIXME stepping through code, to help you add bugs direnv - ;;docker - ;;editorconfig ; let someone else argue about tabs vs spaces - ;;ein ; tame Jupyter notebooks with emacs + docker + editorconfig ; let someone else argue about tabs vs spaces + ein ; tame Jupyter notebooks with emacs (eval +overlay) ; run code, run (also, repls) ;;gist ; interacting with github gists lookup ; navigate your code and its documentation lsp ; M-x vscode magit ; a git porcelain for Emacs - ;;make ; run make tasks from Emacs + make ; run make tasks from Emacs ;;pass ; password manager for nerds pdf ; pdf enhancements ;;prodigy ; FIXME managing external services & code builders rgb ; creating color strings ;;taskrunner ; taskrunner for all your projects - ;;terraform ; infrastructure as code + terraform ; infrastructure as code ;;tmux ; an API for interacting with tmux tree-sitter ; syntax and parsing, sitting in a tree... - ;;upload ; map local to remote projects via ssh/ftp + upload ; map local to remote projects via ssh/ftp :os (:if IS-MAC macos) ; improve compatibility with macOS @@ -152,7 +152,7 @@ ;;lean ; for folks with too much to prove ;;ledger ; be audit you can be lua ; one-based indices? one-based indices - (markdown +tree-sitter) ; writing docs for people to ignore + (markdown +tree-sitter) ; writing docs for people to ignore ;;nim ; python + lisp at the speed of c ;;nix ; I hereby Declare "nix geht mehr!" ;;ocaml ; an objective camel @@ -180,8 +180,8 @@ (zig +lsp) ; C, but simpler :email - ;; (mu4e +org +gmail) - ;;notmuch + (mu4e +org) + ;; notmuch ;;(wanderlust +gmail) :app diff --git a/obsidian-config.el b/obsidian-config.el index cc11892..4896584 100644 --- a/obsidian-config.el +++ b/obsidian-config.el @@ -3,7 +3,7 @@ ;; configure obsidian integration for note taking fun times (use-package! obsidian :config - (obsidian-specify-path "~/Library/Mobile Documents/iCloud~md~obsidian/Documents/Primary") + (obsidian-specify-path "~/Library/Mobile Documents/iCloud~md~obsidian/Documents/Primary/") (setq obsidian-inbox-directory "_Inbox") (global-obsidian-mode t) (map! :map obsidian-mode-map diff --git a/packages.el b/packages.el index 1e7ffad..0b52673 100644 --- a/packages.el +++ b/packages.el @@ -16,8 +16,22 @@ (unpin! orderless) (unpin! cape) (unpin! corfu) +(unpin! yasnippet-capf) ;; (unpin! geiser) +(package! meow-vterm + :recipe (:type git + :host github + :repo "accelbread/meow-vterm")) + +(package! kbd-mode + :recipe (:type git + :host github + :repo "kmonad/kbd-mode")) + +(package! just-mode) +(package! justl) + (package! nerd-icons-completion) (package! nerd-icons-dired) (package! treemacs-nerd-icons) @@ -41,6 +55,8 @@ (package! scad-mode) (package! consult-yasnippet) (package! gcode-mode) +(package! sly-asdf) +(package! sly-quicklisp) ;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror: ;(package! some-package)