From c68660f3bea9a9c2df16a0b312b2dd9a04d83552 Mon Sep 17 00:00:00 2001 From: Roger Gonzalez Date: Fri, 7 Apr 2023 21:51:36 -0300 Subject: Added chatgpt-shell to Emacs --- .config/doom/custom-packages/ob-chatgpt-shell.el | 75 ++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 .config/doom/custom-packages/ob-chatgpt-shell.el (limited to '.config/doom/custom-packages/ob-chatgpt-shell.el') diff --git a/.config/doom/custom-packages/ob-chatgpt-shell.el b/.config/doom/custom-packages/ob-chatgpt-shell.el new file mode 100644 index 00000000..e612aabd --- /dev/null +++ b/.config/doom/custom-packages/ob-chatgpt-shell.el @@ -0,0 +1,75 @@ +;;; ob-chatgpt-shell.el --- Org babel functions for ChatGPT evaluation -*- lexical-binding: t; -*- + +;; Copyright (C) Alvaro Ramirez + +;; Author: Alvaro Ramirez +;; URL: https://github.com/xenodium/chatgpt-shell + +;;; License: + +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 3, or (at your option) +;; any later version. +;; +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs; see the file COPYING. If not, write to the +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. + +;;; Commentary: + +;; Run and get responses from ChatGPT blocks using org babel. +;; +;; Install with: +;; +;; (require 'ob-chatgpt-shell) +;; (ob-chatgpt-shell-setup) +;; +;; Usage: +;; +;; #+begin_src chatgpt-shell +;; Hello +;; #+end_src + +;;; Requirements: + +;;; Code: +(require 'ob) +(require 'org) +(require 'chatgpt-shell) +(require 'map) + +;; Aliasing enables block syntax highlighting. +(defalias 'chatgpt-shell-mode #'text-mode) + +(defvar org-babel-default-header-args:chatgpt-shell '((:results . "raw") + (:version . nil) + (:preface . nil))) + +(defun org-babel-execute:chatgpt-shell(body params) + "Execute a block of ChatGPT prompt in BODY with org-babel header PARAMS. +This function is called by `org-babel-execute-src-block'" + (message "executing ChatGPT source code block") + (if (map-elt params :preface) + (chatgpt-shell-post-chatgpt-messages + (append preface `(((role . "user") + (content . ,body)))) + (map-elt params :version)) + (chatgpt-shell-post-chatgpt-prompt body (map-elt params :version)))) + +(defun ob-chatgpt-shell-setup () + "Set up babel ChatGPT support." + (org-babel-do-load-languages 'org-babel-load-languages + (append org-babel-load-languages + '((chatgpt-shell . t)))) + (add-to-list 'org-src-lang-modes '("chatgpt-shell" . text))) + +(provide 'ob-chatgpt-shell) + +;;; ob-chatgpt-shell.el ends here -- cgit v1.2.3