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:
Jens Luedicke
2025-09-10 17:33:34 +02:00
parent 8644b5c469
commit 634d0674b4
13 changed files with 306 additions and 110 deletions

View File

@@ -9,7 +9,7 @@
:ensure t
:defer t
:commands deadgrep
:bind (("C-c d g" . deadgrep)))
:bind (("C-c G d" . deadgrep)))
;;; Wgrep - editable grep buffers
(use-package wgrep
@@ -31,17 +31,23 @@
(defun search-project-for-symbol-at-point ()
"Search project for symbol at point using consult-ripgrep."
(interactive)
(require 'projectile)
(if (use-region-p)
(consult-ripgrep (projectile-project-root)
(buffer-substring-no-properties (region-beginning) (region-end)))
(consult-ripgrep (projectile-project-root) (thing-at-point 'symbol))))
(require 'project)
(let ((root (or (when-let ((proj (project-current)))
(project-root proj))
default-directory)))
(if (use-region-p)
(consult-ripgrep root
(buffer-substring-no-properties (region-beginning) (region-end)))
(consult-ripgrep root (thing-at-point 'symbol)))))
(defun search-project ()
"Live search in project files using consult-ripgrep."
(interactive)
(require 'projectile)
(consult-ripgrep (projectile-project-root)))
(require 'project)
(let ((root (or (when-let ((proj (project-current)))
(project-root proj))
default-directory)))
(consult-ripgrep root)))
(defun search-current-directory ()
"Live search in current directory using consult-ripgrep."
@@ -69,18 +75,24 @@
(define-key search-map (kbd "p")
(lambda () (interactive)
(require 'consult)
(require 'projectile)
(if (fboundp 'search-project)
(call-interactively 'search-project)
(consult-ripgrep (projectile-project-root)))))
(require 'project)
(let ((root (or (when-let ((proj (project-current)))
(project-root proj))
default-directory)))
(if (fboundp 'search-project)
(call-interactively 'search-project)
(consult-ripgrep root)))))
(define-key search-map (kbd "s")
(lambda () (interactive)
(require 'consult)
(require 'projectile)
(if (fboundp 'search-project-for-symbol-at-point)
(call-interactively 'search-project-for-symbol-at-point)
(consult-ripgrep (projectile-project-root) (thing-at-point 'symbol)))))
(require 'project)
(let ((root (or (when-let ((proj (project-current)))
(project-root proj))
default-directory)))
(if (fboundp 'search-project-for-symbol-at-point)
(call-interactively 'search-project-for-symbol-at-point)
(consult-ripgrep root (thing-at-point 'symbol))))))
(define-key search-map (kbd "d")
(lambda () (interactive)
@@ -148,7 +160,9 @@
(interactive
(list (read-string "Search: " (thing-at-point 'symbol))
(read-string "Replace: ")))
(let ((project-root (projectile-project-root)))
(let ((project-root (or (when-let ((proj (project-current)))
(project-root proj))
default-directory)))
(rg search-string "*" project-root)
(with-current-buffer "*rg*"
(wgrep-change-to-wgrep-mode)