feat(ai): Add opencode integration and reorganize AI tools
This commit is contained in:
@@ -116,9 +116,17 @@
|
||||
(mode . eww-bookmark-mode)
|
||||
(mode . eww-buffers-mode)
|
||||
(mode . eww-history-mode)))
|
||||
("AI" (or
|
||||
(name . "^\\*OpenCode")
|
||||
(name . "\\*opencode-serve\\*")
|
||||
(name . "^\\*gptel")))
|
||||
("Calc" (or
|
||||
(mode . calc-mode)
|
||||
(mode . calc-trail-mode)))
|
||||
("Text" (or
|
||||
(mode . org-mode)
|
||||
(mode . markdown-mode)
|
||||
(name . "^\\*\\[D\\] FILE backlinks for")))
|
||||
("Shell" (or
|
||||
(mode . eshell-mode)
|
||||
(mode . eat-mode)
|
||||
@@ -145,8 +153,6 @@
|
||||
(mode . geiser-debug-mode)
|
||||
(mode . geiser-doc-mode)
|
||||
(mode . geiser-autodoc-mode)))
|
||||
("gptel" (or
|
||||
(name . "^\\*gptel")))
|
||||
("Common-lisp" (or
|
||||
(mode . common-lisp-mode)
|
||||
(mode . lisp-mode)))
|
||||
@@ -156,10 +162,11 @@
|
||||
(mode . sly-mrepl-mode)
|
||||
(name . "\\*sly-compilation\\*")
|
||||
(name . "^\\*img-cache\\*")))
|
||||
("Text" (or
|
||||
(mode . org-mode)
|
||||
(mode . markdown-mode)
|
||||
(name . "^\\*\\[D\\] FILE backlinks for")))
|
||||
("Config" (or
|
||||
(mode . conf-mode)
|
||||
(mode . conf-toml-mode)
|
||||
(mode . conf-unix-mode)
|
||||
(mode . yaml-ts-mode)))
|
||||
("Help" (or
|
||||
(mode . help-mode)
|
||||
(mode . helpful-mode)))
|
||||
@@ -184,7 +191,10 @@
|
||||
(mode . xref-edit-mode)
|
||||
(mode . occur-mode)
|
||||
(mode . occur-edit-mode)))
|
||||
("Diff" (name . "^*Diff"))
|
||||
("Diff" (or
|
||||
(name . "^*Diff")
|
||||
(mode . ediff-mode)
|
||||
(mode . vundo-diff-mode)))
|
||||
("Emacs" (or
|
||||
(name . "^\\*Help\\*$")
|
||||
(name . "^\\*Custom.*")
|
||||
|
||||
@@ -146,6 +146,41 @@ explanations, no quotes, no punctuation, no file extension."
|
||||
(setq gptel-magit-model 'kimi-for-coding
|
||||
gptel-magit-backend (gptel-get-backend "gptel-Kimi-Code-magit"))))
|
||||
|
||||
(use-package plz
|
||||
:straight
|
||||
(plz :type git
|
||||
:host github
|
||||
:repo "alphapapa/plz.el"
|
||||
:ref "v0.9.1"))
|
||||
|
||||
(use-package plz-media-type
|
||||
:straight
|
||||
(plz-media-type :type git
|
||||
:host github
|
||||
:repo "r0man/plz-media-type"
|
||||
:ref "v0.2.4"))
|
||||
|
||||
(use-package plz-event-source
|
||||
:straight
|
||||
(plz-event-source :type git
|
||||
:host github
|
||||
:repo "r0man/plz-event-source"
|
||||
:ref "v0.1.3"))
|
||||
|
||||
(use-package opencode
|
||||
:straight
|
||||
(opencode :type git
|
||||
:host codeberg
|
||||
:repo "sczi/opencode.el")
|
||||
:hook
|
||||
(opencode-session-control-mode . disable-truncate-lines))
|
||||
|
||||
(use-package eval-elisp-mcp
|
||||
:straight
|
||||
(eval-elisp-mcp :type git
|
||||
:host codeberg
|
||||
:repo "sczi/eval-elisp-mcp"))
|
||||
|
||||
(provide 'init-gptel)
|
||||
|
||||
;;; init-gptel.el ends here
|
||||
|
||||
@@ -272,6 +272,12 @@ argument)."
|
||||
(let ((current-prefix-arg '-))
|
||||
(call-interactively 'gptel-agent)))
|
||||
|
||||
(defun my-opencode ()
|
||||
"Run `opencode' in project root."
|
||||
(interactive)
|
||||
(let ((default-directory (project-root (project-current t))))
|
||||
(opencode)))
|
||||
|
||||
(defun my-consult-ripgrep-project ()
|
||||
"Run `consult-ripgrep' in current project's root."
|
||||
(interactive)
|
||||
|
||||
@@ -19,16 +19,35 @@
|
||||
;; g for gptel
|
||||
(general-def
|
||||
:prefix "C-c g"
|
||||
"o" 'gptel
|
||||
"g" 'gptel
|
||||
"m" 'gptel-menu
|
||||
"s" 'gptel-send
|
||||
"a" 'gptel-agent
|
||||
"t" 'gptel-tools)
|
||||
"t" 'gptel-tools
|
||||
"o" 'opencode
|
||||
"p" 'opencode-select-project
|
||||
"l" 'opencode-select-session
|
||||
"n" 'opencode-new-session)
|
||||
|
||||
(general-def gptel-mode-map
|
||||
"C-c C-s" 'my-gptel-save-session
|
||||
"C-c C-k" 'gptel-abort)
|
||||
|
||||
;; opencode
|
||||
(general-def opencode-session-mode-map
|
||||
"C-c C-p" 'comint-previous-prompt
|
||||
"C-c M-p" 'opencode-respond-permission
|
||||
"C-c x" nil
|
||||
"C-c C-k" 'opencode-abort-session
|
||||
"C-c C-c" 'nil
|
||||
"C-c n" 'nil
|
||||
"C-c N" 'opencode-new-session)
|
||||
|
||||
(general-def opencode-session-control-mode-map
|
||||
"n" 'next-line
|
||||
"p" 'previous-line
|
||||
"N" 'opencode-new-session)
|
||||
|
||||
;; u for ui
|
||||
(general-def
|
||||
:prefix "C-c u"
|
||||
@@ -68,7 +87,7 @@
|
||||
"R" 'project-query-replace-regexp
|
||||
"v" 'magit-project-status
|
||||
"V" 'project-vc-dir
|
||||
"a" 'my-gptel-agent-project
|
||||
"a" 'my-opencode
|
||||
"i" 'project-ibuffer)
|
||||
|
||||
;; v for version control
|
||||
|
||||
@@ -157,7 +157,8 @@ _a_ : all dwim
|
||||
(project-query-replace-regexp "Query Replace" ?R)
|
||||
(consult-ripgrep "Ripgrep" ?r)
|
||||
(consult-project-buffer "Buffers" ?b)
|
||||
(project-ibuffer "Ibuffer" ?i))))))
|
||||
(project-ibuffer "Ibuffer" ?i)
|
||||
(opencode "OpenCode" ?a))))))
|
||||
|
||||
(use-package project-ibuffer
|
||||
:straight
|
||||
|
||||
@@ -42,8 +42,9 @@
|
||||
"Buffers\\*$"
|
||||
"^\\*Geiser"
|
||||
"\\*gptel-Kimi-Code\\*"
|
||||
"^\\*sly"
|
||||
"\\*gptel-agent:.*\\*"
|
||||
"^\\*OpenCode Sessions"
|
||||
"^\\*sly"
|
||||
"^magit"
|
||||
"\\*discomfort\\*"
|
||||
"\\*eww bookmarks\\*"
|
||||
|
||||
Reference in New Issue
Block a user