org-src: Use `sh-mode' for all the shells it can handle

* lisp/org-src.el (org-src--get-known-shells): New helper function
extracting known shells from `sh-ancestor-alist'
(org-src-lang-modes): Update the value

Link: https://orgmode.org/list/CAMbmz5ntkOHMiZG4EbNAks9ob-0ahnciCfHQ9LQmJoci0+i7fg@mail.gmail.com
This commit is contained in:
Matthew Trzcinski 2023-04-17 10:57:35 -04:00
parent cfe5e01e14
commit 26ef5e3e5b
1 changed files with 13 additions and 5 deletions

View File

@ -39,6 +39,7 @@
(require 'org-macs)
(require 'org-compat)
(require 'org-keys)
(require 'sh-script)
(declare-function org--get-expected-indentation "org" (element contentsp))
(declare-function org-mode "org" ())
@ -194,11 +195,17 @@ You may want to use this hook for example to turn off `outline-minor-mode'
or similar things which you want to have when editing a source code file,
but which mess up the display of a snippet in Org exported files.")
(defun org-src--get-known-shells ()
"List all the shells in `sh-ancestor-alist' for `org-src-lang-modes'.
The shells are associated with `sh-mode'."
(mapcar
(lambda (shell) (cons (symbol-name shell) 'sh))
(delete-dups (flatten-tree sh-ancestor-alist))))
(defcustom org-src-lang-modes
'(("C" . c)
`(("C" . c)
("C++" . c++)
("asymptote" . asy)
("bash" . sh)
("beamer" . latex)
("calc" . fundamental)
("cpp" . c++)
@ -208,9 +215,10 @@ but which mess up the display of a snippet in Org exported files.")
("elisp" . emacs-lisp)
("ocaml" . tuareg)
("screen" . shell-script)
("shell" . sh)
("sqlite" . sql)
("toml" . conf-toml))
("toml" . conf-toml)
("shell" . sh)
,@(org-src--get-known-shells))
"Alist mapping languages to their major mode.
The key is the language name. The value is the mode name, as
@ -221,7 +229,7 @@ not the case, this variable provides a way to simplify things on
the user side. For example, there is no `ocaml-mode' in Emacs,
but the mode to use is `tuareg-mode'."
:group 'org-edit-structure
:package-version '(Org . "9.6")
:package-version '(Org . "9.7")
:type '(repeat
(cons
(string "Language name")