From 58b440ddc72ca406be6ea7f9eff767afbe46fb38 Mon Sep 17 00:00:00 2001 From: Gerard Vermeulen Date: Sun, 10 Dec 2023 15:13:49 +0100 Subject: [PATCH] Start using `desktop' and `register' * `desktop' preserves `register' history between Emacs sessions --- README.org | 118 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) diff --git a/README.org b/README.org index 79148c3..9360811 100644 --- a/README.org +++ b/README.org @@ -377,6 +377,27 @@ recommendation of [[info:emacs#Saving Customizations][saving customizations (inf nil nil nil 'generate-full)))) #+end_src +* [[info:emacs#Saving Emacs Sessions][Saving Emacs sessions]] +:PROPERTIES: +:CUSTOM_ID: sec:desktop +:END: + +#+caption[Setup ~desktop~ to save Emacs sessions]: +#+caption: Setup ~desktop~ to save Emacs sessions. +#+begin_src emacs-lisp -n +(desktop-save-mode t) +(setopt desktop-buffers-not-to-save + (rx bos (or " " "*Apropos*" "*compilation*")) + desktop-files-not-to-save + (rx (group + (or + ;; Exclude the exclusions from desktop.el. + (seq bos "/" (zero-or-more (not (any "/:"))) ":") + (seq "(ftp)" eos) + ;; Exclude all (hence, also compiled) Emacs Lisp files: + (seq ".el" eos))))) +#+end_src + * [[info:emacs#Package Installation][Install the selected packages (info)]] :PROPERTIES: :CUSTOM_ID: sec:install-selected-packages @@ -4305,6 +4326,103 @@ the Org-mode source block code before calling `eglot-ensure'." (eglot-org-babel-edit-prep info))) #+end_src +#+caption: Make sessions for ~eval-buffer~ in ~org-src~ buffers. +#+begin_src emacs-lisp -n + (defun org-babel-edit-prep:python (info) + (message "`%S'" info) + (let* ((session (cdr (assq :session (nth 2 info)))) + (muffed (if (member session '(nil "none" ":default")) + "*Python*" + (org-babel-python-with-earmuffs session))) + (key (car (rassoc muffed org-babel-python-buffers)))) + (message "obpb is `%S'" org-babel-python-buffers) + (message "session is `%S', muffed is `%S', key is `%S'" session muffed key) + (unless (and (get-buffer muffed) + (buffer-match-p '(major-mode . inferior-python-mode) muffed) + (get-process (org-babel-python-without-earmuffs muffed))) + (when (y-or-n-p "Start Python session?") + (org-babel-python-initiate-session + (if (eq key :default) nil (org-babel-python-without-earmuffs muffed)))) + (message "obpb is `%S'" org-babel-python-buffers)) + (setq-local python-shell-buffer-name + (org-babel-python-without-earmuffs muffed))) + ;; (eglot-org-babel-edit-prep info) + ) +#+end_src + +#+caption: Real sessions for ~eval-buffer~ in ~org-src~ buffers. +#+begin_src org -n :tangle eval-buffer-in-org-src-buffers.org +,#+title: Sessions for ~eval-buffer~ in ~org-src~ buffers +,#+property: :tangle none + +,* Real sessions in ~org-src-mode~ buffers + +,#+header: :wrap "src text" +,#+begin_src python :results output :session +print("Hello *Python*!") +,#+end_src + +,#+RESULTS: +,#+begin_src text +Hello *Python*! +,#+end_src + +,#+header: :wrap "src text" +,#+begin_src python :results output :session Python +print("Hello *Python*!") +,#+end_src + +,#+RESULTS: +,#+begin_src text +Hello *Python*! +,#+end_src + +,#+header: :wrap "src text" +,#+begin_src python :results output :session snake +print("Hello *snake*!") +,#+end_src + +,#+RESULTS: +,#+begin_src text +Hello *snake*! +,#+end_src +#+end_src + +#+caption: Fake sessions for ~eval-buffer~ in ~org-src~ buffers. +#+begin_src org -n :tangle :tangle eval-buffer-in-org-src-buffers.org +,* Fake sessions in ~org-src-mode~ buffers + +,#+header: :wrap "src text" +,#+begin_src python :results output :session none +print("Hello *none*!") +,#+end_src + +,#+RESULTS: +,#+begin_src text +Hello *none*! +,#+end_src + +,#+header: :wrap "src text" +,#+begin_src python :results output :session :default +print("Hello *Python* with `:default' unseen!") +,#+end_src + +,#+RESULTS: +,#+begin_src text +Hello *Python* with `:default' unseen! +,#+end_src + +,#+header: :wrap "src text" +,#+begin_src python :results output :session ":default" +print("Hello *Python* with `*:default*' seen!") +,#+end_src + +,#+RESULTS: +,#+begin_src text +Hello *Python* with `*:default*' seen! +,#+end_src +#+end_src + #+caption[Setup Python =org-src-mode= buffers for =eglot=]: #+caption: Setup Python =org-src-mode= buffers for =eglot=. #+name: lst:setup-python-org-src-mode-for-eglot