Start using `desktop' and `register'

* `desktop' preserves `register' history between Emacs sessions
This commit is contained in:
Gerard Vermeulen 2023-12-10 15:13:49 +01:00
parent 5af7b4ad29
commit 58b440ddc7
1 changed files with 118 additions and 0 deletions

View File

@ -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