diff options
| author | Glenn Morris | 2021-10-04 08:13:11 -0700 |
|---|---|---|
| committer | Glenn Morris | 2021-10-04 08:13:11 -0700 |
| commit | e0fdb68f8ccb1c870bfb8c3cd2bf786a0bb312b6 (patch) | |
| tree | c196f5f691ae5ad5d732f49af358768eaf9141ef | |
| parent | f0e6b47ef0a5ee15568e0b3992352d00d1055f46 (diff) | |
| parent | 3b8dda6c903e8e103a26ce812fc9400b301a09ae (diff) | |
| download | emacs-e0fdb68f8ccb1c870bfb8c3cd2bf786a0bb312b6.tar.gz emacs-e0fdb68f8ccb1c870bfb8c3cd2bf786a0bb312b6.zip | |
Merge from origin/emacs-28
3b8dda6c90 Add safety check in x_menu_show
e1fb731393 Tweak x_connection_closed when I/O error
595e506c82 * lisp/erc/erc.el (erc-user-mode): Set "+i" by default.
d00f3d4c05 Port unused decls to C2x
317eb2d5b5 Improve structure of TODO
c0793cd9de Don't use some obsolete names in documentation
87153cc915 Tweak x_hide_tip for consistency
7e871dcd27 Remove encode_terminal_code UNINITs
2a00634880 Port pdumper.c maybe_unused to C2x
6d9b3c0eaa Port systhreads.h to C2x
fd274d7d24 Pacify -Wanalyzer-null-argument in lisp_malloc
cc3fc94f09 Pacify gcc 11.2.1 -Wanalyzer-null-argument
d3a832a61a Simplify hack-read-symbol-shorthands again (bug#50946)
4831426158 Fix recipe for 'native-lisp' directory
0bb42ef803 ; * lisp/time-stamp.el (time-stamp-format): Doc string.
732c70a0d9 Simplify socket symlink-attack checking
fc32a3bd95 ; * doc/lispref/files.texi (Reading from Files): Fix wording.
3cc77aa976 Clarify (elisp) insert-file-contents with BEG or END not o...
5deeb0947d * src/Makefile.in: Simplify conditionals.
121a5abeae Move context-menu selection items Defun/List/Symbol to pro...
0c341e6e84 * lisp/tab-bar.el (tab-bar-detach-tab): Handle frame selec...
931a7276c0 * lisp/tab-line.el (tab-line-format): Add face-modified to...
3863919a00 Fix unmounting in Tramp
7a6d34cd1f * etc/themes/light-blue-theme.el: Add "Maintainer: emacs-d...
c1b1e1f545 Define HAVE_NATIVE_COMP in src/Makefile.in
137fa2d716 Rename elisp-shorthands to read-symbol-shorthands
e6fbc45b7b Font-lock shorthands in elisp-mode for quick visual recogn...
17e6f3bee5 ; Fix last change in tramp-sshfs.el
3dae1e33d1 Suppress superfluous error messages in Tramp
b228ec9fab Fix reading the tail of a file in shorthands.el
7fb2789509 Fix substitution of pretty quotes in code in easy-mmode
b47d7ce1b8 Fix agent directory deletion
b1a8a66fb0 ; * etc/TODO: Fix previous commit; delete the right thing.
6c01a21365 Clarify the purpose of internal--format-docstring-line
55dadbc57e * lisp/net/dictionary.el (context-menu-dictionary): Move m...
bb209cd5ab Update to Org 9.5-30-g10dc9d
4341e79a5f Remove bogus ":safe t" custom properties
b6f6b593c6 Fix 'apropos-compact-layout'
62d6cecfcd Remove bogus ":safe nil" custom properties
f9111d8784 The safe-local-variable property is a function (bug#50944)
3dc094abee ; Some minor tweaks to TODO
a5b4356d37 Revert "; * etc/TODO: Move elpa.gnu.org items to the end."
7bc0cee115 Revert "* etc/TODO: Rearrange to start with "Simple tasks"."
3489471417 Fix selection of fonts for Arabic on Posix platforms
13e5943386 ; Fix a typo in a doc string
bd60fca2fa Fix ox-koma-letter compilation warnings
340e527bed Preload paren.el
a9052248da Improve documentation of 'shift-select-mode'
d505971894 ; Standardize some license headers
9307889d68 Simplify shorthand injection (bug#50946)
5c77cc9584 ; * admin/release-branch.txt: Tweak previous.
# Conflicts:
# etc/NEWS
# test/lisp/subr-tests.el
85 files changed, 1670 insertions, 473 deletions
diff --git a/admin/notes/bugtracker b/admin/notes/bugtracker index 9eb65e1f864..deb06f552cc 100644 --- a/admin/notes/bugtracker +++ b/admin/notes/bugtracker | |||
| @@ -84,7 +84,7 @@ generate a new report. The only time to send mail to the bug list | |||
| 84 | address is to create a new report. | 84 | address is to create a new report. |
| 85 | 85 | ||
| 86 | Gnus users can add the following to message-dont-reply-to-names; | 86 | Gnus users can add the following to message-dont-reply-to-names; |
| 87 | similarly with Rmail and rmail-dont-reply-to-names: | 87 | similarly with Rmail and mail-dont-reply-to-names: |
| 88 | 88 | ||
| 89 | "\\(emacs-pretest-bug\\|bug-gnu-emacs\\|bug-\\(e\\|gnu\\)macs\\)@gnu\\.org\\|\ | 89 | "\\(emacs-pretest-bug\\|bug-gnu-emacs\\|bug-\\(e\\|gnu\\)macs\\)@gnu\\.org\\|\ |
| 90 | \\(submit\\|control\\|owner\\)@debbugs\\.gnu\\.org" | 90 | \\(submit\\|control\\|owner\\)@debbugs\\.gnu\\.org" |
diff --git a/admin/notes/multi-tty b/admin/notes/multi-tty index 1a337b9d799..fa4df820ae4 100644 --- a/admin/notes/multi-tty +++ b/admin/notes/multi-tty | |||
| @@ -474,7 +474,7 @@ THINGS TO DO | |||
| 474 | definition. | 474 | definition. |
| 475 | 475 | ||
| 476 | Exceptions found so far: x-select-text and | 476 | Exceptions found so far: x-select-text and |
| 477 | x-cut-buffer-or-selection-value. | 477 | x-selection-value (old name: x-cut-buffer-or-selection-value). |
| 478 | 478 | ||
| 479 | ** Have a look at fatal_error_hook. | 479 | ** Have a look at fatal_error_hook. |
| 480 | 480 | ||
diff --git a/admin/release-branch.txt b/admin/release-branch.txt index 3318d8de806..0c393a9eccb 100644 --- a/admin/release-branch.txt +++ b/admin/release-branch.txt | |||
| @@ -3,7 +3,8 @@ Instructions for cutting the Emacs release branch | |||
| 3 | 1. In the clone of the Emacs Git repository, switch to the 'master' | 3 | 1. In the clone of the Emacs Git repository, switch to the 'master' |
| 4 | branch, "git pull", and build it (using 'make bootstrap') to make | 4 | branch, "git pull", and build it (using 'make bootstrap') to make |
| 5 | sure it's not broken. Run 'make check-expensive' and ensure all | 5 | sure it's not broken. Run 'make check-expensive' and ensure all |
| 6 | tests pass. | 6 | tests pass. (Alternatively, verify that the automated build |
| 7 | servers are showing success for the latest revision.) | ||
| 7 | 8 | ||
| 8 | 2. Create the release branch and switch to it. Assuming that it is | 9 | 2. Create the release branch and switch to it. Assuming that it is |
| 9 | for releasing Emacs versions XY.1, XY.2, etc., the command is: | 10 | for releasing Emacs versions XY.1, XY.2, etc., the command is: |
diff --git a/doc/emacs/mark.texi b/doc/emacs/mark.texi index 20cb8ee2c65..2461cb0f6af 100644 --- a/doc/emacs/mark.texi +++ b/doc/emacs/mark.texi | |||
| @@ -409,9 +409,14 @@ region by dragging the mouse, you can continue to extend the region | |||
| 409 | using shifted cursor motion commands. In either case, any unshifted | 409 | using shifted cursor motion commands. In either case, any unshifted |
| 410 | cursor motion command deactivates the mark. | 410 | cursor motion command deactivates the mark. |
| 411 | 411 | ||
| 412 | @vindex shift-select-mode | ||
| 412 | To turn off shift-selection, set @code{shift-select-mode} to | 413 | To turn off shift-selection, set @code{shift-select-mode} to |
| 413 | @code{nil}. Doing so does not disable setting the mark via mouse | 414 | @code{nil}. Doing so does not disable setting the mark via mouse |
| 414 | commands. | 415 | commands. If you set @code{shift-select-mode} to the value |
| 416 | @code{permanent}, cursor motion keys that were not shift-translated | ||
| 417 | will not deactivate the mark, so, for example, the region set by prior | ||
| 418 | commands can be extended by shift-selection, and unshifted cursor | ||
| 419 | motion keys will extend the region set by shift-selection. | ||
| 415 | 420 | ||
| 416 | @node Disabled Transient Mark | 421 | @node Disabled Transient Mark |
| 417 | @section Disabling Transient Mark Mode | 422 | @section Disabling Transient Mark Mode |
diff --git a/doc/lispintro/emacs-lisp-intro.texi b/doc/lispintro/emacs-lisp-intro.texi index 7c7005b3483..9dbf854171c 100644 --- a/doc/lispintro/emacs-lisp-intro.texi +++ b/doc/lispintro/emacs-lisp-intro.texi | |||
| @@ -4201,7 +4201,7 @@ times. | |||
| 4201 | 4201 | ||
| 4202 | The part of the buffer between point and mark is called @dfn{the | 4202 | The part of the buffer between point and mark is called @dfn{the |
| 4203 | region}. Numerous commands work on the region, including | 4203 | region}. Numerous commands work on the region, including |
| 4204 | @code{center-region}, @code{count-lines-region}, @code{kill-region}, and | 4204 | @code{center-region}, @code{count-words-region}, @code{kill-region}, and |
| 4205 | @code{print-region}. | 4205 | @code{print-region}. |
| 4206 | 4206 | ||
| 4207 | The @code{save-excursion} special form saves the location of point and | 4207 | The @code{save-excursion} special form saves the location of point and |
| @@ -4214,7 +4214,7 @@ evaluated. | |||
| 4214 | 4214 | ||
| 4215 | In Emacs, a function frequently moves point as part of its internal | 4215 | In Emacs, a function frequently moves point as part of its internal |
| 4216 | workings even though a user would not expect this. For example, | 4216 | workings even though a user would not expect this. For example, |
| 4217 | @code{count-lines-region} moves point. To prevent the user from being | 4217 | @code{count-words-region} moves point. To prevent the user from being |
| 4218 | bothered by jumps that are both unexpected and (from the user's point of | 4218 | bothered by jumps that are both unexpected and (from the user's point of |
| 4219 | view) unnecessary, @code{save-excursion} is often used to keep point in | 4219 | view) unnecessary, @code{save-excursion} is often used to keep point in |
| 4220 | the location expected by the user. The use of | 4220 | the location expected by the user. The use of |
| @@ -13473,8 +13473,7 @@ The template for an interactive function definition is, as always: | |||
| 13473 | 13473 | ||
| 13474 | What we need to do is fill in the slots. | 13474 | What we need to do is fill in the slots. |
| 13475 | 13475 | ||
| 13476 | The name of the function should be self-explanatory and similar to the | 13476 | The name of the function should be self-explanatory and easy |
| 13477 | existing @code{count-lines-region} name. This makes the name easier | ||
| 13478 | to remember. @code{count-words-region} is the obvious choice. Since | 13477 | to remember. @code{count-words-region} is the obvious choice. Since |
| 13479 | that name is now used for the standard Emacs command to count words, we | 13478 | that name is now used for the standard Emacs command to count words, we |
| 13480 | will name our implementation @code{@value{COUNT-WORDS}}. | 13479 | will name our implementation @code{@value{COUNT-WORDS}}. |
diff --git a/doc/lispref/files.texi b/doc/lispref/files.texi index 2dc808e6945..1e05153f3c0 100644 --- a/doc/lispref/files.texi +++ b/doc/lispref/files.texi | |||
| @@ -563,7 +563,17 @@ In this case, @var{visit} must be @code{nil}. For example, | |||
| 563 | @end example | 563 | @end example |
| 564 | 564 | ||
| 565 | @noindent | 565 | @noindent |
| 566 | inserts the first 500 characters of a file. | 566 | inserts the characters coded by the first 500 bytes of a file. |
| 567 | |||
| 568 | If @var{beg} or @var{end} happens to be in the middle of a character's | ||
| 569 | multibyte sequence, Emacs's character code conversion will insert one | ||
| 570 | or more eight-bit characters (a.k.a.@: ``raw bytes'') | ||
| 571 | (@pxref{Character Sets}) into the buffer. If you want to read part of | ||
| 572 | a file this way, we recommend to bind @code{coding-system-for-read} to | ||
| 573 | a suitable value around the call to this function (@pxref{Specifying | ||
| 574 | Coding Systems}), and to write Lisp code which will check for raw | ||
| 575 | bytes at the boundaries, read the entire sequence of these bytes, and | ||
| 576 | convert them back to valid characters. | ||
| 567 | 577 | ||
| 568 | If the argument @var{replace} is non-@code{nil}, it means to replace the | 578 | If the argument @var{replace} is non-@code{nil}, it means to replace the |
| 569 | contents of the buffer (actually, just the accessible portion) with the | 579 | contents of the buffer (actually, just the accessible portion) with the |
| @@ -577,10 +587,11 @@ with @code{insert-file-contents}, as long as @var{replace} and | |||
| 577 | @end defun | 587 | @end defun |
| 578 | 588 | ||
| 579 | @defun insert-file-contents-literally filename &optional visit beg end replace | 589 | @defun insert-file-contents-literally filename &optional visit beg end replace |
| 580 | This function works like @code{insert-file-contents} except that it | 590 | This function works like @code{insert-file-contents} except that each |
| 581 | does not run @code{after-insert-file-functions}, and does not do | 591 | byte in the file is handled separately, being converted into an |
| 582 | format decoding, character code conversion, automatic uncompression, | 592 | eight-bit character if needed. It does not run |
| 583 | and so on. | 593 | @code{after-insert-file-functions}, and does not do format decoding, |
| 594 | character code conversion, automatic uncompression, and so on. | ||
| 584 | @end defun | 595 | @end defun |
| 585 | 596 | ||
| 586 | If you want to pass a file name to another process so that another | 597 | If you want to pass a file name to another process so that another |
diff --git a/doc/lispref/hooks.texi b/doc/lispref/hooks.texi index 394928454b0..feec8b24f46 100644 --- a/doc/lispref/hooks.texi +++ b/doc/lispref/hooks.texi | |||
| @@ -262,7 +262,6 @@ after-set-visited-file-name-hook | |||
| 262 | auto-coding-functions | 262 | auto-coding-functions |
| 263 | choose-completion-string-functions | 263 | choose-completion-string-functions |
| 264 | completing-read-function | 264 | completing-read-function |
| 265 | completion-annotate-function | ||
| 266 | completion-at-point-functions | 265 | completion-at-point-functions |
| 267 | completion-list-insert-choice-function | 266 | completion-list-insert-choice-function |
| 268 | deactivate-current-input-method-function | 267 | deactivate-current-input-method-function |
diff --git a/doc/lispref/symbols.texi b/doc/lispref/symbols.texi index 8ae2d1fc88b..9c33e2c8ec2 100644 --- a/doc/lispref/symbols.texi +++ b/doc/lispref/symbols.texi | |||
| @@ -666,7 +666,7 @@ different things. However, this practice commonly originates very | |||
| 666 | long symbols names, which are inconvenient to type and read after a | 666 | long symbols names, which are inconvenient to type and read after a |
| 667 | while. Shorthands solve these issues in a clean way. | 667 | while. Shorthands solve these issues in a clean way. |
| 668 | 668 | ||
| 669 | @defvar elisp-shorthands | 669 | @defvar read-symbol-shorthands |
| 670 | This variable's value is an alist whose elements have the form | 670 | This variable's value is an alist whose elements have the form |
| 671 | @code{(@var{shorthand-prefix} . @var{longhand-prefix})}. Each element | 671 | @code{(@var{shorthand-prefix} . @var{longhand-prefix})}. Each element |
| 672 | instructs the Lisp reader to read every symbol form which starts with | 672 | instructs the Lisp reader to read every symbol form which starts with |
| @@ -704,7 +704,7 @@ alleviate that. | |||
| 704 | (snu-split "\\(\r\n\\|[\n\r]\\)" s)) | 704 | (snu-split "\\(\r\n\\|[\n\r]\\)" s)) |
| 705 | 705 | ||
| 706 | ;; Local Variables: | 706 | ;; Local Variables: |
| 707 | ;; elisp-shorthands: (("snu-" . "some-nice-string-utils-")) | 707 | ;; read-symbol-shorthands: (("snu-" . "some-nice-string-utils-")) |
| 708 | ;; End: | 708 | ;; End: |
| 709 | @end lisp | 709 | @end lisp |
| 710 | 710 | ||
| @@ -719,19 +719,19 @@ waiting for ElDoc (@pxref{Lisp Doc, , Local Variables in Files, emacs, | |||
| 719 | The GNU Emacs Manual}) to hint at the true full name of the symbol | 719 | The GNU Emacs Manual}) to hint at the true full name of the symbol |
| 720 | under point in the echo area. | 720 | under point in the echo area. |
| 721 | 721 | ||
| 722 | Since @code{elisp-shorthands} is a file-local variable, it is possible | 722 | Since @code{read-symbol-shorthands} is a file-local variable, it is |
| 723 | that multiple libraries depending on | 723 | possible that multiple libraries depending on |
| 724 | @file{some-nice-string-utils-lines.el} refer to the same symbols under | 724 | @file{some-nice-string-utils-lines.el} refer to the same symbols under |
| 725 | @emph{different} shorthands, or not using shorthands at all. In the | 725 | @emph{different} shorthands, or not using shorthands at all. In the |
| 726 | next example, the @file{my-tricks.el} library refers to the | 726 | next example, the @file{my-tricks.el} library refers to the symbol |
| 727 | symbol @code{some-nice-string-utils-lines} using the | 727 | @code{some-nice-string-utils-lines} using the @code{sns-} prefix |
| 728 | @code{sns-} prefix instead of @code{snu-}. | 728 | instead of @code{snu-}. |
| 729 | 729 | ||
| 730 | @example | 730 | @example |
| 731 | (defun t-reverse-lines (s) (string-join (reverse (sns-lines s)) "\n") | 731 | (defun t-reverse-lines (s) (string-join (reverse (sns-lines s)) "\n") |
| 732 | 732 | ||
| 733 | ;; Local Variables: | 733 | ;; Local Variables: |
| 734 | ;; elisp-shorthands: (("t-" . "my-tricks-") | 734 | ;; read-symbol-shorthands: (("t-" . "my-tricks-") |
| 735 | ;; ("sns-" . "some-nice-string-utils-")) | 735 | ;; ("sns-" . "some-nice-string-utils-")) |
| 736 | ;; End: | 736 | ;; End: |
| 737 | @end example | 737 | @end example |
diff --git a/doc/misc/efaq.texi b/doc/misc/efaq.texi index f80ccc080a0..18342e65b0a 100644 --- a/doc/misc/efaq.texi +++ b/doc/misc/efaq.texi | |||
| @@ -4136,9 +4136,6 @@ You can get the old behavior by binding @kbd{SPC} to | |||
| 4136 | @lisp | 4136 | @lisp |
| 4137 | (define-key minibuffer-local-filename-completion-map (kbd "SPC") | 4137 | (define-key minibuffer-local-filename-completion-map (kbd "SPC") |
| 4138 | 'minibuffer-complete-word) | 4138 | 'minibuffer-complete-word) |
| 4139 | |||
| 4140 | (define-key minibuffer-local-filename-must-match-map (kbd "SPC") | ||
| 4141 | 'minibuffer-complete-word) | ||
| 4142 | @end lisp | 4139 | @end lisp |
| 4143 | 4140 | ||
| 4144 | @c ------------------------------------------------------------ | 4141 | @c ------------------------------------------------------------ |
diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi index 9e433e11c81..0c065584c45 100644 --- a/doc/misc/gnus.texi +++ b/doc/misc/gnus.texi | |||
| @@ -13875,11 +13875,9 @@ present in this hook. | |||
| 13875 | @item nntp-authinfo-function | 13875 | @item nntp-authinfo-function |
| 13876 | @vindex nntp-authinfo-function | 13876 | @vindex nntp-authinfo-function |
| 13877 | @findex nntp-send-authinfo | 13877 | @findex nntp-send-authinfo |
| 13878 | @vindex nntp-authinfo-file | ||
| 13879 | This function will be used to send @samp{AUTHINFO} to the @acronym{NNTP} | 13878 | This function will be used to send @samp{AUTHINFO} to the @acronym{NNTP} |
| 13880 | server. The default function is @code{nntp-send-authinfo}, which looks | 13879 | server. The default function is @code{nntp-send-authinfo}, which looks |
| 13881 | through your @file{~/.authinfo} (or whatever you've set the | 13880 | through your @file{~/.authinfo} for applicable entries. If none |
| 13882 | @code{nntp-authinfo-file} variable to) for applicable entries. If none | ||
| 13883 | are found, it will prompt you for a login name and a password. The | 13881 | are found, it will prompt you for a login name and a password. The |
| 13884 | format of the @file{~/.authinfo} file is (almost) the same as the | 13882 | format of the @file{~/.authinfo} file is (almost) the same as the |
| 13885 | @code{ftp} @file{~/.netrc} file, which is defined in the @code{ftp} | 13883 | @code{ftp} @file{~/.netrc} file, which is defined in the @code{ftp} |
diff --git a/doc/misc/reftex.texi b/doc/misc/reftex.texi index 8ca5fcca5ba..8bde241e18f 100644 --- a/doc/misc/reftex.texi +++ b/doc/misc/reftex.texi | |||
| @@ -658,9 +658,9 @@ variable @code{reftex-auto-recenter-toc}. | |||
| 658 | 658 | ||
| 659 | @end table | 659 | @end table |
| 660 | 660 | ||
| 661 | @vindex reftex-toc-map | 661 | @vindex reftex-toc-mode-map |
| 662 | In order to define additional commands for the @file{*toc*} buffer, the | 662 | In order to define additional commands for the @file{*toc*} buffer, the |
| 663 | keymap @code{reftex-toc-map} may be used. | 663 | keymap @code{reftex-toc-mode-map} may be used. |
| 664 | 664 | ||
| 665 | @findex reftex-toc-recenter | 665 | @findex reftex-toc-recenter |
| 666 | @vindex reftex-auto-recenter-toc | 666 | @vindex reftex-auto-recenter-toc |
| @@ -1021,9 +1021,9 @@ document and let you select a label from there (@pxref{LaTeX xr Package,,xr}). | |||
| 1021 | 1021 | ||
| 1022 | @end table | 1022 | @end table |
| 1023 | 1023 | ||
| 1024 | @vindex reftex-select-label-map | 1024 | @vindex reftex-select-label-mode-map |
| 1025 | In order to define additional commands for the selection process, the | 1025 | In order to define additional commands for the selection process, the |
| 1026 | keymap @code{reftex-select-label-map} may be used. | 1026 | keymap @code{reftex-select-label-mode-map} may be used. |
| 1027 | 1027 | ||
| 1028 | @node Builtin Label Environments | 1028 | @node Builtin Label Environments |
| 1029 | @section Builtin Label Environments | 1029 | @section Builtin Label Environments |
| @@ -1871,9 +1871,9 @@ entries. | |||
| 1871 | 1871 | ||
| 1872 | @end table | 1872 | @end table |
| 1873 | 1873 | ||
| 1874 | @vindex reftex-select-bib-map | 1874 | @vindex reftex-select-bib-mode-map |
| 1875 | In order to define additional commands for this selection process, the | 1875 | In order to define additional commands for this selection process, the |
| 1876 | keymap @code{reftex-select-bib-map} may be used. | 1876 | keymap @code{reftex-select-bib-mode-map} may be used. |
| 1877 | 1877 | ||
| 1878 | Note that if you do not use Emacs to edit the @BibTeX{} database files, | 1878 | Note that if you do not use Emacs to edit the @BibTeX{} database files, |
| 1879 | @RefTeX{} will ask if the related buffers should be updated once it | 1879 | @RefTeX{} will ask if the related buffers should be updated once it |
| @@ -3960,7 +3960,7 @@ Normal hook which is run when a @file{*toc*} buffer is | |||
| 3960 | created. | 3960 | created. |
| 3961 | @end deffn | 3961 | @end deffn |
| 3962 | 3962 | ||
| 3963 | @deffn Keymap reftex-toc-map | 3963 | @deffn Keymap reftex-toc-mode-map |
| 3964 | The keymap which is active in the @file{*toc*} buffer. | 3964 | The keymap which is active in the @file{*toc*} buffer. |
| 3965 | (@pxref{Table of Contents}). | 3965 | (@pxref{Table of Contents}). |
| 3966 | @end deffn | 3966 | @end deffn |
| @@ -4425,7 +4425,7 @@ Normal hook which is run when a selection buffer enters | |||
| 4425 | @code{reftex-select-label-mode}. | 4425 | @code{reftex-select-label-mode}. |
| 4426 | @end deffn | 4426 | @end deffn |
| 4427 | 4427 | ||
| 4428 | @deffn Keymap reftex-select-label-map | 4428 | @deffn Keymap reftex-select-label-mode-map |
| 4429 | The keymap which is active in the labels selection process | 4429 | The keymap which is active in the labels selection process |
| 4430 | (@pxref{Referencing Labels}). | 4430 | (@pxref{Referencing Labels}). |
| 4431 | @end deffn | 4431 | @end deffn |
| @@ -4586,7 +4586,7 @@ Normal hook which is run when a selection buffer enters | |||
| 4586 | @code{reftex-select-bib-mode}. | 4586 | @code{reftex-select-bib-mode}. |
| 4587 | @end deffn | 4587 | @end deffn |
| 4588 | 4588 | ||
| 4589 | @deffn Keymap reftex-select-bib-map | 4589 | @deffn Keymap reftex-select-bib-mode-map |
| 4590 | The keymap which is active in the citation-key selection process | 4590 | The keymap which is active in the citation-key selection process |
| 4591 | (@pxref{Creating Citations}). | 4591 | (@pxref{Creating Citations}). |
| 4592 | @end deffn | 4592 | @end deffn |
| @@ -4792,7 +4792,7 @@ into blocks. Sorting will then preserve blocks, so that lines are | |||
| 4792 | re-arranged only within blocks. | 4792 | re-arranged only within blocks. |
| 4793 | @end defopt | 4793 | @end defopt |
| 4794 | 4794 | ||
| 4795 | @defopt reftex-index-phrases-map | 4795 | @defopt reftex-index-phrases-mode-map |
| 4796 | Keymap for the Index Phrases buffer. | 4796 | Keymap for the Index Phrases buffer. |
| 4797 | @end defopt | 4797 | @end defopt |
| 4798 | 4798 | ||
| @@ -4824,7 +4824,7 @@ the document. This flag can be toggled from within the @file{*Index*} | |||
| 4824 | buffer with the @kbd{f} key. | 4824 | buffer with the @kbd{f} key. |
| 4825 | @end defopt | 4825 | @end defopt |
| 4826 | 4826 | ||
| 4827 | @deffn Keymap reftex-index-map | 4827 | @deffn Keymap reftex-index-mode-map |
| 4828 | The keymap which is active in the @file{*Index*} buffer | 4828 | The keymap which is active in the @file{*Index*} buffer |
| 4829 | (@pxref{Index Support}). | 4829 | (@pxref{Index Support}). |
| 4830 | @end deffn | 4830 | @end deffn |
| @@ -5813,8 +5813,8 @@ buffer). | |||
| 5813 | @noindent @b{Version 3.12} | 5813 | @noindent @b{Version 3.12} |
| 5814 | @itemize @bullet | 5814 | @itemize @bullet |
| 5815 | @item | 5815 | @item |
| 5816 | There are 3 new keymaps for customization: @code{reftex-toc-map}, | 5816 | There are 3 new keymaps for customization: @code{reftex-toc-mode-map}, |
| 5817 | @code{reftex-select-label-map}, @code{reftex-select-bib-map}. | 5817 | @code{reftex-select-label-mode-map}, @code{reftex-select-bib-mode-map}. |
| 5818 | @item | 5818 | @item |
| 5819 | Refontification uses more standard font-lock stuff. | 5819 | Refontification uses more standard font-lock stuff. |
| 5820 | @item | 5820 | @item |
diff --git a/doc/misc/speedbar.texi b/doc/misc/speedbar.texi index 9991917b3fd..70d4b054166 100644 --- a/doc/misc/speedbar.texi +++ b/doc/misc/speedbar.texi | |||
| @@ -896,7 +896,7 @@ augmented with speedbar. | |||
| 896 | 896 | ||
| 897 | @enumerate | 897 | @enumerate |
| 898 | @item | 898 | @item |
| 899 | Create the keymap variable @code{@var{name}-speedbar-key-map}. | 899 | Create the keymap variable @code{@var{name}-speedbar-mode-map}. |
| 900 | 900 | ||
| 901 | @item | 901 | @item |
| 902 | Create a function, named whatever you like, which assigns values into your | 902 | Create a function, named whatever you like, which assigns values into your |
| @@ -904,7 +904,7 @@ keymap. Use this command to create the keymap before assigning | |||
| 904 | bindings: | 904 | bindings: |
| 905 | 905 | ||
| 906 | @smallexample | 906 | @smallexample |
| 907 | (setq @var{name}-speedbar-key-map (speedbar-make-specialized-keymap)) | 907 | (setq @var{name}-speedbar-mode-map (speedbar-make-specialized-keymap)) |
| 908 | @end smallexample | 908 | @end smallexample |
| 909 | 909 | ||
| 910 | This function creates a special keymap for use in speedbar. | 910 | This function creates a special keymap for use in speedbar. |
| @@ -977,7 +977,7 @@ Next, register your extension like this; | |||
| 977 | @example | 977 | @example |
| 978 | (speedbar-add-expansion-list '("MyExtension" | 978 | (speedbar-add-expansion-list '("MyExtension" |
| 979 | MyExtension-speedbar-menu-items | 979 | MyExtension-speedbar-menu-items |
| 980 | MyExtension-speedbar-key-map | 980 | MyExtension-speedbar-mode-map |
| 981 | MyExtension-speedbar-buttons)) | 981 | MyExtension-speedbar-buttons)) |
| 982 | @end example | 982 | @end example |
| 983 | 983 | ||
diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi index e1bf2f2bae5..95c744eef6e 100644 --- a/doc/misc/tramp.texi +++ b/doc/misc/tramp.texi | |||
| @@ -2629,6 +2629,11 @@ Example: | |||
| 2629 | @end group | 2629 | @end group |
| 2630 | @end lisp | 2630 | @end lisp |
| 2631 | 2631 | ||
| 2632 | @vindex tramp-fuse-unmount-on-cleanup | ||
| 2633 | The user option @code{tramp-fuse-unmount-on-cleanup}, when set to | ||
| 2634 | non-@code{nil}, controls, whether a mount point is unmounted on | ||
| 2635 | connection cleanup or on Emacs exiting. | ||
| 2636 | |||
| 2632 | 2637 | ||
| 2633 | @anchor{Setup of rclone method} | 2638 | @anchor{Setup of rclone method} |
| 2634 | @subsection @option{rclone} setup | 2639 | @subsection @option{rclone} setup |
diff --git a/etc/NEWS.28 b/etc/NEWS.28 index f8c045f014f..cff306e2440 100644 --- a/etc/NEWS.28 +++ b/etc/NEWS.28 | |||
| @@ -989,11 +989,12 @@ further tweak whether to complete or indent. | |||
| 989 | --- | 989 | --- |
| 990 | ** 'indent-tabs-mode' is now a global minor mode instead of just a variable. | 990 | ** 'indent-tabs-mode' is now a global minor mode instead of just a variable. |
| 991 | 991 | ||
| 992 | --- | 992 | +++ |
| 993 | ** New choice 'permanent' for 'shift-select-mode'. | 993 | ** New choice 'permanent' for 'shift-select-mode'. |
| 994 | When the mark was activated by shifted motion keys, non-shifted motion | 994 | When the mark was activated by shifted motion keys, non-shifted motion |
| 995 | keys don't deactivate the mark after customizing 'shift-select-mode' | 995 | keys don't deactivate the mark after customizing 'shift-select-mode' |
| 996 | to 'permanent'. | 996 | to 'permanent'. Similarly, the active mark will not be deactivated by |
| 997 | typing shifted motion keys. | ||
| 997 | 998 | ||
| 998 | +++ | 999 | +++ |
| 999 | ** The "Edit => Clear" menu item now obeys a rectangular region. | 1000 | ** The "Edit => Clear" menu item now obeys a rectangular region. |
| @@ -29,6 +29,27 @@ are the ones we consider more important, but these also may be | |||
| 29 | difficult to fix. Bugs with severity "minor" may be simpler, but this | 29 | difficult to fix. Bugs with severity "minor" may be simpler, but this |
| 30 | is not always true. | 30 | is not always true. |
| 31 | 31 | ||
| 32 | * High Priority Items | ||
| 33 | |||
| 34 | ** Things related to elpa.gnu.org. | ||
| 35 | We need to figure out how to best include GNU ELPA packages in the | ||
| 36 | Emacs tarball before doing any of the items below. | ||
| 37 | |||
| 38 | *** Move idlwave to elpa.gnu.org | ||
| 39 | Need to sync up the Emacs and external versions. | ||
| 40 | See <https://lists.gnu.org/r/emacs-devel/2014-07/msg00008.html> | ||
| 41 | <https://debbugs.gnu.org/39992> | ||
| 42 | |||
| 43 | *** Move Org mode to elpa.gnu.org | ||
| 44 | See <https://lists.gnu.org/r/emacs-devel/2014-08/msg00300.html> | ||
| 45 | <https://lists.gnu.org/r/emacs-devel/2014-11/msg00257.html> | ||
| 46 | |||
| 47 | *** Move verilog-mode to elpa.gnu.org | ||
| 48 | See <https://lists.gnu.org/r/emacs-devel/2015-02/msg01180.html> | ||
| 49 | |||
| 50 | *** Move vhdl-mode to elpa.gnu.org | ||
| 51 | See <https://lists.gnu.org/r/emacs-devel/2015-02/msg01180.html> | ||
| 52 | |||
| 32 | * Simple tasks | 53 | * Simple tasks |
| 33 | These don't require much Emacs knowledge and are suitable for anyone | 54 | These don't require much Emacs knowledge and are suitable for anyone |
| 34 | from beginners to experts. | 55 | from beginners to experts. |
| @@ -168,7 +189,7 @@ defsubst can often end up generating things like | |||
| 168 | (let ((arg actual)) (body)) but should additionally get optimized further | 189 | (let ((arg actual)) (body)) but should additionally get optimized further |
| 169 | when 'actual' is a constant/copyable expression. | 190 | when 'actual' is a constant/copyable expression. |
| 170 | 191 | ||
| 171 | *** Add an "indirect goto" byte-code | 192 | ** Add an "indirect goto" byte-code |
| 172 | Such a byte-code can be used for local lambda expressions. | 193 | Such a byte-code can be used for local lambda expressions. |
| 173 | E.g. when you have code like | 194 | E.g. when you have code like |
| 174 | 195 | ||
| @@ -339,6 +360,11 @@ should invoke the 'shape' method. 'hbfont_shape' should be extended | |||
| 339 | to pass to 'hb_shape_full' the required array of features, as | 360 | to pass to 'hb_shape_full' the required array of features, as |
| 340 | mentioned in the above HarfBuzz discussion. | 361 | mentioned in the above HarfBuzz discussion. |
| 341 | 362 | ||
| 363 | ** Concurrency | ||
| 364 | Stefan Monnier writes: "Including it as an 'experimental' compile-time | ||
| 365 | option sounds good. Of course there might still be big questions | ||
| 366 | around 'which form of concurrency' we'll want." | ||
| 367 | |||
| 342 | ** Better support for displaying Emoji | 368 | ** Better support for displaying Emoji |
| 343 | Emacs is capable of displaying Emoji and some of the Emoji sequences, | 369 | Emacs is capable of displaying Emoji and some of the Emoji sequences, |
| 344 | provided that its fontsets are configured with a suitable font. To | 370 | provided that its fontsets are configured with a suitable font. To |
| @@ -446,15 +472,6 @@ consistency checks that make sure the new code computes the same results | |||
| 446 | as the old code. And once that works well, we can remove the old code | 472 | as the old code. And once that works well, we can remove the old code |
| 447 | and old fields. | 473 | and old fields. |
| 448 | 474 | ||
| 449 | ** Better support for dynamic embedded graphics | ||
| 450 | I like this idea (my mpc.el code could use it for the volume widget), | ||
| 451 | though I wonder if the resulting efficiency will be sufficient. | ||
| 452 | |||
| 453 | ** Concurrency | ||
| 454 | Including it as an "experimental" compile-time option sounds good. Of | ||
| 455 | course there might still be big questions around "which form of | ||
| 456 | concurrency" we'll want. | ||
| 457 | |||
| 458 | ** FFI (foreign function interface) | 475 | ** FFI (foreign function interface) |
| 459 | See eg https://lists.gnu.org/r/emacs-devel/2013-10/msg00246.html | 476 | See eg https://lists.gnu.org/r/emacs-devel/2013-10/msg00246.html |
| 460 | 477 | ||
| @@ -625,6 +642,13 @@ could also be a button that you could use to view the advice. | |||
| 625 | 642 | ||
| 626 | ** Add a function to get the insertion-type of the markers in an overlay | 643 | ** Add a function to get the insertion-type of the markers in an overlay |
| 627 | 644 | ||
| 645 | ** Improve VC | ||
| 646 | Yes, there's a lot of work to be done there :-( | ||
| 647 | |||
| 648 | ** Improve the "code snippets" support | ||
| 649 | Consolidate skeleton.el, tempo.el, and expand.el (any other?) and then | ||
| 650 | advertise/use/improve it. | ||
| 651 | |||
| 628 | ** ange-ftp | 652 | ** ange-ftp |
| 629 | 653 | ||
| 630 | *** Make ange-ftp understand sftp | 654 | *** Make ange-ftp understand sftp |
| @@ -862,17 +886,10 @@ The idea is to add an "X" of some kind, that when clicked deletes the | |||
| 862 | window associated with that modeline. | 886 | window associated with that modeline. |
| 863 | https://lists.gnu.org/r/emacs-devel/2007-09/msg02416.html | 887 | https://lists.gnu.org/r/emacs-devel/2007-09/msg02416.html |
| 864 | 888 | ||
| 865 | ** Improve the "code snippets" support | 889 | ** Random things that were planned for Emacs-24 |
| 866 | Consolidate skeleton.el, tempo.el, and expand.el (any other?) and then | ||
| 867 | advertise/use/improve it. | ||
| 868 | |||
| 869 | ** Improve VC | ||
| 870 | Yes, there's a lot of work to be done there :-( | ||
| 871 | |||
| 872 | ** Spread Semantic | ||
| 873 | 890 | ||
| 874 | ** Random things that crossed Stefan Monnier's mind for Emacs 24 | 891 | Stefan Monnier writes: "Random things that cross my mind right now |
| 875 | Stefan Monnier writes: "Some of them from my local hacks, but it's not | 892 | that I'd like to see. Some of them from my local hacks, but it's not |
| 876 | obvious at all whether they'll make it." | 893 | obvious at all whether they'll make it." |
| 877 | 894 | ||
| 878 | *** Prog-mode could/should provide a better fill-paragraph default | 895 | *** Prog-mode could/should provide a better fill-paragraph default |
| @@ -1741,26 +1758,6 @@ Add a standard button-class named "link", and make all other link-like | |||
| 1741 | button classes inherit from it. Set the default face of the "link" | 1758 | button classes inherit from it. Set the default face of the "link" |
| 1742 | button class to the standard "link" face. | 1759 | button class to the standard "link" face. |
| 1743 | 1760 | ||
| 1744 | * Things related to elpa.gnu.org. | ||
| 1745 | |||
| 1746 | We need to figure out how to best include GNU ELPA packages in the | ||
| 1747 | Emacs tarball before doing any of the items below. | ||
| 1748 | |||
| 1749 | ** Move idlwave to elpa.gnu.org | ||
| 1750 | Need to sync up the Emacs and external versions. | ||
| 1751 | See <https://lists.gnu.org/r/emacs-devel/2014-07/msg00008.html> | ||
| 1752 | <https://debbugs.gnu.org/39992> | ||
| 1753 | |||
| 1754 | ** Move Org mode to elpa.gnu.org | ||
| 1755 | See <https://lists.gnu.org/r/emacs-devel/2014-08/msg00300.html> | ||
| 1756 | <https://lists.gnu.org/r/emacs-devel/2014-11/msg00257.html> | ||
| 1757 | |||
| 1758 | ** Move verilog-mode to elpa.gnu.org | ||
| 1759 | See <https://lists.gnu.org/r/emacs-devel/2015-02/msg01180.html> | ||
| 1760 | |||
| 1761 | ** Move vhdl-mode to elpa.gnu.org | ||
| 1762 | See <https://lists.gnu.org/r/emacs-devel/2015-02/msg01180.html> | ||
| 1763 | |||
| 1764 | * Wishlist items | 1761 | * Wishlist items |
| 1765 | 1762 | ||
| 1766 | ** Maybe replace etags.c with a Lisp implementation. | 1763 | ** Maybe replace etags.c with a Lisp implementation. |
diff --git a/etc/org/csl/README b/etc/org/csl/README new file mode 100644 index 00000000000..a9212207ccf --- /dev/null +++ b/etc/org/csl/README | |||
| @@ -0,0 +1,10 @@ | |||
| 1 | These data files are used by Org's oc-csl.el library. | ||
| 2 | |||
| 3 | LICENSE INFORMATION | ||
| 4 | |||
| 5 | chicago-author-date.csl | ||
| 6 | locales-en-US.xml | ||
| 7 | |||
| 8 | Both of these files are part of the Citation Style Language (CSL) | ||
| 9 | project (<https://citationstyles.org/>) and are released under the | ||
| 10 | Creative Commons Attribution-ShareAlike 3.0 Unported license. | ||
diff --git a/etc/org/csl/chicago-author-date.csl b/etc/org/csl/chicago-author-date.csl new file mode 100644 index 00000000000..8c133354b38 --- /dev/null +++ b/etc/org/csl/chicago-author-date.csl | |||
| @@ -0,0 +1,658 @@ | |||
| 1 | <?xml version="1.0" encoding="utf-8"?> | ||
| 2 | <style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" version="1.0" demote-non-dropping-particle="display-and-sort" page-range-format="chicago"> | ||
| 3 | <info> | ||
| 4 | <title>Chicago Manual of Style 17th edition (author-date)</title> | ||
| 5 | <id>http://www.zotero.org/styles/chicago-author-date</id> | ||
| 6 | <link href="http://www.zotero.org/styles/chicago-author-date" rel="self"/> | ||
| 7 | <link href="http://www.chicagomanualofstyle.org/tools_citationguide.html" rel="documentation"/> | ||
| 8 | <author> | ||
| 9 | <name>Julian Onions</name> | ||
| 10 | <email>julian.onions@gmail.com</email> | ||
| 11 | </author> | ||
| 12 | <contributor> | ||
| 13 | <name>Sebastian Karcher</name> | ||
| 14 | </contributor> | ||
| 15 | <contributor> | ||
| 16 | <name>Richard Karnesky</name> | ||
| 17 | <email>karnesky+zotero@gmail.com</email> | ||
| 18 | <uri>http://arc.nucapt.northwestern.edu/Richard_Karnesky</uri> | ||
| 19 | </contributor> | ||
| 20 | <contributor> | ||
| 21 | <name>Andrew Dunning</name> | ||
| 22 | <email>andrew.dunning@utoronto.ca</email> | ||
| 23 | <uri>https://orcid.org/0000-0003-0464-5036</uri> | ||
| 24 | </contributor> | ||
| 25 | <contributor> | ||
| 26 | <name>Matthew Roth</name> | ||
| 27 | <email>matthew.g.roth@yale.edu</email> | ||
| 28 | <uri> https://orcid.org/0000-0001-7902-6331</uri> | ||
| 29 | </contributor> | ||
| 30 | <contributor> | ||
| 31 | <name>Brenton M. Wiernik</name> | ||
| 32 | </contributor> | ||
| 33 | <category citation-format="author-date"/> | ||
| 34 | <category field="generic-base"/> | ||
| 35 | <summary>The author-date variant of the Chicago style</summary> | ||
| 36 | <updated>2018-01-24T12:00:00+00:00</updated> | ||
| 37 | <rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights> | ||
| 38 | </info> | ||
| 39 | <locale xml:lang="en"> | ||
| 40 | <terms> | ||
| 41 | <term name="editor" form="verb-short">ed.</term> | ||
| 42 | <term name="container-author" form="verb">by</term> | ||
| 43 | <term name="translator" form="verb-short">trans.</term> | ||
| 44 | <term name="editortranslator" form="verb">edited and translated by</term> | ||
| 45 | <term name="translator" form="short">trans.</term> | ||
| 46 | </terms> | ||
| 47 | </locale> | ||
| 48 | <macro name="secondary-contributors"> | ||
| 49 | <choose> | ||
| 50 | <if type="chapter entry-dictionary entry-encyclopedia paper-conference" match="none"> | ||
| 51 | <group delimiter=". "> | ||
| 52 | <names variable="editor translator" delimiter=". "> | ||
| 53 | <label form="verb" text-case="capitalize-first" suffix=" "/> | ||
| 54 | <name and="text" delimiter=", "/> | ||
| 55 | </names> | ||
| 56 | <names variable="director" delimiter=". "> | ||
| 57 | <label form="verb" text-case="capitalize-first" suffix=" "/> | ||
| 58 | <name and="text" delimiter=", "/> | ||
| 59 | </names> | ||
| 60 | </group> | ||
| 61 | </if> | ||
| 62 | </choose> | ||
| 63 | </macro> | ||
| 64 | <macro name="container-contributors"> | ||
| 65 | <choose> | ||
| 66 | <if type="chapter entry-dictionary entry-encyclopedia paper-conference" match="any"> | ||
| 67 | <group prefix=", " delimiter=", "> | ||
| 68 | <names variable="container-author" delimiter=", "> | ||
| 69 | <label form="verb" suffix=" "/> | ||
| 70 | <name and="text" delimiter=", "/> | ||
| 71 | </names> | ||
| 72 | <names variable="editor translator" delimiter=", "> | ||
| 73 | <label form="verb" suffix=" "/> | ||
| 74 | <name and="text" delimiter=", "/> | ||
| 75 | </names> | ||
| 76 | </group> | ||
| 77 | </if> | ||
| 78 | </choose> | ||
| 79 | </macro> | ||
| 80 | <macro name="editor"> | ||
| 81 | <names variable="editor"> | ||
| 82 | <name name-as-sort-order="first" and="text" sort-separator=", " delimiter=", " delimiter-precedes-last="always"/> | ||
| 83 | <label form="short" prefix=", "/> | ||
| 84 | </names> | ||
| 85 | </macro> | ||
| 86 | <macro name="translator"> | ||
| 87 | <names variable="translator"> | ||
| 88 | <name name-as-sort-order="first" and="text" sort-separator=", " delimiter=", " delimiter-precedes-last="always"/> | ||
| 89 | <label form="short" prefix=", "/> | ||
| 90 | </names> | ||
| 91 | </macro> | ||
| 92 | <macro name="recipient"> | ||
| 93 | <choose> | ||
| 94 | <if type="personal_communication"> | ||
| 95 | <choose> | ||
| 96 | <if variable="genre"> | ||
| 97 | <text variable="genre" text-case="capitalize-first"/> | ||
| 98 | </if> | ||
| 99 | <else> | ||
| 100 | <text term="letter" text-case="capitalize-first"/> | ||
| 101 | </else> | ||
| 102 | </choose> | ||
| 103 | </if> | ||
| 104 | </choose> | ||
| 105 | <names variable="recipient" delimiter=", "> | ||
| 106 | <label form="verb" prefix=" " text-case="lowercase" suffix=" "/> | ||
| 107 | <name and="text" delimiter=", "/> | ||
| 108 | </names> | ||
| 109 | </macro> | ||
| 110 | <macro name="substitute-title"> | ||
| 111 | <choose> | ||
| 112 | <if type="article-magazine article-newspaper review review-book" match="any"> | ||
| 113 | <text macro="container-title"/> | ||
| 114 | </if> | ||
| 115 | </choose> | ||
| 116 | </macro> | ||
| 117 | <macro name="contributors"> | ||
| 118 | <group delimiter=". "> | ||
| 119 | <names variable="author"> | ||
| 120 | <name and="text" name-as-sort-order="first" sort-separator=", " delimiter=", " delimiter-precedes-last="always"/> | ||
| 121 | <label form="short" prefix=", "/> | ||
| 122 | <substitute> | ||
| 123 | <names variable="editor"/> | ||
| 124 | <names variable="translator"/> | ||
| 125 | <names variable="director"/> | ||
| 126 | <text macro="substitute-title"/> | ||
| 127 | <text macro="title"/> | ||
| 128 | </substitute> | ||
| 129 | </names> | ||
| 130 | <text macro="recipient"/> | ||
| 131 | </group> | ||
| 132 | </macro> | ||
| 133 | <macro name="contributors-short"> | ||
| 134 | <names variable="author"> | ||
| 135 | <name form="short" and="text" delimiter=", " initialize-with=". "/> | ||
| 136 | <substitute> | ||
| 137 | <names variable="editor"/> | ||
| 138 | <names variable="translator"/> | ||
| 139 | <names variable="director"/> | ||
| 140 | <text macro="substitute-title"/> | ||
| 141 | <text macro="title"/> | ||
| 142 | </substitute> | ||
| 143 | </names> | ||
| 144 | </macro> | ||
| 145 | <macro name="interviewer"> | ||
| 146 | <names variable="interviewer" delimiter=", "> | ||
| 147 | <label form="verb" prefix=" " text-case="capitalize-first" suffix=" "/> | ||
| 148 | <name and="text" delimiter=", "/> | ||
| 149 | </names> | ||
| 150 | </macro> | ||
| 151 | <macro name="archive"> | ||
| 152 | <group delimiter=". "> | ||
| 153 | <text variable="archive_location" text-case="capitalize-first"/> | ||
| 154 | <text variable="archive"/> | ||
| 155 | <text variable="archive-place"/> | ||
| 156 | </group> | ||
| 157 | </macro> | ||
| 158 | <macro name="access"> | ||
| 159 | <group delimiter=". "> | ||
| 160 | <choose> | ||
| 161 | <if type="graphic report" match="any"> | ||
| 162 | <text macro="archive"/> | ||
| 163 | </if> | ||
| 164 | <else-if type="article-journal bill book chapter legal_case legislation motion_picture paper-conference" match="none"> | ||
| 165 | <text macro="archive"/> | ||
| 166 | </else-if> | ||
| 167 | </choose> | ||
| 168 | <choose> | ||
| 169 | <if type="webpage post-weblog" match="any"> | ||
| 170 | <date variable="issued" form="text"/> | ||
| 171 | </if> | ||
| 172 | </choose> | ||
| 173 | <choose> | ||
| 174 | <if variable="issued" match="none"> | ||
| 175 | <group delimiter=" "> | ||
| 176 | <text term="accessed" text-case="capitalize-first"/> | ||
| 177 | <date variable="accessed" form="text"/> | ||
| 178 | </group> | ||
| 179 | </if> | ||
| 180 | </choose> | ||
| 181 | <choose> | ||
| 182 | <if type="legal_case" match="none"> | ||
| 183 | <choose> | ||
| 184 | <if variable="DOI"> | ||
| 185 | <text variable="DOI" prefix="https://doi.org/"/> | ||
| 186 | </if> | ||
| 187 | <else> | ||
| 188 | <text variable="URL"/> | ||
| 189 | </else> | ||
| 190 | </choose> | ||
| 191 | </if> | ||
| 192 | </choose> | ||
| 193 | </group> | ||
| 194 | </macro> | ||
| 195 | <macro name="title"> | ||
| 196 | <choose> | ||
| 197 | <if variable="title" match="none"> | ||
| 198 | <choose> | ||
| 199 | <if type="personal_communication" match="none"> | ||
| 200 | <text variable="genre" text-case="capitalize-first"/> | ||
| 201 | </if> | ||
| 202 | </choose> | ||
| 203 | </if> | ||
| 204 | <else-if type="bill book graphic legislation motion_picture song" match="any"> | ||
| 205 | <text variable="title" text-case="title" font-style="italic"/> | ||
| 206 | <group prefix=" (" suffix=")" delimiter=" "> | ||
| 207 | <text term="version"/> | ||
| 208 | <text variable="version"/> | ||
| 209 | </group> | ||
| 210 | </else-if> | ||
| 211 | <else-if variable="reviewed-author"> | ||
| 212 | <choose> | ||
| 213 | <if variable="reviewed-title"> | ||
| 214 | <group delimiter=". "> | ||
| 215 | <text variable="title" text-case="title" quotes="true"/> | ||
| 216 | <group delimiter=", "> | ||
| 217 | <text variable="reviewed-title" text-case="title" font-style="italic" prefix="Review of "/> | ||
| 218 | <names variable="reviewed-author"> | ||
| 219 | <label form="verb-short" text-case="lowercase" suffix=" "/> | ||
| 220 | <name and="text" delimiter=", "/> | ||
| 221 | </names> | ||
| 222 | </group> | ||
| 223 | </group> | ||
| 224 | </if> | ||
| 225 | <else> | ||
| 226 | <group delimiter=", "> | ||
| 227 | <text variable="title" text-case="title" font-style="italic" prefix="Review of "/> | ||
| 228 | <names variable="reviewed-author"> | ||
| 229 | <label form="verb-short" text-case="lowercase" suffix=" "/> | ||
| 230 | <name and="text" delimiter=", "/> | ||
| 231 | </names> | ||
| 232 | </group> | ||
| 233 | </else> | ||
| 234 | </choose> | ||
| 235 | </else-if> | ||
| 236 | <else-if type="legal_case interview patent" match="any"> | ||
| 237 | <text variable="title"/> | ||
| 238 | </else-if> | ||
| 239 | <else> | ||
| 240 | <text variable="title" text-case="title" quotes="true"/> | ||
| 241 | </else> | ||
| 242 | </choose> | ||
| 243 | </macro> | ||
| 244 | <macro name="edition"> | ||
| 245 | <choose> | ||
| 246 | <if type="bill book graphic legal_case legislation motion_picture report song" match="any"> | ||
| 247 | <choose> | ||
| 248 | <if is-numeric="edition"> | ||
| 249 | <group delimiter=" " prefix=". "> | ||
| 250 | <number variable="edition" form="ordinal"/> | ||
| 251 | <text term="edition" form="short" strip-periods="true"/> | ||
| 252 | </group> | ||
| 253 | </if> | ||
| 254 | <else> | ||
| 255 | <text variable="edition" text-case="capitalize-first" prefix=". "/> | ||
| 256 | </else> | ||
| 257 | </choose> | ||
| 258 | </if> | ||
| 259 | <else-if type="chapter entry-dictionary entry-encyclopedia paper-conference" match="any"> | ||
| 260 | <choose> | ||
| 261 | <if is-numeric="edition"> | ||
| 262 | <group delimiter=" " prefix=", "> | ||
| 263 | <number variable="edition" form="ordinal"/> | ||
| 264 | <text term="edition" form="short"/> | ||
| 265 | </group> | ||
| 266 | </if> | ||
| 267 | <else> | ||
| 268 | <text variable="edition" prefix=", "/> | ||
| 269 | </else> | ||
| 270 | </choose> | ||
| 271 | </else-if> | ||
| 272 | </choose> | ||
| 273 | </macro> | ||
| 274 | <macro name="locators"> | ||
| 275 | <choose> | ||
| 276 | <if type="article-journal"> | ||
| 277 | <choose> | ||
| 278 | <if variable="volume"> | ||
| 279 | <text variable="volume" prefix=" "/> | ||
| 280 | <group prefix=" (" suffix=")"> | ||
| 281 | <choose> | ||
| 282 | <if variable="issue"> | ||
| 283 | <text variable="issue"/> | ||
| 284 | </if> | ||
| 285 | <else> | ||
| 286 | <date variable="issued"> | ||
| 287 | <date-part name="month"/> | ||
| 288 | </date> | ||
| 289 | </else> | ||
| 290 | </choose> | ||
| 291 | </group> | ||
| 292 | </if> | ||
| 293 | <else-if variable="issue"> | ||
| 294 | <group delimiter=" " prefix=", "> | ||
| 295 | <text term="issue" form="short"/> | ||
| 296 | <text variable="issue"/> | ||
| 297 | <date variable="issued" prefix="(" suffix=")"> | ||
| 298 | <date-part name="month"/> | ||
| 299 | </date> | ||
| 300 | </group> | ||
| 301 | </else-if> | ||
| 302 | <else> | ||
| 303 | <date variable="issued" prefix=", "> | ||
| 304 | <date-part name="month"/> | ||
| 305 | </date> | ||
| 306 | </else> | ||
| 307 | </choose> | ||
| 308 | </if> | ||
| 309 | <else-if type="legal_case"> | ||
| 310 | <text variable="volume" prefix=", "/> | ||
| 311 | <text variable="container-title" prefix=" "/> | ||
| 312 | <text variable="page" prefix=" "/> | ||
| 313 | </else-if> | ||
| 314 | <else-if type="bill book graphic legal_case legislation motion_picture report song" match="any"> | ||
| 315 | <group prefix=". " delimiter=". "> | ||
| 316 | <group> | ||
| 317 | <text term="volume" form="short" text-case="capitalize-first" suffix=" "/> | ||
| 318 | <number variable="volume" form="numeric"/> | ||
| 319 | </group> | ||
| 320 | <group> | ||
| 321 | <number variable="number-of-volumes" form="numeric"/> | ||
| 322 | <text term="volume" form="short" prefix=" " plural="true"/> | ||
| 323 | </group> | ||
| 324 | </group> | ||
| 325 | </else-if> | ||
| 326 | <else-if type="chapter entry-dictionary entry-encyclopedia paper-conference" match="any"> | ||
| 327 | <choose> | ||
| 328 | <if variable="page" match="none"> | ||
| 329 | <group prefix=". "> | ||
| 330 | <text term="volume" form="short" text-case="capitalize-first" suffix=" "/> | ||
| 331 | <number variable="volume" form="numeric"/> | ||
| 332 | </group> | ||
| 333 | </if> | ||
| 334 | </choose> | ||
| 335 | </else-if> | ||
| 336 | </choose> | ||
| 337 | </macro> | ||
| 338 | <macro name="locators-chapter"> | ||
| 339 | <choose> | ||
| 340 | <if type="chapter entry-dictionary entry-encyclopedia paper-conference" match="any"> | ||
| 341 | <choose> | ||
| 342 | <if variable="page"> | ||
| 343 | <group prefix=", "> | ||
| 344 | <text variable="volume" suffix=":"/> | ||
| 345 | <text variable="page"/> | ||
| 346 | </group> | ||
| 347 | </if> | ||
| 348 | </choose> | ||
| 349 | </if> | ||
| 350 | </choose> | ||
| 351 | </macro> | ||
| 352 | <macro name="locators-article"> | ||
| 353 | <choose> | ||
| 354 | <if type="article-newspaper"> | ||
| 355 | <group prefix=", " delimiter=", "> | ||
| 356 | <group delimiter=" "> | ||
| 357 | <text variable="edition"/> | ||
| 358 | <text term="edition"/> | ||
| 359 | </group> | ||
| 360 | <group> | ||
| 361 | <text term="section" form="short" suffix=" "/> | ||
| 362 | <text variable="section"/> | ||
| 363 | </group> | ||
| 364 | </group> | ||
| 365 | </if> | ||
| 366 | <else-if type="article-journal"> | ||
| 367 | <choose> | ||
| 368 | <if variable="volume issue" match="any"> | ||
| 369 | <text variable="page" prefix=": "/> | ||
| 370 | </if> | ||
| 371 | <else> | ||
| 372 | <text variable="page" prefix=", "/> | ||
| 373 | </else> | ||
| 374 | </choose> | ||
| 375 | </else-if> | ||
| 376 | </choose> | ||
| 377 | </macro> | ||
| 378 | <macro name="point-locators"> | ||
| 379 | <choose> | ||
| 380 | <if variable="locator"> | ||
| 381 | <choose> | ||
| 382 | <if locator="page" match="none"> | ||
| 383 | <choose> | ||
| 384 | <if type="bill book graphic legal_case legislation motion_picture report song" match="any"> | ||
| 385 | <choose> | ||
| 386 | <if variable="volume"> | ||
| 387 | <group> | ||
| 388 | <text term="volume" form="short" suffix=" "/> | ||
| 389 | <number variable="volume" form="numeric"/> | ||
| 390 | <label variable="locator" form="short" prefix=", " suffix=" "/> | ||
| 391 | </group> | ||
| 392 | </if> | ||
| 393 | <else> | ||
| 394 | <label variable="locator" form="short" suffix=" "/> | ||
| 395 | </else> | ||
| 396 | </choose> | ||
| 397 | </if> | ||
| 398 | <else> | ||
| 399 | <label variable="locator" form="short" suffix=" "/> | ||
| 400 | </else> | ||
| 401 | </choose> | ||
| 402 | </if> | ||
| 403 | <else-if type="bill book graphic legal_case legislation motion_picture report song" match="any"> | ||
| 404 | <number variable="volume" form="numeric" suffix=":"/> | ||
| 405 | </else-if> | ||
| 406 | </choose> | ||
| 407 | <text variable="locator"/> | ||
| 408 | </if> | ||
| 409 | </choose> | ||
| 410 | </macro> | ||
| 411 | <macro name="container-prefix"> | ||
| 412 | <text term="in" text-case="capitalize-first"/> | ||
| 413 | </macro> | ||
| 414 | <macro name="container-title"> | ||
| 415 | <choose> | ||
| 416 | <if type="chapter entry-dictionary entry-encyclopedia paper-conference" match="any"> | ||
| 417 | <text macro="container-prefix" suffix=" "/> | ||
| 418 | </if> | ||
| 419 | </choose> | ||
| 420 | <choose> | ||
| 421 | <if type="webpage"> | ||
| 422 | <text variable="container-title" text-case="title"/> | ||
| 423 | </if> | ||
| 424 | <else-if type="legal_case" match="none"> | ||
| 425 | <group delimiter=" "> | ||
| 426 | <text variable="container-title" text-case="title" font-style="italic"/> | ||
| 427 | <choose> | ||
| 428 | <if type="post-weblog"> | ||
| 429 | <text value="(blog)"/> | ||
| 430 | </if> | ||
| 431 | </choose> | ||
| 432 | </group> | ||
| 433 | </else-if> | ||
| 434 | </choose> | ||
| 435 | </macro> | ||
| 436 | <macro name="publisher"> | ||
| 437 | <group delimiter=": "> | ||
| 438 | <text variable="publisher-place"/> | ||
| 439 | <text variable="publisher"/> | ||
| 440 | </group> | ||
| 441 | </macro> | ||
| 442 | <macro name="date"> | ||
| 443 | <choose> | ||
| 444 | <if variable="issued"> | ||
| 445 | <group delimiter=" "> | ||
| 446 | <date variable="original-date" form="text" date-parts="year" prefix="(" suffix=")"/> | ||
| 447 | <date variable="issued"> | ||
| 448 | <date-part name="year"/> | ||
| 449 | </date> | ||
| 450 | </group> | ||
| 451 | </if> | ||
| 452 | <else-if variable="status"> | ||
| 453 | <text variable="status" text-case="capitalize-first"/> | ||
| 454 | </else-if> | ||
| 455 | <else> | ||
| 456 | <text term="no date" form="short"/> | ||
| 457 | </else> | ||
| 458 | </choose> | ||
| 459 | </macro> | ||
| 460 | <macro name="date-in-text"> | ||
| 461 | <choose> | ||
| 462 | <if variable="issued"> | ||
| 463 | <group delimiter=" "> | ||
| 464 | <date variable="original-date" form="text" date-parts="year" prefix="[" suffix="]"/> | ||
| 465 | <date variable="issued"> | ||
| 466 | <date-part name="year"/> | ||
| 467 | </date> | ||
| 468 | </group> | ||
| 469 | </if> | ||
| 470 | <else-if variable="status"> | ||
| 471 | <text variable="status"/> | ||
| 472 | </else-if> | ||
| 473 | <else> | ||
| 474 | <text term="no date" form="short"/> | ||
| 475 | </else> | ||
| 476 | </choose> | ||
| 477 | </macro> | ||
| 478 | <macro name="day-month"> | ||
| 479 | <date variable="issued"> | ||
| 480 | <date-part name="month"/> | ||
| 481 | <date-part name="day" prefix=" "/> | ||
| 482 | </date> | ||
| 483 | </macro> | ||
| 484 | <macro name="collection-title"> | ||
| 485 | <choose> | ||
| 486 | <if match="none" type="article-journal"> | ||
| 487 | <choose> | ||
| 488 | <if match="none" is-numeric="collection-number"> | ||
| 489 | <group delimiter=", "> | ||
| 490 | <text variable="collection-title" text-case="title"/> | ||
| 491 | <text variable="collection-number"/> | ||
| 492 | </group> | ||
| 493 | </if> | ||
| 494 | <else> | ||
| 495 | <group delimiter=" "> | ||
| 496 | <text variable="collection-title" text-case="title"/> | ||
| 497 | <text variable="collection-number"/> | ||
| 498 | </group> | ||
| 499 | </else> | ||
| 500 | </choose> | ||
| 501 | </if> | ||
| 502 | </choose> | ||
| 503 | </macro> | ||
| 504 | <macro name="collection-title-journal"> | ||
| 505 | <choose> | ||
| 506 | <if type="article-journal"> | ||
| 507 | <group delimiter=" "> | ||
| 508 | <text variable="collection-title"/> | ||
| 509 | <text variable="collection-number"/> | ||
| 510 | </group> | ||
| 511 | </if> | ||
| 512 | </choose> | ||
| 513 | </macro> | ||
| 514 | <macro name="event"> | ||
| 515 | <group delimiter=" "> | ||
| 516 | <choose> | ||
| 517 | <if variable="genre"> | ||
| 518 | <text term="presented at"/> | ||
| 519 | </if> | ||
| 520 | <else> | ||
| 521 | <text term="presented at" text-case="capitalize-first"/> | ||
| 522 | </else> | ||
| 523 | </choose> | ||
| 524 | <text variable="event"/> | ||
| 525 | </group> | ||
| 526 | </macro> | ||
| 527 | <macro name="description"> | ||
| 528 | <choose> | ||
| 529 | <if variable="interviewer" type="interview" match="any"> | ||
| 530 | <group delimiter=". "> | ||
| 531 | <text macro="interviewer"/> | ||
| 532 | <text variable="medium" text-case="capitalize-first"/> | ||
| 533 | </group> | ||
| 534 | </if> | ||
| 535 | <else-if type="patent"> | ||
| 536 | <group delimiter=" " prefix=". "> | ||
| 537 | <text variable="authority"/> | ||
| 538 | <text variable="number"/> | ||
| 539 | </group> | ||
| 540 | </else-if> | ||
| 541 | <else> | ||
| 542 | <text variable="medium" text-case="capitalize-first" prefix=". "/> | ||
| 543 | </else> | ||
| 544 | </choose> | ||
| 545 | <choose> | ||
| 546 | <if variable="title" match="none"/> | ||
| 547 | <else-if type="thesis personal_communication speech" match="any"/> | ||
| 548 | <else> | ||
| 549 | <group delimiter=" " prefix=". "> | ||
| 550 | <text variable="genre" text-case="capitalize-first"/> | ||
| 551 | <choose> | ||
| 552 | <if type="report"> | ||
| 553 | <text variable="number"/> | ||
| 554 | </if> | ||
| 555 | </choose> | ||
| 556 | </group> | ||
| 557 | </else> | ||
| 558 | </choose> | ||
| 559 | </macro> | ||
| 560 | <macro name="issue"> | ||
| 561 | <choose> | ||
| 562 | <if type="legal_case"> | ||
| 563 | <text variable="authority" prefix=". "/> | ||
| 564 | </if> | ||
| 565 | <else-if type="speech"> | ||
| 566 | <group prefix=". " delimiter=", "> | ||
| 567 | <group delimiter=" "> | ||
| 568 | <text variable="genre" text-case="capitalize-first"/> | ||
| 569 | <text macro="event"/> | ||
| 570 | </group> | ||
| 571 | <text variable="event-place"/> | ||
| 572 | <text macro="day-month"/> | ||
| 573 | </group> | ||
| 574 | </else-if> | ||
| 575 | <else-if type="article-newspaper article-magazine personal_communication" match="any"> | ||
| 576 | <date variable="issued" form="text" prefix=", "/> | ||
| 577 | </else-if> | ||
| 578 | <else-if type="patent"> | ||
| 579 | <group delimiter=", " prefix=", "> | ||
| 580 | <group delimiter=" "> | ||
| 581 | <!--Needs Localization--> | ||
| 582 | <text value="filed"/> | ||
| 583 | <date variable="submitted" form="text"/> | ||
| 584 | </group> | ||
| 585 | <group delimiter=" "> | ||
| 586 | <choose> | ||
| 587 | <if variable="issued submitted" match="all"> | ||
| 588 | <text term="and"/> | ||
| 589 | </if> | ||
| 590 | </choose> | ||
| 591 | <!--Needs Localization--> | ||
| 592 | <text value="issued"/> | ||
| 593 | <date variable="issued" form="text"/> | ||
| 594 | </group> | ||
| 595 | </group> | ||
| 596 | </else-if> | ||
| 597 | <else-if type="article-journal" match="any"/> | ||
| 598 | <else> | ||
| 599 | <group prefix=". " delimiter=", "> | ||
| 600 | <choose> | ||
| 601 | <if type="thesis"> | ||
| 602 | <text variable="genre" text-case="capitalize-first"/> | ||
| 603 | </if> | ||
| 604 | </choose> | ||
| 605 | <text macro="publisher"/> | ||
| 606 | </group> | ||
| 607 | </else> | ||
| 608 | </choose> | ||
| 609 | </macro> | ||
| 610 | <citation et-al-min="4" et-al-use-first="1" disambiguate-add-year-suffix="true" disambiguate-add-names="true" disambiguate-add-givenname="true" givenname-disambiguation-rule="primary-name" collapse="year" after-collapse-delimiter="; "> | ||
| 611 | <layout prefix="(" suffix=")" delimiter="; "> | ||
| 612 | <group delimiter=", "> | ||
| 613 | <choose> | ||
| 614 | <if variable="issued accessed" match="any"> | ||
| 615 | <group delimiter=" "> | ||
| 616 | <text macro="contributors-short"/> | ||
| 617 | <text macro="date-in-text"/> | ||
| 618 | </group> | ||
| 619 | </if> | ||
| 620 | <!---comma before forthcoming and n.d.--> | ||
| 621 | <else> | ||
| 622 | <group delimiter=", "> | ||
| 623 | <text macro="contributors-short"/> | ||
| 624 | <text macro="date-in-text"/> | ||
| 625 | </group> | ||
| 626 | </else> | ||
| 627 | </choose> | ||
| 628 | <text macro="point-locators"/> | ||
| 629 | </group> | ||
| 630 | </layout> | ||
| 631 | </citation> | ||
| 632 | <bibliography hanging-indent="true" et-al-min="11" et-al-use-first="7" subsequent-author-substitute="———" entry-spacing="0"> | ||
| 633 | <sort> | ||
| 634 | <key macro="contributors"/> | ||
| 635 | <key variable="issued"/> | ||
| 636 | <key variable="title"/> | ||
| 637 | </sort> | ||
| 638 | <layout suffix="."> | ||
| 639 | <group delimiter=". "> | ||
| 640 | <text macro="contributors"/> | ||
| 641 | <text macro="date"/> | ||
| 642 | <text macro="title"/> | ||
| 643 | </group> | ||
| 644 | <text macro="description"/> | ||
| 645 | <text macro="secondary-contributors" prefix=". "/> | ||
| 646 | <text macro="container-title" prefix=". "/> | ||
| 647 | <text macro="container-contributors"/> | ||
| 648 | <text macro="edition"/> | ||
| 649 | <text macro="locators-chapter"/> | ||
| 650 | <text macro="collection-title-journal" prefix=", " suffix=", "/> | ||
| 651 | <text macro="locators"/> | ||
| 652 | <text macro="collection-title" prefix=". "/> | ||
| 653 | <text macro="issue"/> | ||
| 654 | <text macro="locators-article"/> | ||
| 655 | <text macro="access" prefix=". "/> | ||
| 656 | </layout> | ||
| 657 | </bibliography> | ||
| 658 | </style> | ||
diff --git a/etc/org/csl/locales-en-US.xml b/etc/org/csl/locales-en-US.xml new file mode 100644 index 00000000000..be78c5e81fd --- /dev/null +++ b/etc/org/csl/locales-en-US.xml | |||
| @@ -0,0 +1,357 @@ | |||
| 1 | <?xml version="1.0" encoding="utf-8"?> | ||
| 2 | <locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="en-US"> | ||
| 3 | <info> | ||
| 4 | <translator> | ||
| 5 | <name>Andrew Dunning</name> | ||
| 6 | </translator> | ||
| 7 | <translator> | ||
| 8 | <name>Sebastian Karcher</name> | ||
| 9 | </translator> | ||
| 10 | <translator> | ||
| 11 | <name>Rintze M. Zelle</name> | ||
| 12 | </translator> | ||
| 13 | <rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights> | ||
| 14 | <updated>2015-10-10T23:31:02+00:00</updated> | ||
| 15 | </info> | ||
| 16 | <style-options punctuation-in-quote="true"/> | ||
| 17 | <date form="text"> | ||
| 18 | <date-part name="month" suffix=" "/> | ||
| 19 | <date-part name="day" suffix=", "/> | ||
| 20 | <date-part name="year"/> | ||
| 21 | </date> | ||
| 22 | <date form="numeric"> | ||
| 23 | <date-part name="month" form="numeric-leading-zeros" suffix="/"/> | ||
| 24 | <date-part name="day" form="numeric-leading-zeros" suffix="/"/> | ||
| 25 | <date-part name="year"/> | ||
| 26 | </date> | ||
| 27 | <terms> | ||
| 28 | <term name="accessed">accessed</term> | ||
| 29 | <term name="and">and</term> | ||
| 30 | <term name="and others">and others</term> | ||
| 31 | <term name="anonymous">anonymous</term> | ||
| 32 | <term name="anonymous" form="short">anon.</term> | ||
| 33 | <term name="at">at</term> | ||
| 34 | <term name="available at">available at</term> | ||
| 35 | <term name="by">by</term> | ||
| 36 | <term name="circa">circa</term> | ||
| 37 | <term name="circa" form="short">c.</term> | ||
| 38 | <term name="cited">cited</term> | ||
| 39 | <term name="edition"> | ||
| 40 | <single>edition</single> | ||
| 41 | <multiple>editions</multiple> | ||
| 42 | </term> | ||
| 43 | <term name="edition" form="short">ed.</term> | ||
| 44 | <term name="et-al">et al.</term> | ||
| 45 | <term name="forthcoming">forthcoming</term> | ||
| 46 | <term name="from">from</term> | ||
| 47 | <term name="ibid">ibid.</term> | ||
| 48 | <term name="in">in</term> | ||
| 49 | <term name="in press">in press</term> | ||
| 50 | <term name="internet">internet</term> | ||
| 51 | <term name="interview">interview</term> | ||
| 52 | <term name="letter">letter</term> | ||
| 53 | <term name="no date">no date</term> | ||
| 54 | <term name="no date" form="short">n.d.</term> | ||
| 55 | <term name="online">online</term> | ||
| 56 | <term name="presented at">presented at the</term> | ||
| 57 | <term name="reference"> | ||
| 58 | <single>reference</single> | ||
| 59 | <multiple>references</multiple> | ||
| 60 | </term> | ||
| 61 | <term name="reference" form="short"> | ||
| 62 | <single>ref.</single> | ||
| 63 | <multiple>refs.</multiple> | ||
| 64 | </term> | ||
| 65 | <term name="retrieved">retrieved</term> | ||
| 66 | <term name="scale">scale</term> | ||
| 67 | <term name="version">version</term> | ||
| 68 | |||
| 69 | <!-- ANNO DOMINI; BEFORE CHRIST --> | ||
| 70 | <term name="ad">AD</term> | ||
| 71 | <term name="bc">BC</term> | ||
| 72 | |||
| 73 | <!-- PUNCTUATION --> | ||
| 74 | <term name="open-quote">“</term> | ||
| 75 | <term name="close-quote">”</term> | ||
| 76 | <term name="open-inner-quote">‘</term> | ||
| 77 | <term name="close-inner-quote">’</term> | ||
| 78 | <term name="page-range-delimiter">–</term> | ||
| 79 | |||
| 80 | <!-- ORDINALS --> | ||
| 81 | <term name="ordinal">th</term> | ||
| 82 | <term name="ordinal-01">st</term> | ||
| 83 | <term name="ordinal-02">nd</term> | ||
| 84 | <term name="ordinal-03">rd</term> | ||
| 85 | <term name="ordinal-11">th</term> | ||
| 86 | <term name="ordinal-12">th</term> | ||
| 87 | <term name="ordinal-13">th</term> | ||
| 88 | |||
| 89 | <!-- LONG ORDINALS --> | ||
| 90 | <term name="long-ordinal-01">first</term> | ||
| 91 | <term name="long-ordinal-02">second</term> | ||
| 92 | <term name="long-ordinal-03">third</term> | ||
| 93 | <term name="long-ordinal-04">fourth</term> | ||
| 94 | <term name="long-ordinal-05">fifth</term> | ||
| 95 | <term name="long-ordinal-06">sixth</term> | ||
| 96 | <term name="long-ordinal-07">seventh</term> | ||
| 97 | <term name="long-ordinal-08">eighth</term> | ||
| 98 | <term name="long-ordinal-09">ninth</term> | ||
| 99 | <term name="long-ordinal-10">tenth</term> | ||
| 100 | |||
| 101 | <!-- LONG LOCATOR FORMS --> | ||
| 102 | <term name="book"> | ||
| 103 | <single>book</single> | ||
| 104 | <multiple>books</multiple> | ||
| 105 | </term> | ||
| 106 | <term name="chapter"> | ||
| 107 | <single>chapter</single> | ||
| 108 | <multiple>chapters</multiple> | ||
| 109 | </term> | ||
| 110 | <term name="column"> | ||
| 111 | <single>column</single> | ||
| 112 | <multiple>columns</multiple> | ||
| 113 | </term> | ||
| 114 | <term name="figure"> | ||
| 115 | <single>figure</single> | ||
| 116 | <multiple>figures</multiple> | ||
| 117 | </term> | ||
| 118 | <term name="folio"> | ||
| 119 | <single>folio</single> | ||
| 120 | <multiple>folios</multiple> | ||
| 121 | </term> | ||
| 122 | <term name="issue"> | ||
| 123 | <single>number</single> | ||
| 124 | <multiple>numbers</multiple> | ||
| 125 | </term> | ||
| 126 | <term name="line"> | ||
| 127 | <single>line</single> | ||
| 128 | <multiple>lines</multiple> | ||
| 129 | </term> | ||
| 130 | <term name="note"> | ||
| 131 | <single>note</single> | ||
| 132 | <multiple>notes</multiple> | ||
| 133 | </term> | ||
| 134 | <term name="opus"> | ||
| 135 | <single>opus</single> | ||
| 136 | <multiple>opera</multiple> | ||
| 137 | </term> | ||
| 138 | <term name="page"> | ||
| 139 | <single>page</single> | ||
| 140 | <multiple>pages</multiple> | ||
| 141 | </term> | ||
| 142 | <term name="number-of-pages"> | ||
| 143 | <single>page</single> | ||
| 144 | <multiple>pages</multiple> | ||
| 145 | </term> | ||
| 146 | <term name="paragraph"> | ||
| 147 | <single>paragraph</single> | ||
| 148 | <multiple>paragraphs</multiple> | ||
| 149 | </term> | ||
| 150 | <term name="part"> | ||
| 151 | <single>part</single> | ||
| 152 | <multiple>parts</multiple> | ||
| 153 | </term> | ||
| 154 | <term name="section"> | ||
| 155 | <single>section</single> | ||
| 156 | <multiple>sections</multiple> | ||
| 157 | </term> | ||
| 158 | <term name="sub verbo"> | ||
| 159 | <single>sub verbo</single> | ||
| 160 | <multiple>sub verbis</multiple> | ||
| 161 | </term> | ||
| 162 | <term name="verse"> | ||
| 163 | <single>verse</single> | ||
| 164 | <multiple>verses</multiple> | ||
| 165 | </term> | ||
| 166 | <term name="volume"> | ||
| 167 | <single>volume</single> | ||
| 168 | <multiple>volumes</multiple> | ||
| 169 | </term> | ||
| 170 | |||
| 171 | <!-- SHORT LOCATOR FORMS --> | ||
| 172 | <term name="book" form="short"> | ||
| 173 | <single>bk.</single> | ||
| 174 | <multiple>bks.</multiple> | ||
| 175 | </term> | ||
| 176 | <term name="chapter" form="short"> | ||
| 177 | <single>chap.</single> | ||
| 178 | <multiple>chaps.</multiple> | ||
| 179 | </term> | ||
| 180 | <term name="column" form="short"> | ||
| 181 | <single>col.</single> | ||
| 182 | <multiple>cols.</multiple> | ||
| 183 | </term> | ||
| 184 | <term name="figure" form="short"> | ||
| 185 | <single>fig.</single> | ||
| 186 | <multiple>figs.</multiple> | ||
| 187 | </term> | ||
| 188 | <term name="folio" form="short"> | ||
| 189 | <single>fol.</single> | ||
| 190 | <multiple>fols.</multiple> | ||
| 191 | </term> | ||
| 192 | <term name="issue" form="short"> | ||
| 193 | <single>no.</single> | ||
| 194 | <multiple>nos.</multiple> | ||
| 195 | </term> | ||
| 196 | <term name="line" form="short"> | ||
| 197 | <single>l.</single> | ||
| 198 | <multiple>ll.</multiple> | ||
| 199 | </term> | ||
| 200 | <term name="note" form="short"> | ||
| 201 | <single>n.</single> | ||
| 202 | <multiple>nn.</multiple> | ||
| 203 | </term> | ||
| 204 | <term name="opus" form="short"> | ||
| 205 | <single>op.</single> | ||
| 206 | <multiple>opp.</multiple> | ||
| 207 | </term> | ||
| 208 | <term name="page" form="short"> | ||
| 209 | <single>p.</single> | ||
| 210 | <multiple>pp.</multiple> | ||
| 211 | </term> | ||
| 212 | <term name="number-of-pages" form="short"> | ||
| 213 | <single>p.</single> | ||
| 214 | <multiple>pp.</multiple> | ||
| 215 | </term> | ||
| 216 | <term name="paragraph" form="short"> | ||
| 217 | <single>para.</single> | ||
| 218 | <multiple>paras.</multiple> | ||
| 219 | </term> | ||
| 220 | <term name="part" form="short"> | ||
| 221 | <single>pt.</single> | ||
| 222 | <multiple>pts.</multiple> | ||
| 223 | </term> | ||
| 224 | <term name="section" form="short"> | ||
| 225 | <single>sec.</single> | ||
| 226 | <multiple>secs.</multiple> | ||
| 227 | </term> | ||
| 228 | <term name="sub verbo" form="short"> | ||
| 229 | <single>s.v.</single> | ||
| 230 | <multiple>s.vv.</multiple> | ||
| 231 | </term> | ||
| 232 | <term name="verse" form="short"> | ||
| 233 | <single>v.</single> | ||
| 234 | <multiple>vv.</multiple> | ||
| 235 | </term> | ||
| 236 | <term name="volume" form="short"> | ||
| 237 | <single>vol.</single> | ||
| 238 | <multiple>vols.</multiple> | ||
| 239 | </term> | ||
| 240 | |||
| 241 | <!-- SYMBOL LOCATOR FORMS --> | ||
| 242 | <term name="paragraph" form="symbol"> | ||
| 243 | <single>¶</single> | ||
| 244 | <multiple>¶¶</multiple> | ||
| 245 | </term> | ||
| 246 | <term name="section" form="symbol"> | ||
| 247 | <single>§</single> | ||
| 248 | <multiple>§§</multiple> | ||
| 249 | </term> | ||
| 250 | |||
| 251 | <!-- LONG ROLE FORMS --> | ||
| 252 | <term name="director"> | ||
| 253 | <single>director</single> | ||
| 254 | <multiple>directors</multiple> | ||
| 255 | </term> | ||
| 256 | <term name="editor"> | ||
| 257 | <single>editor</single> | ||
| 258 | <multiple>editors</multiple> | ||
| 259 | </term> | ||
| 260 | <term name="editorial-director"> | ||
| 261 | <single>editor</single> | ||
| 262 | <multiple>editors</multiple> | ||
| 263 | </term> | ||
| 264 | <term name="illustrator"> | ||
| 265 | <single>illustrator</single> | ||
| 266 | <multiple>illustrators</multiple> | ||
| 267 | </term> | ||
| 268 | <term name="translator"> | ||
| 269 | <single>translator</single> | ||
| 270 | <multiple>translators</multiple> | ||
| 271 | </term> | ||
| 272 | <term name="editortranslator"> | ||
| 273 | <single>editor & translator</single> | ||
| 274 | <multiple>editors & translators</multiple> | ||
| 275 | </term> | ||
| 276 | |||
| 277 | <!-- SHORT ROLE FORMS --> | ||
| 278 | <term name="director" form="short"> | ||
| 279 | <single>dir.</single> | ||
| 280 | <multiple>dirs.</multiple> | ||
| 281 | </term> | ||
| 282 | <term name="editor" form="short"> | ||
| 283 | <single>ed.</single> | ||
| 284 | <multiple>eds.</multiple> | ||
| 285 | </term> | ||
| 286 | <term name="editorial-director" form="short"> | ||
| 287 | <single>ed.</single> | ||
| 288 | <multiple>eds.</multiple> | ||
| 289 | </term> | ||
| 290 | <term name="illustrator" form="short"> | ||
| 291 | <single>ill.</single> | ||
| 292 | <multiple>ills.</multiple> | ||
| 293 | </term> | ||
| 294 | <term name="translator" form="short"> | ||
| 295 | <single>tran.</single> | ||
| 296 | <multiple>trans.</multiple> | ||
| 297 | </term> | ||
| 298 | <term name="editortranslator" form="short"> | ||
| 299 | <single>ed. & tran.</single> | ||
| 300 | <multiple>eds. & trans.</multiple> | ||
| 301 | </term> | ||
| 302 | |||
| 303 | <!-- VERB ROLE FORMS --> | ||
| 304 | <term name="container-author" form="verb">by</term> | ||
| 305 | <term name="director" form="verb">directed by</term> | ||
| 306 | <term name="editor" form="verb">edited by</term> | ||
| 307 | <term name="editorial-director" form="verb">edited by</term> | ||
| 308 | <term name="illustrator" form="verb">illustrated by</term> | ||
| 309 | <term name="interviewer" form="verb">interview by</term> | ||
| 310 | <term name="recipient" form="verb">to</term> | ||
| 311 | <term name="reviewed-author" form="verb">by</term> | ||
| 312 | <term name="translator" form="verb">translated by</term> | ||
| 313 | <term name="editortranslator" form="verb">edited & translated by</term> | ||
| 314 | |||
| 315 | <!-- SHORT VERB ROLE FORMS --> | ||
| 316 | <term name="director" form="verb-short">dir. by</term> | ||
| 317 | <term name="editor" form="verb-short">ed. by</term> | ||
| 318 | <term name="editorial-director" form="verb-short">ed. by</term> | ||
| 319 | <term name="illustrator" form="verb-short">illus. by</term> | ||
| 320 | <term name="translator" form="verb-short">trans. by</term> | ||
| 321 | <term name="editortranslator" form="verb-short">ed. & trans. by</term> | ||
| 322 | |||
| 323 | <!-- LONG MONTH FORMS --> | ||
| 324 | <term name="month-01">January</term> | ||
| 325 | <term name="month-02">February</term> | ||
| 326 | <term name="month-03">March</term> | ||
| 327 | <term name="month-04">April</term> | ||
| 328 | <term name="month-05">May</term> | ||
| 329 | <term name="month-06">June</term> | ||
| 330 | <term name="month-07">July</term> | ||
| 331 | <term name="month-08">August</term> | ||
| 332 | <term name="month-09">September</term> | ||
| 333 | <term name="month-10">October</term> | ||
| 334 | <term name="month-11">November</term> | ||
| 335 | <term name="month-12">December</term> | ||
| 336 | |||
| 337 | <!-- SHORT MONTH FORMS --> | ||
| 338 | <term name="month-01" form="short">Jan.</term> | ||
| 339 | <term name="month-02" form="short">Feb.</term> | ||
| 340 | <term name="month-03" form="short">Mar.</term> | ||
| 341 | <term name="month-04" form="short">Apr.</term> | ||
| 342 | <term name="month-05" form="short">May</term> | ||
| 343 | <term name="month-06" form="short">Jun.</term> | ||
| 344 | <term name="month-07" form="short">Jul.</term> | ||
| 345 | <term name="month-08" form="short">Aug.</term> | ||
| 346 | <term name="month-09" form="short">Sep.</term> | ||
| 347 | <term name="month-10" form="short">Oct.</term> | ||
| 348 | <term name="month-11" form="short">Nov.</term> | ||
| 349 | <term name="month-12" form="short">Dec.</term> | ||
| 350 | |||
| 351 | <!-- SEASONS --> | ||
| 352 | <term name="season-01">Spring</term> | ||
| 353 | <term name="season-02">Summer</term> | ||
| 354 | <term name="season-03">Autumn</term> | ||
| 355 | <term name="season-04">Winter</term> | ||
| 356 | </terms> | ||
| 357 | </locale> | ||
diff --git a/etc/themes/light-blue-theme.el b/etc/themes/light-blue-theme.el index 8f4502a0cb3..547d2df04c0 100644 --- a/etc/themes/light-blue-theme.el +++ b/etc/themes/light-blue-theme.el | |||
| @@ -3,6 +3,7 @@ | |||
| 3 | ;; Copyright (C) 2011-2021 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2011-2021 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Drew Adams <drew.adams@oracle.com> | 5 | ;; Author: Drew Adams <drew.adams@oracle.com> |
| 6 | ;; Maintainer: emacs-devel@gnu.org | ||
| 6 | 7 | ||
| 7 | ;; This file is part of GNU Emacs. | 8 | ;; This file is part of GNU Emacs. |
| 8 | 9 | ||
diff --git a/lib-src/emacsclient.c b/lib-src/emacsclient.c index 018e81e4222..cff3cec2a79 100644 --- a/lib-src/emacsclient.c +++ b/lib-src/emacsclient.c | |||
| @@ -80,9 +80,6 @@ char *w32_getenv (const char *); | |||
| 80 | #include <sys/stat.h> | 80 | #include <sys/stat.h> |
| 81 | #include <unistd.h> | 81 | #include <unistd.h> |
| 82 | 82 | ||
| 83 | #ifndef WINDOWSNT | ||
| 84 | # include <acl.h> | ||
| 85 | #endif | ||
| 86 | #include <filename.h> | 83 | #include <filename.h> |
| 87 | #include <intprops.h> | 84 | #include <intprops.h> |
| 88 | #include <min-max.h> | 85 | #include <min-max.h> |
| @@ -94,10 +91,6 @@ char *w32_getenv (const char *); | |||
| 94 | # pragma GCC diagnostic ignored "-Wformat-truncation=2" | 91 | # pragma GCC diagnostic ignored "-Wformat-truncation=2" |
| 95 | #endif | 92 | #endif |
| 96 | 93 | ||
| 97 | #if !defined O_PATH && !defined WINDOWSNT | ||
| 98 | # define O_PATH O_SEARCH | ||
| 99 | #endif | ||
| 100 | |||
| 101 | 94 | ||
| 102 | /* Name used to invoke this program. */ | 95 | /* Name used to invoke this program. */ |
| 103 | static char const *progname; | 96 | static char const *progname; |
| @@ -1135,6 +1128,12 @@ process_grouping (void) | |||
| 1135 | 1128 | ||
| 1136 | #ifdef SOCKETS_IN_FILE_SYSTEM | 1129 | #ifdef SOCKETS_IN_FILE_SYSTEM |
| 1137 | 1130 | ||
| 1131 | # include <acl.h> | ||
| 1132 | |||
| 1133 | # ifndef O_PATH | ||
| 1134 | # define O_PATH O_SEARCH | ||
| 1135 | # endif | ||
| 1136 | |||
| 1138 | /* A local socket address. The union avoids the need to cast. */ | 1137 | /* A local socket address. The union avoids the need to cast. */ |
| 1139 | union local_sockaddr | 1138 | union local_sockaddr |
| 1140 | { | 1139 | { |
diff --git a/lisp/Makefile.in b/lisp/Makefile.in index 60d1d10e5b2..3e764c5a787 100644 --- a/lisp/Makefile.in +++ b/lisp/Makefile.in | |||
| @@ -91,8 +91,19 @@ COMPILE_FIRST = \ | |||
| 91 | $(lisp)/emacs-lisp/byte-opt.elc \ | 91 | $(lisp)/emacs-lisp/byte-opt.elc \ |
| 92 | $(lisp)/emacs-lisp/bytecomp.elc | 92 | $(lisp)/emacs-lisp/bytecomp.elc |
| 93 | ifeq ($(HAVE_NATIVE_COMP),yes) | 93 | ifeq ($(HAVE_NATIVE_COMP),yes) |
| 94 | COMPILE_FIRST += $(lisp)/emacs-lisp/comp.elc | 94 | COMPILE_FIRST += \ |
| 95 | COMPILE_FIRST += $(lisp)/emacs-lisp/comp-cstr.elc | 95 | $(lisp)/emacs-lisp/comp.elc \ |
| 96 | $(lisp)/emacs-lisp/comp-cstr.elc \ | ||
| 97 | $(lisp)/emacs-lisp/cl-macs.elc \ | ||
| 98 | $(lisp)/emacs-lisp/rx.elc \ | ||
| 99 | $(lisp)/emacs-lisp/cl-seq.elc \ | ||
| 100 | $(lisp)/help-mode.elc \ | ||
| 101 | $(lisp)/emacs-lisp/cl-extra.elc \ | ||
| 102 | $(lisp)/emacs-lisp/gv.elc \ | ||
| 103 | $(lisp)/emacs-lisp/seq.elc \ | ||
| 104 | $(lisp)/emacs-lisp/cl-lib.elc \ | ||
| 105 | $(lisp)/emacs-lisp/warnings.elc \ | ||
| 106 | $(lisp)/emacs-lisp/subr-x.elc | ||
| 96 | endif | 107 | endif |
| 97 | COMPILE_FIRST += $(lisp)/emacs-lisp/autoload.elc | 108 | COMPILE_FIRST += $(lisp)/emacs-lisp/autoload.elc |
| 98 | 109 | ||
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el index 527720c6e8d..1852471bcbb 100644 --- a/lisp/emacs-lisp/cl-macs.el +++ b/lisp/emacs-lisp/cl-macs.el | |||
| @@ -3087,6 +3087,14 @@ To see the documentation for a defined struct type, use | |||
| 3087 | ;; and pred-check, so changing it is not straightforward. | 3087 | ;; and pred-check, so changing it is not straightforward. |
| 3088 | (push `(,defsym ,accessor (cl-x) | 3088 | (push `(,defsym ,accessor (cl-x) |
| 3089 | ,(concat | 3089 | ,(concat |
| 3090 | ;; NB. This will produce incorrect results | ||
| 3091 | ;; in some cases, as our coding conventions | ||
| 3092 | ;; says that the first line must be a full | ||
| 3093 | ;; sentence. However, if we don't word wrap | ||
| 3094 | ;; we will have byte-compiler warnings about | ||
| 3095 | ;; overly long docstrings. So we can't have | ||
| 3096 | ;; a perfect result here, and choose to avoid | ||
| 3097 | ;; the byte-compiler warnings. | ||
| 3090 | (internal--format-docstring-line | 3098 | (internal--format-docstring-line |
| 3091 | "Access slot \"%s\" of `%s' struct CL-X." slot name) | 3099 | "Access slot \"%s\" of `%s' struct CL-X." slot name) |
| 3092 | (if doc (concat "\n" doc) "")) | 3100 | (if doc (concat "\n" doc) "")) |
diff --git a/lisp/emacs-lisp/easy-mmode.el b/lisp/emacs-lisp/easy-mmode.el index d37bca24a0f..f752861d80a 100644 --- a/lisp/emacs-lisp/easy-mmode.el +++ b/lisp/emacs-lisp/easy-mmode.el | |||
| @@ -93,7 +93,7 @@ Enable the mode if ARG is nil, omitted, or is a positive number. | |||
| 93 | Disable the mode if ARG is a negative number. | 93 | Disable the mode if ARG is a negative number. |
| 94 | 94 | ||
| 95 | To check whether the minor mode is enabled in the current buffer, | 95 | To check whether the minor mode is enabled in the current buffer, |
| 96 | evaluate `%S'. | 96 | evaluate `%s'. |
| 97 | 97 | ||
| 98 | The mode's hook is called both when the mode is enabled and when | 98 | The mode's hook is called both when the mode is enabled and when |
| 99 | it is disabled.") | 99 | it is disabled.") |
| @@ -109,7 +109,9 @@ it is disabled.") | |||
| 109 | (docs-fc (bound-and-true-p emacs-lisp-docstring-fill-column)) | 109 | (docs-fc (bound-and-true-p emacs-lisp-docstring-fill-column)) |
| 110 | (fill-column (if (integerp docs-fc) docs-fc 65)) | 110 | (fill-column (if (integerp docs-fc) docs-fc 65)) |
| 111 | (argdoc (format easy-mmode--arg-docstring mode-pretty-name | 111 | (argdoc (format easy-mmode--arg-docstring mode-pretty-name |
| 112 | getter)) | 112 | ;; Avoid having quotes turn into pretty quotes. |
| 113 | (string-replace "'" "\\\\='" | ||
| 114 | (format "%S" getter)))) | ||
| 113 | (filled (if (fboundp 'fill-region) | 115 | (filled (if (fboundp 'fill-region) |
| 114 | (with-temp-buffer | 116 | (with-temp-buffer |
| 115 | (insert argdoc) | 117 | (insert argdoc) |
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el index c4077d48ab0..308812f0eb2 100644 --- a/lisp/erc/erc.el +++ b/lisp/erc/erc.el | |||
| @@ -188,10 +188,12 @@ parameters and authentication." | |||
| 188 | It is not strictly necessary to provide this, since ERC will | 188 | It is not strictly necessary to provide this, since ERC will |
| 189 | prompt you for it.") | 189 | prompt you for it.") |
| 190 | 190 | ||
| 191 | (defcustom erc-user-mode nil | 191 | (defcustom erc-user-mode "+i" |
| 192 | ;; +i "Invisible". Hides user from global /who and /names. | ||
| 192 | "Initial user modes to be set after a connection is established." | 193 | "Initial user modes to be set after a connection is established." |
| 193 | :group 'erc | 194 | :group 'erc |
| 194 | :type '(choice (const nil) string function)) | 195 | :type '(choice (const nil) string function) |
| 196 | :version "28.1") | ||
| 195 | 197 | ||
| 196 | 198 | ||
| 197 | (defcustom erc-prompt-for-password t | 199 | (defcustom erc-prompt-for-password t |
diff --git a/lisp/files.el b/lisp/files.el index 50ca49409f1..7213a6eae5f 100644 --- a/lisp/files.el +++ b/lisp/files.el | |||
| @@ -3897,7 +3897,7 @@ inhibited." | |||
| 3897 | (hack-local-variables-apply)))))) | 3897 | (hack-local-variables-apply)))))) |
| 3898 | 3898 | ||
| 3899 | (defun hack-local-variables--find-variables (&optional handle-mode) | 3899 | (defun hack-local-variables--find-variables (&optional handle-mode) |
| 3900 | "Return all local variables in the ucrrent buffer. | 3900 | "Return all local variables in the current buffer. |
| 3901 | If HANDLE-MODE is nil, we gather all the specified local | 3901 | If HANDLE-MODE is nil, we gather all the specified local |
| 3902 | variables. If HANDLE-MODE is neither nil nor t, we do the same, | 3902 | variables. If HANDLE-MODE is neither nil nor t, we do the same, |
| 3903 | except that any settings of `mode' are ignored. | 3903 | except that any settings of `mode' are ignored. |
diff --git a/lisp/gnus/gnus-agent.el b/lisp/gnus/gnus-agent.el index 19d05120045..6426d825465 100644 --- a/lisp/gnus/gnus-agent.el +++ b/lisp/gnus/gnus-agent.el | |||
| @@ -3553,32 +3553,13 @@ articles in every agentized group? ")) | |||
| 3553 | (when (and to-remove | 3553 | (when (and to-remove |
| 3554 | (or gnus-expert-user | 3554 | (or gnus-expert-user |
| 3555 | (gnus-y-or-n-p | 3555 | (gnus-y-or-n-p |
| 3556 | "gnus-agent-expire has identified local directories that are\ | 3556 | "gnus-agent-expire has identified local directories that are |
| 3557 | not currently required by any agentized group. Do you wish to consider\ | 3557 | not currently required by any agentized group. Do you wish to consider |
| 3558 | deleting them?"))) | 3558 | deleting them?"))) |
| 3559 | (while to-remove | 3559 | (dolist (dir to-remove) |
| 3560 | (let ((dir (pop to-remove))) | 3560 | (when (or gnus-expert-user |
| 3561 | (if (or gnus-expert-user | ||
| 3562 | (gnus-y-or-n-p (format "Delete %s? " dir))) | 3561 | (gnus-y-or-n-p (format "Delete %s? " dir))) |
| 3563 | (let* (delete-recursive | 3562 | (delete-directory dir t))))))) |
| 3564 | files f | ||
| 3565 | (delete-recursive | ||
| 3566 | (lambda (f-or-d) | ||
| 3567 | (ignore-errors | ||
| 3568 | (if (file-directory-p f-or-d) | ||
| 3569 | (condition-case nil | ||
| 3570 | (delete-directory f-or-d) | ||
| 3571 | (file-error | ||
| 3572 | (setq files (directory-files f-or-d)) | ||
| 3573 | (while files | ||
| 3574 | (setq f (pop files)) | ||
| 3575 | (or (member f '("." "..")) | ||
| 3576 | (funcall delete-recursive | ||
| 3577 | (nnheader-concat | ||
| 3578 | f-or-d f)))) | ||
| 3579 | (delete-directory f-or-d))) | ||
| 3580 | (delete-file f-or-d)))))) | ||
| 3581 | (funcall delete-recursive dir))))))))) | ||
| 3582 | 3563 | ||
| 3583 | ;;;###autoload | 3564 | ;;;###autoload |
| 3584 | (defun gnus-agent-batch () | 3565 | (defun gnus-agent-batch () |
diff --git a/lisp/international/fontset.el b/lisp/international/fontset.el index 4ec641dca8f..f0ead8a2744 100644 --- a/lisp/international/fontset.el +++ b/lisp/international/fontset.el | |||
| @@ -157,7 +157,9 @@ | |||
| 157 | (armenian #x531) | 157 | (armenian #x531) |
| 158 | (hebrew #x5D0) | 158 | (hebrew #x5D0) |
| 159 | (vai #xA500) | 159 | (vai #xA500) |
| 160 | (arabic #x628) | 160 | ;; U+06C1 prevents us from using bad fonts, like DejaVu Sans, |
| 161 | ;; for Arabic text. | ||
| 162 | (arabic #x628 #x6C1) | ||
| 161 | (syriac #x710) | 163 | (syriac #x710) |
| 162 | (thaana #x78C) | 164 | (thaana #x78C) |
| 163 | (devanagari #x915) | 165 | (devanagari #x915) |
diff --git a/lisp/international/mule.el b/lisp/international/mule.el index 2298af42b28..5022a17db5a 100644 --- a/lisp/international/mule.el +++ b/lisp/international/mule.el | |||
| @@ -294,30 +294,8 @@ attribute." | |||
| 294 | 294 | ||
| 295 | (apply 'define-charset-internal name (mapcar 'cdr attrs)))) | 295 | (apply 'define-charset-internal name (mapcar 'cdr attrs)))) |
| 296 | 296 | ||
| 297 | (defun hack-elisp-shorthands (fullname) | 297 | (defvar hack-read-symbol-shorthands-function nil |
| 298 | "Return value of the `elisp-shorthands' file-local variable in FULLNAME. | 298 | "Holds function to compute `read-symbol-shorthands'.") |
| 299 | FULLNAME is the absolute file name of an Elisp .el file which | ||
| 300 | potentially specifies a file-local value for `elisp-shorthands'. | ||
| 301 | The Elisp code in FULLNAME isn't read or evaluated in any way, except | ||
| 302 | for extraction of the buffer-local value of `elisp-shorthands'." | ||
| 303 | (let ((size (nth 7 (file-attributes fullname)))) | ||
| 304 | (with-temp-buffer | ||
| 305 | (insert-file-contents fullname nil (max 0 (- size 3000)) size) | ||
| 306 | (goto-char (point-max)) | ||
| 307 | (let* ((found (search-backward-regexp "elisp-shorthands:[ \t]*" 0 t)) | ||
| 308 | (val (and found | ||
| 309 | (goto-char (match-end 0)) | ||
| 310 | (ignore-errors (read (current-buffer))))) | ||
| 311 | (probe val) | ||
| 312 | aux) | ||
| 313 | (catch 'done | ||
| 314 | (when (consp probe) | ||
| 315 | (while (setq aux (pop probe)) | ||
| 316 | (unless (and (consp aux) | ||
| 317 | (stringp (car aux)) | ||
| 318 | (stringp (cdr aux))) | ||
| 319 | (throw 'done nil))) | ||
| 320 | val)))))) | ||
| 321 | 299 | ||
| 322 | (defun load-with-code-conversion (fullname file &optional noerror nomessage) | 300 | (defun load-with-code-conversion (fullname file &optional noerror nomessage) |
| 323 | "Execute a file of Lisp code named FILE whose absolute name is FULLNAME. | 301 | "Execute a file of Lisp code named FILE whose absolute name is FULLNAME. |
| @@ -344,7 +322,8 @@ Return t if file exists." | |||
| 344 | (let ((load-true-file-name fullname) | 322 | (let ((load-true-file-name fullname) |
| 345 | (load-file-name fullname) | 323 | (load-file-name fullname) |
| 346 | (set-auto-coding-for-load t) | 324 | (set-auto-coding-for-load t) |
| 347 | (inhibit-file-name-operation nil)) | 325 | (inhibit-file-name-operation nil) |
| 326 | shorthands) | ||
| 348 | (with-current-buffer buffer | 327 | (with-current-buffer buffer |
| 349 | ;; So that we don't get completely screwed if the | 328 | ;; So that we don't get completely screwed if the |
| 350 | ;; file is encoded in some complicated character set, | 329 | ;; file is encoded in some complicated character set, |
| @@ -353,6 +332,13 @@ Return t if file exists." | |||
| 353 | ;; Don't let deactivate-mark remain set. | 332 | ;; Don't let deactivate-mark remain set. |
| 354 | (let (deactivate-mark) | 333 | (let (deactivate-mark) |
| 355 | (insert-file-contents fullname)) | 334 | (insert-file-contents fullname)) |
| 335 | (setq shorthands | ||
| 336 | ;; We need this indirection because hacking local | ||
| 337 | ;; variables in too early seems to have cause | ||
| 338 | ;; recursive load loops (bug#50946). Thus it | ||
| 339 | ;; remains nil until it is save to do so. | ||
| 340 | (and hack-read-symbol-shorthands-function | ||
| 341 | (funcall hack-read-symbol-shorthands-function))) | ||
| 356 | ;; If the loaded file was inserted with no-conversion or | 342 | ;; If the loaded file was inserted with no-conversion or |
| 357 | ;; raw-text coding system, make the buffer unibyte. | 343 | ;; raw-text coding system, make the buffer unibyte. |
| 358 | ;; Otherwise, eval-buffer might try to interpret random | 344 | ;; Otherwise, eval-buffer might try to interpret random |
| @@ -363,11 +349,13 @@ Return t if file exists." | |||
| 363 | (set-buffer-multibyte nil)) | 349 | (set-buffer-multibyte nil)) |
| 364 | ;; Make `kill-buffer' quiet. | 350 | ;; Make `kill-buffer' quiet. |
| 365 | (set-buffer-modified-p nil)) | 351 | (set-buffer-modified-p nil)) |
| 366 | ;; Have the original buffer current while we eval. | 352 | ;; Have the original buffer current while we eval, |
| 367 | (eval-buffer buffer nil | 353 | ;; but consider shorthands of the eval'ed one. |
| 368 | ;; This is compatible with what `load' does. | 354 | (let ((read-symbol-shorthands shorthands)) |
| 369 | (if dump-mode file fullname) | 355 | (eval-buffer buffer nil |
| 370 | nil t)) | 356 | ;; This is compatible with what `load' does. |
| 357 | (if dump-mode file fullname) | ||
| 358 | nil t))) | ||
| 371 | (let (kill-buffer-hook kill-buffer-query-functions) | 359 | (let (kill-buffer-hook kill-buffer-query-functions) |
| 372 | (kill-buffer buffer))) | 360 | (kill-buffer buffer))) |
| 373 | (do-after-load-evaluation fullname) | 361 | (do-after-load-evaluation fullname) |
| @@ -378,13 +366,6 @@ Return t if file exists." | |||
| 378 | (message "Loading %s...done" file))) | 366 | (message "Loading %s...done" file))) |
| 379 | t))) | 367 | t))) |
| 380 | 368 | ||
| 381 | (defun load-with-shorthands-and-code-conversion (fullname file noerror nomessage) | ||
| 382 | "Like `load-with-code-conversion', but also consider Elisp shorthands. | ||
| 383 | This function uses shorthands defined in the file FULLNAME's local | ||
| 384 | value of `elisp-shorthands', when it processes that file's Elisp code." | ||
| 385 | (let ((elisp-shorthands (hack-elisp-shorthands fullname))) | ||
| 386 | (load-with-code-conversion fullname file noerror nomessage))) | ||
| 387 | |||
| 388 | (defun charset-info (charset) | 369 | (defun charset-info (charset) |
| 389 | "Return a vector of information of CHARSET. | 370 | "Return a vector of information of CHARSET. |
| 390 | This function is provided for backward compatibility. | 371 | This function is provided for backward compatibility. |
diff --git a/lisp/loadup.el b/lisp/loadup.el index 942057c838f..3a55d2c8057 100644 --- a/lisp/loadup.el +++ b/lisp/loadup.el | |||
| @@ -151,7 +151,7 @@ | |||
| 151 | ;; variable its advertised default value (it starts as nil, see | 151 | ;; variable its advertised default value (it starts as nil, see |
| 152 | ;; xdisp.c). | 152 | ;; xdisp.c). |
| 153 | (setq resize-mini-windows 'grow-only) | 153 | (setq resize-mini-windows 'grow-only) |
| 154 | (setq load-source-file-function #'load-with-shorthands-and-code-conversion) | 154 | (setq load-source-file-function #'load-with-code-conversion) |
| 155 | (load "files") | 155 | (load "files") |
| 156 | 156 | ||
| 157 | ;; Load-time macro-expansion can only take effect after setting | 157 | ;; Load-time macro-expansion can only take effect after setting |
| @@ -352,6 +352,10 @@ | |||
| 352 | (load "vc/ediff-hook") | 352 | (load "vc/ediff-hook") |
| 353 | (load "uniquify") | 353 | (load "uniquify") |
| 354 | (load "electric") | 354 | (load "electric") |
| 355 | (load "paren") | ||
| 356 | |||
| 357 | (load "shorthands") | ||
| 358 | |||
| 355 | (load "emacs-lisp/eldoc") | 359 | (load "emacs-lisp/eldoc") |
| 356 | (load "cus-start") ;Late to reduce customize-rogue (needs loaddefs.el anyway) | 360 | (load "cus-start") ;Late to reduce customize-rogue (needs loaddefs.el anyway) |
| 357 | (if (not (eq system-type 'ms-dos)) | 361 | (if (not (eq system-type 'ms-dos)) |
diff --git a/lisp/mouse.el b/lisp/mouse.el index 5d4e05fa25e..bb47d04a3a8 100644 --- a/lisp/mouse.el +++ b/lisp/mouse.el | |||
| @@ -290,6 +290,7 @@ and should return the same menu with changes such as added new menu items." | |||
| 290 | :type '(repeat | 290 | :type '(repeat |
| 291 | (choice (function-item context-menu-undo) | 291 | (choice (function-item context-menu-undo) |
| 292 | (function-item context-menu-region) | 292 | (function-item context-menu-region) |
| 293 | (function-item context-menu-middle-separator) | ||
| 293 | (function-item context-menu-toolbar) | 294 | (function-item context-menu-toolbar) |
| 294 | (function-item context-menu-global) | 295 | (function-item context-menu-global) |
| 295 | (function-item context-menu-local) | 296 | (function-item context-menu-local) |
| @@ -478,14 +479,6 @@ Some context functions add menu items below the separator." | |||
| 478 | `(menu-item "All" | 479 | `(menu-item "All" |
| 479 | ,(lambda (e) (interactive "e") (mark-thing-at-mouse e 'buffer)) | 480 | ,(lambda (e) (interactive "e") (mark-thing-at-mouse e 'buffer)) |
| 480 | :help "Mark the whole buffer for a subsequent cut/copy")) | 481 | :help "Mark the whole buffer for a subsequent cut/copy")) |
| 481 | (define-key-after submenu [mark-defun] | ||
| 482 | `(menu-item "Defun" | ||
| 483 | ,(lambda (e) (interactive "e") (mark-thing-at-mouse e 'defun)) | ||
| 484 | :help "Mark the defun at click for a subsequent cut/copy")) | ||
| 485 | (define-key-after submenu [mark-list] | ||
| 486 | `(menu-item "List" | ||
| 487 | ,(lambda (e) (interactive "e") (mark-thing-at-mouse e 'list)) | ||
| 488 | :help "Mark the list at click for a subsequent cut/copy")) | ||
| 489 | (when (let* ((pos (posn-point (event-end click))) | 482 | (when (let* ((pos (posn-point (event-end click))) |
| 490 | (char (when pos (char-after pos)))) | 483 | (char (when pos (char-after pos)))) |
| 491 | (or (and char (eq (char-syntax char) ?\")) | 484 | (or (and char (eq (char-syntax char) ?\")) |
| @@ -498,10 +491,6 @@ Some context functions add menu items below the separator." | |||
| 498 | `(menu-item "Line" | 491 | `(menu-item "Line" |
| 499 | ,(lambda (e) (interactive "e") (mark-thing-at-mouse e 'line)) | 492 | ,(lambda (e) (interactive "e") (mark-thing-at-mouse e 'line)) |
| 500 | :help "Mark the line at click for a subsequent cut/copy")) | 493 | :help "Mark the line at click for a subsequent cut/copy")) |
| 501 | (define-key-after submenu [mark-symbol] | ||
| 502 | `(menu-item "Symbol" | ||
| 503 | ,(lambda (e) (interactive "e") (mark-thing-at-mouse e 'symbol)) | ||
| 504 | :help "Mark the symbol at click for a subsequent cut/copy")) | ||
| 505 | (when (region-active-p) | 494 | (when (region-active-p) |
| 506 | (define-key-after submenu [mark-none] | 495 | (define-key-after submenu [mark-none] |
| 507 | `(menu-item "None" | 496 | `(menu-item "None" |
diff --git a/lisp/net/dictionary.el b/lisp/net/dictionary.el index 86447c2c351..1d07989ef57 100644 --- a/lisp/net/dictionary.el +++ b/lisp/net/dictionary.el | |||
| @@ -1382,10 +1382,12 @@ When you add this function to `context-menu-functions', | |||
| 1382 | the context menu will contain an item that searches | 1382 | the context menu will contain an item that searches |
| 1383 | the word at mouse click." | 1383 | the word at mouse click." |
| 1384 | (when (thing-at-mouse click 'word) | 1384 | (when (thing-at-mouse click 'word) |
| 1385 | (define-key menu [dictionary-separator] menu-bar-separator) | 1385 | (define-key-after menu [dictionary-separator] menu-bar-separator |
| 1386 | (define-key menu [dictionary-search-word-at-mouse] | 1386 | 'middle-separator) |
| 1387 | (define-key-after menu [dictionary-search-word-at-mouse] | ||
| 1387 | '(menu-item "Dictionary Search" dictionary-search-word-at-mouse | 1388 | '(menu-item "Dictionary Search" dictionary-search-word-at-mouse |
| 1388 | :help "Search the word at mouse click in dictionary"))) | 1389 | :help "Search the word at mouse click in dictionary") |
| 1390 | 'dictionary-separator)) | ||
| 1389 | menu) | 1391 | menu) |
| 1390 | 1392 | ||
| 1391 | (provide 'dictionary) | 1393 | (provide 'dictionary) |
diff --git a/lisp/net/tramp-cache.el b/lisp/net/tramp-cache.el index 5a00915f4f0..f1c656ec209 100644 --- a/lisp/net/tramp-cache.el +++ b/lisp/net/tramp-cache.el | |||
| @@ -319,12 +319,7 @@ KEY identifies the connection, it is either a process or a | |||
| 319 | used to cache connection properties of the local machine. | 319 | used to cache connection properties of the local machine. |
| 320 | If KEY is `tramp-cache-undefined', or if the value is not set for | 320 | If KEY is `tramp-cache-undefined', or if the value is not set for |
| 321 | the connection, return DEFAULT." | 321 | the connection, return DEFAULT." |
| 322 | ;; Unify key by removing localname and hop from `tramp-file-name' | 322 | (setq key (tramp-file-name-unify key)) |
| 323 | ;; structure. Work with a copy in order to avoid side effects. | ||
| 324 | (when (tramp-file-name-p key) | ||
| 325 | (setq key (copy-tramp-file-name key)) | ||
| 326 | (setf (tramp-file-name-localname key) nil | ||
| 327 | (tramp-file-name-hop key) nil)) | ||
| 328 | (let* ((hash (tramp-get-hash-table key)) | 323 | (let* ((hash (tramp-get-hash-table key)) |
| 329 | (cached (if (hash-table-p hash) | 324 | (cached (if (hash-table-p hash) |
| 330 | (gethash property hash tramp-cache-undefined) | 325 | (gethash property hash tramp-cache-undefined) |
| @@ -350,12 +345,7 @@ used to cache connection properties of the local machine. If KEY | |||
| 350 | is `tramp-cache-undefined', nothing is set. | 345 | is `tramp-cache-undefined', nothing is set. |
| 351 | PROPERTY is set persistent when KEY is a `tramp-file-name' structure. | 346 | PROPERTY is set persistent when KEY is a `tramp-file-name' structure. |
| 352 | Return VALUE." | 347 | Return VALUE." |
| 353 | ;; Unify key by removing localname and hop from `tramp-file-name' | 348 | (setq key (tramp-file-name-unify key)) |
| 354 | ;; structure. Work with a copy in order to avoid side effects. | ||
| 355 | (when (tramp-file-name-p key) | ||
| 356 | (setq key (copy-tramp-file-name key)) | ||
| 357 | (setf (tramp-file-name-localname key) nil | ||
| 358 | (tramp-file-name-hop key) nil)) | ||
| 359 | (when-let ((hash (tramp-get-hash-table key))) | 349 | (when-let ((hash (tramp-get-hash-table key))) |
| 360 | (puthash property value hash)) | 350 | (puthash property value hash)) |
| 361 | (setq tramp-cache-data-changed | 351 | (setq tramp-cache-data-changed |
| @@ -379,12 +369,7 @@ KEY identifies the connection, it is either a process or a | |||
| 379 | `tramp-file-name' structure. A special case is nil, which is | 369 | `tramp-file-name' structure. A special case is nil, which is |
| 380 | used to cache connection properties of the local machine. | 370 | used to cache connection properties of the local machine. |
| 381 | PROPERTY is set persistent when KEY is a `tramp-file-name' structure." | 371 | PROPERTY is set persistent when KEY is a `tramp-file-name' structure." |
| 382 | ;; Unify key by removing localname and hop from `tramp-file-name' | 372 | (setq key (tramp-file-name-unify key)) |
| 383 | ;; structure. Work with a copy in order to avoid side effects. | ||
| 384 | (when (tramp-file-name-p key) | ||
| 385 | (setq key (copy-tramp-file-name key)) | ||
| 386 | (setf (tramp-file-name-localname key) nil | ||
| 387 | (tramp-file-name-hop key) nil)) | ||
| 388 | (when-let ((hash (tramp-get-hash-table key))) | 373 | (when-let ((hash (tramp-get-hash-table key))) |
| 389 | (remhash property hash)) | 374 | (remhash property hash)) |
| 390 | (setq tramp-cache-data-changed | 375 | (setq tramp-cache-data-changed |
| @@ -397,12 +382,7 @@ PROPERTY is set persistent when KEY is a `tramp-file-name' structure." | |||
| 397 | KEY identifies the connection, it is either a process or a | 382 | KEY identifies the connection, it is either a process or a |
| 398 | `tramp-file-name' structure. A special case is nil, which is | 383 | `tramp-file-name' structure. A special case is nil, which is |
| 399 | used to cache connection properties of the local machine." | 384 | used to cache connection properties of the local machine." |
| 400 | ;; Unify key by removing localname and hop from `tramp-file-name' | 385 | (setq key (tramp-file-name-unify key)) |
| 401 | ;; structure. Work with a copy in order to avoid side effects. | ||
| 402 | (when (tramp-file-name-p key) | ||
| 403 | (setq key (copy-tramp-file-name key)) | ||
| 404 | (setf (tramp-file-name-localname key) nil | ||
| 405 | (tramp-file-name-hop key) nil)) | ||
| 406 | (tramp-message | 386 | (tramp-message |
| 407 | key 7 "%s %s" key | 387 | key 7 "%s %s" key |
| 408 | (when-let ((hash (gethash key tramp-cache-data))) | 388 | (when-let ((hash (gethash key tramp-cache-data))) |
diff --git a/lisp/net/tramp-fuse.el b/lisp/net/tramp-fuse.el index 8c5afa7cf93..d2bac2d0ee2 100644 --- a/lisp/net/tramp-fuse.el +++ b/lisp/net/tramp-fuse.el | |||
| @@ -175,15 +175,30 @@ | |||
| 175 | mount) | 175 | mount) |
| 176 | (match-string 1 mount))))))) | 176 | (match-string 1 mount))))))) |
| 177 | 177 | ||
| 178 | (defun tramp-fuse-get-fusermount () | ||
| 179 | "Determine the local `fusermount' command." | ||
| 180 | ;; We use key nil for local connection properties. | ||
| 181 | (with-tramp-connection-property nil "fusermount" | ||
| 182 | (or (executable-find "fusermount3") | ||
| 183 | (executable-find "fusermount")))) | ||
| 184 | |||
| 185 | (defvar tramp-fuse-mount-points nil | ||
| 186 | "List of fuse volume determined by a VEC.") | ||
| 187 | |||
| 178 | (defun tramp-fuse-unmount (vec) | 188 | (defun tramp-fuse-unmount (vec) |
| 179 | "Unmount fuse volume determined by VEC." | 189 | "Unmount fuse volume determined by VEC." |
| 180 | (let ((default-directory tramp-compat-temporary-file-directory) | 190 | (let* ((default-directory tramp-compat-temporary-file-directory) |
| 181 | (command (format "fusermount3 -u %s" (tramp-fuse-mount-point vec)))) | 191 | (mount-point (tramp-fuse-mount-point vec)) |
| 192 | (command (format "%s -u %s" (tramp-fuse-get-fusermount) mount-point))) | ||
| 182 | (tramp-message vec 6 "%s\n%s" command (shell-command-to-string command)) | 193 | (tramp-message vec 6 "%s\n%s" command (shell-command-to-string command)) |
| 183 | (tramp-flush-connection-property | 194 | (tramp-flush-connection-property |
| 184 | (tramp-get-connection-process vec) "mounted") | 195 | (tramp-get-connection-process vec) "mounted") |
| 196 | (setq tramp-fuse-mount-points | ||
| 197 | (delete (tramp-file-name-unify vec) tramp-fuse-mount-points)) | ||
| 185 | ;; Give the caches a chance to expire. | 198 | ;; Give the caches a chance to expire. |
| 186 | (sleep-for 1))) | 199 | (sleep-for 1) |
| 200 | (when (tramp-compat-directory-empty-p mount-point) | ||
| 201 | (delete-directory mount-point)))) | ||
| 187 | 202 | ||
| 188 | (defun tramp-fuse-local-file-name (filename) | 203 | (defun tramp-fuse-local-file-name (filename) |
| 189 | "Return local mount name of FILENAME." | 204 | "Return local mount name of FILENAME." |
| @@ -205,6 +220,36 @@ | |||
| 205 | (substring localname 1) localname) | 220 | (substring localname 1) localname) |
| 206 | (tramp-fuse-mount-point v))))))) | 221 | (tramp-fuse-mount-point v))))))) |
| 207 | 222 | ||
| 223 | (defcustom tramp-fuse-unmount-on-cleanup nil | ||
| 224 | "Whether fuse volumes shall be unmounted on cleanup." | ||
| 225 | :group 'tramp | ||
| 226 | :version "28.1" | ||
| 227 | :type 'boolean) | ||
| 228 | |||
| 229 | (defun tramp-fuse-cleanup (vec) | ||
| 230 | "Cleanup fuse volume determined by VEC." | ||
| 231 | (and tramp-fuse-unmount-on-cleanup | ||
| 232 | (member (tramp-file-name-unify vec) tramp-fuse-mount-points) | ||
| 233 | (tramp-fuse-unmount vec))) | ||
| 234 | |||
| 235 | (defun tramp-fuse-cleanup-all () | ||
| 236 | "Unmount all fuse volumes used by Tramp." | ||
| 237 | (and tramp-fuse-unmount-on-cleanup | ||
| 238 | (mapc #'tramp-fuse-unmount tramp-fuse-mount-points))) | ||
| 239 | |||
| 240 | ;; Add cleanup hooks. | ||
| 241 | (add-hook 'tramp-cleanup-connection-hook #'tramp-fuse-cleanup) | ||
| 242 | (add-hook 'tramp-cleanup-all-connections-hook #'tramp-fuse-cleanup-all) | ||
| 243 | (add-hook 'kill-emacs-hook #'tramp-fuse-cleanup-all) | ||
| 244 | (add-hook 'tramp-fuse-unload-hook | ||
| 245 | (lambda () | ||
| 246 | (remove-hook 'tramp-cleanup-connection-hook | ||
| 247 | #'tramp-fuse-cleanup) | ||
| 248 | (remove-hook 'tramp-cleanup-all-connections-hook | ||
| 249 | #'tramp-fuse-cleanup-all) | ||
| 250 | (remove-hook 'kill-emacs-hook | ||
| 251 | #'tramp-fuse-cleanup-all))) | ||
| 252 | |||
| 208 | (add-hook 'tramp-unload-hook | 253 | (add-hook 'tramp-unload-hook |
| 209 | (lambda () | 254 | (lambda () |
| 210 | (unload-feature 'tramp-fuse 'force))) | 255 | (unload-feature 'tramp-fuse 'force))) |
diff --git a/lisp/net/tramp-rclone.el b/lisp/net/tramp-rclone.el index 49e366c01c6..812e06f3f11 100644 --- a/lisp/net/tramp-rclone.el +++ b/lisp/net/tramp-rclone.el | |||
| @@ -386,6 +386,7 @@ connection if a previous connection has died for some reason." | |||
| 386 | (tramp-cleanup-connection vec 'keep-debug 'keep-password)) | 386 | (tramp-cleanup-connection vec 'keep-debug 'keep-password)) |
| 387 | 387 | ||
| 388 | ;; Mark it as connected. | 388 | ;; Mark it as connected. |
| 389 | (add-to-list 'tramp-fuse-mount-points (tramp-file-name-unify vec)) | ||
| 389 | (tramp-set-connection-property | 390 | (tramp-set-connection-property |
| 390 | (tramp-get-connection-process vec) "connected" t)))) | 391 | (tramp-get-connection-process vec) "connected" t)))) |
| 391 | 392 | ||
diff --git a/lisp/net/tramp-sshfs.el b/lisp/net/tramp-sshfs.el index 0019ac014f8..2be0485fbf1 100644 --- a/lisp/net/tramp-sshfs.el +++ b/lisp/net/tramp-sshfs.el | |||
| @@ -222,11 +222,14 @@ arguments to pass to the OPERATION." | |||
| 222 | (defun tramp-sshfs-handle-insert-file-contents | 222 | (defun tramp-sshfs-handle-insert-file-contents |
| 223 | (filename &optional visit beg end replace) | 223 | (filename &optional visit beg end replace) |
| 224 | "Like `insert-file-contents' for Tramp files." | 224 | "Like `insert-file-contents' for Tramp files." |
| 225 | (let ((result | 225 | (setq filename (expand-file-name filename)) |
| 226 | (insert-file-contents | 226 | (let (signal-hook-function result) |
| 227 | (tramp-fuse-local-file-name filename) visit beg end replace))) | 227 | (unwind-protect |
| 228 | (when visit (setq buffer-file-name filename)) | 228 | (setq result |
| 229 | (cons (expand-file-name filename) (cdr result)))) | 229 | (insert-file-contents |
| 230 | (tramp-fuse-local-file-name filename) visit beg end replace)) | ||
| 231 | (when visit (setq buffer-file-name filename)) | ||
| 232 | (cons filename (cdr result))))) | ||
| 230 | 233 | ||
| 231 | (defun tramp-sshfs-handle-process-file | 234 | (defun tramp-sshfs-handle-process-file |
| 232 | (program &optional infile destination display &rest args) | 235 | (program &optional infile destination display &rest args) |
| @@ -368,6 +371,7 @@ connection if a previous connection has died for some reason." | |||
| 368 | vec 'file-error "Error mounting %s" (tramp-fuse-mount-spec vec)))) | 371 | vec 'file-error "Error mounting %s" (tramp-fuse-mount-spec vec)))) |
| 369 | 372 | ||
| 370 | ;; Mark it as connected. | 373 | ;; Mark it as connected. |
| 374 | (add-to-list 'tramp-fuse-mount-points (tramp-file-name-unify vec)) | ||
| 371 | (tramp-set-connection-property | 375 | (tramp-set-connection-property |
| 372 | (tramp-get-connection-process vec) "connected" t))) | 376 | (tramp-get-connection-process vec) "connected" t))) |
| 373 | 377 | ||
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 62628363b77..c0f1cb161ec 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el | |||
| @@ -1450,16 +1450,24 @@ If nil, return `tramp-default-port'." | |||
| 1450 | 1450 | ||
| 1451 | (put #'tramp-file-name-port-or-default 'tramp-suppress-trace t) | 1451 | (put #'tramp-file-name-port-or-default 'tramp-suppress-trace t) |
| 1452 | 1452 | ||
| 1453 | (defun tramp-file-name-unify (vec) | ||
| 1454 | "Unify VEC by removing localname and hop from `tramp-file-name' structure. | ||
| 1455 | Objects returned by this function compare `equal' if they refer to the | ||
| 1456 | same connection. Make a copy in order to avoid side effects." | ||
| 1457 | (when (tramp-file-name-p vec) | ||
| 1458 | (setq vec (copy-tramp-file-name vec)) | ||
| 1459 | (setf (tramp-file-name-localname vec) nil | ||
| 1460 | (tramp-file-name-hop vec) nil)) | ||
| 1461 | vec) | ||
| 1462 | |||
| 1463 | (put #'tramp-file-name-unify 'tramp-suppress-trace t) | ||
| 1464 | |||
| 1453 | ;; Comparison of file names is performed by `tramp-equal-remote'. | 1465 | ;; Comparison of file names is performed by `tramp-equal-remote'. |
| 1454 | (defun tramp-file-name-equal-p (vec1 vec2) | 1466 | (defun tramp-file-name-equal-p (vec1 vec2) |
| 1455 | "Check, whether VEC1 and VEC2 denote the same `tramp-file-name'." | 1467 | "Check, whether VEC1 and VEC2 denote the same `tramp-file-name'." |
| 1456 | (and (tramp-file-name-p vec1) (tramp-file-name-p vec2) | 1468 | (and (tramp-file-name-p vec1) (tramp-file-name-p vec2) |
| 1457 | (string-equal (tramp-file-name-method vec1) | 1469 | (equal (tramp-file-name-unify vec1) |
| 1458 | (tramp-file-name-method vec2)) | 1470 | (tramp-file-name-unify vec2)))) |
| 1459 | (string-equal (tramp-file-name-user-domain vec1) | ||
| 1460 | (tramp-file-name-user-domain vec2)) | ||
| 1461 | (string-equal (tramp-file-name-host-port vec1) | ||
| 1462 | (tramp-file-name-host-port vec2)))) | ||
| 1463 | 1471 | ||
| 1464 | (defun tramp-get-method-parameter (vec param) | 1472 | (defun tramp-get-method-parameter (vec param) |
| 1465 | "Return the method parameter PARAM. | 1473 | "Return the method parameter PARAM. |
| @@ -3743,7 +3751,8 @@ User is always nil." | |||
| 3743 | (with-parsed-tramp-file-name filename nil | 3751 | (with-parsed-tramp-file-name filename nil |
| 3744 | (unwind-protect | 3752 | (unwind-protect |
| 3745 | (if (not (file-exists-p filename)) | 3753 | (if (not (file-exists-p filename)) |
| 3746 | (tramp-compat-file-missing v filename) | 3754 | (let ((tramp-verbose (if visit 0 tramp-verbose))) |
| 3755 | (tramp-compat-file-missing v filename)) | ||
| 3747 | 3756 | ||
| 3748 | (with-tramp-progress-reporter | 3757 | (with-tramp-progress-reporter |
| 3749 | v 3 (format-message "Inserting `%s'" filename) | 3758 | v 3 (format-message "Inserting `%s'" filename) |
| @@ -3845,7 +3854,7 @@ User is always nil." | |||
| 3845 | (delete-file (tramp-make-tramp-file-name v remote-copy 'nohop)))) | 3854 | (delete-file (tramp-make-tramp-file-name v remote-copy 'nohop)))) |
| 3846 | 3855 | ||
| 3847 | ;; Result. | 3856 | ;; Result. |
| 3848 | (cons (expand-file-name filename) (cdr result))))) | 3857 | (cons filename (cdr result))))) |
| 3849 | 3858 | ||
| 3850 | (defun tramp-get-lock-file (file) | 3859 | (defun tramp-get-lock-file (file) |
| 3851 | "Read lockfile info of FILE. | 3860 | "Read lockfile info of FILE. |
| @@ -3920,7 +3929,8 @@ Return nil when there is no lockfile." | |||
| 3920 | (tramp-error v 'file-error "Unsafe lock file name"))) | 3929 | (tramp-error v 'file-error "Unsafe lock file name"))) |
| 3921 | 3930 | ||
| 3922 | ;; Do the lock. | 3931 | ;; Do the lock. |
| 3923 | (let (create-lockfiles signal-hook-function) | 3932 | (let ((tramp-verbose 0) |
| 3933 | create-lockfiles signal-hook-function) | ||
| 3924 | (condition-case nil | 3934 | (condition-case nil |
| 3925 | (make-symbolic-link info lockname 'ok-if-already-exists) | 3935 | (make-symbolic-link info lockname 'ok-if-already-exists) |
| 3926 | (error | 3936 | (error |
diff --git a/lisp/org/ob-gnuplot.el b/lisp/org/ob-gnuplot.el index 3c84e4da14f..8c4a5957b99 100644 --- a/lisp/org/ob-gnuplot.el +++ b/lisp/org/ob-gnuplot.el | |||
| @@ -290,7 +290,7 @@ Pass PARAMS through to `orgtbl-to-generic' when exporting TABLE." | |||
| 290 | (orgtbl-to-generic | 290 | (orgtbl-to-generic |
| 291 | table | 291 | table |
| 292 | (org-combine-plists | 292 | (org-combine-plists |
| 293 | '(:sep "\t" :fmt org-babel-gnuplot-quote-tsv-field) | 293 | '(:sep "\t" :fmt org-babel-gnuplot-quote-tsv-field :raw t :backend ascii) |
| 294 | params))))) | 294 | params))))) |
| 295 | data-file) | 295 | data-file) |
| 296 | 296 | ||
diff --git a/lisp/org/ob-julia.el b/lisp/org/ob-julia.el index 5ff6a7ca0a7..4fae0d142b2 100644 --- a/lisp/org/ob-julia.el +++ b/lisp/org/ob-julia.el | |||
| @@ -6,20 +6,20 @@ | |||
| 6 | ;; Keywords: literate programming, reproducible research, scientific computing | 6 | ;; Keywords: literate programming, reproducible research, scientific computing |
| 7 | ;; Homepage: https://github.com/phrb/ob-julia | 7 | ;; Homepage: https://github.com/phrb/ob-julia |
| 8 | 8 | ||
| 9 | ;; This file is not part of GNU Emacs. | 9 | ;; This file is part of GNU Emacs. |
| 10 | 10 | ||
| 11 | ;; This program is free software; you can redistribute it and/or modify | 11 | ;; GNU Emacs is free software: you can redistribute it and/or modify |
| 12 | ;; it under the terms of the GNU General Public License as published by | 12 | ;; it under the terms of the GNU General Public License as published by |
| 13 | ;; the Free Software Foundation, either version 3 of the License, or | 13 | ;; the Free Software Foundation, either version 3 of the License, or |
| 14 | ;; (at your option) any later version. | 14 | ;; (at your option) any later version. |
| 15 | 15 | ||
| 16 | ;; This program is distributed in the hope that it will be useful, | 16 | ;; GNU Emacs is distributed in the hope that it will be useful, |
| 17 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | 17 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 18 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 18 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 19 | ;; GNU General Public License for more details. | 19 | ;; GNU General Public License for more details. |
| 20 | 20 | ||
| 21 | ;; You should have received a copy of the GNU General Public License | 21 | ;; You should have received a copy of the GNU General Public License |
| 22 | ;; along with this program. If not, see <https://www.gnu.org/licenses/>. | 22 | ;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. |
| 23 | 23 | ||
| 24 | ;;; Commentary: | 24 | ;;; Commentary: |
| 25 | 25 | ||
| @@ -90,18 +90,13 @@ This function is called by `org-babel-execute-src-block'." | |||
| 90 | (graphics-file (and (member "graphics" (assq :result-params params)) | 90 | (graphics-file (and (member "graphics" (assq :result-params params)) |
| 91 | (org-babel-graphical-output-file params))) | 91 | (org-babel-graphical-output-file params))) |
| 92 | (colnames-p (unless graphics-file (cdr (assq :colnames params)))) | 92 | (colnames-p (unless graphics-file (cdr (assq :colnames params)))) |
| 93 | ;; (rownames-p (unless graphics-file (cdr (assq :rownames params)))) | ||
| 94 | (full-body (org-babel-expand-body:julia body params graphics-file)) | 93 | (full-body (org-babel-expand-body:julia body params graphics-file)) |
| 95 | (result | 94 | (result |
| 96 | (org-babel-julia-evaluate | 95 | (org-babel-julia-evaluate |
| 97 | session full-body result-type result-params | 96 | session full-body result-type result-params |
| 98 | (or (equal "yes" colnames-p) | 97 | (or (equal "yes" colnames-p) |
| 99 | (org-babel-pick-name | 98 | (org-babel-pick-name |
| 100 | (cdr (assq :colname-names params)) colnames-p)) | 99 | (cdr (assq :colname-names params)) colnames-p))))) |
| 101 | ;; (or (equal "yes" rownames-p) | ||
| 102 | ;; (org-babel-pick-name | ||
| 103 | ;; (cdr (assq :rowname-names params)) rownames-p)) | ||
| 104 | ))) | ||
| 105 | (if graphics-file nil result)))) | 100 | (if graphics-file nil result)))) |
| 106 | 101 | ||
| 107 | (defun org-babel-normalize-newline (result) | 102 | (defun org-babel-normalize-newline (result) |
| @@ -135,12 +130,7 @@ This function is called by `org-babel-execute-src-block'." | |||
| 135 | "Return list of julia statements assigning the block's variables." | 130 | "Return list of julia statements assigning the block's variables." |
| 136 | (let ((vars (org-babel--get-vars params))) | 131 | (let ((vars (org-babel--get-vars params))) |
| 137 | (mapcar | 132 | (mapcar |
| 138 | (lambda (pair) | 133 | (lambda (pair) (org-babel-julia-assign-elisp (car pair) (cdr pair))) |
| 139 | (org-babel-julia-assign-elisp | ||
| 140 | (car pair) (cdr pair) | ||
| 141 | ;; (equal "yes" (cdr (assq :colnames params))) | ||
| 142 | ;; (equal "yes" (cdr (assq :rownames params))) | ||
| 143 | )) | ||
| 144 | (mapcar | 134 | (mapcar |
| 145 | (lambda (i) | 135 | (lambda (i) |
| 146 | (cons (car (nth i vars)) | 136 | (cons (car (nth i vars)) |
| @@ -156,7 +146,7 @@ This function is called by `org-babel-execute-src-block'." | |||
| 156 | (concat "\"" (mapconcat #'identity (split-string s "\"") "\"\"") "\"") | 146 | (concat "\"" (mapconcat #'identity (split-string s "\"") "\"\"") "\"") |
| 157 | (format "%S" s))) | 147 | (format "%S" s))) |
| 158 | 148 | ||
| 159 | (defun org-babel-julia-assign-elisp (name value) ;; colnames-p rownames-p | 149 | (defun org-babel-julia-assign-elisp (name value) |
| 160 | "Construct julia code assigning the elisp VALUE to a variable named NAME." | 150 | "Construct julia code assigning the elisp VALUE to a variable named NAME." |
| 161 | (if (listp value) | 151 | (if (listp value) |
| 162 | (let* ((lengths (mapcar #'length (cl-remove-if-not #'sequencep value))) | 152 | (let* ((lengths (mapcar #'length (cl-remove-if-not #'sequencep value))) |
| @@ -164,11 +154,7 @@ This function is called by `org-babel-execute-src-block'." | |||
| 164 | (min (if lengths (apply #'min lengths) 0))) | 154 | (min (if lengths (apply #'min lengths) 0))) |
| 165 | ;; Ensure VALUE has an orgtbl structure (depth of at least 2). | 155 | ;; Ensure VALUE has an orgtbl structure (depth of at least 2). |
| 166 | (unless (listp (car value)) (setq value (list value))) | 156 | (unless (listp (car value)) (setq value (list value))) |
| 167 | (let ((file (orgtbl-to-csv value '(:fmt org-babel-julia-quote-csv-field))) | 157 | (let ((file (orgtbl-to-csv value '(:fmt org-babel-julia-quote-csv-field)))) |
| 168 | ;; (header (if (or (eq (nth 1 value) 'hline) colnames-p) | ||
| 169 | ;; "TRUE" "FALSE")) | ||
| 170 | ;; (row-names (if rownames-p "1" "NULL")) | ||
| 171 | ) | ||
| 172 | (if (= max min) | 158 | (if (= max min) |
| 173 | (format "%s = begin | 159 | (format "%s = begin |
| 174 | using CSV | 160 | using CSV |
| @@ -188,7 +174,7 @@ end" | |||
| 188 | (let ((session (or session "*Julia*")) | 174 | (let ((session (or session "*Julia*")) |
| 189 | (ess-ask-for-ess-directory | 175 | (ess-ask-for-ess-directory |
| 190 | (and (bound-and-true-p ess-ask-for-ess-directory) | 176 | (and (bound-and-true-p ess-ask-for-ess-directory) |
| 191 | (not (cdr (assq :dir params)))))) | 177 | (not (cdr (assq :dir params)))))) |
| 192 | (if (org-babel-comint-buffer-livep session) | 178 | (if (org-babel-comint-buffer-livep session) |
| 193 | session | 179 | session |
| 194 | ;; FIXME: Depending on `display-buffer-alist', (julia) may end up | 180 | ;; FIXME: Depending on `display-buffer-alist', (julia) may end up |
| @@ -209,14 +195,6 @@ end" | |||
| 209 | (buffer-name)))) | 195 | (buffer-name)))) |
| 210 | (current-buffer)))))) | 196 | (current-buffer)))))) |
| 211 | 197 | ||
| 212 | ; (defun org-babel-julia-associate-session (session) | ||
| 213 | ; "Associate julia code buffer with a julia session. | ||
| 214 | ; Make SESSION be the inferior ESS process associated with the | ||
| 215 | ; current code buffer." | ||
| 216 | ; (setq ess-local-process-name | ||
| 217 | ; (process-name (get-buffer-process session))) | ||
| 218 | ; (ess-make-buffer-current)) | ||
| 219 | |||
| 220 | (defun org-babel-julia-graphical-output-file (params) | 198 | (defun org-babel-julia-graphical-output-file (params) |
| 221 | "Name of file to which julia should send graphical output." | 199 | "Name of file to which julia should send graphical output." |
| 222 | (and (member "graphics" (cdr (assq :result-params params))) | 200 | (and (member "graphics" (cdr (assq :result-params params))) |
| @@ -259,16 +237,16 @@ end" | |||
| 259 | end") | 237 | end") |
| 260 | 238 | ||
| 261 | (defun org-babel-julia-evaluate | 239 | (defun org-babel-julia-evaluate |
| 262 | (session body result-type result-params column-names-p) ;; row-names-p | 240 | (session body result-type result-params column-names-p) |
| 263 | "Evaluate julia code in BODY." | 241 | "Evaluate julia code in BODY." |
| 264 | (if session | 242 | (if session |
| 265 | (org-babel-julia-evaluate-session | 243 | (org-babel-julia-evaluate-session |
| 266 | session body result-type result-params column-names-p) ;; row-names-p | 244 | session body result-type result-params column-names-p) |
| 267 | (org-babel-julia-evaluate-external-process | 245 | (org-babel-julia-evaluate-external-process |
| 268 | body result-type result-params column-names-p))) ;; row-names-p | 246 | body result-type result-params column-names-p))) |
| 269 | 247 | ||
| 270 | (defun org-babel-julia-evaluate-external-process | 248 | (defun org-babel-julia-evaluate-external-process |
| 271 | (body result-type result-params column-names-p) ;; row-names-p | 249 | (body result-type result-params column-names-p) |
| 272 | "Evaluate BODY in external julia process. | 250 | "Evaluate BODY in external julia process. |
| 273 | If RESULT-TYPE equals 'output then return standard output as a | 251 | If RESULT-TYPE equals 'output then return standard output as a |
| 274 | string. If RESULT-TYPE equals 'value then return the value of the | 252 | string. If RESULT-TYPE equals 'value then return the value of the |
| @@ -292,7 +270,7 @@ last statement in BODY, as elisp." | |||
| 292 | (output (org-babel-eval org-babel-julia-command body)))) | 270 | (output (org-babel-eval org-babel-julia-command body)))) |
| 293 | 271 | ||
| 294 | (defun org-babel-julia-evaluate-session | 272 | (defun org-babel-julia-evaluate-session |
| 295 | (session body result-type result-params column-names-p) ;; row-names-p | 273 | (session body result-type result-params column-names-p) |
| 296 | "Evaluate BODY in SESSION. | 274 | "Evaluate BODY in SESSION. |
| 297 | If RESULT-TYPE equals 'output then return standard output as a | 275 | If RESULT-TYPE equals 'output then return standard output as a |
| 298 | string. If RESULT-TYPE equals 'value then return the value of the | 276 | string. If RESULT-TYPE equals 'value then return the value of the |
diff --git a/lisp/org/oc-basic.el b/lisp/org/oc-basic.el index 3b589908e04..98242f3b841 100644 --- a/lisp/org/oc-basic.el +++ b/lisp/org/oc-basic.el | |||
| @@ -4,18 +4,20 @@ | |||
| 4 | 4 | ||
| 5 | ;; Author: Nicolas Goaziou <mail@nicolasgoaziou.fr> | 5 | ;; Author: Nicolas Goaziou <mail@nicolasgoaziou.fr> |
| 6 | 6 | ||
| 7 | ;; This program is free software; you can redistribute it and/or modify | 7 | ;; This file is part of GNU Emacs. |
| 8 | |||
| 9 | ;; GNU Emacs is free software: you can redistribute it and/or modify | ||
| 8 | ;; it under the terms of the GNU General Public License as published by | 10 | ;; it under the terms of the GNU General Public License as published by |
| 9 | ;; the Free Software Foundation, either version 3 of the License, or | 11 | ;; the Free Software Foundation, either version 3 of the License, or |
| 10 | ;; (at your option) any later version. | 12 | ;; (at your option) any later version. |
| 11 | 13 | ||
| 12 | ;; This program is distributed in the hope that it will be useful, | 14 | ;; GNU Emacs is distributed in the hope that it will be useful, |
| 13 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | 15 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 14 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 16 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 15 | ;; GNU General Public License for more details. | 17 | ;; GNU General Public License for more details. |
| 16 | 18 | ||
| 17 | ;; You should have received a copy of the GNU General Public License | 19 | ;; You should have received a copy of the GNU General Public License |
| 18 | ;; along with this program. If not, see <https://www.gnu.org/licenses/>. | 20 | ;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. |
| 19 | 21 | ||
| 20 | ;;; Commentary: | 22 | ;;; Commentary: |
| 21 | 23 | ||
| @@ -87,42 +89,42 @@ | |||
| 87 | :group 'org-cite | 89 | :group 'org-cite |
| 88 | :package-version '(Org . "9.5") | 90 | :package-version '(Org . "9.5") |
| 89 | :type 'symbol | 91 | :type 'symbol |
| 90 | :safe t) | 92 | :safe #'symbolp) |
| 91 | 93 | ||
| 92 | (defcustom org-cite-basic-author-year-separator ", " | 94 | (defcustom org-cite-basic-author-year-separator ", " |
| 93 | "String used to separate cites in an author-year configuration." | 95 | "String used to separate cites in an author-year configuration." |
| 94 | :group 'org-cite | 96 | :group 'org-cite |
| 95 | :package-version '(Org . "9.5") | 97 | :package-version '(Org . "9.5") |
| 96 | :type 'string | 98 | :type 'string |
| 97 | :safe t) | 99 | :safe #'stringp) |
| 98 | 100 | ||
| 99 | (defcustom org-cite-basic-max-key-distance 2 | 101 | (defcustom org-cite-basic-max-key-distance 2 |
| 100 | "Maximum (Levenshtein) distance between a wrong key and its suggestions." | 102 | "Maximum (Levenshtein) distance between a wrong key and its suggestions." |
| 101 | :group 'org-cite | 103 | :group 'org-cite |
| 102 | :package-version '(Org . "9.5") | 104 | :package-version '(Org . "9.5") |
| 103 | :type 'integer | 105 | :type 'integer |
| 104 | :safe t) | 106 | :safe #'integerp) |
| 105 | 107 | ||
| 106 | (defcustom org-cite-basic-author-column-end 25 | 108 | (defcustom org-cite-basic-author-column-end 25 |
| 107 | "Column where author field ends in completion table, as an integer." | 109 | "Column where author field ends in completion table, as an integer." |
| 108 | :group 'org-cite | 110 | :group 'org-cite |
| 109 | :package-version '(Org . "9.5") | 111 | :package-version '(Org . "9.5") |
| 110 | :type 'integer | 112 | :type 'integer |
| 111 | :safe t) | 113 | :safe #'integerp) |
| 112 | 114 | ||
| 113 | (defcustom org-cite-basic-column-separator " " | 115 | (defcustom org-cite-basic-column-separator " " |
| 114 | "Column separator in completion table, as a string." | 116 | "Column separator in completion table, as a string." |
| 115 | :group 'org-cite | 117 | :group 'org-cite |
| 116 | :package-version '(Org . "9.5") | 118 | :package-version '(Org . "9.5") |
| 117 | :type 'string | 119 | :type 'string |
| 118 | :safe t) | 120 | :safe #'stringp) |
| 119 | 121 | ||
| 120 | (defcustom org-cite-basic-mouse-over-key-face 'highlight | 122 | (defcustom org-cite-basic-mouse-over-key-face 'highlight |
| 121 | "Face used when mouse is over a citation key." | 123 | "Face used when mouse is over a citation key." |
| 122 | :group 'org-cite | 124 | :group 'org-cite |
| 123 | :package-version '(Org . "9.5") | 125 | :package-version '(Org . "9.5") |
| 124 | :type 'face | 126 | :type 'face |
| 125 | :safe t) | 127 | :safe #'facep) |
| 126 | 128 | ||
| 127 | 129 | ||
| 128 | ;;; Internal variables | 130 | ;;; Internal variables |
diff --git a/lisp/org/oc-biblatex.el b/lisp/org/oc-biblatex.el index a27f9e9bf10..f517e391398 100644 --- a/lisp/org/oc-biblatex.el +++ b/lisp/org/oc-biblatex.el | |||
| @@ -4,18 +4,20 @@ | |||
| 4 | 4 | ||
| 5 | ;; Author: Nicolas Goaziou <mail@nicolasgoaziou.fr> | 5 | ;; Author: Nicolas Goaziou <mail@nicolasgoaziou.fr> |
| 6 | 6 | ||
| 7 | ;; This program is free software; you can redistribute it and/or modify | 7 | ;; This file is part of GNU Emacs. |
| 8 | |||
| 9 | ;; GNU Emacs is free software: you can redistribute it and/or modify | ||
| 8 | ;; it under the terms of the GNU General Public License as published by | 10 | ;; it under the terms of the GNU General Public License as published by |
| 9 | ;; the Free Software Foundation, either version 3 of the License, or | 11 | ;; the Free Software Foundation, either version 3 of the License, or |
| 10 | ;; (at your option) any later version. | 12 | ;; (at your option) any later version. |
| 11 | 13 | ||
| 12 | ;; This program is distributed in the hope that it will be useful, | 14 | ;; GNU Emacs is distributed in the hope that it will be useful, |
| 13 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | 15 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 14 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 16 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 15 | ;; GNU General Public License for more details. | 17 | ;; GNU General Public License for more details. |
| 16 | 18 | ||
| 17 | ;; You should have received a copy of the GNU General Public License | 19 | ;; You should have received a copy of the GNU General Public License |
| 18 | ;; along with this program. If not, see <https://www.gnu.org/licenses/>. | 20 | ;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. |
| 19 | 21 | ||
| 20 | ;;; Commentary: | 22 | ;;; Commentary: |
| 21 | 23 | ||
| @@ -78,7 +80,7 @@ If \"biblatex\" package is already required in the document, e.g., through | |||
| 78 | :type '(choice | 80 | :type '(choice |
| 79 | (string :tag "Options (key=value,key2=value2...)") | 81 | (string :tag "Options (key=value,key2=value2...)") |
| 80 | (const :tag "No option" nil)) | 82 | (const :tag "No option" nil)) |
| 81 | :safe t) | 83 | :safe #'string-or-null-p) |
| 82 | 84 | ||
| 83 | 85 | ||
| 84 | ;;; Internal functions | 86 | ;;; Internal functions |
diff --git a/lisp/org/oc-csl.el b/lisp/org/oc-csl.el index 5623efcc1b3..3d138807592 100644 --- a/lisp/org/oc-csl.el +++ b/lisp/org/oc-csl.el | |||
| @@ -4,18 +4,20 @@ | |||
| 4 | 4 | ||
| 5 | ;; Author: Nicolas Goaziou <mail@nicolasgoaziou.fr> | 5 | ;; Author: Nicolas Goaziou <mail@nicolasgoaziou.fr> |
| 6 | 6 | ||
| 7 | ;; This program is free software; you can redistribute it and/or modify | 7 | ;; This file is part of GNU Emacs. |
| 8 | |||
| 9 | ;; GNU Emacs is free software: you can redistribute it and/or modify | ||
| 8 | ;; it under the terms of the GNU General Public License as published by | 10 | ;; it under the terms of the GNU General Public License as published by |
| 9 | ;; the Free Software Foundation, either version 3 of the License, or | 11 | ;; the Free Software Foundation, either version 3 of the License, or |
| 10 | ;; (at your option) any later version. | 12 | ;; (at your option) any later version. |
| 11 | 13 | ||
| 12 | ;; This program is distributed in the hope that it will be useful, | 14 | ;; GNU Emacs is distributed in the hope that it will be useful, |
| 13 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | 15 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 14 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 16 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 15 | ;; GNU General Public License for more details. | 17 | ;; GNU General Public License for more details. |
| 16 | 18 | ||
| 17 | ;; You should have received a copy of the GNU General Public License | 19 | ;; You should have received a copy of the GNU General Public License |
| 18 | ;; along with this program. If not, see <https://www.gnu.org/licenses/>. | 20 | ;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. |
| 19 | 21 | ||
| 20 | ;;; Commentary: | 22 | ;;; Commentary: |
| 21 | 23 | ||
| @@ -125,7 +127,9 @@ If nil then only the fallback en-US locale will be available." | |||
| 125 | :type '(choice | 127 | :type '(choice |
| 126 | (directory :tag "Locales directory") | 128 | (directory :tag "Locales directory") |
| 127 | (const :tag "Use en-US locale only" nil)) | 129 | (const :tag "Use en-US locale only" nil)) |
| 128 | :safe t) | 130 | ;; It's not obvious to me that arbitrary locations are safe. |
| 131 | ;;; :safe #'string-or-null-p | ||
| 132 | ) | ||
| 129 | 133 | ||
| 130 | (defcustom org-cite-csl-styles-dir nil | 134 | (defcustom org-cite-csl-styles-dir nil |
| 131 | "Directory of CSL style files. | 135 | "Directory of CSL style files. |
| @@ -136,7 +140,9 @@ directory. This variable is ignored when style file is absolute." | |||
| 136 | :type '(choice | 140 | :type '(choice |
| 137 | (directory :tag "Styles directory") | 141 | (directory :tag "Styles directory") |
| 138 | (const :tag "Use absolute file names" nil)) | 142 | (const :tag "Use absolute file names" nil)) |
| 139 | :safe t) | 143 | ;; It's not obvious to me that arbitrary locations are safe. |
| 144 | ;;; :safe #'string-or-null-p | ||
| 145 | ) | ||
| 140 | 146 | ||
| 141 | ;;;; Citelinks | 147 | ;;;; Citelinks |
| 142 | (defcustom org-cite-csl-link-cites t | 148 | (defcustom org-cite-csl-link-cites t |
| @@ -144,7 +150,7 @@ directory. This variable is ignored when style file is absolute." | |||
| 144 | :group 'org-cite | 150 | :group 'org-cite |
| 145 | :package-version '(Org . "9.5") | 151 | :package-version '(Org . "9.5") |
| 146 | :type 'boolean | 152 | :type 'boolean |
| 147 | :safe t) | 153 | :safe #'booleanp) |
| 148 | 154 | ||
| 149 | (defcustom org-cite-csl-no-citelinks-backends '(ascii) | 155 | (defcustom org-cite-csl-no-citelinks-backends '(ascii) |
| 150 | "List of export back-ends for which cite linking is disabled. | 156 | "List of export back-ends for which cite linking is disabled. |
| @@ -152,8 +158,7 @@ Cite linking for export back-ends derived from any of the back-ends listed here, | |||
| 152 | is also disabled." | 158 | is also disabled." |
| 153 | :group 'org-cite | 159 | :group 'org-cite |
| 154 | :package-version '(Org . "9.5") | 160 | :package-version '(Org . "9.5") |
| 155 | :type '(repeat symbol) | 161 | :type '(repeat symbol)) |
| 156 | :safe t) | ||
| 157 | 162 | ||
| 158 | ;;;; Output-specific variables | 163 | ;;;; Output-specific variables |
| 159 | (defcustom org-cite-csl-html-hanging-indent "1.5em" | 164 | (defcustom org-cite-csl-html-hanging-indent "1.5em" |
| @@ -161,7 +166,7 @@ is also disabled." | |||
| 161 | :group 'org-cite | 166 | :group 'org-cite |
| 162 | :package-version '(Org . "9.5") | 167 | :package-version '(Org . "9.5") |
| 163 | :type 'string | 168 | :type 'string |
| 164 | :safe t) | 169 | :safe #'stringp) |
| 165 | 170 | ||
| 166 | (defcustom org-cite-csl-html-label-width-per-char "0.6em" | 171 | (defcustom org-cite-csl-html-label-width-per-char "0.6em" |
| 167 | "Character width in CSS units for calculating entry label widths. | 172 | "Character width in CSS units for calculating entry label widths. |
| @@ -169,27 +174,33 @@ Used only when `second-field-align' is activated by the used CSL style." | |||
| 169 | :group 'org-cite | 174 | :group 'org-cite |
| 170 | :package-version '(Org . "9.5") | 175 | :package-version '(Org . "9.5") |
| 171 | :type 'string | 176 | :type 'string |
| 172 | :safe t) | 177 | :safe #'stringp) |
| 173 | 178 | ||
| 174 | (defcustom org-cite-csl-latex-hanging-indent "1.5em" | 179 | (defcustom org-cite-csl-latex-hanging-indent "1.5em" |
| 175 | "Size of hanging-indent for LaTeX output in valid LaTeX units." | 180 | "Size of hanging-indent for LaTeX output in valid LaTeX units." |
| 176 | :group 'org-cite | 181 | :group 'org-cite |
| 177 | :package-version '(Org . "9.5") | 182 | :package-version '(Org . "9.5") |
| 178 | :type 'string | 183 | :type 'string |
| 179 | :safe t) | 184 | :safe #'stringp) |
| 180 | 185 | ||
| 181 | 186 | ||
| 182 | ;;; Internal variables | 187 | ;;; Internal variables |
| 183 | (defconst org-cite-csl--etc-dir | 188 | (defconst org-cite-csl--etc-dir |
| 184 | (let* ((oc-root (file-name-directory (locate-library "oc"))) | 189 | (let ((oc-root (file-name-directory (locate-library "oc")))) |
| 185 | (oc-etc-dir-1 (expand-file-name "../etc/csl/" oc-root))) | 190 | (cond |
| 186 | ;; package.el and straight will put all of org-mode/lisp/ in org-mode/. | 191 | ;; First check whether it looks like we're running from the main |
| 187 | ;; This will cause .. to resolve to the directory above Org. | 192 | ;; Org repository. |
| 188 | ;; To make life easier for people using package.el or straight, we can | 193 | ((let ((csl-org (expand-file-name "../etc/csl/" oc-root))) |
| 189 | ;; check to see if ../etc/csl exists, and if it doesn't try ./etc/csl. | 194 | (and (file-directory-p csl-org) csl-org))) |
| 190 | (if (file-exists-p oc-etc-dir-1) oc-etc-dir-1 | 195 | ;; Next look for the directory alongside oc.el because package.el |
| 191 | (expand-file-name "etc/csl/" oc-root))) | 196 | ;; and straight will put all of org-mode/lisp/ in org-mode/. |
| 192 | "Directory \"etc/\" from repository.") | 197 | ((let ((csl-pkg (expand-file-name "etc/csl/" oc-root))) |
| 198 | (and (file-directory-p csl-pkg) csl-pkg))) | ||
| 199 | ;; Finally fall back the location used by shared system installs | ||
| 200 | ;; and when running directly from Emacs repository. | ||
| 201 | (t | ||
| 202 | (expand-file-name "org/csl/" data-directory)))) | ||
| 203 | "Directory containing CSL-related data files.") | ||
| 193 | 204 | ||
| 194 | (defconst org-cite-csl--fallback-locales-dir org-cite-csl--etc-dir | 205 | (defconst org-cite-csl--fallback-locales-dir org-cite-csl--etc-dir |
| 195 | "Fallback CSL locale files directory.") | 206 | "Fallback CSL locale files directory.") |
diff --git a/lisp/org/oc-natbib.el b/lisp/org/oc-natbib.el index 7e2127bd8d9..13cac9ed0b9 100644 --- a/lisp/org/oc-natbib.el +++ b/lisp/org/oc-natbib.el | |||
| @@ -4,18 +4,20 @@ | |||
| 4 | 4 | ||
| 5 | ;; Author: Nicolas Goaziou <mail@nicolasgoaziou.fr> | 5 | ;; Author: Nicolas Goaziou <mail@nicolasgoaziou.fr> |
| 6 | 6 | ||
| 7 | ;; This program is free software; you can redistribute it and/or modify | 7 | ;; This file is part of GNU Emacs. |
| 8 | |||
| 9 | ;; GNU Emacs is free software: you can redistribute it and/or modify | ||
| 8 | ;; it under the terms of the GNU General Public License as published by | 10 | ;; it under the terms of the GNU General Public License as published by |
| 9 | ;; the Free Software Foundation, either version 3 of the License, or | 11 | ;; the Free Software Foundation, either version 3 of the License, or |
| 10 | ;; (at your option) any later version. | 12 | ;; (at your option) any later version. |
| 11 | 13 | ||
| 12 | ;; This program is distributed in the hope that it will be useful, | 14 | ;; GNU Emacs is distributed in the hope that it will be useful, |
| 13 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | 15 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 14 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 16 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 15 | ;; GNU General Public License for more details. | 17 | ;; GNU General Public License for more details. |
| 16 | 18 | ||
| 17 | ;; You should have received a copy of the GNU General Public License | 19 | ;; You should have received a copy of the GNU General Public License |
| 18 | ;; along with this program. If not, see <https://www.gnu.org/licenses/>. | 20 | ;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. |
| 19 | 21 | ||
| 20 | ;;; Commentary: | 22 | ;;; Commentary: |
| 21 | 23 | ||
| @@ -69,8 +71,7 @@ If \"natbib\" package is already required in the document, e.g., through | |||
| 69 | (const :tag "order as above, but numerical citations are compressed if possible" sort&compress) | 71 | (const :tag "order as above, but numerical citations are compressed if possible" sort&compress) |
| 70 | (const :tag "display full author list on first citation, abbreviate the others" longnamesfirst) | 72 | (const :tag "display full author list on first citation, abbreviate the others" longnamesfirst) |
| 71 | (const :tag "redefine \\thebibliography to issue \\section* instead of \\chapter*" sectionbib) | 73 | (const :tag "redefine \\thebibliography to issue \\section* instead of \\chapter*" sectionbib) |
| 72 | (const :tag "keep all the authors' names in a citation on one line" nonamebreak)) | 74 | (const :tag "keep all the authors' names in a citation on one line" nonamebreak))) |
| 73 | :safe t) | ||
| 74 | 75 | ||
| 75 | 76 | ||
| 76 | ;;; Internal functions | 77 | ;;; Internal functions |
diff --git a/lisp/org/oc.el b/lisp/org/oc.el index eb2b7a16953..bbf2195fbd8 100644 --- a/lisp/org/oc.el +++ b/lisp/org/oc.el | |||
| @@ -4,18 +4,20 @@ | |||
| 4 | 4 | ||
| 5 | ;; Author: Nicolas Goaziou <mail@nicolasgoaziou.fr> | 5 | ;; Author: Nicolas Goaziou <mail@nicolasgoaziou.fr> |
| 6 | 6 | ||
| 7 | ;; This program is free software; you can redistribute it and/or modify | 7 | ;; This file is part of GNU Emacs. |
| 8 | |||
| 9 | ;; GNU Emacs is free software: you can redistribute it and/or modify | ||
| 8 | ;; it under the terms of the GNU General Public License as published by | 10 | ;; it under the terms of the GNU General Public License as published by |
| 9 | ;; the Free Software Foundation, either version 3 of the License, or | 11 | ;; the Free Software Foundation, either version 3 of the License, or |
| 10 | ;; (at your option) any later version. | 12 | ;; (at your option) any later version. |
| 11 | 13 | ||
| 12 | ;; This program is distributed in the hope that it will be useful, | 14 | ;; GNU Emacs is distributed in the hope that it will be useful, |
| 13 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | 15 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 14 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 16 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 15 | ;; GNU General Public License for more details. | 17 | ;; GNU General Public License for more details. |
| 16 | 18 | ||
| 17 | ;; You should have received a copy of the GNU General Public License | 19 | ;; You should have received a copy of the GNU General Public License |
| 18 | ;; along with this program. If not, see <https://www.gnu.org/licenses/>. | 20 | ;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. |
| 19 | 21 | ||
| 20 | ;;; Commentary: | 22 | ;;; Commentary: |
| 21 | 23 | ||
| @@ -125,16 +127,14 @@ File names must be absolute." | |||
| 125 | :package-version '(Org . "9.5") | 127 | :package-version '(Org . "9.5") |
| 126 | :type '(choice (const :tag "No global bibliography" nil) | 128 | :type '(choice (const :tag "No global bibliography" nil) |
| 127 | (repeat :tag "List of bibliography files" | 129 | (repeat :tag "List of bibliography files" |
| 128 | (file :tag "Bibliography"))) | 130 | (file :tag "Bibliography")))) |
| 129 | :safe t) | ||
| 130 | 131 | ||
| 131 | (defcustom org-cite-activate-processor 'basic | 132 | (defcustom org-cite-activate-processor 'basic |
| 132 | "Processor used for activating citations, as a symbol." | 133 | "Processor used for activating citations, as a symbol." |
| 133 | :group 'org-cite | 134 | :group 'org-cite |
| 134 | :package-version '(Org . "9.5") | 135 | :package-version '(Org . "9.5") |
| 135 | :type '(choice (const :tag "Default fontification" nil) | 136 | :type '(choice (const :tag "Default fontification" nil) |
| 136 | (symbol :tag "Citation processor")) | 137 | (symbol :tag "Citation processor"))) |
| 137 | :safe nil) | ||
| 138 | 138 | ||
| 139 | (defcustom org-cite-export-processors '((t basic)) | 139 | (defcustom org-cite-export-processors '((t basic)) |
| 140 | "Processor used for exporting citations, as a triplet, or nil. | 140 | "Processor used for exporting citations, as a triplet, or nil. |
| @@ -198,24 +198,21 @@ back-end." | |||
| 198 | (string :tag "Use specific bibliography style")) | 198 | (string :tag "Use specific bibliography style")) |
| 199 | (choice | 199 | (choice |
| 200 | (const :tag "Default citation style" nil) | 200 | (const :tag "Default citation style" nil) |
| 201 | (string :tag "Use specific citation style"))))) | 201 | (string :tag "Use specific citation style")))))) |
| 202 | :safe nil) | ||
| 203 | 202 | ||
| 204 | (defcustom org-cite-follow-processor 'basic | 203 | (defcustom org-cite-follow-processor 'basic |
| 205 | "Processor used for following citations, as a symbol." | 204 | "Processor used for following citations, as a symbol." |
| 206 | :group 'org-cite | 205 | :group 'org-cite |
| 207 | :package-version '(Org . "9.5") | 206 | :package-version '(Org . "9.5") |
| 208 | :type '(choice (const :tag "No following" nil) | 207 | :type '(choice (const :tag "No following" nil) |
| 209 | (symbol :tag "Citation processor")) | 208 | (symbol :tag "Citation processor"))) |
| 210 | :safe nil) | ||
| 211 | 209 | ||
| 212 | (defcustom org-cite-insert-processor 'basic | 210 | (defcustom org-cite-insert-processor 'basic |
| 213 | "Processor used for inserting citations, as a symbol." | 211 | "Processor used for inserting citations, as a symbol." |
| 214 | :group 'org-cite | 212 | :group 'org-cite |
| 215 | :package-version '(Org . "9.5") | 213 | :package-version '(Org . "9.5") |
| 216 | :type '(choice (const :tag "No insertion" nil) | 214 | :type '(choice (const :tag "No insertion" nil) |
| 217 | (symbol :tag "Citation processor")) | 215 | (symbol :tag "Citation processor"))) |
| 218 | :safe nil) | ||
| 219 | 216 | ||
| 220 | (defcustom org-cite-adjust-note-numbers t | 217 | (defcustom org-cite-adjust-note-numbers t |
| 221 | "When non-nil, allow process to modify location of note numbers. | 218 | "When non-nil, allow process to modify location of note numbers. |
| @@ -232,7 +229,7 @@ When nil, the note number is not moved." | |||
| 232 | :package-version '(Org . "9.5") | 229 | :package-version '(Org . "9.5") |
| 233 | :type '(choice (const :tag "Automatic note number location" t) | 230 | :type '(choice (const :tag "Automatic note number location" t) |
| 234 | (const :tag "Place note numbers manually" nil)) | 231 | (const :tag "Place note numbers manually" nil)) |
| 235 | :safe t) | 232 | :safe #'booleanp) |
| 236 | 233 | ||
| 237 | (defcustom org-cite-note-rules | 234 | (defcustom org-cite-note-rules |
| 238 | '(("en-us" inside outside after) | 235 | '(("en-us" inside outside after) |
| @@ -297,8 +294,7 @@ This roughly follows the Oxford Guide to Style recommendations." | |||
| 297 | (const :tag "Citation next to punctuation" same)) | 294 | (const :tag "Citation next to punctuation" same)) |
| 298 | (choice :tag "Order of citation and punctuation" | 295 | (choice :tag "Order of citation and punctuation" |
| 299 | (const :tag "Citation first" before) | 296 | (const :tag "Citation first" before) |
| 300 | (const :tag "Citation last" after)))) | 297 | (const :tag "Citation last" after))))) |
| 301 | :safe t) | ||
| 302 | 298 | ||
| 303 | (defcustom org-cite-punctuation-marks '("." "," ";" ":" "!" "?") | 299 | (defcustom org-cite-punctuation-marks '("." "," ";" ":" "!" "?") |
| 304 | "List of strings that can be moved around when placing note numbers. | 300 | "List of strings that can be moved around when placing note numbers. |
| @@ -308,8 +304,7 @@ allowed to shuffle punctuation marks specified in this list in order to | |||
| 308 | place note numbers according to rules defined in `org-cite-note-rules'." | 304 | place note numbers according to rules defined in `org-cite-note-rules'." |
| 309 | :group 'org-cite | 305 | :group 'org-cite |
| 310 | :package-version '(Org . "9.5") | 306 | :package-version '(Org . "9.5") |
| 311 | :type '(repeat string) | 307 | :type '(repeat string)) |
| 312 | :safe t) | ||
| 313 | 308 | ||
| 314 | 309 | ||
| 315 | ;;; Citation processors | 310 | ;;; Citation processors |
diff --git a/lisp/org/ol-doi.el b/lisp/org/ol-doi.el index dfde380209f..d2d16b27d51 100644 --- a/lisp/org/ol-doi.el +++ b/lisp/org/ol-doi.el | |||
| @@ -1,21 +1,23 @@ | |||
| 1 | ;;; ol-doi.el --- DOI links support in Org -*- lexical-binding: t; -*- | 1 | ;;; ol-doi.el --- DOI links support in Org -*- lexical-binding: t; -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2021 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2021 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Nicolas Goaziou <mail@nicolasgoaziou.fr> | 5 | ;; Author: Nicolas Goaziou <mail@nicolasgoaziou.fr> |
| 6 | 6 | ||
| 7 | ;; This program is free software; you can redistribute it and/or modify | 7 | ;; This file is part of GNU Emacs. |
| 8 | |||
| 9 | ;; GNU Emacs is free software: you can redistribute it and/or modify | ||
| 8 | ;; it under the terms of the GNU General Public License as published by | 10 | ;; it under the terms of the GNU General Public License as published by |
| 9 | ;; the Free Software Foundation, either version 3 of the License, or | 11 | ;; the Free Software Foundation, either version 3 of the License, or |
| 10 | ;; (at your option) any later version. | 12 | ;; (at your option) any later version. |
| 11 | 13 | ||
| 12 | ;; This program is distributed in the hope that it will be useful, | 14 | ;; GNU Emacs is distributed in the hope that it will be useful, |
| 13 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | 15 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 14 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 16 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 15 | ;; GNU General Public License for more details. | 17 | ;; GNU General Public License for more details. |
| 16 | 18 | ||
| 17 | ;; You should have received a copy of the GNU General Public License | 19 | ;; You should have received a copy of the GNU General Public License |
| 18 | ;; along with this program. If not, see <https://www.gnu.org/licenses/>. | 20 | ;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. |
| 19 | 21 | ||
| 20 | ;;; Commentary: | 22 | ;;; Commentary: |
| 21 | 23 | ||
diff --git a/lisp/org/ol.el b/lisp/org/ol.el index e4a5a278dda..aa1849715c3 100644 --- a/lisp/org/ol.el +++ b/lisp/org/ol.el | |||
| @@ -178,8 +178,7 @@ link. | |||
| 178 | :group 'org-link | 178 | :group 'org-link |
| 179 | :package-version '(Org . "9.1") | 179 | :package-version '(Org . "9.1") |
| 180 | :type '(alist :tag "Link display parameters" | 180 | :type '(alist :tag "Link display parameters" |
| 181 | :value-type plist) | 181 | :value-type plist)) |
| 182 | :safe nil) | ||
| 183 | 182 | ||
| 184 | (defcustom org-link-descriptive t | 183 | (defcustom org-link-descriptive t |
| 185 | "Non-nil means Org displays descriptive links. | 184 | "Non-nil means Org displays descriptive links. |
| @@ -335,8 +334,7 @@ another window." | |||
| 335 | (cons (const wl) | 334 | (cons (const wl) |
| 336 | (choice | 335 | (choice |
| 337 | (const wl) | 336 | (const wl) |
| 338 | (const wl-other-frame)))) | 337 | (const wl-other-frame))))) |
| 339 | :safe nil) | ||
| 340 | 338 | ||
| 341 | (defcustom org-link-search-must-match-exact-headline 'query-to-create | 339 | (defcustom org-link-search-must-match-exact-headline 'query-to-create |
| 342 | "Non-nil means internal fuzzy links can only match headlines. | 340 | "Non-nil means internal fuzzy links can only match headlines. |
| @@ -385,15 +383,13 @@ single keystroke rather than having to type \"yes\"." | |||
| 385 | :type '(choice | 383 | :type '(choice |
| 386 | (const :tag "with yes-or-no (safer)" yes-or-no-p) | 384 | (const :tag "with yes-or-no (safer)" yes-or-no-p) |
| 387 | (const :tag "with y-or-n (faster)" y-or-n-p) | 385 | (const :tag "with y-or-n (faster)" y-or-n-p) |
| 388 | (const :tag "no confirmation (dangerous)" nil)) | 386 | (const :tag "no confirmation (dangerous)" nil))) |
| 389 | :safe nil) | ||
| 390 | 387 | ||
| 391 | (defcustom org-link-shell-skip-confirm-regexp "" | 388 | (defcustom org-link-shell-skip-confirm-regexp "" |
| 392 | "Regexp to skip confirmation for shell links." | 389 | "Regexp to skip confirmation for shell links." |
| 393 | :group 'org-link-follow | 390 | :group 'org-link-follow |
| 394 | :version "24.1" | 391 | :version "24.1" |
| 395 | :type 'regexp | 392 | :type 'regexp) |
| 396 | :safe nil) | ||
| 397 | 393 | ||
| 398 | (defcustom org-link-elisp-confirm-function 'yes-or-no-p | 394 | (defcustom org-link-elisp-confirm-function 'yes-or-no-p |
| 399 | "Non-nil means ask for confirmation before executing Emacs Lisp links. | 395 | "Non-nil means ask for confirmation before executing Emacs Lisp links. |
| @@ -410,15 +406,13 @@ single keystroke rather than having to type \"yes\"." | |||
| 410 | :type '(choice | 406 | :type '(choice |
| 411 | (const :tag "with yes-or-no (safer)" yes-or-no-p) | 407 | (const :tag "with yes-or-no (safer)" yes-or-no-p) |
| 412 | (const :tag "with y-or-n (faster)" y-or-n-p) | 408 | (const :tag "with y-or-n (faster)" y-or-n-p) |
| 413 | (const :tag "no confirmation (dangerous)" nil)) | 409 | (const :tag "no confirmation (dangerous)" nil))) |
| 414 | :safe nil) | ||
| 415 | 410 | ||
| 416 | (defcustom org-link-elisp-skip-confirm-regexp "" | 411 | (defcustom org-link-elisp-skip-confirm-regexp "" |
| 417 | "A regexp to skip confirmation for Elisp links." | 412 | "A regexp to skip confirmation for Elisp links." |
| 418 | :group 'org-link-follow | 413 | :group 'org-link-follow |
| 419 | :version "24.1" | 414 | :version "24.1" |
| 420 | :type 'regexp | 415 | :type 'regexp) |
| 421 | :safe nil) | ||
| 422 | 416 | ||
| 423 | (defgroup org-link-store nil | 417 | (defgroup org-link-store nil |
| 424 | "Options concerning storing links in Org mode." | 418 | "Options concerning storing links in Org mode." |
diff --git a/lisp/org/org-keys.el b/lisp/org/org-keys.el index 2984a4f5145..a10db7e6667 100644 --- a/lisp/org/org-keys.el +++ b/lisp/org/org-keys.el | |||
| @@ -279,8 +279,7 @@ before org.el is loaded." | |||
| 279 | :type '(choice | 279 | :type '(choice |
| 280 | (const :tag "A double click follows the link" double) | 280 | (const :tag "A double click follows the link" double) |
| 281 | (const :tag "Unconditionally follow the link with mouse-1" t) | 281 | (const :tag "Unconditionally follow the link with mouse-1" t) |
| 282 | (integer :tag "mouse-1 click does not follow the link if longer than N ms" 450)) | 282 | (integer :tag "mouse-1 click does not follow the link if longer than N ms" 450))) |
| 283 | :safe t) | ||
| 284 | 283 | ||
| 285 | (defcustom org-tab-follows-link nil | 284 | (defcustom org-tab-follows-link nil |
| 286 | "Non-nil means on links TAB will follow the link. | 285 | "Non-nil means on links TAB will follow the link. |
| @@ -300,7 +299,7 @@ implementation is bad." | |||
| 300 | In tables, the special behavior of RET has precedence." | 299 | In tables, the special behavior of RET has precedence." |
| 301 | :group 'org-link-follow | 300 | :group 'org-link-follow |
| 302 | :type 'boolean | 301 | :type 'boolean |
| 303 | :safe t) | 302 | :safe #'booleanp) |
| 304 | 303 | ||
| 305 | 304 | ||
| 306 | ;;; Functions | 305 | ;;; Functions |
diff --git a/lisp/org/org-macs.el b/lisp/org/org-macs.el index a8fb79ea3cd..0779c3a82c8 100644 --- a/lisp/org/org-macs.el +++ b/lisp/org/org-macs.el | |||
| @@ -326,17 +326,19 @@ it for output." | |||
| 326 | 326 | ||
| 327 | ;;; Indentation | 327 | ;;; Indentation |
| 328 | 328 | ||
| 329 | (defun org-do-remove-indentation (&optional n) | 329 | (defun org-do-remove-indentation (&optional n skip-fl) |
| 330 | "Remove the maximum common indentation from the buffer. | 330 | "Remove the maximum common indentation from the buffer. |
| 331 | When optional argument N is a positive integer, remove exactly | 331 | When optional argument N is a positive integer, remove exactly |
| 332 | that much characters from indentation, if possible. Return nil | 332 | that much characters from indentation, if possible. When |
| 333 | if it fails." | 333 | optional argument SKIP-FL is non-nil, skip the first |
| 334 | line. Return nil if it fails." | ||
| 334 | (catch :exit | 335 | (catch :exit |
| 335 | (goto-char (point-min)) | 336 | (goto-char (point-min)) |
| 336 | ;; Find maximum common indentation, if not specified. | 337 | ;; Find maximum common indentation, if not specified. |
| 337 | (let ((n (or n | 338 | (let ((n (or n |
| 338 | (let ((min-ind (point-max))) | 339 | (let ((min-ind (point-max))) |
| 339 | (save-excursion | 340 | (save-excursion |
| 341 | (when skip-fl (forward-line)) | ||
| 340 | (while (re-search-forward "^[ \t]*\\S-" nil t) | 342 | (while (re-search-forward "^[ \t]*\\S-" nil t) |
| 341 | (let ((ind (current-indentation))) | 343 | (let ((ind (current-indentation))) |
| 342 | (if (zerop ind) (throw :exit nil) | 344 | (if (zerop ind) (throw :exit nil) |
| @@ -344,6 +346,7 @@ if it fails." | |||
| 344 | min-ind)))) | 346 | min-ind)))) |
| 345 | (if (zerop n) (throw :exit nil) | 347 | (if (zerop n) (throw :exit nil) |
| 346 | ;; Remove exactly N indentation, but give up if not possible. | 348 | ;; Remove exactly N indentation, but give up if not possible. |
| 349 | (when skip-fl (forward-line)) | ||
| 347 | (while (not (eobp)) | 350 | (while (not (eobp)) |
| 348 | (let ((ind (progn (skip-chars-forward " \t") (current-column)))) | 351 | (let ((ind (progn (skip-chars-forward " \t") (current-column)))) |
| 349 | (cond ((eolp) (delete-region (line-beginning-position) (point))) | 352 | (cond ((eolp) (delete-region (line-beginning-position) (point))) |
diff --git a/lisp/org/org-num.el b/lisp/org/org-num.el index 408b86ff411..f00e6c463b8 100644 --- a/lisp/org/org-num.el +++ b/lisp/org/org-num.el | |||
| @@ -99,8 +99,7 @@ Any `face' text property on the returned string overrides | |||
| 99 | `org-num-face'." | 99 | `org-num-face'." |
| 100 | :group 'org-appearance | 100 | :group 'org-appearance |
| 101 | :package-version '(Org . "9.3") | 101 | :package-version '(Org . "9.3") |
| 102 | :type 'function | 102 | :type 'function) |
| 103 | :safe nil) | ||
| 104 | 103 | ||
| 105 | (defcustom org-num-max-level nil | 104 | (defcustom org-num-max-level nil |
| 106 | "Level below which headlines are not numbered. | 105 | "Level below which headlines are not numbered. |
diff --git a/lisp/org/org-src.el b/lisp/org/org-src.el index 91a3d415dfa..8d02cf43450 100644 --- a/lisp/org/org-src.el +++ b/lisp/org/org-src.el | |||
| @@ -38,6 +38,7 @@ | |||
| 38 | (require 'org-keys) | 38 | (require 'org-keys) |
| 39 | 39 | ||
| 40 | (declare-function org-mode "org" ()) | 40 | (declare-function org-mode "org" ()) |
| 41 | (declare-function org--get-expected-indentation "org" (element contentsp)) | ||
| 41 | (declare-function org-element-at-point "org-element" ()) | 42 | (declare-function org-element-at-point "org-element" ()) |
| 42 | (declare-function org-element-class "org-element" (datum &optional parent)) | 43 | (declare-function org-element-class "org-element" (datum &optional parent)) |
| 43 | (declare-function org-element-context "org-element" (&optional element)) | 44 | (declare-function org-element-context "org-element" (&optional element)) |
| @@ -327,7 +328,8 @@ a cons cell (LINE . COLUMN) or symbol `end'. See also | |||
| 327 | (if (>= pos end) 'end | 328 | (if (>= pos end) 'end |
| 328 | (org-with-wide-buffer | 329 | (org-with-wide-buffer |
| 329 | (goto-char (max beg pos)) | 330 | (goto-char (max beg pos)) |
| 330 | (cons (count-lines beg (line-beginning-position)) | 331 | (cons (count-lines (save-excursion (goto-char beg) (line-beginning-position)) |
| 332 | (line-beginning-position)) | ||
| 331 | ;; Column is relative to the end of line to avoid problems of | 333 | ;; Column is relative to the end of line to avoid problems of |
| 332 | ;; comma escaping or colons appended in front of the line. | 334 | ;; comma escaping or colons appended in front of the line. |
| 333 | (- (point) (min end (line-end-position))))))) | 335 | (- (point) (min end (line-end-position))))))) |
| @@ -445,6 +447,7 @@ Assume point is in the corresponding edit buffer." | |||
| 445 | org-src--content-indentation | 447 | org-src--content-indentation |
| 446 | 0)))) | 448 | 0)))) |
| 447 | (use-tabs? (and (> org-src--tab-width 0) t)) | 449 | (use-tabs? (and (> org-src--tab-width 0) t)) |
| 450 | (preserve-fl (eq org-src--source-type 'latex-fragment)) | ||
| 448 | (source-tab-width org-src--tab-width) | 451 | (source-tab-width org-src--tab-width) |
| 449 | (contents (org-with-wide-buffer | 452 | (contents (org-with-wide-buffer |
| 450 | (let ((eol (line-end-position))) | 453 | (let ((eol (line-end-position))) |
| @@ -466,7 +469,8 @@ Assume point is in the corresponding edit buffer." | |||
| 466 | ;; Add INDENTATION-OFFSET to every line in buffer, | 469 | ;; Add INDENTATION-OFFSET to every line in buffer, |
| 467 | ;; unless indentation is meant to be preserved. | 470 | ;; unless indentation is meant to be preserved. |
| 468 | (when (> indentation-offset 0) | 471 | (when (> indentation-offset 0) |
| 469 | (while (not (eobp)) | 472 | (when preserve-fl (forward-line)) |
| 473 | (while (not (eobp)) | ||
| 470 | (skip-chars-forward " \t") | 474 | (skip-chars-forward " \t") |
| 471 | (when (or (not (eolp)) ; not a blank line | 475 | (when (or (not (eolp)) ; not a blank line |
| 472 | (and (eq (point) (marker-position marker)) ; current line | 476 | (and (eq (point) (marker-position marker)) ; current line |
| @@ -518,7 +522,13 @@ Leave point in edit buffer." | |||
| 518 | (source-tab-width (if indent-tabs-mode tab-width 0)) | 522 | (source-tab-width (if indent-tabs-mode tab-width 0)) |
| 519 | (type (org-element-type datum)) | 523 | (type (org-element-type datum)) |
| 520 | (block-ind (org-with-point-at (org-element-property :begin datum) | 524 | (block-ind (org-with-point-at (org-element-property :begin datum) |
| 521 | (current-indentation))) | 525 | (cond |
| 526 | ((save-excursion (skip-chars-backward " \t") (bolp)) | ||
| 527 | (current-indentation)) | ||
| 528 | ((org-element-property :parent datum) | ||
| 529 | (org--get-expected-indentation | ||
| 530 | (org-element-property :parent datum) nil)) | ||
| 531 | (t (current-indentation))))) | ||
| 522 | (content-ind org-edit-src-content-indentation) | 532 | (content-ind org-edit-src-content-indentation) |
| 523 | (blank-line (save-excursion (beginning-of-line) | 533 | (blank-line (save-excursion (beginning-of-line) |
| 524 | (looking-at-p "^[[:space:]]*$"))) | 534 | (looking-at-p "^[[:space:]]*$"))) |
| @@ -548,7 +558,8 @@ Leave point in edit buffer." | |||
| 548 | (insert contents) | 558 | (insert contents) |
| 549 | (remove-text-properties (point-min) (point-max) | 559 | (remove-text-properties (point-min) (point-max) |
| 550 | '(display nil invisible nil intangible nil)) | 560 | '(display nil invisible nil intangible nil)) |
| 551 | (unless preserve-ind (org-do-remove-indentation)) | 561 | (let ((lf (eq type 'latex-fragment))) |
| 562 | (unless preserve-ind (org-do-remove-indentation (and lf block-ind) lf))) | ||
| 552 | (set-buffer-modified-p nil) | 563 | (set-buffer-modified-p nil) |
| 553 | (setq buffer-file-name nil) | 564 | (setq buffer-file-name nil) |
| 554 | ;; Initialize buffer. | 565 | ;; Initialize buffer. |
diff --git a/lisp/org/org-version.el b/lisp/org/org-version.el index ef363dc3901..5bccbe497cc 100644 --- a/lisp/org/org-version.el +++ b/lisp/org/org-version.el | |||
| @@ -11,7 +11,7 @@ Inserted by installing Org mode or when a release is made." | |||
| 11 | (defun org-git-version () | 11 | (defun org-git-version () |
| 12 | "The Git version of Org mode. | 12 | "The Git version of Org mode. |
| 13 | Inserted by installing Org or when a release is made." | 13 | Inserted by installing Org or when a release is made." |
| 14 | (let ((org-git-version "release_9.5")) | 14 | (let ((org-git-version "release_9.5-30-g10dc9d")) |
| 15 | org-git-version)) | 15 | org-git-version)) |
| 16 | 16 | ||
| 17 | (provide 'org-version) | 17 | (provide 'org-version) |
diff --git a/lisp/org/org.el b/lisp/org/org.el index 2ec6566c0b0..bc0ea24bee7 100644 --- a/lisp/org/org.el +++ b/lisp/org/org.el | |||
| @@ -3630,7 +3630,7 @@ When this is non-nil, the headline after the keyword is set to the | |||
| 3630 | :group 'org-appearance | 3630 | :group 'org-appearance |
| 3631 | :package-version '(Org . "9.4") | 3631 | :package-version '(Org . "9.4") |
| 3632 | :type 'boolean | 3632 | :type 'boolean |
| 3633 | :safe t) | 3633 | :safe #'booleanp) |
| 3634 | 3634 | ||
| 3635 | (defcustom org-fontify-done-headline t | 3635 | (defcustom org-fontify-done-headline t |
| 3636 | "Non-nil means change the face of a headline if it is marked DONE. | 3636 | "Non-nil means change the face of a headline if it is marked DONE. |
| @@ -5113,6 +5113,7 @@ stacked delimiters is N. Escaping delimiters is not possible." | |||
| 5113 | '(invisible t)) | 5113 | '(invisible t)) |
| 5114 | (add-text-properties (match-beginning 3) (match-end 3) | 5114 | (add-text-properties (match-beginning 3) (match-end 3) |
| 5115 | '(invisible t))) | 5115 | '(invisible t))) |
| 5116 | (goto-char (match-end 0)) | ||
| 5116 | (throw :exit t)))))))) | 5117 | (throw :exit t)))))))) |
| 5117 | 5118 | ||
| 5118 | (defun org-emphasize (&optional char) | 5119 | (defun org-emphasize (&optional char) |
diff --git a/lisp/org/ox-html.el b/lisp/org/ox-html.el index 60bb77d8188..a150b1fdb87 100644 --- a/lisp/org/ox-html.el +++ b/lisp/org/ox-html.el | |||
| @@ -795,7 +795,7 @@ Most common values are: | |||
| 795 | :group 'org-export-html | 795 | :group 'org-export-html |
| 796 | :package-version '(Org . "9.4") | 796 | :package-version '(Org . "9.4") |
| 797 | :type 'string | 797 | :type 'string |
| 798 | :safe t) | 798 | :safe #'stringp) |
| 799 | 799 | ||
| 800 | (defcustom org-html-with-latex org-export-with-latex | 800 | (defcustom org-html-with-latex org-export-with-latex |
| 801 | "Non-nil means process LaTeX math snippets. | 801 | "Non-nil means process LaTeX math snippets. |
| @@ -903,7 +903,7 @@ numbers are enabled." | |||
| 903 | :group 'org-export-html | 903 | :group 'org-export-html |
| 904 | :package-version '(Org . "9.3") | 904 | :package-version '(Org . "9.3") |
| 905 | :type 'boolean | 905 | :type 'boolean |
| 906 | :safe t) | 906 | :safe #'booleanp) |
| 907 | 907 | ||
| 908 | ;;;; Table | 908 | ;;;; Table |
| 909 | 909 | ||
diff --git a/lisp/org/ox-koma-letter.el b/lisp/org/ox-koma-letter.el index 96704dbb985..6a895a6a24d 100644 --- a/lisp/org/ox-koma-letter.el +++ b/lisp/org/ox-koma-letter.el | |||
| @@ -11,12 +11,12 @@ | |||
| 11 | 11 | ||
| 12 | ;; This file is part of GNU Emacs. | 12 | ;; This file is part of GNU Emacs. |
| 13 | 13 | ||
| 14 | ;; This program is free software: you can redistribute it and/or modify | 14 | ;; GNU Emacs is free software: you can redistribute it and/or modify |
| 15 | ;; it under the terms of the GNU General Public License as published by | 15 | ;; it under the terms of the GNU General Public License as published by |
| 16 | ;; the Free Software Foundation, either version 3 of the License, or | 16 | ;; the Free Software Foundation, either version 3 of the License, or |
| 17 | ;; (at your option) any later version. | 17 | ;; (at your option) any later version. |
| 18 | 18 | ||
| 19 | ;; This program is distributed in the hope that it will be useful, | 19 | ;; GNU Emacs is distributed in the hope that it will be useful, |
| 20 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | 20 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 21 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 21 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 22 | ;; GNU General Public License for more details. | 22 | ;; GNU General Public License for more details. |
| @@ -594,7 +594,7 @@ such as the one tagged with PS." | |||
| 594 | 594 | ||
| 595 | ;;;; Export Block | 595 | ;;;; Export Block |
| 596 | 596 | ||
| 597 | (defun org-koma-letter-export-block (export-block contents info) | 597 | (defun org-koma-letter-export-block (export-block _contents _info) |
| 598 | "Transcode an EXPORT-BLOCK element into KOMA Scrlttr2 code. | 598 | "Transcode an EXPORT-BLOCK element into KOMA Scrlttr2 code. |
| 599 | CONTENTS is nil. INFO is a plist used as a communication | 599 | CONTENTS is nil. INFO is a plist used as a communication |
| 600 | channel." | 600 | channel." |
| @@ -604,7 +604,7 @@ channel." | |||
| 604 | 604 | ||
| 605 | ;;;; Export Snippet | 605 | ;;;; Export Snippet |
| 606 | 606 | ||
| 607 | (defun org-koma-letter-export-snippet (export-snippet contents info) | 607 | (defun org-koma-letter-export-snippet (export-snippet _contents _info) |
| 608 | "Transcode an EXPORT-SNIPPET object into KOMA Scrlttr2 code. | 608 | "Transcode an EXPORT-SNIPPET object into KOMA Scrlttr2 code. |
| 609 | CONTENTS is nil. INFO is a plist used as a communication | 609 | CONTENTS is nil. INFO is a plist used as a communication |
| 610 | channel." | 610 | channel." |
diff --git a/lisp/org/ox-latex.el b/lisp/org/ox-latex.el index 993c2c6431d..3e3967033a5 100644 --- a/lisp/org/ox-latex.el +++ b/lisp/org/ox-latex.el | |||
| @@ -413,7 +413,7 @@ to \"\\autoref{%s}\" or \"\\cref{%s}\" for example." | |||
| 413 | :group 'org-export-latex | 413 | :group 'org-export-latex |
| 414 | :type 'string | 414 | :type 'string |
| 415 | :package-version '(Org . "9.5") | 415 | :package-version '(Org . "9.5") |
| 416 | :safe t) | 416 | :safe #'stringp) |
| 417 | 417 | ||
| 418 | ;;;; Preamble | 418 | ;;;; Preamble |
| 419 | 419 | ||
| @@ -793,7 +793,7 @@ default we use here encompasses both." | |||
| 793 | :group 'org-export-latex | 793 | :group 'org-export-latex |
| 794 | :package-version '(Org . "9.5") | 794 | :package-version '(Org . "9.5") |
| 795 | :type 'string | 795 | :type 'string |
| 796 | :safe t) | 796 | :safe #'stringp) |
| 797 | 797 | ||
| 798 | (defcustom org-latex-default-table-mode 'table | 798 | (defcustom org-latex-default-table-mode 'table |
| 799 | "Default mode for tables. | 799 | "Default mode for tables. |
diff --git a/lisp/progmodes/elisp-mode.el b/lisp/progmodes/elisp-mode.el index acf7123225f..c7474b25a78 100644 --- a/lisp/progmodes/elisp-mode.el +++ b/lisp/progmodes/elisp-mode.el | |||
| @@ -548,7 +548,7 @@ in `completion-at-point-functions' (which see)." | |||
| 548 | (lambda (s) | 548 | (lambda (s) |
| 549 | (push s retval) | 549 | (push s retval) |
| 550 | (cl-loop | 550 | (cl-loop |
| 551 | for (shorthand . longhand) in elisp-shorthands | 551 | for (shorthand . longhand) in read-symbol-shorthands |
| 552 | for full-name = (symbol-name s) | 552 | for full-name = (symbol-name s) |
| 553 | when (string-prefix-p longhand full-name) | 553 | when (string-prefix-p longhand full-name) |
| 554 | do (let ((sym (make-symbol | 554 | do (let ((sym (make-symbol |
| @@ -559,17 +559,17 @@ in `completion-at-point-functions' (which see)." | |||
| 559 | (push sym retval) | 559 | (push sym retval) |
| 560 | retval)))) | 560 | retval)))) |
| 561 | retval))) | 561 | retval))) |
| 562 | (cond ((null elisp-shorthands) obarray) | 562 | (cond ((null read-symbol-shorthands) obarray) |
| 563 | ((and obarray-cache | 563 | ((and obarray-cache |
| 564 | (gethash (cons (current-buffer) elisp-shorthands) | 564 | (gethash (cons (current-buffer) read-symbol-shorthands) |
| 565 | obarray-cache))) | 565 | obarray-cache))) |
| 566 | (obarray-cache | 566 | (obarray-cache |
| 567 | (puthash (cons (current-buffer) elisp-shorthands) | 567 | (puthash (cons (current-buffer) read-symbol-shorthands) |
| 568 | (obarray-plus-shorthands) | 568 | (obarray-plus-shorthands) |
| 569 | obarray-cache)) | 569 | obarray-cache)) |
| 570 | (t | 570 | (t |
| 571 | (setq obarray-cache (make-hash-table :test #'equal)) | 571 | (setq obarray-cache (make-hash-table :test #'equal)) |
| 572 | (puthash (cons (current-buffer) elisp-shorthands) | 572 | (puthash (cons (current-buffer) read-symbol-shorthands) |
| 573 | (obarray-plus-shorthands) | 573 | (obarray-plus-shorthands) |
| 574 | obarray-cache))))) | 574 | obarray-cache))))) |
| 575 | 575 | ||
| @@ -2126,7 +2126,7 @@ Runs in a batch-mode Emacs. Interactively use variable | |||
| 2126 | (pp collected))) | 2126 | (pp collected))) |
| 2127 | 2127 | ||
| 2128 | 2128 | ||
| 2129 | (put 'elisp-shorthands 'safe-local-variable #'consp) | 2129 | (put 'read-symbol-shorthands 'safe-local-variable #'consp) |
| 2130 | 2130 | ||
| 2131 | (provide 'elisp-mode) | 2131 | (provide 'elisp-mode) |
| 2132 | ;;; elisp-mode.el ends here | 2132 | ;;; elisp-mode.el ends here |
diff --git a/lisp/progmodes/prog-mode.el b/lisp/progmodes/prog-mode.el index 6c09dcf881d..4f15686dc87 100644 --- a/lisp/progmodes/prog-mode.el +++ b/lisp/progmodes/prog-mode.el | |||
| @@ -68,6 +68,28 @@ | |||
| 68 | `(menu-item "Find Definition" xref-find-definitions-at-mouse | 68 | `(menu-item "Find Definition" xref-find-definitions-at-mouse |
| 69 | :help ,(format "Find definition of `%s'" identifier)) | 69 | :help ,(format "Find definition of `%s'" identifier)) |
| 70 | 'prog-separator))) | 70 | 'prog-separator))) |
| 71 | |||
| 72 | (when (thing-at-mouse click 'symbol) | ||
| 73 | (define-key-after menu [select-region mark-symbol] | ||
| 74 | `(menu-item "Symbol" | ||
| 75 | ,(lambda (e) (interactive "e") (mark-thing-at-mouse e 'symbol)) | ||
| 76 | :help "Mark the symbol at click for a subsequent cut/copy") | ||
| 77 | 'mark-whole-buffer)) | ||
| 78 | (define-key-after menu [select-region mark-list] | ||
| 79 | `(menu-item "List" | ||
| 80 | ,(lambda (e) (interactive "e") (mark-thing-at-mouse e 'list)) | ||
| 81 | :help "Mark the list at click for a subsequent cut/copy") | ||
| 82 | 'mark-whole-buffer) | ||
| 83 | (define-key-after menu [select-region mark-defun] | ||
| 84 | `(menu-item "Defun" | ||
| 85 | ,(lambda (e) (interactive "e") (mark-thing-at-mouse e 'defun)) | ||
| 86 | :help "Mark the defun at click for a subsequent cut/copy") | ||
| 87 | 'mark-whole-buffer) | ||
| 88 | |||
| 89 | ;; Include text-mode select menu only in strings and comments. | ||
| 90 | (when (nth 8 (save-excursion (syntax-ppss (posn-point (event-end click))))) | ||
| 91 | (text-mode-menu menu click)) | ||
| 92 | |||
| 71 | menu) | 93 | menu) |
| 72 | 94 | ||
| 73 | (defvar prog-mode-map | 95 | (defvar prog-mode-map |
diff --git a/lisp/progmodes/which-func.el b/lisp/progmodes/which-func.el index 8946e2c3f42..176f599649f 100644 --- a/lisp/progmodes/which-func.el +++ b/lisp/progmodes/which-func.el | |||
| @@ -185,7 +185,8 @@ and you want to simplify them for the mode line | |||
| 185 | 185 | ||
| 186 | (defvar-local which-func-mode nil | 186 | (defvar-local which-func-mode nil |
| 187 | "Non-nil means display current function name in mode line. | 187 | "Non-nil means display current function name in mode line. |
| 188 | This makes a difference only if `which-function-mode' is non-nil.") | 188 | This makes a difference only if variable `which-function-mode' is |
| 189 | non-nil.") | ||
| 189 | 190 | ||
| 190 | (add-hook 'after-change-major-mode-hook #'which-func-ff-hook t) | 191 | (add-hook 'after-change-major-mode-hook #'which-func-ff-hook t) |
| 191 | 192 | ||
diff --git a/lisp/shorthands.el b/lisp/shorthands.el new file mode 100644 index 00000000000..e9f5880ab29 --- /dev/null +++ b/lisp/shorthands.el | |||
| @@ -0,0 +1,80 @@ | |||
| 1 | ;;; shorthands.el --- Read code considering Elisp shorthands -*- lexical-binding: t; -*- | ||
| 2 | |||
| 3 | ;; Copyright (C) 2021 Free Software Foundation, Inc. | ||
| 4 | |||
| 5 | ;; Author: João Távora <joaotavora@gmail.com> | ||
| 6 | ;; Keywords: lisp | ||
| 7 | |||
| 8 | ;; This file is part of GNU Emacs. | ||
| 9 | |||
| 10 | ;; GNU Emacs is free software: you can redistribute it and/or modify | ||
| 11 | ;; it under the terms of the GNU General Public License as published by | ||
| 12 | ;; the Free Software Foundation, either version 3 of the License, or | ||
| 13 | ;; (at your option) any later version. | ||
| 14 | |||
| 15 | ;; GNU Emacs is distributed in the hope that it will be useful, | ||
| 16 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 17 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 18 | ;; GNU General Public License for more details. | ||
| 19 | |||
| 20 | ;; You should have received a copy of the GNU General Public License | ||
| 21 | ;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. | ||
| 22 | |||
| 23 | ;;; Commentary: | ||
| 24 | |||
| 25 | ;; Basic helpers for loading files with Shorthands. | ||
| 26 | |||
| 27 | ;;; Code: | ||
| 28 | (require 'files) | ||
| 29 | (require 'mule) | ||
| 30 | (eval-when-compile (require 'cl-lib)) | ||
| 31 | |||
| 32 | (defun hack-read-symbol-shorthands () | ||
| 33 | "Compute `read-symbol-shorthands' from Local Variables section." | ||
| 34 | ;; FIXME: relies on the `hack-local-variables--find-variables' | ||
| 35 | ;; detail of files.el. That function should be exported, | ||
| 36 | ;; possibly be refactored into two parts, since we're only | ||
| 37 | ;; interested in basic "Local Variables" parsing. | ||
| 38 | (alist-get 'read-symbol-shorthands (hack-local-variables--find-variables))) | ||
| 39 | |||
| 40 | (setq hack-read-symbol-shorthands-function #'hack-read-symbol-shorthands) | ||
| 41 | |||
| 42 | |||
| 43 | ;; FIXME: move this all to progmodes/elisp-mode.el? OTOH it'd make | ||
| 44 | ;; more sense there, OTOH all the elisp font-lock stuff is actually in | ||
| 45 | ;; lisp/emacs-lisp/lisp-mode.el, which isn't right either. So | ||
| 46 | ;; shorthand font-locking logic is probably better here for now. | ||
| 47 | |||
| 48 | (defface elisp-shorthand-font-lock-face | ||
| 49 | '((t :inherit font-lock-keyword-face :foreground "cyan")) | ||
| 50 | "Face for highlighting shorthands in Emacs Lisp." | ||
| 51 | :version "28.1" | ||
| 52 | :group 'font-lock-faces) | ||
| 53 | |||
| 54 | (defun shorthands--mismatch-from-end (str1 str2) | ||
| 55 | (cl-loop with l1 = (length str1) with l2 = (length str2) | ||
| 56 | for i from 1 | ||
| 57 | for i1 = (- l1 i) for i2 = (- l2 i) | ||
| 58 | while (and (>= i1 0) (>= i2 0) (eq (aref str1 i1) (aref str2 i2))) | ||
| 59 | finally (return (1- i)))) | ||
| 60 | |||
| 61 | (defun shorthands-font-lock-shorthands (limit) | ||
| 62 | (when read-symbol-shorthands | ||
| 63 | (while (re-search-forward | ||
| 64 | (eval-when-compile | ||
| 65 | (concat "\\_<\\(" lisp-mode-symbol-regexp "\\)\\_>")) | ||
| 66 | limit t) | ||
| 67 | (let* ((existing (get-text-property (match-beginning 1) 'face)) | ||
| 68 | (probe (and (not (memq existing '(font-lock-comment-face | ||
| 69 | font-lock-string-face))) | ||
| 70 | (intern-soft (match-string 1)))) | ||
| 71 | (sname (and probe (symbol-name probe))) | ||
| 72 | (mm (and sname (shorthands--mismatch-from-end | ||
| 73 | (match-string 1) sname)))) | ||
| 74 | (unless (or (null mm) (= mm (length sname))) | ||
| 75 | (add-face-text-property (match-beginning 1) (1+ (- (match-end 1) mm)) | ||
| 76 | 'elisp-shorthand-font-lock-face)))))) | ||
| 77 | |||
| 78 | (font-lock-add-keywords 'emacs-lisp-mode '((shorthands-font-lock-shorthands)) t) | ||
| 79 | |||
| 80 | ;;; shorthands.el ends here | ||
diff --git a/lisp/subr.el b/lisp/subr.el index 6473c5ac11b..c3dbe8df800 100644 --- a/lisp/subr.el +++ b/lisp/subr.el | |||
| @@ -6437,7 +6437,9 @@ of fill.el (for example `fill-region')." | |||
| 6437 | (defun internal--format-docstring-line (string &rest objects) | 6437 | (defun internal--format-docstring-line (string &rest objects) |
| 6438 | "Format a single line from a documentation string out of STRING and OBJECTS. | 6438 | "Format a single line from a documentation string out of STRING and OBJECTS. |
| 6439 | Signal an error if STRING contains a newline. | 6439 | Signal an error if STRING contains a newline. |
| 6440 | This is intended for internal use only." | 6440 | This is intended for internal use only. Avoid using this for the |
| 6441 | first line of a docstring; the first line should be a complete | ||
| 6442 | sentence (see Info node `(elisp) Documentation Tips')." | ||
| 6441 | (when (string-match "\n" string) | 6443 | (when (string-match "\n" string) |
| 6442 | (error "Unable to fill string containing newline: %S" string)) | 6444 | (error "Unable to fill string containing newline: %S" string)) |
| 6443 | (internal--fill-string-single-line (apply #'format string objects))) | 6445 | (internal--fill-string-single-line (apply #'format string objects))) |
diff --git a/lisp/tab-bar.el b/lisp/tab-bar.el index 634328e223b..68afb539fa3 100644 --- a/lisp/tab-bar.el +++ b/lisp/tab-bar.el | |||
| @@ -1211,13 +1211,26 @@ Interactively, ARG selects the ARGth different frame to move to." | |||
| 1211 | "Detach tab number FROM-NUMBER to a new frame. | 1211 | "Detach tab number FROM-NUMBER to a new frame. |
| 1212 | Interactively or without argument, detach current tab." | 1212 | Interactively or without argument, detach current tab." |
| 1213 | (interactive (list (1+ (tab-bar--current-tab-index)))) | 1213 | (interactive (list (1+ (tab-bar--current-tab-index)))) |
| 1214 | (let* ((tab (nth (1- (or from-number 1)) (funcall tab-bar-tabs-function))) | 1214 | (let* ((tabs (funcall tab-bar-tabs-function)) |
| 1215 | (tab-name (alist-get 'name tab)) | 1215 | (tab-index (1- (or from-number (1+ (tab-bar--current-tab-index tabs))))) |
| 1216 | (tab-name (alist-get 'name (nth tab-index tabs))) | ||
| 1217 | ;; On some window managers, `make-frame' selects the new frame, | ||
| 1218 | ;; so previously selected frame is saved to `from-frame'. | ||
| 1219 | (from-frame (selected-frame)) | ||
| 1216 | (new-frame (make-frame `((name . ,tab-name))))) | 1220 | (new-frame (make-frame `((name . ,tab-name))))) |
| 1217 | (tab-bar-move-tab-to-frame nil nil from-number new-frame nil) | 1221 | (tab-bar-move-tab-to-frame nil from-frame from-number new-frame nil) |
| 1218 | (with-selected-frame new-frame | 1222 | (with-selected-frame new-frame |
| 1219 | (tab-bar-close-tab)))) | 1223 | (tab-bar-close-tab)))) |
| 1220 | 1224 | ||
| 1225 | (defun tab-bar-move-window-to-tab () | ||
| 1226 | "Detach the selected window to a new tab." | ||
| 1227 | (interactive) | ||
| 1228 | (let ((tab-bar-new-tab-choice 'window)) | ||
| 1229 | (tab-bar-new-tab)) | ||
| 1230 | (tab-bar-switch-to-recent-tab) | ||
| 1231 | (delete-window) | ||
| 1232 | (tab-bar-switch-to-recent-tab)) | ||
| 1233 | |||
| 1221 | 1234 | ||
| 1222 | (defcustom tab-bar-new-tab-to 'right | 1235 | (defcustom tab-bar-new-tab-to 'right |
| 1223 | "Defines where to create a new tab. | 1236 | "Defines where to create a new tab. |
| @@ -1264,9 +1277,10 @@ After the tab is created, the hooks in | |||
| 1264 | (select-window (minibuffer-selected-window))) | 1277 | (select-window (minibuffer-selected-window))) |
| 1265 | (let ((ignore-window-parameters t)) | 1278 | (let ((ignore-window-parameters t)) |
| 1266 | (delete-other-windows)) | 1279 | (delete-other-windows)) |
| 1267 | ;; Create a new window to get rid of old window parameters | 1280 | (unless (eq tab-bar-new-tab-choice 'window) |
| 1268 | ;; (e.g. prev/next buffers) of old window. | 1281 | ;; Create a new window to get rid of old window parameters |
| 1269 | (split-window) (delete-window) | 1282 | ;; (e.g. prev/next buffers) of old window. |
| 1283 | (split-window) (delete-window)) | ||
| 1270 | (let ((buffer | 1284 | (let ((buffer |
| 1271 | (if (functionp tab-bar-new-tab-choice) | 1285 | (if (functionp tab-bar-new-tab-choice) |
| 1272 | (funcall tab-bar-new-tab-choice) | 1286 | (funcall tab-bar-new-tab-choice) |
diff --git a/lisp/tab-line.el b/lisp/tab-line.el index 4a751b384e5..890d1243e73 100644 --- a/lisp/tab-line.el +++ b/lisp/tab-line.el | |||
| @@ -574,7 +574,10 @@ For use in `tab-line-tab-face-functions'." | |||
| 574 | ;; handle tab-line scrolling | 574 | ;; handle tab-line scrolling |
| 575 | (window-parameter nil 'tab-line-hscroll) | 575 | (window-parameter nil 'tab-line-hscroll) |
| 576 | ;; for setting face 'tab-line-tab-current' | 576 | ;; for setting face 'tab-line-tab-current' |
| 577 | (eq (selected-window) (old-selected-window)))) | 577 | (eq (selected-window) (old-selected-window)) |
| 578 | (and (memq 'tab-line-tab-face-modified | ||
| 579 | tab-line-tab-face-functions) | ||
| 580 | (buffer-file-name) (buffer-modified-p)))) | ||
| 578 | (cache (window-parameter nil 'tab-line-cache))) | 581 | (cache (window-parameter nil 'tab-line-cache))) |
| 579 | ;; Enable auto-hscroll again after it was disabled on manual scrolling. | 582 | ;; Enable auto-hscroll again after it was disabled on manual scrolling. |
| 580 | ;; The moment to enable it is when the window-buffer was updated. | 583 | ;; The moment to enable it is when the window-buffer was updated. |
diff --git a/lisp/textmodes/etc-authors-mode.el b/lisp/textmodes/etc-authors-mode.el index a591b2db978..8b5fefd3b7d 100644 --- a/lisp/textmodes/etc-authors-mode.el +++ b/lisp/textmodes/etc-authors-mode.el | |||
| @@ -5,18 +5,20 @@ | |||
| 5 | ;; Author: Stefan Kangas <stefan@marxist.se> | 5 | ;; Author: Stefan Kangas <stefan@marxist.se> |
| 6 | ;; Keywords: internal | 6 | ;; Keywords: internal |
| 7 | 7 | ||
| 8 | ;; This program is free software; you can redistribute it and/or modify | 8 | ;; This file is part of GNU Emacs. |
| 9 | |||
| 10 | ;; GNU Emacs is free software: you can redistribute it and/or modify | ||
| 9 | ;; it under the terms of the GNU General Public License as published by | 11 | ;; it under the terms of the GNU General Public License as published by |
| 10 | ;; the Free Software Foundation, either version 3 of the License, or | 12 | ;; the Free Software Foundation, either version 3 of the License, or |
| 11 | ;; (at your option) any later version. | 13 | ;; (at your option) any later version. |
| 12 | 14 | ||
| 13 | ;; This program is distributed in the hope that it will be useful, | 15 | ;; GNU Emacs is distributed in the hope that it will be useful, |
| 14 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | 16 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 15 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 17 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 16 | ;; GNU General Public License for more details. | 18 | ;; GNU General Public License for more details. |
| 17 | 19 | ||
| 18 | ;; You should have received a copy of the GNU General Public License | 20 | ;; You should have received a copy of the GNU General Public License |
| 19 | ;; along with this program. If not, see <https://www.gnu.org/licenses/>. | 21 | ;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. |
| 20 | 22 | ||
| 21 | ;;; Commentary: | 23 | ;;; Commentary: |
| 22 | 24 | ||
diff --git a/lisp/textmodes/fill.el b/lisp/textmodes/fill.el index 81d908c95e7..decce88573b 100644 --- a/lisp/textmodes/fill.el +++ b/lisp/textmodes/fill.el | |||
| @@ -768,7 +768,7 @@ space does not end a sentence, so don't break a line there." | |||
| 768 | (setq first nil | 768 | (setq first nil |
| 769 | linebeg (+ (point) (length actual-fill-prefix)))) | 769 | linebeg (+ (point) (length actual-fill-prefix)))) |
| 770 | (move-to-column (current-fill-column)) | 770 | (move-to-column (current-fill-column)) |
| 771 | (if (when (< (point) to) | 771 | (if (when (and (< (point) to) (< linebeg to)) |
| 772 | ;; Find the position where we'll break the line. | 772 | ;; Find the position where we'll break the line. |
| 773 | ;; Use an immediately following space, if any. | 773 | ;; Use an immediately following space, if any. |
| 774 | ;; However, note that `move-to-column' may overshoot | 774 | ;; However, note that `move-to-column' may overshoot |
diff --git a/lisp/textmodes/reftex-cite.el b/lisp/textmodes/reftex-cite.el index 8a54b1a301f..e1475934ddb 100644 --- a/lisp/textmodes/reftex-cite.el +++ b/lisp/textmodes/reftex-cite.el | |||
| @@ -814,7 +814,7 @@ in order to only add another reference in the same cite command." | |||
| 814 | (interactive) | 814 | (interactive) |
| 815 | (reftex-citation nil ?t)) | 815 | (reftex-citation nil ?t)) |
| 816 | 816 | ||
| 817 | (defvar reftex-select-bib-map) | 817 | (defvar reftex-select-bib-mode-map) |
| 818 | (defvar reftex--found-list) | 818 | (defvar reftex--found-list) |
| 819 | (defun reftex-offer-bib-menu () | 819 | (defun reftex-offer-bib-menu () |
| 820 | "Offer bib menu and return list of selected items." | 820 | "Offer bib menu and return list of selected items." |
| @@ -870,7 +870,7 @@ in order to only add another reference in the same cite command." | |||
| 870 | (reftex-select-item | 870 | (reftex-select-item |
| 871 | reftex-citation-prompt | 871 | reftex-citation-prompt |
| 872 | reftex-citation-help | 872 | reftex-citation-help |
| 873 | reftex-select-bib-map | 873 | reftex-select-bib-mode-map |
| 874 | nil | 874 | nil |
| 875 | 'reftex-bibtex-selection-callback nil)) | 875 | 'reftex-bibtex-selection-callback nil)) |
| 876 | (setq key (car rtn) | 876 | (setq key (car rtn) |
diff --git a/lisp/textmodes/reftex-ref.el b/lisp/textmodes/reftex-ref.el index 9d5bc5a8f0f..a5d83c34d67 100644 --- a/lisp/textmodes/reftex-ref.el +++ b/lisp/textmodes/reftex-ref.el | |||
| @@ -533,7 +533,7 @@ When called with 2 \\[universal-argument] prefix args, disable magic word recogn | |||
| 533 | (cons (cdr cell) (- (match-end 0) (match-end 1))) | 533 | (cons (cdr cell) (- (match-end 0) (match-end 1))) |
| 534 | nil))) | 534 | nil))) |
| 535 | 535 | ||
| 536 | (defvar reftex-select-label-map) | 536 | (defvar reftex-select-label-mode-map) |
| 537 | (defun reftex-offer-label-menu (typekey) | 537 | (defun reftex-offer-label-menu (typekey) |
| 538 | ;; Offer a menu with the appropriate labels. | 538 | ;; Offer a menu with the appropriate labels. |
| 539 | (let* ((buf (current-buffer)) | 539 | (let* ((buf (current-buffer)) |
| @@ -605,7 +605,7 @@ When called with 2 \\[universal-argument] prefix args, disable magic word recogn | |||
| 605 | (reftex-select-item | 605 | (reftex-select-item |
| 606 | reftex-select-label-prompt | 606 | reftex-select-label-prompt |
| 607 | reftex-select-label-help | 607 | reftex-select-label-help |
| 608 | reftex-select-label-map | 608 | reftex-select-label-mode-map |
| 609 | offset | 609 | offset |
| 610 | 'reftex-show-label-location follow)) | 610 | 'reftex-show-label-location follow)) |
| 611 | (setq key (car rtn) | 611 | (setq key (car rtn) |
diff --git a/lisp/textmodes/text-mode.el b/lisp/textmodes/text-mode.el index 74c6d412a65..3243bd31c4c 100644 --- a/lisp/textmodes/text-mode.el +++ b/lisp/textmodes/text-mode.el | |||
| @@ -95,6 +95,28 @@ inherit all the commands defined in this map.") | |||
| 95 | :style toggle | 95 | :style toggle |
| 96 | :selected (memq 'turn-on-auto-fill text-mode-hook)])) | 96 | :selected (memq 'turn-on-auto-fill text-mode-hook)])) |
| 97 | 97 | ||
| 98 | (defun text-mode-menu (menu click) | ||
| 99 | "Populate MENU with text selection commands at CLICK." | ||
| 100 | |||
| 101 | (when (thing-at-mouse click 'word) | ||
| 102 | (define-key-after menu [select-region mark-word] | ||
| 103 | `(menu-item "Word" | ||
| 104 | ,(lambda (e) (interactive "e") (mark-thing-at-mouse e 'word)) | ||
| 105 | :help "Mark the word at click for a subsequent cut/copy") | ||
| 106 | 'mark-whole-buffer)) | ||
| 107 | (define-key-after menu [select-region mark-sentence] | ||
| 108 | `(menu-item "Sentence" | ||
| 109 | ,(lambda (e) (interactive "e") (mark-thing-at-mouse e 'sentence)) | ||
| 110 | :help "Mark the sentence at click for a subsequent cut/copy") | ||
| 111 | 'mark-whole-buffer) | ||
| 112 | (define-key-after menu [select-region mark-paragraph] | ||
| 113 | `(menu-item "Paragraph" | ||
| 114 | ,(lambda (e) (interactive "e") (mark-thing-at-mouse e 'paragraph)) | ||
| 115 | :help "Mark the paragraph at click for a subsequent cut/copy") | ||
| 116 | 'mark-whole-buffer) | ||
| 117 | |||
| 118 | menu) | ||
| 119 | |||
| 98 | 120 | ||
| 99 | (define-derived-mode text-mode nil "Text" | 121 | (define-derived-mode text-mode nil "Text" |
| 100 | "Major mode for editing text written for humans to read. | 122 | "Major mode for editing text written for humans to read. |
| @@ -104,7 +126,8 @@ You can thus get the full benefit of adaptive filling | |||
| 104 | \\{text-mode-map} | 126 | \\{text-mode-map} |
| 105 | Turning on Text mode runs the normal hook `text-mode-hook'." | 127 | Turning on Text mode runs the normal hook `text-mode-hook'." |
| 106 | (setq-local text-mode-variant t) | 128 | (setq-local text-mode-variant t) |
| 107 | (setq-local require-final-newline mode-require-final-newline)) | 129 | (setq-local require-final-newline mode-require-final-newline) |
| 130 | (add-hook 'context-menu-functions 'text-mode-menu 10 t)) | ||
| 108 | 131 | ||
| 109 | (define-derived-mode paragraph-indent-text-mode text-mode "Parindent" | 132 | (define-derived-mode paragraph-indent-text-mode text-mode "Parindent" |
| 110 | "Major mode for editing text, with leading spaces starting a paragraph. | 133 | "Major mode for editing text, with leading spaces starting a paragraph. |
diff --git a/lisp/textmodes/tildify.el b/lisp/textmodes/tildify.el index 01e2ad72d88..2a4c8cff8f0 100644 --- a/lisp/textmodes/tildify.el +++ b/lisp/textmodes/tildify.el | |||
| @@ -67,7 +67,7 @@ matching the white space). The pattern is matched case-sensitive regardless of | |||
| 67 | the value of `case-fold-search' setting." | 67 | the value of `case-fold-search' setting." |
| 68 | :version "25.1" | 68 | :version "25.1" |
| 69 | :type 'regexp | 69 | :type 'regexp |
| 70 | :safe t) | 70 | :safe #'stringp) |
| 71 | 71 | ||
| 72 | (defcustom tildify-pattern-alist () | 72 | (defcustom tildify-pattern-alist () |
| 73 | "Alist specifying where to insert hard spaces. | 73 | "Alist specifying where to insert hard spaces. |
| @@ -112,7 +112,7 @@ If nil, current major mode has no way to represent a hard space." | |||
| 112 | " ") | 112 | " ") |
| 113 | (const :tag "No-break space (U+00A0)" "\u00A0") | 113 | (const :tag "No-break space (U+00A0)" "\u00A0") |
| 114 | (string :tag "Custom string")) | 114 | (string :tag "Custom string")) |
| 115 | :safe t) | 115 | :safe #'string-or-null-p) |
| 116 | 116 | ||
| 117 | (defcustom tildify-string-alist () | 117 | (defcustom tildify-string-alist () |
| 118 | "Alist specifying what is a hard space in the current major mode. | 118 | "Alist specifying what is a hard space in the current major mode. |
diff --git a/lisp/time-stamp.el b/lisp/time-stamp.el index e1ea922d040..178e490fb7d 100644 --- a/lisp/time-stamp.el +++ b/lisp/time-stamp.el | |||
| @@ -59,7 +59,7 @@ with %, as follows. | |||
| 59 | %#p `am' or `pm' %P gives uppercase: `AM' or `PM' | 59 | %#p `am' or `pm' %P gives uppercase: `AM' or `PM' |
| 60 | %02S seconds | 60 | %02S seconds |
| 61 | %w day number of week, Sunday is 0 | 61 | %w day number of week, Sunday is 0 |
| 62 | %02y 2-digit year: `03' %Y 4-digit year: `2003' | 62 | %02y 2-digit year %Y 4-digit year |
| 63 | %Z time zone name: `EST' %#Z gives lowercase: `est' | 63 | %Z time zone name: `EST' %#Z gives lowercase: `est' |
| 64 | %5z time zone offset: `-0500' (since Emacs 27; see note below) | 64 | %5z time zone offset: `-0500' (since Emacs 27; see note below) |
| 65 | 65 | ||
diff --git a/src/Makefile.in b/src/Makefile.in index 34335cfa96d..25c7865d4a1 100644 --- a/src/Makefile.in +++ b/src/Makefile.in | |||
| @@ -55,6 +55,8 @@ lwlibdir = ../lwlib | |||
| 55 | # Configuration files for .o files to depend on. | 55 | # Configuration files for .o files to depend on. |
| 56 | config_h = config.h $(srcdir)/conf_post.h | 56 | config_h = config.h $(srcdir)/conf_post.h |
| 57 | 57 | ||
| 58 | HAVE_NATIVE_COMP = @HAVE_NATIVE_COMP@ | ||
| 59 | |||
| 58 | ## ns-app if NS self contained app, else empty. | 60 | ## ns-app if NS self contained app, else empty. |
| 59 | OTHER_FILES = @OTHER_FILES@ | 61 | OTHER_FILES = @OTHER_FILES@ |
| 60 | 62 | ||
| @@ -448,14 +450,9 @@ FIRSTFILE_OBJ=@FIRSTFILE_OBJ@ | |||
| 448 | ALLOBJS = $(FIRSTFILE_OBJ) $(VMLIMIT_OBJ) $(obj) $(otherobj) | 450 | ALLOBJS = $(FIRSTFILE_OBJ) $(VMLIMIT_OBJ) $(obj) $(otherobj) |
| 449 | 451 | ||
| 450 | # Must be first, before dep inclusion! | 452 | # Must be first, before dep inclusion! |
| 451 | ifeq ($(HAVE_NATIVE_COMP),yes) | ||
| 452 | ifeq ($(NATIVE_DISABLED),) | ||
| 453 | all: emacs$(EXEEXT) $(pdmp) $(OTHER_FILES) ../native-lisp | ||
| 454 | else | ||
| 455 | all: emacs$(EXEEXT) $(pdmp) $(OTHER_FILES) | ||
| 456 | endif | ||
| 457 | else | ||
| 458 | all: emacs$(EXEEXT) $(pdmp) $(OTHER_FILES) | 453 | all: emacs$(EXEEXT) $(pdmp) $(OTHER_FILES) |
| 454 | ifeq ($(HAVE_NATIVE_COMP):$(NATIVE_DISABLED),yes:) | ||
| 455 | all: ../native-lisp | ||
| 459 | endif | 456 | endif |
| 460 | .PHONY: all | 457 | .PHONY: all |
| 461 | 458 | ||
| @@ -783,8 +780,7 @@ tags: TAGS ../lisp/TAGS $(lwlibdir)/TAGS | |||
| 783 | @$(MAKE) $(AM_V_NO_PD) -C ../lisp EMACS="$(bootstrap_exe)"\ | 780 | @$(MAKE) $(AM_V_NO_PD) -C ../lisp EMACS="$(bootstrap_exe)"\ |
| 784 | THEFILE=$< $<c | 781 | THEFILE=$< $<c |
| 785 | 782 | ||
| 786 | ifeq ($(HAVE_NATIVE_COMP),yes) | 783 | ifeq ($(HAVE_NATIVE_COMP):$(NATIVE_DISABLED),yes:) |
| 787 | ifeq ($(NATIVE_DISABLED),) | ||
| 788 | ## The following rules are used only when building a source tarball | 784 | ## The following rules are used only when building a source tarball |
| 789 | ## for the first time, when the native-lisp/ directory doesn't yet | 785 | ## for the first time, when the native-lisp/ directory doesn't yet |
| 790 | ## exist and needs to be created and populated with the preloaded | 786 | ## exist and needs to be created and populated with the preloaded |
| @@ -808,11 +804,12 @@ elnlisp := $(addprefix ${lispsource}/,${elnlisp}) $(lisp:.elc=.eln) | |||
| 808 | THEFILE=$< $<n | 804 | THEFILE=$< $<n |
| 809 | 805 | ||
| 810 | ../native-lisp: | $(pdmp) | 806 | ../native-lisp: | $(pdmp) |
| 811 | mkdir $@ && $(MAKE) $(AM_V_NO_PD) $(elnlisp) | 807 | if test ! -d $@; then \ |
| 812 | LC_ALL=C $(RUN_TEMACS) -batch $(BUILD_DETAILS) -l loadup --temacs=pdump \ | 808 | mkdir $@ && $(MAKE) $(AM_V_NO_PD) $(elnlisp); \ |
| 813 | --bin-dest $(BIN_DESTDIR) --eln-dest $(ELN_DESTDIR) | 809 | LC_ALL=C $(RUN_TEMACS) -batch $(BUILD_DETAILS) -l loadup --temacs=pdump \ |
| 814 | cp -f $@ $(bootstrap_pdmp) | 810 | --bin-dest $(BIN_DESTDIR) --eln-dest $(ELN_DESTDIR); \ |
| 815 | endif | 811 | cp -f $@ $(bootstrap_pdmp); \ |
| 812 | fi | ||
| 816 | endif | 813 | endif |
| 817 | 814 | ||
| 818 | ## VCSWITNESS points to the file that holds info about the current checkout. | 815 | ## VCSWITNESS points to the file that holds info about the current checkout. |
diff --git a/src/alloc.c b/src/alloc.c index 0895a0f52aa..0c04d5cde05 100644 --- a/src/alloc.c +++ b/src/alloc.c | |||
| @@ -988,7 +988,8 @@ record_xmalloc (size_t size) | |||
| 988 | 988 | ||
| 989 | /* Like malloc but used for allocating Lisp data. NBYTES is the | 989 | /* Like malloc but used for allocating Lisp data. NBYTES is the |
| 990 | number of bytes to allocate, TYPE describes the intended use of the | 990 | number of bytes to allocate, TYPE describes the intended use of the |
| 991 | allocated memory block (for strings, for conses, ...). */ | 991 | allocated memory block (for strings, for conses, ...). |
| 992 | NBYTES must be positive. */ | ||
| 992 | 993 | ||
| 993 | #if ! USE_LSB_TAG | 994 | #if ! USE_LSB_TAG |
| 994 | void *lisp_malloc_loser EXTERNALLY_VISIBLE; | 995 | void *lisp_malloc_loser EXTERNALLY_VISIBLE; |
| @@ -1030,7 +1031,7 @@ lisp_malloc (size_t nbytes, bool clearit, enum mem_type type) | |||
| 1030 | #endif | 1031 | #endif |
| 1031 | 1032 | ||
| 1032 | MALLOC_UNBLOCK_INPUT; | 1033 | MALLOC_UNBLOCK_INPUT; |
| 1033 | if (!val && nbytes) | 1034 | if (!val) |
| 1034 | memory_full (nbytes); | 1035 | memory_full (nbytes); |
| 1035 | MALLOC_PROBE (nbytes); | 1036 | MALLOC_PROBE (nbytes); |
| 1036 | return val; | 1037 | return val; |
diff --git a/src/conf_post.h b/src/conf_post.h index 8558dc466cc..2c6fbb0dba5 100644 --- a/src/conf_post.h +++ b/src/conf_post.h | |||
| @@ -293,7 +293,6 @@ extern int emacs_setenv_TZ (char const *); | |||
| 293 | ATTRIBUTE_FORMAT ((PRINTF_ARCHETYPE, string_index, first_to_check)) | 293 | ATTRIBUTE_FORMAT ((PRINTF_ARCHETYPE, string_index, first_to_check)) |
| 294 | 294 | ||
| 295 | #define ARG_NONNULL ATTRIBUTE_NONNULL | 295 | #define ARG_NONNULL ATTRIBUTE_NONNULL |
| 296 | #define ATTRIBUTE_UNUSED MAYBE_UNUSED | ||
| 297 | 296 | ||
| 298 | /* Declare NAME to be a pointer to an object of type TYPE, initialized | 297 | /* Declare NAME to be a pointer to an object of type TYPE, initialized |
| 299 | to the address ADDR, which may be of a different type. Accesses | 298 | to the address ADDR, which may be of a different type. Accesses |
diff --git a/src/gtkutil.c b/src/gtkutil.c index 313cfc82c26..e87845caf70 100644 --- a/src/gtkutil.c +++ b/src/gtkutil.c | |||
| @@ -2932,8 +2932,9 @@ xg_item_label_same_p (GtkMenuItem *witem, const char *label) | |||
| 2932 | char *utf8_label = get_utf8_string (label); | 2932 | char *utf8_label = get_utf8_string (label); |
| 2933 | const char *old_label = witem ? xg_get_menu_item_label (witem) : 0; | 2933 | const char *old_label = witem ? xg_get_menu_item_label (witem) : 0; |
| 2934 | 2934 | ||
| 2935 | bool is_same = (!old_label == !utf8_label | 2935 | bool is_same = (old_label |
| 2936 | && (!old_label || strcmp (utf8_label, old_label) == 0)); | 2936 | ? utf8_label && strcmp (utf8_label, old_label) == 0 |
| 2937 | : !utf8_label); | ||
| 2937 | 2938 | ||
| 2938 | if (utf8_label) g_free (utf8_label); | 2939 | if (utf8_label) g_free (utf8_label); |
| 2939 | 2940 | ||
diff --git a/src/lread.c b/src/lread.c index af0a7994592..07580d11d13 100644 --- a/src/lread.c +++ b/src/lread.c | |||
| @@ -4626,29 +4626,29 @@ oblookup (Lisp_Object obarray, register const char *ptr, ptrdiff_t size, ptrdiff | |||
| 4626 | return tem; | 4626 | return tem; |
| 4627 | } | 4627 | } |
| 4628 | 4628 | ||
| 4629 | /* Like 'oblookup', but considers 'Velisp_shorthands', potentially | 4629 | /* Like 'oblookup', but considers 'Vread_symbol_shorthands', |
| 4630 | recognizing that IN is shorthand for some other longhand name, | 4630 | potentially recognizing that IN is shorthand for some other |
| 4631 | which is then then placed in OUT. In that case, memory is | 4631 | longhand name, which is then then placed in OUT. In that case, |
| 4632 | malloc'ed for OUT (which the caller must free) while SIZE_OUT and | 4632 | memory is malloc'ed for OUT (which the caller must free) while |
| 4633 | SIZE_BYTE_OUT respectively hold the character and byte sizes of the | 4633 | SIZE_OUT and SIZE_BYTE_OUT respectively hold the character and byte |
| 4634 | transformed symbol name. If IN is not recognized shorthand for any | 4634 | sizes of the transformed symbol name. If IN is not recognized |
| 4635 | other symbol, OUT is set to point to NULL and 'oblookup' is | 4635 | shorthand for any other symbol, OUT is set to point to NULL and |
| 4636 | called. */ | 4636 | 'oblookup' is called. */ |
| 4637 | 4637 | ||
| 4638 | Lisp_Object | 4638 | Lisp_Object |
| 4639 | oblookup_considering_shorthand (Lisp_Object obarray, const char *in, | 4639 | oblookup_considering_shorthand (Lisp_Object obarray, const char *in, |
| 4640 | ptrdiff_t size, ptrdiff_t size_byte, char **out, | 4640 | ptrdiff_t size, ptrdiff_t size_byte, char **out, |
| 4641 | ptrdiff_t *size_out, ptrdiff_t *size_byte_out) | 4641 | ptrdiff_t *size_out, ptrdiff_t *size_byte_out) |
| 4642 | { | 4642 | { |
| 4643 | Lisp_Object tail = Velisp_shorthands; | 4643 | Lisp_Object tail = Vread_symbol_shorthands; |
| 4644 | 4644 | ||
| 4645 | /* First, assume no transformation will take place. */ | 4645 | /* First, assume no transformation will take place. */ |
| 4646 | *out = NULL; | 4646 | *out = NULL; |
| 4647 | /* Then, iterate each pair in Velisp_shorthands. */ | 4647 | /* Then, iterate each pair in Vread_symbol_shorthands. */ |
| 4648 | FOR_EACH_TAIL_SAFE (tail) | 4648 | FOR_EACH_TAIL_SAFE (tail) |
| 4649 | { | 4649 | { |
| 4650 | Lisp_Object pair = XCAR (tail); | 4650 | Lisp_Object pair = XCAR (tail); |
| 4651 | /* Be lenient to 'elisp-shorthands': if some element isn't a | 4651 | /* Be lenient to 'read-symbol-shorthands': if some element isn't a |
| 4652 | cons, or some member of that cons isn't a string, just skip | 4652 | cons, or some member of that cons isn't a string, just skip |
| 4653 | to the next element. */ | 4653 | to the next element. */ |
| 4654 | if (!CONSP (pair)) | 4654 | if (!CONSP (pair)) |
| @@ -5446,10 +5446,10 @@ that are loaded before your customizations are read! */); | |||
| 5446 | 5446 | ||
| 5447 | DEFSYM (Qchar_from_name, "char-from-name"); | 5447 | DEFSYM (Qchar_from_name, "char-from-name"); |
| 5448 | 5448 | ||
| 5449 | DEFVAR_LISP ("elisp-shorthands", Velisp_shorthands, | 5449 | DEFVAR_LISP ("read-symbol-shorthands", Vread_symbol_shorthands, |
| 5450 | doc: /* Alist of known symbol-name shorthands. | 5450 | doc: /* Alist of known symbol-name shorthands. |
| 5451 | This variable's value can only be set via file-local variables. | 5451 | This variable's value can only be set via file-local variables. |
| 5452 | See Info node `(elisp)Shorthands' for more details. */); | 5452 | See Info node `(elisp)Shorthands' for more details. */); |
| 5453 | Velisp_shorthands = Qnil; | 5453 | Vread_symbol_shorthands = Qnil; |
| 5454 | DEFSYM (Qobarray_cache, "obarray-cache"); | 5454 | DEFSYM (Qobarray_cache, "obarray-cache"); |
| 5455 | } | 5455 | } |
diff --git a/src/pdumper.c b/src/pdumper.c index 2291fced5d7..11c680d77b7 100644 --- a/src/pdumper.c +++ b/src/pdumper.c | |||
| @@ -799,7 +799,7 @@ dump_tailq_length (const struct dump_tailq *tailq) | |||
| 799 | return tailq->length; | 799 | return tailq->length; |
| 800 | } | 800 | } |
| 801 | 801 | ||
| 802 | static void ATTRIBUTE_UNUSED | 802 | static void |
| 803 | dump_tailq_prepend (struct dump_tailq *tailq, Lisp_Object value) | 803 | dump_tailq_prepend (struct dump_tailq *tailq, Lisp_Object value) |
| 804 | { | 804 | { |
| 805 | Lisp_Object link = Fcons (value, tailq->head); | 805 | Lisp_Object link = Fcons (value, tailq->head); |
| @@ -809,24 +809,6 @@ dump_tailq_prepend (struct dump_tailq *tailq, Lisp_Object value) | |||
| 809 | tailq->length += 1; | 809 | tailq->length += 1; |
| 810 | } | 810 | } |
| 811 | 811 | ||
| 812 | static void ATTRIBUTE_UNUSED | ||
| 813 | dump_tailq_append (struct dump_tailq *tailq, Lisp_Object value) | ||
| 814 | { | ||
| 815 | Lisp_Object link = Fcons (value, Qnil); | ||
| 816 | if (NILP (tailq->head)) | ||
| 817 | { | ||
| 818 | eassert (NILP (tailq->tail)); | ||
| 819 | tailq->head = tailq->tail = link; | ||
| 820 | } | ||
| 821 | else | ||
| 822 | { | ||
| 823 | eassert (!NILP (tailq->tail)); | ||
| 824 | XSETCDR (tailq->tail, link); | ||
| 825 | tailq->tail = link; | ||
| 826 | } | ||
| 827 | tailq->length += 1; | ||
| 828 | } | ||
| 829 | |||
| 830 | static bool | 812 | static bool |
| 831 | dump_tailq_empty_p (struct dump_tailq *tailq) | 813 | dump_tailq_empty_p (struct dump_tailq *tailq) |
| 832 | { | 814 | { |
diff --git a/src/process.c b/src/process.c index 58347a154a3..221d4c7f6c3 100644 --- a/src/process.c +++ b/src/process.c | |||
| @@ -4004,7 +4004,7 @@ usage: (make-network-process &rest ARGS) */) | |||
| 4004 | 4004 | ||
| 4005 | if (!NILP (host)) | 4005 | if (!NILP (host)) |
| 4006 | { | 4006 | { |
| 4007 | ptrdiff_t portstringlen ATTRIBUTE_UNUSED; | 4007 | MAYBE_UNUSED ptrdiff_t portstringlen; |
| 4008 | 4008 | ||
| 4009 | /* SERVICE can either be a string or int. | 4009 | /* SERVICE can either be a string or int. |
| 4010 | Convert to a C string for later use by getaddrinfo. */ | 4010 | Convert to a C string for later use by getaddrinfo. */ |
diff --git a/src/systhread.h b/src/systhread.h index 0f47d7c1a8a..601505f4f86 100644 --- a/src/systhread.h +++ b/src/systhread.h | |||
| @@ -101,14 +101,11 @@ extern void sys_cond_signal (sys_cond_t *); | |||
| 101 | extern void sys_cond_broadcast (sys_cond_t *); | 101 | extern void sys_cond_broadcast (sys_cond_t *); |
| 102 | extern void sys_cond_destroy (sys_cond_t *); | 102 | extern void sys_cond_destroy (sys_cond_t *); |
| 103 | 103 | ||
| 104 | extern sys_thread_t sys_thread_self (void) | 104 | NODISCARD extern sys_thread_t sys_thread_self (void); |
| 105 | NODISCARD; | 105 | NODISCARD extern bool sys_thread_equal (sys_thread_t, sys_thread_t); |
| 106 | extern bool sys_thread_equal (sys_thread_t, sys_thread_t) | 106 | |
| 107 | NODISCARD; | 107 | NODISCARD extern bool sys_thread_create (sys_thread_t *, |
| 108 | 108 | thread_creation_function *, void *); | |
| 109 | extern bool sys_thread_create (sys_thread_t *, thread_creation_function *, | ||
| 110 | void *) | ||
| 111 | NODISCARD; | ||
| 112 | 109 | ||
| 113 | extern void sys_thread_yield (void); | 110 | extern void sys_thread_yield (void); |
| 114 | extern void sys_thread_set_name (const char *); | 111 | extern void sys_thread_set_name (const char *); |
diff --git a/src/term.c b/src/term.c index 7d9fe8cee30..0858f816851 100644 --- a/src/term.c +++ b/src/term.c | |||
| @@ -549,13 +549,14 @@ encode_terminal_code (struct glyph *src, int src_len, | |||
| 549 | { | 549 | { |
| 550 | if (src->type == COMPOSITE_GLYPH) | 550 | if (src->type == COMPOSITE_GLYPH) |
| 551 | { | 551 | { |
| 552 | struct composition *cmp UNINIT; | 552 | struct composition *cmp; |
| 553 | Lisp_Object gstring UNINIT; | 553 | Lisp_Object gstring; |
| 554 | int i; | 554 | int i; |
| 555 | 555 | ||
| 556 | nbytes = buf - encode_terminal_src; | 556 | nbytes = buf - encode_terminal_src; |
| 557 | if (src->u.cmp.automatic) | 557 | if (src->u.cmp.automatic) |
| 558 | { | 558 | { |
| 559 | cmp = NULL; | ||
| 559 | gstring = composition_gstring_from_id (src->u.cmp.id); | 560 | gstring = composition_gstring_from_id (src->u.cmp.id); |
| 560 | required = src->slice.cmp.to - src->slice.cmp.from + 1; | 561 | required = src->slice.cmp.to - src->slice.cmp.from + 1; |
| 561 | } | 562 | } |
| @@ -575,7 +576,7 @@ encode_terminal_code (struct glyph *src, int src_len, | |||
| 575 | buf = encode_terminal_src + nbytes; | 576 | buf = encode_terminal_src + nbytes; |
| 576 | } | 577 | } |
| 577 | 578 | ||
| 578 | if (src->u.cmp.automatic) | 579 | if (!cmp) |
| 579 | for (i = src->slice.cmp.from; i <= src->slice.cmp.to; i++) | 580 | for (i = src->slice.cmp.from; i <= src->slice.cmp.to; i++) |
| 580 | { | 581 | { |
| 581 | Lisp_Object g = LGSTRING_GLYPH (gstring, i); | 582 | Lisp_Object g = LGSTRING_GLYPH (gstring, i); |
diff --git a/src/unexcw.c b/src/unexcw.c index 7a80b05963b..157e9f45607 100644 --- a/src/unexcw.c +++ b/src/unexcw.c | |||
| @@ -48,7 +48,7 @@ static exe_header_t * | |||
| 48 | read_exe_header (int fd, exe_header_t * exe_header_buffer) | 48 | read_exe_header (int fd, exe_header_t * exe_header_buffer) |
| 49 | { | 49 | { |
| 50 | int i; | 50 | int i; |
| 51 | int ret ATTRIBUTE_UNUSED; | 51 | MAYBE_UNUSED int ret; |
| 52 | 52 | ||
| 53 | assert (fd >= 0); | 53 | assert (fd >= 0); |
| 54 | assert (exe_header_buffer != 0); | 54 | assert (exe_header_buffer != 0); |
| @@ -111,7 +111,7 @@ fixup_executable (int fd) | |||
| 111 | exe_header_t exe_header_buffer; | 111 | exe_header_t exe_header_buffer; |
| 112 | exe_header_t *exe_header; | 112 | exe_header_t *exe_header; |
| 113 | int i; | 113 | int i; |
| 114 | int ret ATTRIBUTE_UNUSED; | 114 | MAYBE_UNUSED int ret; |
| 115 | int found_data = 0; | 115 | int found_data = 0; |
| 116 | int found_bss = 0; | 116 | int found_bss = 0; |
| 117 | 117 | ||
| @@ -269,7 +269,7 @@ unexec (const char *outfile, const char *infile) | |||
| 269 | int fd_in; | 269 | int fd_in; |
| 270 | int fd_out; | 270 | int fd_out; |
| 271 | int ret; | 271 | int ret; |
| 272 | int ret2 ATTRIBUTE_UNUSED; | 272 | MAYBE_UNUSED int ret2; |
| 273 | 273 | ||
| 274 | infile = add_exe_suffix_if_necessary (infile, infile_buffer); | 274 | infile = add_exe_suffix_if_necessary (infile, infile_buffer); |
| 275 | outfile = add_exe_suffix_if_necessary (outfile, outfile_buffer); | 275 | outfile = add_exe_suffix_if_necessary (outfile, outfile_buffer); |
diff --git a/src/xfns.c b/src/xfns.c index 0d0335c2997..785ae3baca5 100644 --- a/src/xfns.c +++ b/src/xfns.c | |||
| @@ -6222,7 +6222,7 @@ Otherwise, the return value is a vector with the following fields: | |||
| 6222 | static void compute_tip_xy (struct frame *, Lisp_Object, Lisp_Object, | 6222 | static void compute_tip_xy (struct frame *, Lisp_Object, Lisp_Object, |
| 6223 | Lisp_Object, int, int, int *, int *); | 6223 | Lisp_Object, int, int, int *, int *); |
| 6224 | 6224 | ||
| 6225 | /* The frame of the currently visible tooltip. */ | 6225 | /* The frame of the currently visible tooltip, or nil if none. */ |
| 6226 | static Lisp_Object tip_frame; | 6226 | static Lisp_Object tip_frame; |
| 6227 | 6227 | ||
| 6228 | /* The window-system window corresponding to the frame of the | 6228 | /* The window-system window corresponding to the frame of the |
| @@ -6710,7 +6710,7 @@ x_hide_tip (bool delete) | |||
| 6710 | if ((NILP (tip_last_frame) && NILP (tip_frame)) | 6710 | if ((NILP (tip_last_frame) && NILP (tip_frame)) |
| 6711 | || (!x_gtk_use_system_tooltips | 6711 | || (!x_gtk_use_system_tooltips |
| 6712 | && !delete | 6712 | && !delete |
| 6713 | && FRAMEP (tip_frame) | 6713 | && !NILP (tip_frame) |
| 6714 | && FRAME_LIVE_P (XFRAME (tip_frame)) | 6714 | && FRAME_LIVE_P (XFRAME (tip_frame)) |
| 6715 | && !FRAME_VISIBLE_P (XFRAME (tip_frame)))) | 6715 | && !FRAME_VISIBLE_P (XFRAME (tip_frame)))) |
| 6716 | /* Either there's no tooltip to hide or it's an already invisible | 6716 | /* Either there's no tooltip to hide or it's an already invisible |
| @@ -6727,7 +6727,7 @@ x_hide_tip (bool delete) | |||
| 6727 | specbind (Qinhibit_quit, Qt); | 6727 | specbind (Qinhibit_quit, Qt); |
| 6728 | 6728 | ||
| 6729 | /* Try to hide the GTK+ system tip first. */ | 6729 | /* Try to hide the GTK+ system tip first. */ |
| 6730 | if (FRAMEP (tip_last_frame)) | 6730 | if (!NILP (tip_last_frame)) |
| 6731 | { | 6731 | { |
| 6732 | struct frame *f = XFRAME (tip_last_frame); | 6732 | struct frame *f = XFRAME (tip_last_frame); |
| 6733 | 6733 | ||
| @@ -6745,7 +6745,7 @@ x_hide_tip (bool delete) | |||
| 6745 | tip_last_frame = Qnil; | 6745 | tip_last_frame = Qnil; |
| 6746 | 6746 | ||
| 6747 | /* Now look whether there's an Emacs tip around. */ | 6747 | /* Now look whether there's an Emacs tip around. */ |
| 6748 | if (FRAMEP (tip_frame)) | 6748 | if (!NILP (tip_frame)) |
| 6749 | { | 6749 | { |
| 6750 | struct frame *f = XFRAME (tip_frame); | 6750 | struct frame *f = XFRAME (tip_frame); |
| 6751 | 6751 | ||
| @@ -6775,7 +6775,7 @@ x_hide_tip (bool delete) | |||
| 6775 | #else /* not USE_GTK */ | 6775 | #else /* not USE_GTK */ |
| 6776 | if (NILP (tip_frame) | 6776 | if (NILP (tip_frame) |
| 6777 | || (!delete | 6777 | || (!delete |
| 6778 | && FRAMEP (tip_frame) | 6778 | && !NILP (tip_frame) |
| 6779 | && FRAME_LIVE_P (XFRAME (tip_frame)) | 6779 | && FRAME_LIVE_P (XFRAME (tip_frame)) |
| 6780 | && !FRAME_VISIBLE_P (XFRAME (tip_frame)))) | 6780 | && !FRAME_VISIBLE_P (XFRAME (tip_frame)))) |
| 6781 | return Qnil; | 6781 | return Qnil; |
| @@ -6788,7 +6788,7 @@ x_hide_tip (bool delete) | |||
| 6788 | specbind (Qinhibit_redisplay, Qt); | 6788 | specbind (Qinhibit_redisplay, Qt); |
| 6789 | specbind (Qinhibit_quit, Qt); | 6789 | specbind (Qinhibit_quit, Qt); |
| 6790 | 6790 | ||
| 6791 | if (FRAMEP (tip_frame)) | 6791 | if (!NILP (tip_frame)) |
| 6792 | { | 6792 | { |
| 6793 | struct frame *f = XFRAME (tip_frame); | 6793 | struct frame *f = XFRAME (tip_frame); |
| 6794 | 6794 | ||
| @@ -6931,7 +6931,7 @@ Text larger than the specified size is clipped. */) | |||
| 6931 | } | 6931 | } |
| 6932 | #endif /* USE_GTK */ | 6932 | #endif /* USE_GTK */ |
| 6933 | 6933 | ||
| 6934 | if (FRAMEP (tip_frame) && FRAME_LIVE_P (XFRAME (tip_frame))) | 6934 | if (!NILP (tip_frame) && FRAME_LIVE_P (XFRAME (tip_frame))) |
| 6935 | { | 6935 | { |
| 6936 | if (FRAME_VISIBLE_P (XFRAME (tip_frame)) | 6936 | if (FRAME_VISIBLE_P (XFRAME (tip_frame)) |
| 6937 | && EQ (frame, tip_last_frame) | 6937 | && EQ (frame, tip_last_frame) |
| @@ -7016,7 +7016,7 @@ Text larger than the specified size is clipped. */) | |||
| 7016 | tip_last_string = string; | 7016 | tip_last_string = string; |
| 7017 | tip_last_parms = parms; | 7017 | tip_last_parms = parms; |
| 7018 | 7018 | ||
| 7019 | if (!FRAMEP (tip_frame) || !FRAME_LIVE_P (XFRAME (tip_frame))) | 7019 | if (NILP (tip_frame) || !FRAME_LIVE_P (XFRAME (tip_frame))) |
| 7020 | { | 7020 | { |
| 7021 | /* Add default values to frame parameters. */ | 7021 | /* Add default values to frame parameters. */ |
| 7022 | if (NILP (Fassq (Qname, parms))) | 7022 | if (NILP (Fassq (Qname, parms))) |
diff --git a/src/xmenu.c b/src/xmenu.c index a6762236bc4..709e455dd05 100644 --- a/src/xmenu.c +++ b/src/xmenu.c | |||
| @@ -1603,6 +1603,14 @@ x_menu_show (struct frame *f, int x, int y, int menuflags, | |||
| 1603 | STRINGP (help) ? help : Qnil); | 1603 | STRINGP (help) ? help : Qnil); |
| 1604 | if (prev_wv) | 1604 | if (prev_wv) |
| 1605 | prev_wv->next = wv; | 1605 | prev_wv->next = wv; |
| 1606 | else if (!save_wv) | ||
| 1607 | { | ||
| 1608 | /* This call to 'abort' pacifies gcc 11.2.1 when Emacs | ||
| 1609 | is configured with --enable-gcc-warnings. FIXME: If | ||
| 1610 | save_wv can be null, do something better; otherwise, | ||
| 1611 | explain why save_wv cannot be null. */ | ||
| 1612 | abort (); | ||
| 1613 | } | ||
| 1606 | else | 1614 | else |
| 1607 | save_wv->contents = wv; | 1615 | save_wv->contents = wv; |
| 1608 | if (!NILP (descrip)) | 1616 | if (!NILP (descrip)) |
diff --git a/src/xterm.c b/src/xterm.c index ae3af598da6..89885e0d889 100644 --- a/src/xterm.c +++ b/src/xterm.c | |||
| @@ -4049,7 +4049,7 @@ x_delete_glyphs (struct frame *f, int n) | |||
| 4049 | /* Like XClearArea, but check that WIDTH and HEIGHT are reasonable. | 4049 | /* Like XClearArea, but check that WIDTH and HEIGHT are reasonable. |
| 4050 | If they are <= 0, this is probably an error. */ | 4050 | If they are <= 0, this is probably an error. */ |
| 4051 | 4051 | ||
| 4052 | static ATTRIBUTE_UNUSED void | 4052 | MAYBE_UNUSED static void |
| 4053 | x_clear_area1 (Display *dpy, Window window, | 4053 | x_clear_area1 (Display *dpy, Window window, |
| 4054 | int x, int y, int width, int height, int exposures) | 4054 | int x, int y, int width, int height, int exposures) |
| 4055 | { | 4055 | { |
| @@ -10133,8 +10133,9 @@ x_connection_closed (Display *dpy, const char *error_message, bool ioerror) | |||
| 10133 | frame on it. */ | 10133 | frame on it. */ |
| 10134 | dpyinfo->reference_count++; | 10134 | dpyinfo->reference_count++; |
| 10135 | dpyinfo->terminal->reference_count++; | 10135 | dpyinfo->terminal->reference_count++; |
| 10136 | if (ioerror) | ||
| 10137 | dpyinfo->display = 0; | ||
| 10136 | } | 10138 | } |
| 10137 | if (ioerror) dpyinfo->display = 0; | ||
| 10138 | 10139 | ||
| 10139 | /* First delete frames whose mini-buffers are on frames | 10140 | /* First delete frames whose mini-buffers are on frames |
| 10140 | that are on the dead display. */ | 10141 | that are on the dead display. */ |
diff --git a/test/lisp/net/tramp-tests.el b/test/lisp/net/tramp-tests.el index 9a1c9d659b4..ebedbaf45f2 100644 --- a/test/lisp/net/tramp-tests.el +++ b/test/lisp/net/tramp-tests.el | |||
| @@ -69,6 +69,7 @@ | |||
| 69 | (defvar tramp-connection-properties) | 69 | (defvar tramp-connection-properties) |
| 70 | (defvar tramp-copy-size-limit) | 70 | (defvar tramp-copy-size-limit) |
| 71 | (defvar tramp-display-escape-sequence-regexp) | 71 | (defvar tramp-display-escape-sequence-regexp) |
| 72 | (defvar tramp-fuse-unmount-on-cleanup) | ||
| 72 | (defvar tramp-inline-compress-start-size) | 73 | (defvar tramp-inline-compress-start-size) |
| 73 | (defvar tramp-persistency-file-name) | 74 | (defvar tramp-persistency-file-name) |
| 74 | (defvar tramp-remote-path) | 75 | (defvar tramp-remote-path) |
| @@ -5884,10 +5885,7 @@ Use direct async.") | |||
| 5884 | tramp-allow-unsafe-temporary-files | 5885 | tramp-allow-unsafe-temporary-files |
| 5885 | (inhibit-message t) | 5886 | (inhibit-message t) |
| 5886 | ;; tramp-rclone.el and tramp-sshfs.el cache the mounted files. | 5887 | ;; tramp-rclone.el and tramp-sshfs.el cache the mounted files. |
| 5887 | (tramp-cleanup-connection-hook | 5888 | (tramp-fuse-unmount-on-cleanup t) |
| 5888 | (append | ||
| 5889 | (and (tramp--test-fuse-p) '(tramp-fuse-unmount)) | ||
| 5890 | tramp-cleanup-connection-hook)) | ||
| 5891 | auto-save-default | 5889 | auto-save-default |
| 5892 | noninteractive) | 5890 | noninteractive) |
| 5893 | 5891 | ||
diff --git a/test/lisp/progmodes/elisp-mode-resources/simple-shorthand-test.el b/test/lisp/progmodes/elisp-mode-resources/simple-shorthand-test.el index ec568093af2..14c8e845d11 100644 --- a/test/lisp/progmodes/elisp-mode-resources/simple-shorthand-test.el +++ b/test/lisp/progmodes/elisp-mode-resources/simple-shorthand-test.el | |||
| @@ -1,23 +1,31 @@ | |||
| 1 | (defun f-test () | 1 | (defun f-test () |
| 2 | (let ((elisp-shorthands '(("foo-" . "bar-")))) | 2 | (let ((read-symbol-shorthands '(("foo-" . "bar-")))) |
| 3 | (with-temp-buffer | 3 | (with-temp-buffer |
| 4 | (insert "(foo-bar)") | 4 | (insert "(foo-bar)") |
| 5 | (goto-char (point-min)) | 5 | (goto-char (point-min)) |
| 6 | (read (current-buffer))))) | 6 | (read (current-buffer))))) |
| 7 | 7 | ||
| 8 | (defun f-test2 () | 8 | (defun f-test2 () |
| 9 | (let ((elisp-shorthands '(("foo-" . "bar-")))) | 9 | (let ((read-symbol-shorthands '(("foo-" . "bar-")))) |
| 10 | (read-from-string "(foo-bar)"))) | 10 | (read-from-string "(foo-bar)"))) |
| 11 | 11 | ||
| 12 | 12 | ||
| 13 | (defun f-test3 () | 13 | (defun f-test3 () |
| 14 | (let ((elisp-shorthands '(("foo-" . "bar-")))) | 14 | (let ((read-symbol-shorthands '(("foo-" . "bar-")))) |
| 15 | (intern "foo-bar"))) | 15 | (intern "foo-bar"))) |
| 16 | 16 | ||
| 17 | (defvar f-test-complete-me 42) | 17 | (defvar f-test-complete-me 42) |
| 18 | 18 | ||
| 19 | (elisp--foo-test3) | ||
| 20 | |||
| 19 | (defun #_f-test4--- () 84) | 21 | (defun #_f-test4--- () 84) |
| 20 | 22 | ||
| 23 | (defmacro f-define-test-5 ()) | ||
| 24 | |||
| 25 | ;; should be font locked with both shorthand | ||
| 26 | ;; highlighting _and_ macro highlighting. | ||
| 27 | (f-define-test-5) | ||
| 28 | |||
| 21 | (when nil | 29 | (when nil |
| 22 | (f-test3) | 30 | (f-test3) |
| 23 | (f-test2) | 31 | (f-test2) |
| @@ -26,5 +34,5 @@ | |||
| 26 | 34 | ||
| 27 | 35 | ||
| 28 | ;; Local Variables: | 36 | ;; Local Variables: |
| 29 | ;; elisp-shorthands: (("f-" . "elisp--foo-")) | 37 | ;; read-symbol-shorthands: (("f-" . "elisp--foo-")) |
| 30 | ;; End: | 38 | ;; End: |
diff --git a/test/lisp/progmodes/elisp-mode-tests.el b/test/lisp/progmodes/elisp-mode-tests.el index 7d30987176f..3856dcd717a 100644 --- a/test/lisp/progmodes/elisp-mode-tests.el +++ b/test/lisp/progmodes/elisp-mode-tests.el | |||
| @@ -1015,7 +1015,7 @@ evaluation of BODY." | |||
| 1015 | (shorthand-sname (format "s-%s" gsym)) | 1015 | (shorthand-sname (format "s-%s" gsym)) |
| 1016 | (expected (intern (format "shorthand-longhand-%s" gsym)))) | 1016 | (expected (intern (format "shorthand-longhand-%s" gsym)))) |
| 1017 | (cl-assert (not (intern-soft shorthand-sname))) | 1017 | (cl-assert (not (intern-soft shorthand-sname))) |
| 1018 | (should (equal (let ((elisp-shorthands | 1018 | (should (equal (let ((read-symbol-shorthands |
| 1019 | '(("s-" . "shorthand-longhand-")))) | 1019 | '(("s-" . "shorthand-longhand-")))) |
| 1020 | (with-temp-buffer | 1020 | (with-temp-buffer |
| 1021 | (insert shorthand-sname) | 1021 | (insert shorthand-sname) |
| @@ -1029,7 +1029,7 @@ evaluation of BODY." | |||
| 1029 | (shorthand-sname (format "s-%s" gsym)) | 1029 | (shorthand-sname (format "s-%s" gsym)) |
| 1030 | (expected (intern (format "shorthand-longhand-%s" gsym)))) | 1030 | (expected (intern (format "shorthand-longhand-%s" gsym)))) |
| 1031 | (cl-assert (not (intern-soft shorthand-sname))) | 1031 | (cl-assert (not (intern-soft shorthand-sname))) |
| 1032 | (should (equal (let ((elisp-shorthands | 1032 | (should (equal (let ((read-symbol-shorthands |
| 1033 | '(("s-" . "shorthand-longhand-")))) | 1033 | '(("s-" . "shorthand-longhand-")))) |
| 1034 | (car (read-from-string shorthand-sname))) | 1034 | (car (read-from-string shorthand-sname))) |
| 1035 | expected)) | 1035 | expected)) |
diff --git a/test/lisp/subr-tests.el b/test/lisp/subr-tests.el index 5c4e0b9de93..32c0bc3ed3c 100644 --- a/test/lisp/subr-tests.el +++ b/test/lisp/subr-tests.el | |||
| @@ -769,15 +769,14 @@ See https://debbugs.gnu.org/cgi/bugreport.cgi?bug=19350." | |||
| 769 | 769 | ||
| 770 | (ert-deftest subr-test-internal--format-docstring-line () | 770 | (ert-deftest subr-test-internal--format-docstring-line () |
| 771 | (should | 771 | (should |
| 772 | (string= (let ((fill-column 60)) | 772 | (string= (let ((fill-column 70)) |
| 773 | (internal--format-docstring-line | 773 | (internal--format-docstring-line |
| 774 | "Emacs is the advanced, extensible, customizable, \ | 774 | "In addition to any hooks its parent mode might have run, this \ |
| 775 | self-documenting editor. This manual describes how to edit with Emacs and \ | 775 | mode runs the hook ‘foo-bar-baz-very-long-name-indeed-mode-hook’, as the final \ |
| 776 | some of the ways to customize it; it corresponds to GNU Emacs version 28.1.")) | 776 | or penultimate step during initialization.")) |
| 777 | "Emacs is the advanced, extensible, customizable, | 777 | "In addition to any hooks its parent mode might have run, this mode |
| 778 | self-documenting editor. This manual describes how to edit | 778 | runs the hook ‘foo-bar-baz-very-long-name-indeed-mode-hook’, as the |
| 779 | with Emacs and some of the ways to customize it; it | 779 | final or penultimate step during initialization.")) |
| 780 | corresponds to GNU Emacs version 28.1.")) | ||
| 781 | (should-error (internal--format-docstring-line "foo\nbar"))) | 780 | (should-error (internal--format-docstring-line "foo\nbar"))) |
| 782 | 781 | ||
| 783 | (ert-deftest test-ensure-list () | 782 | (ert-deftest test-ensure-list () |