Compare commits
6 Commits
52ee2f6207
...
a371e6c9ae
Author | SHA1 | Date | |
---|---|---|---|
|
a371e6c9ae | ||
|
432d13a03c | ||
|
a4a5b115db | ||
|
d5457b9ebd | ||
|
189cb48440 | ||
|
7a77e2d736 |
88
README.org
88
README.org
@ -1463,8 +1463,6 @@ completion function [[info:elisp#Minibuffer Completion][completing-read]]. List
|
|||||||
;; C-c bindings (current-global-map)
|
;; C-c bindings (current-global-map)
|
||||||
(global-set-key (kbd "C-c h") #'consult-history)
|
(global-set-key (kbd "C-c h") #'consult-history)
|
||||||
(global-set-key (kbd "C-c m") #'consult-mode-command)
|
(global-set-key (kbd "C-c m") #'consult-mode-command)
|
||||||
;; C-h bindings (help-map)
|
|
||||||
(define-key help-map (kbd "a") #'consult-apropos)
|
|
||||||
;; C-x bindings (ctl-x-map)
|
;; C-x bindings (ctl-x-map)
|
||||||
(define-key ctl-x-map (kbd "M-:") #'consult-complex-command)
|
(define-key ctl-x-map (kbd "M-:") #'consult-complex-command)
|
||||||
(define-key ctl-x-map (kbd "b") #'consult-buffer)
|
(define-key ctl-x-map (kbd "b") #'consult-buffer)
|
||||||
@ -2046,29 +2044,26 @@ list detailing and motivating each listing:
|
|||||||
#+name: lst:set-org-options
|
#+name: lst:set-org-options
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(with-eval-after-load 'org
|
(with-eval-after-load 'org
|
||||||
(custom-set-variables
|
|
||||||
`(org-babel-load-languages
|
|
||||||
(delq nil '((C . t)
|
|
||||||
(calc . t)
|
|
||||||
,(when (fboundp 'grapviz-dot-mode) '(dot . t))
|
|
||||||
(emacs-lisp . t)
|
|
||||||
(eshell . t)
|
|
||||||
,(when (fboundp 'fennel-mode) '(fennel . t))
|
|
||||||
(fortran . t)
|
|
||||||
,(when (fboundp 'gnuplot-mode) '(gnuplot . t))
|
|
||||||
(js . t)
|
|
||||||
(latex . t)
|
|
||||||
(lisp . t)
|
|
||||||
,(when (fboundp 'lua-mode) '(lua . t))
|
|
||||||
,(when (fboundp 'maxima-mode) '(maxima . t))
|
|
||||||
(org . t)
|
|
||||||
(perl . t)
|
|
||||||
;; The next two functions are not bound during bootstrap.
|
|
||||||
,(when (and (fboundp 'choose-common-python-interpreter)
|
|
||||||
(fboundp 'choose-common-python-linter))
|
|
||||||
'(python . t))
|
|
||||||
(shell . t)))))
|
|
||||||
(setopt
|
(setopt
|
||||||
|
org-babel-load-languages
|
||||||
|
`((C . t)
|
||||||
|
(calc . t)
|
||||||
|
(dot . ,(fboundp 'grapviz-dot-mode))
|
||||||
|
(emacs-lisp . t)
|
||||||
|
(fortran . t)
|
||||||
|
(gnuplot . ,(fboundp 'gnuplot-mode))
|
||||||
|
(js . t)
|
||||||
|
(latex . t)
|
||||||
|
(lisp . t)
|
||||||
|
(lua . ,(fboundp 'lua-mode))
|
||||||
|
(maxima . ,(fboundp 'maxima-mode))
|
||||||
|
(org . t)
|
||||||
|
(perl . t)
|
||||||
|
;; The Python setup uses the two functions below.
|
||||||
|
;; Those functions are not yet bound during bootstrap.
|
||||||
|
(python . ,(and (fboundp 'choose-common-python-interpreter)
|
||||||
|
(fboundp 'choose-common-python-linter)))
|
||||||
|
(shell . t))
|
||||||
org-export-backends '(ascii beamer html icalendar latex odt texinfo)
|
org-export-backends '(ascii beamer html icalendar latex odt texinfo)
|
||||||
org-file-apps '((auto-mode . emacs)
|
org-file-apps '((auto-mode . emacs)
|
||||||
(directory . emacs)
|
(directory . emacs)
|
||||||
@ -2091,13 +2086,13 @@ list detailing and motivating each listing:
|
|||||||
("l" . "export latex")
|
("l" . "export latex")
|
||||||
("q" . "quote")
|
("q" . "quote")
|
||||||
("s" . "src")
|
("s" . "src")
|
||||||
("p" . "src python -i :session")
|
("p" . "src python -n -i :session")
|
||||||
("v" . "verse"))))
|
("v" . "verse"))))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+caption[Set =org-babel= options]:
|
#+caption[Setup =org-babel=]:
|
||||||
#+caption: Set =org-babel=.
|
#+caption: Setup =org-babel=.
|
||||||
#+name: lst:set-org-babel-options
|
#+name: lst:setup-org-babel
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(with-eval-after-load 'ob-core
|
(with-eval-after-load 'ob-core
|
||||||
(setopt org-confirm-babel-evaluate nil))
|
(setopt org-confirm-babel-evaluate nil))
|
||||||
@ -2511,7 +2506,8 @@ this facility to a level acceptable for my workflow:
|
|||||||
blocks to "floating unbreakable with caption" or "non-floating breakable
|
blocks to "floating unbreakable with caption" or "non-floating breakable
|
||||||
without caption" LaTeX environments. This is a partial work-around, but part
|
without caption" LaTeX environments. This is a partial work-around, but part
|
||||||
of my workflow.
|
of my workflow.
|
||||||
2. Listing [[lst:ensure-engrave-faces-with-latex-face-apply-fix]] makes
|
2. Fixed in [[https://elpa.gnu.org/devel/engrave-faces.html][engrave-faces-0.3.1.0.20230115.70118]]: listing
|
||||||
|
[[lst:ensure-engrave-faces-with-latex-face-apply-fix]] makes
|
||||||
=engrave-faces-latex-face-apply= handle symbolic color name strings (in
|
=engrave-faces-latex-face-apply= handle symbolic color name strings (in
|
||||||
addition to the hexadecimal strings). Since faces in for instance
|
addition to the hexadecimal strings). Since faces in for instance
|
||||||
src_emacs-lisp{(find-library "org-faces")} and src_emacs-lisp{(find-library
|
src_emacs-lisp{(find-library "org-faces")} and src_emacs-lisp{(find-library
|
||||||
@ -2523,7 +2519,8 @@ this facility to a level acceptable for my workflow:
|
|||||||
obtain the same result. Currently, I prefer to tangle listing
|
obtain the same result. Currently, I prefer to tangle listing
|
||||||
[[lst:ensure-engrave-faces-with-attribute-values-fix]] to the =user-init-file=
|
[[lst:ensure-engrave-faces-with-attribute-values-fix]] to the =user-init-file=
|
||||||
instead of listing [[lst:ensure-engrave-faces-with-latex-face-apply-fix]].
|
instead of listing [[lst:ensure-engrave-faces-with-latex-face-apply-fix]].
|
||||||
3. Listing [[lst:ensure-engrave-faces-with-latex-face-mapper-fix]] makes
|
3. Fixed in [[https://elpa.gnu.org/devel/engrave-faces.html][engrave-faces-0.3.1.0.20230115.70118]]: listing
|
||||||
|
[[lst:ensure-engrave-faces-with-latex-face-mapper-fix]] makes
|
||||||
=engrave-faces-latex-face-mapper= handle horizontal and vertical spacing in
|
=engrave-faces-latex-face-mapper= handle horizontal and vertical spacing in
|
||||||
multiple line documentation strings correctly. For instance, without this fix
|
multiple line documentation strings correctly. For instance, without this fix
|
||||||
the mishandling of vertical and horizontal spacing destroys the indentation
|
the mishandling of vertical and horizontal spacing destroys the indentation
|
||||||
@ -2590,6 +2587,7 @@ environments and non-floating breakable LaTeX environments by means of
|
|||||||
\\renewcommand\\theFancyVerbLine{
|
\\renewcommand\\theFancyVerbLine{
|
||||||
\\normalsize\\color{black!40!white}\\arabic{FancyVerbLine}}
|
\\normalsize\\color{black!40!white}\\arabic{FancyVerbLine}}
|
||||||
% In case engrave-faces-latex-gen-preamble has not been run.
|
% In case engrave-faces-latex-gen-preamble has not been run.
|
||||||
|
\\usepackage{xcolor}
|
||||||
\\providecolor{EfD}{HTML}{f7f7f7}
|
\\providecolor{EfD}{HTML}{f7f7f7}
|
||||||
\\providecolor{EFD}{HTML}{28292e}
|
\\providecolor{EFD}{HTML}{28292e}
|
||||||
% To use \\DeclareTColorBox from the tcolorbox package:
|
% To use \\DeclareTColorBox from the tcolorbox package:
|
||||||
@ -2657,7 +2655,7 @@ environments and non-floating breakable LaTeX environments by means of
|
|||||||
#+caption[Fix engraving of symbolic color names in =engrave-faces=]:
|
#+caption[Fix engraving of symbolic color names in =engrave-faces=]:
|
||||||
#+caption: Fix engraving of symbolic colors names in =engrave-faces=.
|
#+caption: Fix engraving of symbolic colors names in =engrave-faces=.
|
||||||
#+name: lst:ensure-engrave-faces-with-attribute-values-fix
|
#+name: lst:ensure-engrave-faces-with-attribute-values-fix
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp :tangle no
|
||||||
(when (require 'engrave-faces nil t)
|
(when (require 'engrave-faces nil t)
|
||||||
(defun engrave-faces-attribute-values-around (efav-fun &rest args)
|
(defun engrave-faces-attribute-values-around (efav-fun &rest args)
|
||||||
(let ((values (apply efav-fun args))
|
(let ((values (apply efav-fun args))
|
||||||
@ -2680,7 +2678,7 @@ environments and non-floating breakable LaTeX environments by means of
|
|||||||
#+caption: Fix engraving of horizontal and vertical spacing in multiple line
|
#+caption: Fix engraving of horizontal and vertical spacing in multiple line
|
||||||
#+caption: documentation strings.
|
#+caption: documentation strings.
|
||||||
#+name: lst:ensure-engrave-faces-with-latex-face-mapper-fix
|
#+name: lst:ensure-engrave-faces-with-latex-face-mapper-fix
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp :tangle no
|
||||||
(when (require 'engrave-faces-latex nil t)
|
(when (require 'engrave-faces-latex nil t)
|
||||||
(defun engrave-faces-latex-face-mapper-override (faces content)
|
(defun engrave-faces-latex-face-mapper-override (faces content)
|
||||||
"Create a LaTeX representation of CONTENT with FACES applied."
|
"Create a LaTeX representation of CONTENT with FACES applied."
|
||||||
@ -3871,14 +3869,15 @@ Listing [[lst:configure-writegood-mode]] configures [[https://github.com/bnbeckw
|
|||||||
:CUSTOM_ID: sec:programming-tools
|
:CUSTOM_ID: sec:programming-tools
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
** [[info:eglot#Top][Eglot (info)]] or [[https://github.com/joaotavora/eglot][Eglot]]
|
** [[info:eglot#Top][Eglot (info)]]
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: sec:eglot
|
:CUSTOM_ID: sec:eglot
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
[[https://github.com/joaotavora/eglot#readme][Emacs polyGLOT (Eglot)]] is an Emacs language-server-protocol client that stays
|
[[https://github.com/joaotavora/eglot#readme][Emacs polyGLOT (Eglot)]] is an Emacs language-server-protocol client that stays
|
||||||
out of the way. The following listings contribute to a programming language
|
out of your way. [[info:eglot#Top][Eglot (info)]] is a builtin since Emacs-29.0.60. The following
|
||||||
mode independent [[https://github.com/joaotavora/eglot][Eglot]] configuration:
|
listings contribute to a programming language mode independent [[https://github.com/joaotavora/eglot][Eglot]]
|
||||||
|
configuration:
|
||||||
1. Listing [[lst:minimal-eglot-setup][minimal Eglot setup]] ensures installation of [[https://github.com/joaotavora/eglot][Eglot]], shows how to get
|
1. Listing [[lst:minimal-eglot-setup][minimal Eglot setup]] ensures installation of [[https://github.com/joaotavora/eglot][Eglot]], shows how to get
|
||||||
debug information from the [[https://github.com/python-lsp/python-lsp-server][Python LSP server]], and adds key bindings to
|
debug information from the [[https://github.com/python-lsp/python-lsp-server][Python LSP server]], and adds key bindings to
|
||||||
=eglot-mode-keymap=.
|
=eglot-mode-keymap=.
|
||||||
@ -4272,7 +4271,8 @@ install and use [[https://gitlab.com/andreyorst/ob-fennel][ob-fennel]] with the
|
|||||||
(ensure-package-installation 'fennel-mode 'quelpa))
|
(ensure-package-installation 'fennel-mode 'quelpa))
|
||||||
(unless (package-installed-p 'ob-fennel)
|
(unless (package-installed-p 'ob-fennel)
|
||||||
(quelpa '(ob-fennel :repo "andreyorst/ob-fennel" :fetcher gitlab)))
|
(quelpa '(ob-fennel :repo "andreyorst/ob-fennel" :fetcher gitlab)))
|
||||||
(ensure-package-selection 'ob-fennel))
|
(when (ensure-package-selection 'ob-fennel)
|
||||||
|
(org-babel-do-load-languages 'fennel (fboundp 'fennel-mode))))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+caption[Fennel example]:
|
#+caption[Fennel example]:
|
||||||
@ -4350,9 +4350,11 @@ print(1+1);
|
|||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: sec:python-programming
|
:CUSTOM_ID: sec:python-programming
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
The [[https://www.emacswiki.org/emacs/PythonProgrammingInEmacs][Python Programming in Emacs]] wiki page lists options to enhance Emacs's
|
The [[https://www.emacswiki.org/emacs/PythonProgrammingInEmacs][Python Programming in Emacs]] wiki page lists options to enhance Emacs's
|
||||||
built-in ~python-mode~. Here, the focus is on three packages:
|
built-in ~python-mode~. Here, the focus is on two Emacs packages and four Python
|
||||||
1. [[https://github.com/joaotavora/eglot][Eglot - Emacs polyGLOT: an Emacs LSP client that stays out of your way]]. The
|
packages:
|
||||||
|
1. [[#sec:eglot][Eglot - Emacs polyGLOT: a builtin LSP client since Emacs-29.0.60]]. The
|
||||||
maintainer also contributes to Emacs itself and has a deep understanding of
|
maintainer also contributes to Emacs itself and has a deep understanding of
|
||||||
[[https://sheer.tj/the_way_of_emacs.html][the Way of Emacs]]. He refuses to add new features without seeing how they fit
|
[[https://sheer.tj/the_way_of_emacs.html][the Way of Emacs]]. He refuses to add new features without seeing how they fit
|
||||||
into [[https://sheer.tj/the_way_of_emacs.html][the Way of Emacs]] as this discussion on [[https://github.com/joaotavora/eglot/issues/523][org-mode source code blocks]]
|
into [[https://sheer.tj/the_way_of_emacs.html][the Way of Emacs]] as this discussion on [[https://github.com/joaotavora/eglot/issues/523][org-mode source code blocks]]
|
||||||
@ -4360,7 +4362,13 @@ built-in ~python-mode~. Here, the focus is on three packages:
|
|||||||
2. [[https://jedi.readthedocs.io/en/latest/][Jedi]] is a static analysis tool for Python that is typically used in plugins
|
2. [[https://jedi.readthedocs.io/en/latest/][Jedi]] is a static analysis tool for Python that is typically used in plugins
|
||||||
for editors or integrated development environments. Jedi has a focus on
|
for editors or integrated development environments. Jedi has a focus on
|
||||||
autocompletion and object definition lookup functionality.
|
autocompletion and object definition lookup functionality.
|
||||||
3. [[https://github.com/astoff/code-cells.el#readme][Code-cells]] allows to edit [[https://ipython.org/notebook.html][IPython or Jupyter notebooks]] in Emacs with help
|
3. [[https://github.com/charliermarsh/ruff#readme][Ruff]] is an extremely fast Python linter and a replacement for [[https://flake8.pycqa.org/en/latest/][Flake8]] with a
|
||||||
|
variety of its plugins. [[https://notes.crmarsh.com/][Charlie Marsh]] explains why he started [[https://pypi.org/project/ruff/][Ruff]] in the
|
||||||
|
post [[https://notes.crmarsh.com/python-tooling-could-be-much-much-faster][Python tooling could be much faster]].
|
||||||
|
4. [[https://github.com/python-lsp/python-lsp-server#readme][Python LSP Server]] is in my opinion the most complete [[https://en.wikipedia.org/wiki/Language_Server_Protocol][Language Server Protocol]]
|
||||||
|
implementation for Python and it handles [[https://github.com/charliermarsh/ruff#readme][Ruff]] thanks to the [[https://github.com/python-lsp/python-lsp-ruff][python-lsp-ruff]]
|
||||||
|
plugin.
|
||||||
|
5. [[https://github.com/astoff/code-cells.el#readme][Code-cells]] allows to edit [[https://ipython.org/notebook.html][IPython or Jupyter notebooks]] in Emacs with help
|
||||||
from either [[https://github.com/mwouts/jupytext][Jupytext]] or [[https://pandoc.org/][Pandoc]].
|
from either [[https://github.com/mwouts/jupytext][Jupytext]] or [[https://pandoc.org/][Pandoc]].
|
||||||
|
|
||||||
Here are links covering how to integrate Emacs, Python and a Python LSP
|
Here are links covering how to integrate Emacs, Python and a Python LSP
|
||||||
@ -4396,8 +4404,6 @@ of src_emacs-lisp{(choose-common-python-linter)} from:
|
|||||||
1. [[https://github.com/PyCQA/pyflakes][Pyflakes - simple tool which checks Python source files for errors]].
|
1. [[https://github.com/PyCQA/pyflakes][Pyflakes - simple tool which checks Python source files for errors]].
|
||||||
2. [[https://flake8.pycqa.org/en/latest/][Flake8 - your tool for style guide enforcement]].
|
2. [[https://flake8.pycqa.org/en/latest/][Flake8 - your tool for style guide enforcement]].
|
||||||
3. [[https://github.com/charliermarsh/ruff][Ruff - an extremely fast Python linter written in Rust]].
|
3. [[https://github.com/charliermarsh/ruff][Ruff - an extremely fast Python linter written in Rust]].
|
||||||
I use [[https://pypi.org/project/ruff/][Ruff]] to replace [[https://pypi.org/project/flake8/][Flake8]] with a variety of its plugins. [[https://notes.crmarsh.com/][Charlie Marsh]]
|
|
||||||
explains why he started [[https://pypi.org/project/ruff/][Ruff]] in the post [[https://notes.crmarsh.com/python-tooling-could-be-much-much-faster][Python tooling could be much faster]].
|
|
||||||
|
|
||||||
Listing [[lst:pyproject-toml-kickoff][kickoff pyproject.toml proposal]] facilitates dropping a [[https://pip.pypa.io/en/stable/reference/build-system/pyproject-toml][pyproject.toml]]
|
Listing [[lst:pyproject-toml-kickoff][kickoff pyproject.toml proposal]] facilitates dropping a [[https://pip.pypa.io/en/stable/reference/build-system/pyproject-toml][pyproject.toml]]
|
||||||
file into Python projects which anyhow should switch to using a [[https://pip.pypa.io/en/stable/reference/build-system/pyproject-toml][pyproject.toml]]
|
file into Python projects which anyhow should switch to using a [[https://pip.pypa.io/en/stable/reference/build-system/pyproject-toml][pyproject.toml]]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user