[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/ellama 5c185b74eb 3/4: Merge pull request #78 from s-ko
From: |
ELPA Syncer |
Subject: |
[elpa] externals/ellama 5c185b74eb 3/4: Merge pull request #78 from s-kostyaev/add-info-node-to-context |
Date: |
Mon, 19 Feb 2024 12:57:50 -0500 (EST) |
branch: externals/ellama
commit 5c185b74ebd282191b85d6dc84dcef95776f0498
Merge: 3b34ac7dc6 80bdeab8f1
Author: Sergey Kostyaev <s-kostyaev@users.noreply.github.com>
Commit: GitHub <noreply@github.com>
Merge pull request #78 from s-kostyaev/add-info-node-to-context
Add info node to context. Fix some org links.
---
README.org | 5 +++++
ellama.el | 26 ++++++++++++++++++++++++--
2 files changed, 29 insertions(+), 2 deletions(-)
diff --git a/README.org b/README.org
index ed09e41aa5..49017d0cb9 100644
--- a/README.org
+++ b/README.org
@@ -203,6 +203,10 @@ Add buffer to context.
Add selected region to context.
+*** ellama-context-add-info-node
+
+Add info node to context.
+
** Keymap
Here is a table of keybindings and their associated functions in
@@ -237,6 +241,7 @@ Ellama, using the ~ellama-keymap-prefix~ prefix (not set by
default):
| "x b" | ellama-context-add-buffer | Context add buffer |
| "x f" | ellama-context-add-file | Context add file |
| "x s" | ellama-context-add-selection | Context add selection |
+| "x i" | ellama-context-add-info-node | Context add info node |
| "p s" | ellama-provider-select | Provider select |
** Configuration
diff --git a/ellama.el b/ellama.el
index 1712325fce..f511819fd3 100644
--- a/ellama.el
+++ b/ellama.el
@@ -39,6 +39,7 @@
(require 'llm)
(require 'spinner)
(require 'dash)
+(require 'info)
(eval-when-compile (require 'rx))
(defgroup ellama nil
@@ -126,6 +127,7 @@
(define-key map (kbd "x b") 'ellama-context-add-buffer)
(define-key map (kbd "x f") 'ellama-context-add-file)
(define-key map (kbd "x s") 'ellama-context-add-selection)
+ (define-key map (kbd "x i") 'ellama-context-add-info-node)
;; provider
(define-key map (kbd "p s") 'ellama-provider-select)
map)
@@ -727,15 +729,30 @@ If EPHEMERAL non nil new session will not be associated
with any file."
(push (cons 'text content) (ellama-session-context session))
(push (cons 'text content) ellama--new-session-context)))
+;;;###autoload
+(defun ellama-context-add-info-node (node)
+ "Add info NODE to context."
+ (interactive (list (Info-copy-current-node-name)))
+ (if-let* ((id ellama--current-session-id)
+ (session (with-current-buffer (ellama-get-session-buffer id)
+ ellama--current-session)))
+ (push (cons 'info node) (ellama-session-context session))
+ (push (cons 'info node) ellama--new-session-context)))
+
(defun ellama--org-format-context-element (elt)
"Format context ELT for org mode."
(pcase (car elt)
('file
- (format "file:%s" (cdr elt)))
+ (format "[[file:%s][%s]]" (cdr elt) (cdr elt)))
('buffer
- (format "elisp:(display-buffer \"%s\")" (cdr elt)))
+ (format "[[elisp:(display-buffer \"%s\")][%s]]" (cdr elt) (cdr elt)))
('text
(cdr elt))
+ ('info
+ (format "[[%s][%s]]"
+ (replace-regexp-in-string
+ "(\\(.?*\\)) \\(.*\\)" "info:\\1#\\2" (cdr elt))
+ (cdr elt)))
(_
(user-error "Unsupported context element"))))
@@ -750,6 +767,8 @@ If EPHEMERAL non nil new session will not be associated
with any file."
(format "```emacs-lisp\n(display-buffer \"%s\")\n```\n" (cdr elt)))
('text
(cdr elt))
+ ('info
+ (format "```emacs-lisp\n(info \"%s\")\n```\n" (cdr elt)))
(_
(user-error "Unsupported context element"))))
@@ -762,6 +781,9 @@ If EPHEMERAL non nil new session will not be associated
with any file."
('file (with-temp-buffer
(find-file-literally (cdr elt))
(buffer-substring-no-properties (point-min) (point-max))))
+ ('info (with-temp-buffer
+ (info (cdr elt) (current-buffer))
+ (buffer-substring-no-properties (point-min) (point-max))))
(_
(user-error "Unsupported context element"))))