Compare commits

...

2 Commits

View File

@ -104,10 +104,10 @@ presentations.
The [[https://github.com/bdarcus/citar][Citar]] extension package provides quick filtering and selecting of The [[https://github.com/bdarcus/citar][Citar]] extension package provides quick filtering and selecting of
bibliographic entries, and the option to run different commands on those bibliographic entries, and the option to run different commands on those
selections. [[https://github.com/bdarcus/citar][Citar]] exploits the extension packages [[https://github.com/minad/vertico][Vertico]], [[https://github.com/oantolin/embark][Embark]], [[https://github.com/minad/marginalia][Marginalia]], selections. [[https://github.com/bdarcus/citar][Citar]] exploits the extension packages [[https://github.com/minad/vertico][Vertico]] and [[https://github.com/minad/marginalia][Marginalia]]. The
and [[https://github.com/minad/consult][Consult]]. The [[https://github.com/andras-simonyi/citeproc-el][CiteProc]] extension package provides [[https://citationstyles.org/][CSL: citation style [[https://github.com/andras-simonyi/citeproc-el][CiteProc]] extension package provides [[https://citationstyles.org/][CSL: citation style language]] processing
language]] processing capabilities to [[https://github.com/bdarcus/citar][Citar]] and [[https://orgmode.org/][Org Mode]]. A curated repository capabilities to [[https://github.com/bdarcus/citar][Citar]] and [[https://orgmode.org/][Org Mode]]. A curated repository of CSL styles is the
of CSL styles is the [[https://github.com/citation-style-language/styles#readme][citation style language repository]]. [[https://github.com/citation-style-language/styles#readme][citation style language repository]].
The [[https://github.com/vedang/pdf-tools][PDF-Tools]] extension package renders [[https://en.wikipedia.org/wiki/PDF][PDF]] file with the possibility to The [[https://github.com/vedang/pdf-tools][PDF-Tools]] extension package renders [[https://en.wikipedia.org/wiki/PDF][PDF]] file with the possibility to
annotate the file or to click on anchors in the [[https://en.wikipedia.org/wiki/PDF][PDF]] file that link back to the annotate the file or to click on anchors in the [[https://en.wikipedia.org/wiki/PDF][PDF]] file that link back to the
@ -1237,6 +1237,60 @@ sub makeglossaries {
(sort (cl-remove-duplicates result)))) (sort (cl-remove-duplicates result))))
#+end_src #+end_src
* [[info:emacs#Saving Emacs Sessions][Saving Emacs sessions (info)]]
:PROPERTIES:
:CUSTOM_ID: sec:desktop
:END:
Listing [[lst:desktop-setup][setup desktop]] makes Emacs save its state between closing its session to
opening the next session. This setup relies on =desktop-save-mode= in case of
overlapping functionality of =desktop-save-mode= and =savehist-mode=. Listing
[[lst:prune-file-name-history]] prunes non-existing files from =file-name-history=,
which is under Emacs control but neither =desktop-save-mode= nor
=savehist-mode=.
NOTE: The src_emacs-lisp{(describe-function 'savehist-mode)} documentation
explains why it is best to turn on =savehist-mode= in =user-init-file=.
BUG: Adding ~kill-ring~ to ~savehist-additional-variables~ does not save
~kill-ring~ from an Emacs session to the next session, contrary to the
src_emacs-lisp{(describe-variable 'savehist-additional-variables)}
documentation.
#+caption[Setup =desktop= to save Emacs sessions]:
#+caption: Setup =desktop= to save Emacs sessions.
#+name: lst:desktop-setup
#+begin_src emacs-lisp -n :results silent
(with-eval-after-load 'emacs
;; GAV: I fail to implement the idea of ChatGPT on how to reload
;; `eww' pages automatically while restoring the desktop (idea is to
;; add save and restore handlers to `desktop-buffer-mode-handlers').
;; GAV: (setopt eww-restore-desktop t) fails and starts hesitantly.
;; GAV: I fail to code a function for setting the
;; `desktop-buffers-not-to-save-function' option.
(setopt desktop-buffers-not-to-save
(rx bos (or "*Apropos" "compilation*"))
desktop-modes-not-to-save
'(emacs-lisp-mode image-mode tags-table-mode))
(desktop-save-mode t))
#+end_src
#+caption[Prune non-existing files from =file-name-history=]:
#+caption: Prune non-existing files from =file-name-history=.
#+name: lst:prune-file-name-history
#+begin_src emacs-lisp -n :results silent
(defun prune-file-name-history ()
"Prune non-existing files from `file-name-history'."
(interactive)
(let ((old (length file-name-history)) ok)
(dolist (name file-name-history)
(when (file-exists-p name)
(push name ok)))
(setq file-name-history (nreverse ok))
(message "Pruned `file-name-history' from `%S' to `%S' files"
old (length file-name-history))))
#+end_src
* Completion * Completion
:PROPERTIES: :PROPERTIES:
@ -1265,14 +1319,6 @@ NOTE: Play with =vertico-buffer-mode=, =vertico-flat-mode=, =vertico-grid-mode=,
=vertico-indexed-mode=, =vertico-mouse-mode= (not easy to use with my trackpad), =vertico-indexed-mode=, =vertico-mouse-mode= (not easy to use with my trackpad),
=vertico-reverse-mode=. =vertico-reverse-mode=.
NOTE: The src_emacs-lisp{(describe-function 'savehist-mode)} documentation
explains why it is best to turn on =savehist-mode= in =user-init-file=.
BUG: Adding ~kill-ring~ to ~savehist-additional-variables~ does not save
~kill-ring~ from an Emacs session to the next session, contrary to the
src_emacs-lisp{(describe-variable 'savehist-additional-variables)}
documentation.
#+caption[Setup =vertico-mode=]: #+caption[Setup =vertico-mode=]:
#+caption: Setup =vertico-mode=. #+caption: Setup =vertico-mode=.
#+name: lst:setup-vertico-mode #+name: lst:setup-vertico-mode
@ -1285,22 +1331,6 @@ documentation.
(vertico-mode +1)) (vertico-mode +1))
#+end_src #+end_src
#+caption[Prune non-existing files from =file-name-history=]:
#+caption: Prune non-existing files from =file-name-history=.
#+name: lst:prune-file-name-history
#+begin_src emacs-lisp -n :results silent
(defun prune-file-name-history ()
"Prune non-existing files from `file-name-history'."
(interactive)
(let ((old (length file-name-history)) ok)
(dolist (name file-name-history)
(when (file-exists-p name)
(push name ok)))
(setq file-name-history (nreverse ok))
(message "Pruned `file-name-history' from `%S' to `%S' files"
old (length file-name-history))))
#+end_src
#+attr_latex: :booktabs yes :float table #+attr_latex: :booktabs yes :float table
#+caption[Vertico key map bindings]: #+caption[Vertico key map bindings]:
#+caption: Vertico key map bindings. #+caption: Vertico key map bindings.
@ -1445,9 +1475,6 @@ Consult usage tips are:
| consult-yank-pop | global-map | {{{kbd(M-y)}}} | | consult-yank-pop | global-map | {{{kbd(M-y)}}} |
|-----------------------------+----------------------+--------------------| |-----------------------------+----------------------+--------------------|
| elfeed | global-map | {{{kbd(C-x w)}}} | | elfeed | global-map | {{{kbd(C-x w)}}} |
| embark-act | global-map | {{{kbd(C-\,)}}} |
| embark-bindings | global-map | {{{kbd(C-h B)}}} |
| embark-dwim | global-map | {{{kbd(C-:)}}} |
| iedit-mode | global-map | {{{kbd(C-;)}}} | | iedit-mode | global-map | {{{kbd(C-;)}}} |
| minibuffer-complete-history | minibuffer-local-map | {{{kbd(C-<tab>)}}} | | minibuffer-complete-history | minibuffer-local-map | {{{kbd(C-<tab>)}}} |
| narrow-or-widen-dwim | ctl-x-keymap | {{{kbd(C-x C-n)}}} | | narrow-or-widen-dwim | ctl-x-keymap | {{{kbd(C-x C-n)}}} |
@ -2462,15 +2489,14 @@ def __org_babel_python_format_value(result, result_file, result_params):
[[https://github.com/bdarcus/citar][Citar]] is a completing-read front-end to browse and act on BibTeX, BibLaTeX, as [[https://github.com/bdarcus/citar][Citar]] is a completing-read front-end to browse and act on BibTeX, BibLaTeX, as
well as CSL JSON bibliographic data with LaTeX, markdown, and org-cite editing well as CSL JSON bibliographic data with LaTeX, markdown, and org-cite editing
support. In combination with vertico, embark, marginalia, and consult, [[https://github.com/bdarcus/citar][Citar]] support. In combination with vertico and marginalia, [[https://github.com/bdarcus/citar][Citar]] provides quick
provides quick filtering and selecting of bibliographic entries from the filtering and selecting of bibliographic entries from the minibuffer as well as
minibuffer as well as the option to run different commands on those the option to run different commands on those selections. The article [[https://kristofferbalintona.me/posts/202206141852/][Citations
selections. The article [[https://kristofferbalintona.me/posts/202206141852/][Citations in org-mode: Org-cite and Citar]] tries to walk in org-mode: Org-cite and Citar]] tries to walk you from understanding the general
you from understanding the general context (bibliography producer, text context (bibliography producer, text processor, text to product converter) to an
processor, text to product converter) to an Emacs setup. Listing Emacs setup. Listing [[lst:set-oc+citar-options]] shows the =oc= and =citar= setup
[[lst:set-oc+citar-options]] shows the =oc= and =citar= setup with binding of with binding of {{{kbd(C-c b)}}} to src_emacs-lisp{(call-interactively
{{{kbd(C-c b)}}} to src_emacs-lisp{(call-interactively 'org-cite-insert)} in 'org-cite-insert)} in =org-mode-map=.
=org-mode-map=.
#+caption[Set =oc= and =citar= options]: #+caption[Set =oc= and =citar= options]:
#+caption: Set =oc= and =citar= options. #+caption: Set =oc= and =citar= options.
@ -2506,17 +2532,11 @@ valid directories and files. In an [[https://orgmode.org/][Org-mode]] buffer th
1. by navigating to an item and selecting it with {{{kbd(RET)}}} 1. by navigating to an item and selecting it with {{{kbd(RET)}}}
2. by repeatingly navigating to an item and preselecting it with 2. by repeatingly navigating to an item and preselecting it with
{{{kbd(TAB)}}}. Select all preselected items with {{{kbd(RET)}}}. {{{kbd(TAB)}}}. Select all preselected items with {{{kbd(RET)}}}.
2. View an electronic copy of an [[https://orgmode.org/][Org-mode]] cite link: 2. View an electronic copy or the DOI of an [[https://orgmode.org/][Org-mode]] cite link:
1. Move point to the [[https://orgmode.org/][Org-mode]] cite link. 1. Click on the [[https://orgmode.org/][Org-mode]] cite link.
2. Type {{{kbd(C-:)}}} or {{{kbd(M-x embark-dwim)}}}. 2. Navigate to the corresponding resource.
3. Navigate to the corresponding library file. 3. Select it.
4. Select it. 3. The following =citar= functions may be useful too:
3. Open the DOI of an [[https://orgmode.org/][Org-mode]] cite link:
1. Move point to the [[https://orgmode.org/][Org-mode]] cite link.
2. Type {{{kbd(C-:)}}} or {{{kbd(M-x embark-dwim)}}}.
3. Navigate to the corresponding link.
4. Select it.
4. The following =citar= functions may be useful too:
1. src_emacs-lisp{(call-interactively 'citar-insert-citation)}. 1. src_emacs-lisp{(call-interactively 'citar-insert-citation)}.
2. src_emacs-lisp[:results silent]{(call-interactively 'citar-open)}. 2. src_emacs-lisp[:results silent]{(call-interactively 'citar-open)}.
@ -3737,33 +3757,6 @@ Return \"Front Matter\" when current page is above the first headline."
(add-to-list 'which-func-functions 'which-func-pdf-view-function) (add-to-list 'which-func-functions 'which-func-pdf-view-function)
#+end_src #+end_src
* [[info:emacs#Saving Emacs Sessions][Saving Emacs sessions (info)]]
:PROPERTIES:
:CUSTOM_ID: sec:desktop
:END:
Listing [[lst:desktop-setup][setup desktop]] makes Emacs save its state between closing its session to
opening the next session.
#+caption[Setup =desktop= to save Emacs sessions]:
#+caption: Setup =desktop= to save Emacs sessions.
#+name: lst:desktop-setup
#+begin_src emacs-lisp -n :results silent
(with-eval-after-load 'emacs
;; GAV: I fail to implement the idea of ChatGPT on how to reload
;; `eww' pages automatically while restoring the desktop (idea is to
;; add save and restore handlers to `desktop-buffer-mode-handlers').
;; GAV: (setopt eww-restore-desktop t) fails and starts hesitantly.
;; GAV: I fail to code a function for setting the
;; `desktop-buffers-not-to-save-function' option.
(setopt desktop-buffers-not-to-save
(rx bos (or "*Apropos" "compilation*"))
desktop-modes-not-to-save
'(emacs-lisp-mode image-mode tags-table-mode))
(desktop-save-mode t))
#+end_src
* Programming Tools * Programming Tools
:PROPERTIES: :PROPERTIES:
:CUSTOM_ID: sec:programming-tools :CUSTOM_ID: sec:programming-tools