Migrate from Projectile to built-in project.el and fix Org mode
Major changes: - Replace Projectile with built-in project.el for project management - Add comprehensive Org mode configuration with TODO keywords and org-kanban support - Fix multiple parsing errors and keybinding conflicts Key improvements: - Faster startup with built-in project.el (no external dependencies) - Better integration with Eglot LSP client - Proper Org TODO keyword highlighting and kanban column ordering - Fixed unbalanced parentheses in init-completion.el and init-utils.el - Resolved keybinding conflicts (C-c d g → C-c G d, removed C-u C-c C-r) - Updated all file paths in init-utils.el to use lisp/ subdirectory The configuration now loads cleanly without errors and maintains backward compatibility with most Projectile keybindings (C-c p prefix) while also supporting the standard project.el bindings (C-x p prefix). 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -18,22 +18,22 @@
|
||||
(load-file (expand-file-name "init.el" user-emacs-directory))
|
||||
|
||||
;; Reload development config if it exists
|
||||
(let ((dev-config (expand-file-name "emacs-dev-config.el" user-emacs-directory)))
|
||||
(let ((dev-config (expand-file-name "lisp/emacs-dev-config.el" user-emacs-directory)))
|
||||
(when (file-exists-p dev-config)
|
||||
(load-file dev-config)))
|
||||
|
||||
;; Reload SHR config if it exists
|
||||
(let ((shr-config (expand-file-name "shr-config.el" user-emacs-directory)))
|
||||
(let ((shr-config (expand-file-name "lisp/shr-config.el" user-emacs-directory)))
|
||||
(when (file-exists-p shr-config)
|
||||
(load-file shr-config)))
|
||||
|
||||
;; Reload elfeed config if it exists
|
||||
(let ((elfeed-config (expand-file-name "elfeed-config.el" user-emacs-directory)))
|
||||
(let ((elfeed-config (expand-file-name "lisp/elfeed-config.el" user-emacs-directory)))
|
||||
(when (file-exists-p elfeed-config)
|
||||
(load-file elfeed-config)))
|
||||
|
||||
;; Reload mu4e config if it exists
|
||||
(let ((mu4e-config (expand-file-name "mu4e-config.el" user-emacs-directory)))
|
||||
(let ((mu4e-config (expand-file-name "lisp/mu4e-config.el" user-emacs-directory)))
|
||||
(when (file-exists-p mu4e-config)
|
||||
(condition-case err
|
||||
(load-file mu4e-config)
|
||||
@@ -79,12 +79,16 @@
|
||||
reload-emacs-config-files nil
|
||||
reload-emacs-config-index 0))))
|
||||
|
||||
(defun reload-emacs-config ()
|
||||
(defun reload-emacs-config (&optional arg)
|
||||
"Reload Emacs configuration non-blocking with incremental updates.
|
||||
This version loads configuration files one by one during idle time
|
||||
to prevent UI freezing."
|
||||
(interactive)
|
||||
;; Cancel any ongoing reload
|
||||
to prevent UI freezing. With prefix ARG, use blocking reload."
|
||||
(interactive "P")
|
||||
;; If prefix arg given, use blocking reload
|
||||
(if arg
|
||||
(reload-emacs-config-blocking)
|
||||
;; Otherwise, proceed with non-blocking reload
|
||||
;; Cancel any ongoing reload
|
||||
(when reload-emacs-config-timer
|
||||
(cancel-timer reload-emacs-config-timer)
|
||||
(setq reload-emacs-config-timer nil))
|
||||
@@ -94,10 +98,10 @@ to prevent UI freezing."
|
||||
(cl-remove-if-not
|
||||
#'file-exists-p
|
||||
(list (expand-file-name "init.el" user-emacs-directory)
|
||||
(expand-file-name "emacs-dev-config.el" user-emacs-directory)
|
||||
(expand-file-name "shr-config.el" user-emacs-directory)
|
||||
(expand-file-name "elfeed-config.el" user-emacs-directory)
|
||||
(expand-file-name "mu4e-config.el" user-emacs-directory))))
|
||||
(expand-file-name "lisp/emacs-dev-config.el" user-emacs-directory)
|
||||
(expand-file-name "lisp/shr-config.el" user-emacs-directory)
|
||||
(expand-file-name "lisp/elfeed-config.el" user-emacs-directory)
|
||||
(expand-file-name "lisp/mu4e-config.el" user-emacs-directory))))
|
||||
|
||||
(setq reload-emacs-config-index 0)
|
||||
|
||||
@@ -105,7 +109,7 @@ to prevent UI freezing."
|
||||
(length reload-emacs-config-files))
|
||||
|
||||
;; Start the reload process
|
||||
(reload-emacs-config-process-next))
|
||||
(reload-emacs-config-process-next)))
|
||||
|
||||
(defun reload-emacs-config-async ()
|
||||
"Reload Emacs configuration asynchronously with progress feedback."
|
||||
@@ -125,10 +129,10 @@ to prevent UI freezing."
|
||||
(cl-remove-if-not
|
||||
#'file-exists-p
|
||||
(list
|
||||
(expand-file-name "emacs-dev-config.el" user-emacs-directory)
|
||||
(expand-file-name "shr-config.el" user-emacs-directory)
|
||||
(expand-file-name "elfeed-config.el" user-emacs-directory)
|
||||
(expand-file-name "mu4e-config.el" user-emacs-directory)))))
|
||||
(expand-file-name "lisp/emacs-dev-config.el" user-emacs-directory)
|
||||
(expand-file-name "lisp/shr-config.el" user-emacs-directory)
|
||||
(expand-file-name "lisp/elfeed-config.el" user-emacs-directory)
|
||||
(expand-file-name "lisp/mu4e-config.el" user-emacs-directory)))))
|
||||
|
||||
(setq total-files (length config-files))
|
||||
(setq progress-reporter
|
||||
@@ -273,14 +277,14 @@ This is the fastest reload method but requires byte-compilation."
|
||||
(defun enable-god-mode-config ()
|
||||
"Enable god-mode configuration."
|
||||
(interactive)
|
||||
(let ((god-config (expand-file-name "god-mode-config.el" user-emacs-directory)))
|
||||
(let ((god-config (expand-file-name "lisp/god-mode-config.el" user-emacs-directory)))
|
||||
(if (file-exists-p god-config)
|
||||
(condition-case err
|
||||
(progn
|
||||
(load-file god-config)
|
||||
(message "God-mode configuration loaded. Press ESC to toggle god-mode."))
|
||||
(error (message "Failed to load god-mode config: %s" err)))
|
||||
(message "God-mode config file not found at %s" god-config))))
|
||||
(message "God-mode config file not found at %s" god-config)))))
|
||||
|
||||
(provide 'init-utils)
|
||||
;;; init-utils.el ends here
|
||||
Reference in New Issue
Block a user