-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
elaiza-editor.el
47 lines (42 loc) · 1.73 KB
/
elaiza-editor.el
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
;;; elaiza-editor.el --- Elaiza Spell Checker and Editor -*- lexical-binding: t; -*-
;;
;; Copyright (C) 2024 Alessandro Wollek
;;
;; Author: Alessandro Wollek <[email protected]>
;; Homepage: https://github.com/SFTtech/emacs-elaiza
;; SPDX-License-Identifier: GPL-3.0-only
;;
;; This file is not part of GNU Emacs.
;;
;;; Commentary:
;;
;; Elaiza Spell Checker and Editor.
;; Similar to OpenAI's GPTs this uses Elaiza as an editor.
;;
;;; Code:
(require 'elaiza-chat)
(defcustom elaiza-editor-system-prompt (concat elaiza-system-prompt
"You are a multilingual expert editor.
Below you can find a draft.
Do not repeat the drafted text, provide only suggestions.
Use the same language for your reply as the drafted text.
Proof-read the text giving detailed suggestions regarding spelling, grammar,
proper sentence structure and punctuation.
Make sure your suggestions in the same language as the provided draft.
Pay attention that your suggestions fit the context of the given draft.
In case it is source code or uses a special syntax, edit only the prose text.
If the draft has no errors state just that.
The draft you have to edit is:\n")
"System prompt for the ELAIZA editor."
:group 'elaiza
:type 'string)
;;;###autoload
(defun elaiza-editor (&optional prefix)
"Provide editing suggestions for current buffer.
When called with PREFIX select backend interactively."
(interactive "P")
(let ((current-buffer-name (concat "*elaiza-editor* " (substring (buffer-name) 0 (min (length (buffer-name)) 20))))
(current-buffer-content (buffer-substring-no-properties (point-min) (point-max))))
(elaiza-chat current-buffer-content prefix nil elaiza-editor-system-prompt current-buffer-name t)))
(provide 'elaiza-editor)
;;; elaiza-editor.el ends here