diff --git a/lang/clang.el b/lang/clang.el index a75bda4..7dd980b 100644 --- a/lang/clang.el +++ b/lang/clang.el @@ -2,6 +2,8 @@ ;;; Commentary: ;;; Code: +(require '+custom-pkg-projectile "$HOME/.emacs.d/pkg/projectile.el") +(require '+custom-pkg-ctags "$HOME/.emacs.d/pkg/ctags.el") (require '+custom-pkg-prog-mode "$HOME/.emacs.d/pkg/prog-mode.el") (defun +custom-lang-clang/activate-clang-mode () @@ -20,7 +22,13 @@ (defvar c-default-style "bsd")) (add-to-list (make-local-variable 'company-backends) - '(company-etags company-yasnippet))) + '(company-etags company-yasnippet)) + + (setq-local + ctags/refresh-command + (format + "ctags -e -R --languages=C -f %sTAGS %s/*" + (projectile-project-root) (projectile-project-root)))) (add-hook 'c-mode-hook '+custom-lang-clang/activate-clang-mode) diff --git a/lang/common-lisp.el b/lang/common-lisp.el index 3ea6c09..75e7b14 100644 --- a/lang/common-lisp.el +++ b/lang/common-lisp.el @@ -9,7 +9,7 @@ ;;; Code: (require '+custom-pkg-prog-mode "$HOME/.emacs.d/pkg/prog-mode.el") -(require 'icejam-company-yasnippet) +(require '+custom-pkg-company-yasnippet "$HOME/.emacs.d/pkg/company-yasnippet.el") (use-package slime :straight t) (use-package slime-company :straight t diff --git a/lang/elixir.el b/lang/elixir.el index 66e4940..609a3c6 100644 --- a/lang/elixir.el +++ b/lang/elixir.el @@ -3,7 +3,7 @@ ;;; Code: (require '+custom-pkg-prog-mode "$HOME/.emacs.d/pkg/prog-mode.el") -(require 'icejam-flycheck) +(require '+custom-pkg-flycheck "$HOME/.emacs.d/pkg/flycheck.el") (require '+custom-pkg-transient "$HOME/.emacs.d/pkg/transient.el") (use-package elixir-mode :defer t :straight t) diff --git a/lang/erlang.el b/lang/erlang.el index 8ba6539..f377808 100644 --- a/lang/erlang.el +++ b/lang/erlang.el @@ -2,9 +2,9 @@ ;;; Commentary: ;;; Code: +(require '+custom-pkg-ctags "$HOME/.emacs.d/pkg/ctags.el") (require '+custom-pkg-prog-mode "$HOME/.emacs.d/pkg/prog-mode.el") -(require 'icejam-lsp) -(require 'icejam-projectile) +(require '+custom-pkg-lsp "$HOME/.emacs.d/pkg/lsp.el") (use-package erlang :defer t diff --git a/lang/fsharp.el b/lang/fsharp.el index a117abc..4dfac94 100644 --- a/lang/fsharp.el +++ b/lang/fsharp.el @@ -11,7 +11,7 @@ ;;; Code: (require '+custom-pkg-prog-mode "$HOME/.emacs.d/pkg/prog-mode.el") -(require 'icejam-lsp) +(require '+custom-pkg-flycheck "$HOME/.emacs.d/pkg/flycheck.el") (use-package fsharp-mode :requires (lsp-mode lsp-ui) diff --git a/lang/gleam.el b/lang/gleam.el index 21bf34f..b0d15b7 100644 --- a/lang/gleam.el +++ b/lang/gleam.el @@ -11,6 +11,7 @@ ;;; Code: (require '+custom-pkg-prog-mode "$HOME/.emacs.d/pkg/prog-mode.el") +(require '+custom-pkg-flycheck "$HOME/.emacs.d/pkg/flycheck.el") (require '+custom-pkg-transient "$HOME/.emacs.d/pkg/transient.el") (use-package gleam-mode diff --git a/lang/haskell.el b/lang/haskell.el index b8fc44f..3b895a7 100644 --- a/lang/haskell.el +++ b/lang/haskell.el @@ -11,6 +11,7 @@ ;;; Code: (require '+custom-pkg-prog-mode "$HOME/.emacs.d/pkg/prog-mode.el") +(require '+custom-pkg-flycheck "$HOME/.emacs.d/pkg/flycheck.el") (require '+custom-pkg-transient "$HOME/.emacs.d/pkg/transient.el") (use-package haskell-mode diff --git a/lang/javascript.el b/lang/javascript.el index 3c3dbd0..d86b0ec 100644 --- a/lang/javascript.el +++ b/lang/javascript.el @@ -3,8 +3,8 @@ ;;; Code: (require '+custom-pkg-prog-mode "$HOME/.emacs.d/pkg/prog-mode.el") -(require 'icejam-flycheck) -(require 'icejam-lsp) +(require '+custom-pkg-flycheck "$HOME/.emacs.d/pkg/flycheck.el") +(require '+custom-pkg-lsp "$HOME/.emacs.d/pkg/lsp.el") (use-package js2-mode :requires (web-mode company-web lsp-mode lsp-ui) diff --git a/lang/lean.el b/lang/lean.el index 22efc56..be688d3 100644 --- a/lang/lean.el +++ b/lang/lean.el @@ -3,6 +3,7 @@ ;;; Code: (require '+custom-pkg-prog-mode "$HOME/.emacs.d/pkg/prog-mode.el") +(require '+custom-pkg-flycheck "$HOME/.emacs.d/pkg/flycheck.el") (use-package lean4-mode :straight (lean4-mode diff --git a/lang/php.el b/lang/php.el index acba1c7..735755c 100644 --- a/lang/php.el +++ b/lang/php.el @@ -11,7 +11,7 @@ ;;; Code: (require '+custom-pkg-prog-mode "$HOME/.emacs.d/pkg/prog-mode.el") -(require 'icejam-flycheck) +(require '+custom-pkg-flycheck "$HOME/.emacs.d/pkg/flycheck.el") (require '+custom-pkg-transient "$HOME/.emacs.d/pkg/transient.el") (use-package php-mode diff --git a/lang/python.el b/lang/python.el index 75b6383..ab41623 100644 --- a/lang/python.el +++ b/lang/python.el @@ -3,9 +3,11 @@ ;;; Code: (require '+custom-pkg-prog-mode "$HOME/.emacs.d/pkg/prog-mode.el") +(require '+custom-pkg-projectile "$HOME/.emacs.d/pkg/projectile.el") +(require '+custom-pkg-ctags "$HOME/.emacs.d/pkg/ctags.el") (transient-define-prefix +custom-lang-python/transient-context-menu () - "Python Buffer Commands." + "Python Buffer Commands" ["" ["LSP" ("m" "iMenu" lsp-ui-imenu)] diff --git a/lang/ruby.el b/lang/ruby.el index 99a9682..cc555ea 100644 --- a/lang/ruby.el +++ b/lang/ruby.el @@ -3,7 +3,8 @@ ;;; Code: (require '+custom-pkg-prog-mode "$HOME/.emacs.d/pkg/prog-mode.el") -(require 'icejam-projectile) +(require '+custom-pkg-projectile "$HOME/.emacs.d/pkg/projectile.el") +(require '+custom-pkg-ctags "$HOME/.emacs.d/pkg/ctags.el") (use-package rspec-mode :straight t :defer t) (use-package ruby-end :straight t :defer t) diff --git a/lang/rust.el b/lang/rust.el index 97f2ec4..f4cb61d 100644 --- a/lang/rust.el +++ b/lang/rust.el @@ -3,6 +3,7 @@ ;;; Code: (require '+custom-pkg-prog-mode "$HOME/.emacs.d/pkg/prog-mode.el") +(require '+custom-pkg-flycheck "$HOME/.emacs.d/pkg/flycheck.el") (use-package rust-mode :straight t diff --git a/lang/web.el b/lang/web.el index ae0b4b1..e63fc44 100644 --- a/lang/web.el +++ b/lang/web.el @@ -2,8 +2,8 @@ ;;; Commentary: ;;; Code: -(require 'icejam-lsp) -(require 'icejam-flycheck) +(require '+custom-pkg-lsp "$HOME/.emacs.d/pkg/lsp.el") +(require '+custom-pkg-flycheck "$HOME/.emacs.d/pkg/flycheck.el") (use-package web-mode :requires (lsp-mode flycheck) diff --git a/lang/ziglang.el b/lang/ziglang.el index ba4d06b..0aa30ba 100644 --- a/lang/ziglang.el +++ b/lang/ziglang.el @@ -9,6 +9,9 @@ ;; ziglang does a thing. ;;; Code: + +(require '+custom-pkg-projectile "$HOME/.emacs.d/pkg/projectile.el") +(require '+custom-pkg-ctags "$HOME/.emacs.d/pkg/ctags.el") (require '+custom-pkg-prog-mode "$HOME/.emacs.d/pkg/prog-mode.el") (use-package zig-mode :straight t :defer t :requires (lsp)) diff --git a/lisp/icejam-init.el b/lisp/icejam-init.el index 6d808e3..25f3127 100644 --- a/lisp/icejam-init.el +++ b/lisp/icejam-init.el @@ -37,18 +37,19 @@ (require '+custom-pkg-base "$HOME/.emacs.d/pkg/base.el") (require '+custom-pkg-sys-specific "$HOME/.emacs.d/pkg/sys-specific.el") (require '+custom-pkg-ivy "$HOME/.emacs.d/pkg/ivy.el") -(require 'icejam-avy) (require '+custom-pkg-transient "$HOME/.emacs.d/pkg/transient.el") (require '+custom-pkg-magit "$HOME/.emacs.d/pkg/magit.el") (require '+custom-pkg-prog-mode "$HOME/.emacs.d/pkg/prog-mode.el") -(require 'icejam-company-yasnippet) -(require 'icejam-flycheck) -(require 'icejam-projectile) -(require 'icejam-ispell) -(require 'icejam-deft) -(require 'icejam-lsp) -(require 'icejam-dashboard) -(require 'icejam-vundo) +(require '+custom-pkg-company-yasnippet "$HOME/.emacs.d/pkg/company-yasnippet.el") +(require '+custom-pkg-flycheck "$HOME/.emacs.d/pkg/flycheck.el") +(require '+custom-pkg-projectile "$HOME/.emacs.d/pkg/projectile.el") +(require '+custom-pkg-ctags "$HOME/.emacs.d/pkg/ctags.el") +(require '+custom-pkg-ispell "$HOME/.emacs.d/pkg/ispell.el") +(require '+custom-pkg-deft "$HOME/.emacs.d/pkg/deft.el") +(require '+custom-pkg-lsp "$HOME/.emacs.d/pkg/lsp.el") +(require '+custom-pkg-dashboard "$HOME/.emacs.d/pkg/dashboard.el") +(require '+custom-pkg-undo-tree "$HOME/.emacs.d/pkg/undo-tree.el") +(require 'icejam-avy) (require 'icejam-speed-type) ;; Themes diff --git a/lisp/icejam-company-yasnippet.el b/pkg/company-yasnippet.el similarity index 96% rename from lisp/icejam-company-yasnippet.el rename to pkg/company-yasnippet.el index bf6c006..5011b36 100644 --- a/lisp/icejam-company-yasnippet.el +++ b/pkg/company-yasnippet.el @@ -1,4 +1,4 @@ -;;; icejam-company-yasnippet.el -- summary -*- lexical-binding: t; -*- +;;; pkg/company-yasnippet -- summary -*- lexical-binding: t; -*- ;;; Commentary: ;;; Company completion framework configuration ;;; Code: @@ -110,5 +110,5 @@ gptel-model "claude-3-5-sonnet-20240620" gptel-backend (gptel-make-anthropic "Claude" :stream t :key (lambda () anthropic-api-key))) -(provide 'icejam-company-yasnippet) -;;; icejam-company-yasnippet.el ends here +(provide '+custom-pkg-company-yasnippet) +;;; company-yasnippet.el ends here diff --git a/pkg/ctags.el b/pkg/ctags.el new file mode 100644 index 0000000..fb95fd1 --- /dev/null +++ b/pkg/ctags.el @@ -0,0 +1,56 @@ +;;; pkg/ctags -- summary -*- lexical-binding: t; -*- +;;; Commentary: +;;; Old and rudimental completion framework. +;;; Code: +(require '+custom-pkg-projectile "$HOME/.emacs.d/pkg/projectile.el") + +(setq tags-add-tables nil) + +(defvar ctags/refresh-command + (format "ctags -e -R -f %sTAGS %s." + default-directory default-directory)) + +;; Sentinel function for capturing ctags +(defun ctags/process-callback (process event) + "Show status of asynchronous ctags PROCESS after it send finished EVENT." + (cond + ((string-equal event "finished\n") + (message "Creating tag files...completed") + (kill-buffer (get-buffer "*ctags*")) + (visit-tags-table (format "%sTAGS" (projectile-project-root)))) + (t + (message "Creating tags file...failed") + (pop-to-buffer (get-buffer "*ctags*")) + ))) + +(cl-defun ctags/refresh-ctags (&key silent) + "Refresh ctags according to currently set command. With SILENT you can make it, uhh... silent." + (interactive) + + ;; Print message if not silent + (when (not silent) (message "Starting ctags process...")) + + ;; Return if a version of the process is already running + (when (not (get-process "ctags")) + (start-process-shell-command "ctags" "*ctags*" ctags/refresh-command) + (set-process-sentinel (get-process "ctags") 'ctags/process-callback))) + +;; Ctags bindings +(define-key prog-mode-map (kbd "C-c E") 'ctags/refresh-ctags) + +;; Automatically update tags on save, but be silent about it. +(defvar ctags/major-modes-to-update-on-save '()) +(defun ctags/update-tags-on-save () + "Update tags if current major mode is part of the list." + (interactive) + (when (member major-mode ctags/major-modes-to-update-on-save) + (ctags/refresh-ctags :silent t))) + +(defun ctags/update-this-mode-on-save (mode) + "Update MODE on save." + (add-to-list (make-local-variable 'ctags/major-modes-to-update-on-save) mode)) + +(add-hook 'after-save-hook 'ctags/update-tags-on-save) + +(provide '+custom-pkg-ctags) +;;; ctags.el ends here diff --git a/lisp/icejam-dashboard.el b/pkg/dashboard.el similarity index 91% rename from lisp/icejam-dashboard.el rename to pkg/dashboard.el index 2cec7f0..6e534f1 100644 --- a/lisp/icejam-dashboard.el +++ b/pkg/dashboard.el @@ -27,5 +27,5 @@ ;; (registers . 5) (projects . 5)))) -(provide 'icejam-dashboard) -;;; icejam-dashboard.el ends here +(provide '+custom-pkg-dashboard) +;;; dashboard.el ends here diff --git a/lisp/icejam-deft.el b/pkg/deft.el similarity index 94% rename from lisp/icejam-deft.el rename to pkg/deft.el index 64ff7f2..9a78055 100644 --- a/lisp/icejam-deft.el +++ b/pkg/deft.el @@ -25,12 +25,12 @@ deft-auto-save-interval 30.0)) (transient-define-prefix +custom-pkg-deft/menu () - "Start Deft." + "Start Deft" ["" ("d" "Deft" deft) ("q" "quit" keyboard-quit)]) (define-key +custom-keys-mode-map (kbd "C-c d") '+custom-pkg-deft/menu) -(provide 'icejam-deft) -;;; icejam-deft.el ends here +(provide '+custom-pkg-deft) +;;; deft.el ends here diff --git a/lisp/icejam-flycheck.el b/pkg/flycheck.el similarity index 84% rename from lisp/icejam-flycheck.el rename to pkg/flycheck.el index 5d9d880..b1c580b 100644 --- a/lisp/icejam-flycheck.el +++ b/pkg/flycheck.el @@ -1,4 +1,4 @@ -;;; icejam-flycheck -- summary -*- lexical-binding: t; -*- +;;; pkg/flycheck -- summary -*- lexical-binding: t; -*- ;;; Commentary: ;;; Code: @@ -8,7 +8,6 @@ :straight t :defer t :config (global-flycheck-mode t) - (setq flycheck-emacs-lisp-load-path 'inherit) (unbind-key "C-c ! C-c" flycheck-mode-map) (unbind-key "C-c ! C-w" flycheck-mode-map) (unbind-key "C-c ! ?" flycheck-mode-map) @@ -26,5 +25,5 @@ (unbind-key "C-c ! v" flycheck-mode-map) (unbind-key "C-c ! x" flycheck-mode-map)) -(provide 'icejam-flycheck) -;;; icejam-flycheck.el ends here +(provide '+custom-pkg-flycheck) +;;; flycheck.el ends here diff --git a/lisp/icejam-ispell.el b/pkg/ispell.el similarity index 94% rename from lisp/icejam-ispell.el rename to pkg/ispell.el index f26a7f6..c988255 100644 --- a/lisp/icejam-ispell.el +++ b/pkg/ispell.el @@ -20,5 +20,5 @@ (use-package flyspell-correct :straight t :after flyspell :defer t) (use-package flyspell-correct-ivy :straight :after flyspell-correct :defer t) -(provide 'icejam-ispell) -;;; icejam-ispell.el ends here +(provide '+custom-pkg-ispell) +;;; ispell.el ends here diff --git a/lisp/icejam-lsp.el b/pkg/lsp.el similarity index 96% rename from lisp/icejam-lsp.el rename to pkg/lsp.el index 4a05034..ea3bc6d 100644 --- a/lisp/icejam-lsp.el +++ b/pkg/lsp.el @@ -1,4 +1,4 @@ -;;; icejam-lsp -- summary -*- lexical-binding: t; -*- +;;; pkg/lsp -- summary -*- lexical-binding: t; -*- ;;; Commentary: ;;; Global Language Server Protocol Config ;;; Code: @@ -80,5 +80,5 @@ :defer t :requires (lsp-mode lsp-ui)) -(provide 'icejam-lsp) -;;; icejam-lsp.el ends here +(provide '+custom-pkg-lsp) +;;; lsp.el ends here diff --git a/lisp/icejam-projectile.el b/pkg/projectile.el similarity index 93% rename from lisp/icejam-projectile.el rename to pkg/projectile.el index a60d176..9820520 100644 --- a/lisp/icejam-projectile.el +++ b/pkg/projectile.el @@ -20,5 +20,5 @@ (projectile-mode t) -(provide 'icejam-projectile) -;;; icejam-projectile.el ends here +(provide '+custom-pkg-projectile) +;;; projectile.el ends here diff --git a/lisp/icejam-vundo.el b/pkg/undo-tree.el similarity index 68% rename from lisp/icejam-vundo.el rename to pkg/undo-tree.el index f4a0d6b..0b24ced 100644 --- a/lisp/icejam-vundo.el +++ b/pkg/undo-tree.el @@ -1,4 +1,4 @@ -;;; icejam-vundo.el --- summary -*- lexical-binding: t; -*- +;;; undo-tree.el --- summary -*- lexical-binding: t; -*- ;; Author: Maciej Szlosarczyk ;; Maintainer: Maciej Szlosarczyk @@ -15,5 +15,5 @@ :straight t :defer t) -(provide 'icejam-vundo) -;;; icejam-vundo.el ends here +(provide '+custom-pkg-undo-tree) +;;; undo-tree.el ends here