mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2026-09-12 00:36:35 -04:00
Compare commits
No commits in common. "master" and "emacs-31.1-rc1" have entirely different histories.
master
...
emacs-31.1
|
|
@ -7,6 +7,7 @@
|
|||
(emacs-lisp-docstring-fill-column . 72)
|
||||
(vc-git-annotate-switches . "-w")
|
||||
(bug-reference-url-format . "https://debbugs.gnu.org/%s")
|
||||
(diff-add-log-use-relative-names . t)
|
||||
(etags-regen-regexp-alist
|
||||
.
|
||||
((("c" "objc") .
|
||||
|
|
@ -56,8 +57,7 @@
|
|||
(change-log-mode . ((add-log-time-zone-rule . t)
|
||||
(fill-column . 74)
|
||||
(mode . bug-reference)))
|
||||
(diff-mode . ((mode . whitespace)
|
||||
(diff-add-log-use-relative-names . t)))
|
||||
(diff-mode . ((mode . whitespace)))
|
||||
(emacs-lisp-mode . ((indent-tabs-mode . nil)
|
||||
(electric-quote-comment . nil)
|
||||
(electric-quote-string . nil)
|
||||
|
|
|
|||
|
|
@ -15670,7 +15670,7 @@
|
|||
* lisp/progmodes/cc-mode.el (c-depropertize-CPP): Test for general ml strings
|
||||
rather than C++ raw strings.
|
||||
(c-unescaped-nls-in-string-p): Handle languages with ml strings.
|
||||
(c-clear-string-fences): Fix bug with wrong parenthesization.
|
||||
(c-clear-string-fences): Fix bug with wrong parenthesisation.
|
||||
(c-before-change-check-unbalanced-strings)
|
||||
(c-after-change-mark-abnormal-strings, c-after-change-escape-NL-in-string):
|
||||
Adapt for multi-line strings.
|
||||
|
|
@ -17441,7 +17441,7 @@
|
|||
|
||||
2021-07-30 Mattias Engdegård <mattiase@acm.org>
|
||||
|
||||
Simplify lexical let-optimizations
|
||||
Simplify lexical let-optimisations
|
||||
|
||||
Ensure in cconv that let-bindings have the normal form (VAR EXPR)
|
||||
where VAR is a valid variable name, so that we don't need to keep
|
||||
|
|
@ -57196,7 +57196,7 @@
|
|||
|
||||
* lisp/progmodes/compile.el (compilation-error-regexp-alist-alist):
|
||||
'javac': Column numbers are 1-based by default; remove subtraction and
|
||||
η-reduce. Translate regexp to rx (mechanized).
|
||||
η-reduce. Translate regexp to rx (mechanised).
|
||||
* test/lisp/progmodes/compile-tests.el (compile-tests--test-regexps-data):
|
||||
Adapt 'javac' test cases to the change.
|
||||
|
||||
|
|
|
|||
|
|
@ -672,7 +672,7 @@
|
|||
format.
|
||||
|
||||
This patch fixes various problems preventing this script from
|
||||
working. The job of this script is to collect Emacs' dependencies
|
||||
working. The job of this script is to collect Emacs' dependanicies
|
||||
and the (MSYS2/MinGW64) source archives for dependencies
|
||||
(including 2nd etc. order dependencies) into zip archives. GPL
|
||||
requires distributing such archives (along with Emacs' own
|
||||
|
|
@ -99218,7 +99218,7 @@
|
|||
granular.
|
||||
|
||||
* lisp/progmodes/java-ts-mode.el (java-ts-mode): Use regexp-opt to
|
||||
distinguish in more detail.
|
||||
distinguish more granularly.
|
||||
|
||||
2022-12-09 Randy Taylor <dev@rjt.dev>
|
||||
|
||||
|
|
@ -114450,7 +114450,7 @@
|
|||
Make Gnus respect mode-line-buffer-identification-keymap
|
||||
|
||||
* lisp/gnus/gnus-group.el (gnus-group-set-mode-line): Use
|
||||
'propertized-buffer-identification' to buttonize and fontify the
|
||||
'propertized-buffer-identification' to buttonise and fontify the
|
||||
buffer name.
|
||||
* lisp/gnus/gnus-sum.el (gnus-set-mode-line):
|
||||
* lisp/gnus/gnus.el (gnus-mode-line-buffer-identification): Adjust
|
||||
|
|
|
|||
229
ChangeLog.5
229
ChangeLog.5
|
|
@ -2,121 +2,6 @@
|
|||
|
||||
* Version 31.1 released.
|
||||
|
||||
2026-08-24 Sean Whitton <spwhitton@spwhitton.name>
|
||||
|
||||
Delete test that hangs
|
||||
|
||||
* test/lisp/tab-bar-tests.el
|
||||
(tab-bar-tests-quit-restore-window): Delete test that hangs, for
|
||||
the Emacs 31.1 release. Do not merge to master.
|
||||
|
||||
2026-08-23 Ulrich Müller <ulm@gentoo.org>
|
||||
|
||||
em-script-tests: don't load the site file
|
||||
|
||||
* test/lisp/eshell/em-script-tests.el (em-script-test/batch-file)
|
||||
(em-script-test/batch-file/shebang): Invoke Emacs with -Q to
|
||||
suppress site file loading. (Bug#81679)
|
||||
|
||||
2026-08-23 Ulrich Müller <ulm@gentoo.org>
|
||||
|
||||
emacsclient-tests: don't load the site file
|
||||
|
||||
* test/lib-src/emacsclient-tests.el
|
||||
(emacsclient-test-alternate-editor-allows-arguments)
|
||||
(emacsclient-test-alternate-editor-allows-quotes): Invoke the
|
||||
alternate editor with -Q to suppress site file loading. (Bug#81676)
|
||||
|
||||
2026-08-23 Stephen Berman <stephen.berman@gmx.net>
|
||||
|
||||
Fix navigating vertical completions with annotations (bug#81645)
|
||||
|
||||
* lisp/simple.el (last-completion): When finding the last column
|
||||
in the completions list, account for annotations on the candidate.
|
||||
|
||||
2026-08-23 Philip Kaludercic <philipk@posteo.net>
|
||||
|
||||
Fix 'describe-package' for the Emacs pseudo package
|
||||
|
||||
* lisp/emacs-lisp/package.el (describe-package-1): Manually
|
||||
construct a package-desc object if the package being described
|
||||
in 'emacs', otherwise fall back to 'package-get-descriptor'.
|
||||
This is necessary since 'package-get-descriptor' doesn't handle
|
||||
pseudo packages. (Bug#81671)
|
||||
|
||||
2026-08-23 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
Avoid errors in text-only client frames of PGTK build
|
||||
|
||||
* lisp/net/browse-url.el (browse-url): Don't call
|
||||
pgtk-backend-display-class on TTY frame, as it will signal an
|
||||
error. (Bug#81666)
|
||||
|
||||
2026-08-21 Michael Albinus <michael.albinus@gmx.de>
|
||||
|
||||
Backport: Restrict Tramp user name
|
||||
|
||||
* doc/misc/tramp.texi (File name syntax): The user name can also
|
||||
be an environment variable.
|
||||
|
||||
* lisp/net/tramp.el (tramp-build-prefix-regexp):
|
||||
* lisp/net/tramp-gvfs.el (tramp-gvfs-handle-expand-file-name)
|
||||
(tramp-gvfs-get-file-attributes, tramp-gvfs-file-name)
|
||||
(tramp-gvfs-url-host, tramp-gvfs-handler-mounted-unmounted)
|
||||
(tramp-gvfs-connection-mounted-p, tramp-gvfs-mount-spec-entry)
|
||||
(tramp-gvfs-mount-spec):
|
||||
* lisp/net/tramp-rclone.el (tramp-rclone-parse-device-names)
|
||||
(tramp-rclone-remote-file-name):
|
||||
* lisp/net/tramp-smb.el (tramp-smb-get-share, tramp-smb-get-localname):
|
||||
Use string-anchored regexp, not line-anchored.
|
||||
|
||||
* lisp/net/tramp.el (tramp-prefix-regexp): Adapt docstring.
|
||||
(tramp-user-regexp): Exclude shell meta characters.
|
||||
(tramp-dissect-file-name, tramp-file-name-handler):
|
||||
Expand environment variable.
|
||||
(tramp-convert-file-attributes):
|
||||
* lisp/net/tramp-gvfs.el (tramp-gvfs-handle-file-attributes):
|
||||
Quote symbolic link target with remote file name syntax.
|
||||
|
||||
* test/lisp/net/tramp-tests.el (tramp-test01-file-name-syntax)
|
||||
(tramp-test01-file-name-syntax-simplified)
|
||||
(tramp-test01-file-name-syntax-separate)
|
||||
(tramp-test02-file-name-dissect)
|
||||
(tramp-test02-file-name-dissect-simplified)
|
||||
(tramp-test02-file-name-dissect-separate)
|
||||
(tramp-test21-file-links): Extend test.
|
||||
|
||||
(cherry picked from commit f3e7104d05bdb8e32ba13bf75604108ad88536dc)
|
||||
|
||||
2026-08-21 Spencer Baugh <sbaugh@janestreet.com>
|
||||
|
||||
Fix TAB to wrap with completion-auto-select t
|
||||
|
||||
* lisp/minibuffer.el (completions--clear-selection): New
|
||||
function.
|
||||
(minibuffer-hide-completions): Call it.
|
||||
* lisp/simple.el (next-column-completion): Call it (bug#81635).
|
||||
* test/lisp/minibuffer-tests.el
|
||||
(completion-auto-select-test-bug81635): New test.
|
||||
|
||||
2026-08-21 Juri Linkov <juri@linkov.net>
|
||||
|
||||
* lisp/progmodes/c-ts-mode.el (c-ts-mode--thing-settings): Remove 'comment'.
|
||||
|
||||
Comment out the 'comment' thing since 'treesit-forward-comment'
|
||||
is not ready to handle block comments (bug#80837).
|
||||
Do not merge to master.
|
||||
|
||||
2026-08-20 Yuan Fu <casouri@gmail.com>
|
||||
|
||||
Fix prev-adaptive-prefix anchor (bug#61314)
|
||||
|
||||
* lisp/treesit.el (treesit-simple-indent-presets):
|
||||
Replace (match-beginning 1) with (skip-syntax-forward "-"), both
|
||||
returns the position of the beginning of the prefix, but
|
||||
skip-syntax-forward always works regardless whether
|
||||
adaptive-fill-regexp has a match group for the prefix.
|
||||
|
||||
2026-08-17 Sean Whitton <spwhitton@spwhitton.name>
|
||||
|
||||
* doc/misc/efaq.texi (New in Emacs 31): New node.
|
||||
|
|
@ -1752,7 +1637,7 @@
|
|||
|
||||
* lisp/treesit.el:
|
||||
(treesit--embed-languages-need-full-parse): New variable.
|
||||
(treesit--set-embed-ranges): Reparse full range if the language
|
||||
(treesit--set-embed-ranges): Reparse full range if the langauge
|
||||
needs it.
|
||||
|
||||
2026-06-19 Stephen Berman <stephen.berman@gmx.net>
|
||||
|
|
@ -2091,7 +1976,7 @@
|
|||
* src/xselect.c (x_display_selection_waiting_message):
|
||||
(x_cancel_atimer):
|
||||
(x_get_foreign_selection): Use a pointer to a timer variable, which is
|
||||
cleared when the timer runs or is otherwise canceled. Don't cancel
|
||||
cleared when the timer runs or is otherwise cancelled. Don't cancel
|
||||
the timer twice.
|
||||
|
||||
2026-06-06 Pip Cet <pipcet@protonmail.com>
|
||||
|
|
@ -3541,7 +3426,7 @@
|
|||
call into the backend to gather the VC state. Since this function is
|
||||
also called from another context, where the requirements are less clear,
|
||||
keeping current smenatics in that situation seemed prudent, so the new
|
||||
behavior is activate with a new optional parameter.
|
||||
behaviour is activate with a new optional parameter.
|
||||
|
||||
* lisp/vc/vc-dir.el (vc-dir-resynch-file): Call
|
||||
vc-dir-recompute-file-state with truename=t.
|
||||
|
|
@ -4725,7 +4610,7 @@
|
|||
|
||||
2026-04-30 Vladimir Kazanov <vekazanov@gmail.com>
|
||||
|
||||
Add ERT coverage for read_key_sequence behavior
|
||||
Add ERT coverage for read_key_sequence behaviour
|
||||
|
||||
* test/src/keyboard-tests.el
|
||||
(keyboard-tests--rks-fake-posn)
|
||||
|
|
@ -7208,7 +7093,7 @@
|
|||
Implement new Dired handling of errors from 'ls'
|
||||
|
||||
The error messages are now displayed in a popped up buffer instead
|
||||
of being output in the Dired buffer and signaling an error. The
|
||||
of being output in the Dired buffer and signalling an error. The
|
||||
file name bounds in Dired entries are now determined solely by the
|
||||
offsets calculated by 'ls' with the --dired option and
|
||||
consequently Dired now reliably recognizes file names that contain
|
||||
|
|
@ -8780,10 +8665,10 @@
|
|||
|
||||
2026-03-03 Mattias Engdegård <mattias.engdegard@gmail.com>
|
||||
|
||||
Faster JSON string serialization (bug#80529)
|
||||
Faster JSON string serialisation (bug#80529)
|
||||
|
||||
* src/json.c (json_out_string):
|
||||
Optimize for runs of non-special ASCII chars.
|
||||
Optimise for runs of non-special ASCII chars.
|
||||
|
||||
This seems to be a a substantial performance gain for long strings but a
|
||||
smaller regression for short strings (up to 6 chars or thereabouts,
|
||||
|
|
@ -9058,7 +8943,7 @@
|
|||
|
||||
2026-02-28 Mattias Engdegård <mattias.engdegard@gmail.com>
|
||||
|
||||
Implement string> as a compiler macro instead of an optimization
|
||||
Implement string> as a compiler macro instead of an optimisation
|
||||
|
||||
This doesn't affect the generated code.
|
||||
|
||||
|
|
@ -9282,10 +9167,10 @@
|
|||
|
||||
2026-02-26 Mattias Engdegård <mattias.engdegard@gmail.com>
|
||||
|
||||
Simplify peephole optimization rule
|
||||
Simplify peephole optimisation rule
|
||||
|
||||
* lisp/emacs-lisp/byte-opt.el (byte-optimize-lapcode):
|
||||
Remove some obsolete dynamic variable optimizations that no longer
|
||||
Remove some obsolete dynamic variable optimisations that no longer
|
||||
improve any code. Fix broken logging (thanks Pip).
|
||||
|
||||
2026-02-26 Yuan Fu <casouri@gmail.com>
|
||||
|
|
@ -9369,7 +9254,7 @@
|
|||
Fix eglot-tests on MacOS (bug#80479)
|
||||
|
||||
* test/lisp/progmodes/eglot-tests.el (eglot--call-with-fixture):
|
||||
Normalize 'temporary-file-directory' to stave off problems that
|
||||
Normalise 'temporary-file-directory' to stave off problems that
|
||||
occur when it contains symlinks, which is common on MacOS.
|
||||
|
||||
2026-02-24 Mattias Engdegård <mattias.engdegard@gmail.com>
|
||||
|
|
@ -10019,7 +9904,7 @@
|
|||
|
||||
2026-02-20 Mattias Engdegård <mattias.engdegard@gmail.com>
|
||||
|
||||
Optimize closed-over variables earlier
|
||||
Optimise closed-over variables earlier
|
||||
|
||||
* lisp/emacs-lisp/byte-opt.el (byte-optimize-form-code-walker):
|
||||
Treat 'internal-get-closed-var' as a special form and delete it in
|
||||
|
|
@ -10027,7 +9912,7 @@
|
|||
|
||||
2026-02-20 Mattias Engdegård <mattias.engdegard@gmail.com>
|
||||
|
||||
Remove two obsolete peephole optimization rules
|
||||
Remove two obsolete peephole optimisation rules
|
||||
|
||||
* lisp/emacs-lisp/byte-opt.el (byte-optimize-lapcode):
|
||||
Remove two rules: the first could sometimes skip a varref in a loop;
|
||||
|
|
@ -10036,7 +9921,7 @@
|
|||
from the top to the bottom of a loop but depended on the first to work.
|
||||
|
||||
Both were quite slow, easily measurable when compiling big files, and
|
||||
arguably O(n³) which isn't very good for a peephole optimization.
|
||||
arguably O(n³) which isn't very good for a peephole optimisation.
|
||||
|
||||
2026-02-20 Sean Whitton <spwhitton@spwhitton.name>
|
||||
|
||||
|
|
@ -11164,7 +11049,7 @@
|
|||
|
||||
2026-02-11 Mattias Engdegård <mattias.engdegard@gmail.com>
|
||||
|
||||
Better 'prog1' optimization
|
||||
Better 'prog1' optimisation
|
||||
|
||||
* lisp/emacs-lisp/byte-opt.el (byte-optimize-form-code-walker):
|
||||
Always evaporate 'prog1' when the tail is effect-free, even
|
||||
|
|
@ -11633,7 +11518,7 @@
|
|||
(package--autosuggest-find-candidates)
|
||||
(package--autosugest-line-format, package-autosuggest-face)
|
||||
(package--autosuggest-after-change-mode, package-autosuggest):
|
||||
Remove definitions needed to recognize suggestions from here.
|
||||
Remove definitions needed to recognise suggestions from here.
|
||||
|
||||
* lisp/emacs-lisp/package-activate.el (package-autosuggest-style)
|
||||
(package--autosuggest-database, package--autosuggest-suggested)
|
||||
|
|
@ -11681,7 +11566,7 @@
|
|||
Eglot: fix thinko in eglot--async-request
|
||||
|
||||
Just because a specific request of a specific "hint" is
|
||||
canceled doesn't mean we can cancel the other's too. Also
|
||||
cancelled doesn't mean we can cancel the other's too. Also
|
||||
eglot-advertise-cancellation = nil was subtly broken.
|
||||
|
||||
This manifested itself mostly in Eglot semantic tokens.
|
||||
|
|
@ -12120,7 +12005,7 @@
|
|||
|
||||
* lisp/progmodes/eglot.el (eglot-server-programs): Use "elp" for erlang-mode.
|
||||
|
||||
erlang_ls has been archived in favor of erlang-language-platform.
|
||||
erlang_ls has been archived in favour of erlang-language-platform.
|
||||
Suggested by Alan & Kim Zimmerman <alan.zimm@gmail.com> (bug#79943).
|
||||
|
||||
2026-01-30 Juri Linkov <juri@linkov.net>
|
||||
|
|
@ -12780,11 +12665,11 @@
|
|||
|
||||
2026-01-23 Mattias Engdegård <mattias.engdegard@gmail.com>
|
||||
|
||||
* lisp/emacs-lisp/pcase.el (pcase--macroexpand): Normalize atom etc.
|
||||
* lisp/emacs-lisp/pcase.el (pcase--macroexpand): Normalise atom etc.
|
||||
|
||||
Transform (pred P) for P in {atom, nlistp, identity, not} into
|
||||
predicates that pcase already understands in type terms.
|
||||
This doesn't affect the behavior but generates better code.
|
||||
This doesn't affect the behaviour but generates better code.
|
||||
|
||||
2026-01-23 Mattias Engdegård <mattias.engdegard@gmail.com>
|
||||
|
||||
|
|
@ -13026,7 +12911,7 @@
|
|||
|
||||
It was completely broken, with a cancel being set for every sent (and
|
||||
probably already received) async request, and no actual discarding
|
||||
of the response of a canceled request.
|
||||
of the response of a cancelled request.
|
||||
|
||||
* lisp/progmodes/eglot.el (eglot--async-request): Fix cancellation
|
||||
of async requests.
|
||||
|
|
@ -14843,7 +14728,7 @@
|
|||
associated alist entries `tab-name' and `tab-group'.
|
||||
|
||||
* lisp/tab-bar.el (display-buffer-in-tab): Restructure docstring for
|
||||
clarity. Describe the `reusable-frames' behavior first (as if it finds
|
||||
clarity. Describe the `reusable-frames' behaviour first (as if it finds
|
||||
a frame with a suitable tab then the `tab-name' entry is not used).
|
||||
|
||||
(display-buffer-in-new-tab): Use consistent wording.
|
||||
|
|
@ -14946,7 +14831,7 @@
|
|||
|
||||
2026-01-01 Mattias Engdegård <mattias.engdegard@gmail.com>
|
||||
|
||||
Clean up a lapcode peephole optimization rule
|
||||
Clean up a lapcode peephole optimisation rule
|
||||
|
||||
* lisp/emacs-lisp/byte-opt.el (byte-optimize-lapcode):
|
||||
Clean up and simplify an old jump-to-conditional-jump rule that was
|
||||
|
|
@ -15407,7 +15292,7 @@
|
|||
* lisp/subr.el (split-string):
|
||||
|
||||
Make it clear that the SEPARATORS argument should not match the empty
|
||||
string, since the behavior was entirely an artefact of the original
|
||||
string, since the behaviour was entirely an artefact of the original
|
||||
implementation in this case; it makes little sense otherwise.
|
||||
|
||||
Clean up the examples for conciseness and do not waste space on
|
||||
|
|
@ -15418,8 +15303,8 @@
|
|||
Various split-string improvements
|
||||
|
||||
* lisp/subr.el (split-string):
|
||||
Fix quadratic behavior in (split-string "x:x:x..." ":" nil " +").
|
||||
General code reorganization for speed and reduced allocation.
|
||||
Fix quadratic behaviour in (split-string "x:x:x..." ":" nil " +").
|
||||
General code reorganisation for speed and reduced allocation.
|
||||
Fix a regexp bug; eg, (split-string "A;B" "," nil ";\\|:")
|
||||
|
||||
* test/lisp/subr-tests.el (subr-test-split-string):
|
||||
|
|
@ -15686,7 +15571,7 @@
|
|||
|
||||
2025-12-22 Mattias Engdegård <mattias.engdegard@gmail.com>
|
||||
|
||||
Recognize %b and %B in compile-time format string checker
|
||||
Recognise %b and %B in compile-time format string checker
|
||||
|
||||
* lisp/emacs-lisp/bytecomp.el (byte-compile-format-warn): Add b and B.
|
||||
|
||||
|
|
@ -16926,7 +16811,7 @@
|
|||
(package-vc-tests-packages): Rename test packages to avoid
|
||||
suffix being treated as a version number by
|
||||
`package--description-file'.
|
||||
(package-vc-tests-add): Ensure suffix capitalization remains as
|
||||
(package-vc-tests-add): Ensure suffix capitalisation remains as
|
||||
original when calling `replace-regexp-in-string'.
|
||||
(package-vc-tests-create-repository): Fix typo in temporary
|
||||
email and use a reserved TLD.
|
||||
|
|
@ -17331,7 +17216,7 @@
|
|||
* lisp/progmodes/antlr-mode.el: Correct indentation of rule headers.
|
||||
(antlr-indent-line): When looking for the end of a rule header, do
|
||||
not stop at colon if that is followed by another one, because this
|
||||
the scope name of a preceding grammar action.
|
||||
the scope name of a preceeding grammar action.
|
||||
|
||||
* lisp/progmodes/antlr-mode.el: Support more action languages.
|
||||
(antlr-language-alist): Add entries for C, Delphi, JavaScript,
|
||||
|
|
@ -18682,7 +18567,7 @@
|
|||
Therefore it's better for the ergonomics of this commonly used command
|
||||
to leave the code as it was and simply rely on C-n to bring in the
|
||||
default value (which is the current symbol name), instead of forcing
|
||||
users accustomed to the previous behavior remember to press sth like
|
||||
users accustomed to the previous behaviour remember to press sth like
|
||||
M-DEL to clean the input.
|
||||
|
||||
* lisp/progmodes/eglot.el (eglot-rename): Tweak.
|
||||
|
|
@ -19220,7 +19105,7 @@
|
|||
* lisp/emacs-lisp/cond-star.el (cond*-convert-condition): Bind
|
||||
unused values to fresh symbols, to avoid the compiler warning
|
||||
that a symbol starting with an underscore is accessed later on.
|
||||
This mirrors the behavior of `if-let*' and family.
|
||||
This mirrors the behaviour of `if-let*' and family.
|
||||
|
||||
2025-11-24 Juri Linkov <juri@linkov.net>
|
||||
|
||||
|
|
@ -21426,9 +21311,9 @@
|
|||
(rcirc-markup-attributes): Delete markup codes straight after
|
||||
processing it, to correctly handle toggling codes. E.g. when
|
||||
processing the message "one ^Btwo^B three", we previously
|
||||
recognized the first interval "^Btwo^B" and moved over the ^B.
|
||||
recognised the first interval "^Btwo^B" and moved over the ^B.
|
||||
Searching for the next range to markup, we would now falsely
|
||||
recognize "^B three" to be another markup range, instead of it
|
||||
recognise "^B three" to be another markup range, instead of it
|
||||
being the negative toggle. By removing the processed codes, we
|
||||
avoid this issue. This reverts the functionality removed in
|
||||
946ceca2, and therefore also re-adds the check to make an
|
||||
|
|
@ -21686,7 +21571,7 @@
|
|||
Define compiler macros for /=, atom and nlistp
|
||||
|
||||
Calls to these functions were previously rewritten in terms of other
|
||||
functions both in the optimizer and during codegen, for no good reason.
|
||||
functions both in the optimiser and during codegen, for no good reason.
|
||||
|
||||
This also resulted in poor diagnostics: wrong-arity calls to 'atom' and
|
||||
'nlistp' produced doubled but slightly-different warnings, and no
|
||||
|
|
@ -21700,11 +21585,11 @@
|
|||
|
||||
2025-10-30 Mattias Engdegård <mattias.engdegard@gmail.com>
|
||||
|
||||
Fix numeric comparison bug when optimization is disabled
|
||||
Fix numeric comparison bug when optimisation is disabled
|
||||
|
||||
* lisp/emacs-lisp/bytecomp.el (byte-compile-cmp):
|
||||
Don't assume that N-ary comparisons have been normalized, which is done
|
||||
in the optimizer. Reported by Pip Cet.
|
||||
Don't assume that N-ary comparisons have been normalised, which is done
|
||||
in the optimiser. Reported by Pip Cet.
|
||||
|
||||
2025-10-30 Mattias Engdegård <mattias.engdegard@gmail.com>
|
||||
|
||||
|
|
@ -21726,7 +21611,7 @@
|
|||
|
||||
* lisp/textmodes/markdown-ts-mode.el:
|
||||
(markdown-ts--convert-code-block-language): Return nil if the
|
||||
language doesn't have a corresponding major mode in
|
||||
langauge doesn't have a corresponding major mode in
|
||||
markdown-ts-code-block-source-mode-map.
|
||||
|
||||
2025-10-30 Yuan Fu <casouri@gmail.com>
|
||||
|
|
@ -21930,14 +21815,14 @@
|
|||
|
||||
2025-10-24 Mattias Engdegård <mattias.engdegard@gmail.com>
|
||||
|
||||
Fix peephole optimizer bug for symbolp
|
||||
Fix peephole optimiser bug for symbolp
|
||||
|
||||
* lisp/emacs-lisp/byte-opt.el (byte-optimize-lapcode):
|
||||
Don't sink 'symbolp' past 'unbind'; it's unsafe.
|
||||
|
||||
2025-10-24 Mattias Engdegård <mattias.engdegard@gmail.com>
|
||||
|
||||
Move some constants into the peephole optimizer
|
||||
Move some constants into the peephole optimiser
|
||||
|
||||
* lisp/emacs-lisp/byte-opt.el (byte-tagref-ops, byte-conditional-ops)
|
||||
(byte-after-unbind-ops, byte-compile-side-effect-and-error-free-ops)
|
||||
|
|
@ -22967,7 +22852,7 @@
|
|||
Fix Tramp customization
|
||||
|
||||
Do not use the ;;;###tramp-autoload cookie for defcustoms. This
|
||||
damages the customization when Tramp is autoloaded. Reported by
|
||||
damages the customisation when Tramp is autoloaded. Reported by
|
||||
Joel Reicher <joel.reicher@gmail.com>.
|
||||
|
||||
* lisp/net/tramp-cache.el (tramp-verbose): Declare.
|
||||
|
|
@ -25368,7 +25253,7 @@
|
|||
|
||||
2025-09-07 Mattias Engdegård <mattias.engdegard@gmail.com>
|
||||
|
||||
Harmonize doc strings for {re-,posix-,}search-{forward,backward}
|
||||
Harmonise doc strings for {re-,posix-,}search-{forward,backward}
|
||||
|
||||
The doc strings for re-search-forward and re-search-backward have been
|
||||
improved (bug#25193, bug#31584) but the corresponding posix- and
|
||||
|
|
@ -26887,7 +26772,7 @@
|
|||
|
||||
The previous fix for this bug is an acceptable approach, but
|
||||
more care must be taken when clearing a flymake--state object's
|
||||
diagnostics. Refactor this behavior into a helper.
|
||||
diagnostics. Refactor this behaviour into a helper.
|
||||
|
||||
* lisp/progmodes/flymake.el (flymake--clear-state): New helper.
|
||||
(flymake--publish-diagnostics, flymake-start): Use it.
|
||||
|
|
@ -35350,7 +35235,7 @@
|
|||
|
||||
* lisp/emacs-lisp/package.el (package-unpack, package-dir-info):
|
||||
Check the marked files if in a Dired buffer, and otherwise
|
||||
fallback on the previous behavior or if there was no selection.
|
||||
fallback on the previous behaviour or if there was no selection.
|
||||
(package-install-from-buffer): Document the feature.
|
||||
* etc/NEWS: Mention the change.
|
||||
|
||||
|
|
@ -39809,7 +39694,7 @@
|
|||
|
||||
2025-03-25 Philipp Stephani <p.stephani2@gmail.com>
|
||||
|
||||
Mimic behavior of 'aref' when signaling out-of-range errors.
|
||||
Mimic behavior of 'aref' when signalling out-of-range errors.
|
||||
|
||||
The convention used by 'aref' and friends is that for
|
||||
'args-out-of-range', the error data is a list (SEQ INDEX). Use the same
|
||||
|
|
@ -39825,7 +39710,7 @@
|
|||
'args-out-of-range' means that some index argument isn't valid for a
|
||||
given sequence/range, which isn't the case here. Instead, define a new
|
||||
error symbol to mean "user-supplied buffer is too small." Since we
|
||||
never specified nor tested which error symbol was signaled in this
|
||||
never specified nor tested which error symbol was signalled in this
|
||||
case, changing it shouldn't cause severe breakages.
|
||||
|
||||
* src/emacs-module.c (module_buffer_too_small): New helper function.
|
||||
|
|
@ -44835,7 +44720,7 @@
|
|||
type by default.
|
||||
* doc/emacs/killing.texi (Clipboard):
|
||||
* doc/lispref/frames.texi (Yanking Media): Document the new
|
||||
behavior, and the new variables.
|
||||
behaviour, and the new variables.
|
||||
* etc/NEWS: Announce the change. (Bug#75116)
|
||||
|
||||
2025-02-22 Mauro Aranda <maurooaranda@gmail.com>
|
||||
|
|
@ -50976,7 +50861,7 @@
|
|||
|
||||
* lisp/progmodes/go-ts-mode.el (go-ts-mode-test-flags):
|
||||
(go-ts-mode--get-test-flags): New custom variable and function
|
||||
for controlling test behavior.
|
||||
for controlling test behaviour.
|
||||
(go-ts-mode--compile-test): Updated to use new test flags
|
||||
variable for passing extra information to the go test command
|
||||
line.
|
||||
|
|
@ -52293,13 +52178,13 @@
|
|||
usability problem. It is relatively too easy to mistakenly
|
||||
launch the function and, if a region of text is selected, have
|
||||
potentially sensitive data sent out to a third-party service.
|
||||
This commit changes the search function's default behavior so
|
||||
This commit changes the search function's default behaviour so
|
||||
that explicit confirmation is required before a region is sent
|
||||
to a search engine. The behavior can be adjusted via the
|
||||
to a search engine. The behaviour can be adjusted via the
|
||||
newly-introduced 'eww-search-confirm-send-region' variable,
|
||||
which is set to true by default.
|
||||
* lisp/net/eww.el (eww-search-confirm-send-region): Add.
|
||||
(eww-search-words): Update default 'eww-search-words' behavior
|
||||
(eww-search-words): Update default 'eww-search-words' behaviour
|
||||
so as to ask confirmation before sending the region to a search
|
||||
engine. (Bug#74218)
|
||||
|
||||
|
|
@ -59679,7 +59564,7 @@
|
|||
|
||||
* lisp/vc/diff-mode.el (diff-vc-deduce-fileset): Signal
|
||||
user-error when the buffer is narrowed.
|
||||
* lisp/vc/vc.el (vc-next-action): Remove code signaling a
|
||||
* lisp/vc/vc.el (vc-next-action): Remove code signalling a
|
||||
user-error when the buffer is narrowed.
|
||||
|
||||
2024-10-02 Stefan Kangas <stefankangas@gmail.com>
|
||||
|
|
@ -60113,7 +59998,7 @@
|
|||
(Finternal_set_lisp_face_attribute_from_resource)
|
||||
(Finternal_get_lisp_face_attribute)
|
||||
(Finternal_lisp_face_attribute_values, syms_of_xfaces):
|
||||
Stop recognizing :reverse-video.
|
||||
Stop recognising :reverse-video.
|
||||
* etc/NEWS: Announce.
|
||||
|
||||
2024-09-29 Mattias Engdegård <mattiase@acm.org>
|
||||
|
|
@ -60576,7 +60461,7 @@
|
|||
when the mode is activated.
|
||||
(midnight-delay-set): Only start the timer if the mode is turned
|
||||
on. (Bug#73291)
|
||||
* etc/NEWS: Document the change in behavior.
|
||||
* etc/NEWS: Document the change in behaviour.
|
||||
|
||||
2024-09-21 Stefan Kangas <stefankangas@gmail.com>
|
||||
|
||||
|
|
@ -61408,7 +61293,7 @@
|
|||
|
||||
2024-09-09 Mattias Engdegård <mattiase@acm.org>
|
||||
|
||||
* etc/emacs_lldb.py (Lisp_Object): Recognize Lisp_Sub_Char_Table
|
||||
* etc/emacs_lldb.py (Lisp_Object): Recognise Lisp_Sub_Char_Table
|
||||
|
||||
2024-09-09 Mattias Engdegård <mattiase@acm.org>
|
||||
|
||||
|
|
@ -64348,7 +64233,7 @@
|
|||
Improve implementation of built-in Eshell "kill" command
|
||||
|
||||
* lisp/eshell/esh-proc.el (eshell/kill): Fix handling of commands like
|
||||
"kill 123". Use REMOTE when signaling PIDs in remote directories.
|
||||
"kill 123". Use REMOTE when signalling PIDs in remote directories.
|
||||
Signal using process objects when possible. Report errors when failing
|
||||
to signal.
|
||||
|
||||
|
|
@ -67989,7 +67874,7 @@
|
|||
|
||||
This file records repository revisions from
|
||||
commit 1cda0967b4d3c815fc610794ad6a8fc2b913a3c5 (exclusive) to
|
||||
commit 76846eede34ea7bc7b8bbe4183ed070783e11d6b (inclusive).
|
||||
commit 0968d7e5e268a8b698730addb22bc84fe88782d5 (inclusive).
|
||||
See ChangeLog.4 for earlier changes.
|
||||
|
||||
;; Local Variables:
|
||||
|
|
|
|||
76
Makefile.in
76
Makefile.in
|
|
@ -115,8 +115,6 @@ HAVE_GSETTINGS = @HAVE_GSETTINGS@
|
|||
|
||||
ANDROID = @ANDROID@
|
||||
|
||||
DOCLANGS?=@DOCLANGS@
|
||||
|
||||
# ==================== Where To Install Things ====================
|
||||
|
||||
# Location to install Emacs.app under GNUstep / macOS.
|
||||
|
|
@ -176,7 +174,6 @@ man1dir=$(mandir)/man1
|
|||
# Where to install and expect the info files describing Emacs.
|
||||
infodir=@infodir@
|
||||
# Info files not in the doc/misc directory (we get those via make echo-info).
|
||||
# These are not gated by DOCLANGS: see MANDATORY_DOC_DIRS below.
|
||||
INFO_NONMISC=emacs.info eintr.info elisp.info
|
||||
|
||||
# Directory for local state files for all programs.
|
||||
|
|
@ -797,7 +794,7 @@ install-info: info
|
|||
[ -f "$(DESTDIR)${infodir}/dir" ] || \
|
||||
[ ! -f ${srcdir}/info/dir ] || \
|
||||
${INSTALL_DATA} ${srcdir}/info/dir "$(DESTDIR)${infodir}/dir"; \
|
||||
info_misc="$(foreach lang,$(DOCLANGS),`MAKEFLAGS= $(MAKE) --no-print-directory -s -C doc/misc DOCLANG=$(lang) echo-info`)"; \
|
||||
info_misc=`MAKEFLAGS= $(MAKE) --no-print-directory -s -C doc/misc echo-info`; \
|
||||
cd ${srcdir}/info ; \
|
||||
for elt in ${INFO_NONMISC} $${info_misc}; do \
|
||||
for f in `ls $$elt $$elt-[1-9] $$elt-[1-9][0-9] 2>/dev/null`; do \
|
||||
|
|
@ -947,7 +944,7 @@ uninstall: uninstall-$(NTDIR) uninstall-doc uninstall-gsettings-schemas
|
|||
done
|
||||
-rm -rf "$(DESTDIR)${libexecdir}/emacs/${version}"
|
||||
thisdir=`pwd -P`; \
|
||||
(info_misc="$(foreach lang,$(DOCLANGS),`MAKEFLAGS= $(MAKE) --no-print-directory -s -C doc/misc DOCLANG=$(lang) echo-info`)"; \
|
||||
(info_misc=`MAKEFLAGS= $(MAKE) --no-print-directory -s -C doc/misc echo-info`; \
|
||||
if cd "$(DESTDIR)${infodir}"; then \
|
||||
for elt in ${INFO_NONMISC} $${info_misc}; do \
|
||||
(cd "$${thisdir}"; \
|
||||
|
|
@ -1125,7 +1122,7 @@ TAGS tags: lib lib-src # src
|
|||
$(MAKE) -C doc/emacs tags
|
||||
$(MAKE) -C doc/lispintro tags
|
||||
$(MAKE) -C doc/lispref tags
|
||||
$(foreach DOCLANG,$(DOCLANGS),$(MAKE) -C doc/misc DOCLANG=$(DOCLANG) tags;)
|
||||
$(MAKE) -C doc/misc tags
|
||||
|
||||
CHECK_TARGETS = check check-maybe check-expensive check-all check-byte-compile
|
||||
.PHONY: $(CHECK_TARGETS)
|
||||
|
|
@ -1146,38 +1143,8 @@ PDFS = lispref-pdf lispintro-pdf emacs-pdf misc-pdf
|
|||
PSS = lispref-ps lispintro-ps emacs-ps misc-ps
|
||||
|
||||
DOCS = $(DVIS) $(HTMLS) $(INFOS) $(PDFS) $(PSS)
|
||||
|
||||
define MAKE_DOC_FOR_DOCLANG
|
||||
$(1)-DOCLANG-$(2): $(1)-common
|
||||
$$(MAKE) -C doc/$$(subst -, DOCLANG=$(2) ,$(1))
|
||||
|
||||
endef
|
||||
## Directories whose manuals are always built in the default language,
|
||||
## whatever DOCLANGS says: the Emacs and Emacs Lisp manuals are
|
||||
## referenced from doc strings, and the Emacs Lisp Intro is an
|
||||
## important enough part of Emacs to be available regardless of the
|
||||
## language preferences of the user who builds the manuals.
|
||||
MANDATORY_DOC_DIRS = emacs lispintro lispref
|
||||
## Languages from DOCLANGS to build the manuals in doc/$(1) for: the
|
||||
## default language (when in DOCLANGS, or always for the directories
|
||||
## above), plus every other language in DOCLANGS that has translations
|
||||
## for this directory (doc/translations/<lang>/$(1)). Directories
|
||||
## without translations for a language must not run a sub-make for it:
|
||||
## the doc Makefiles of untranslated directories ignore DOCLANG, so
|
||||
## such a sub-make would just repeat the default-language build, and
|
||||
## two sub-makes producing the same outputs race under "make -j" (e.g.
|
||||
## "cp: cannot create regular file ...: File exists").
|
||||
FILTER_DOCLANGS = $(if $(filter $(1),$(MANDATORY_DOC_DIRS)),default,$(filter $(DOCLANGS),default)) $(foreach lang,$(filter-out default,$(DOCLANGS)),$(if $(wildcard ${srcdir}/doc/translations/$(lang)/$(1)),$(lang)))
|
||||
# $(1) = doc target (e.g. lispintro-info), $(2) = languages to build
|
||||
define MAKE_DOC
|
||||
# Define a target to which dependencies common to all of the doc files
|
||||
# in this directory may be assigned.
|
||||
$(1)-common:
|
||||
$(1): $$(addprefix $(1)-DOCLANG-,$(2))
|
||||
|
||||
$$(foreach lang,$(2),$$(eval $$(call MAKE_DOC_FOR_DOCLANG,$(1),$$(lang))))
|
||||
endef
|
||||
$(foreach doc,$(DOCS),$(eval $(call MAKE_DOC,$(doc),$(call FILTER_DOCLANGS,$(word 1,$(subst -, ,$(doc)))))))
|
||||
$(DOCS):
|
||||
$(MAKE) -C doc/$(subst -, ,$@)
|
||||
|
||||
.PHONY: $(DOCS) docs pdf ps
|
||||
.PHONY: info dvi dist html info-dir check-info
|
||||
|
|
@ -1194,43 +1161,20 @@ ps: $(PSS)
|
|||
# Depending on src is sufficient, but ends up being slow, since the
|
||||
# uncompiled lisp/org/*.el files are used to build the .texi files
|
||||
# (which can be slow even with the elc files).
|
||||
misc-info-common: lisp
|
||||
misc-info: lisp
|
||||
# Using src rather than lisp because one is less likely to get unnecessary
|
||||
# rebuilds of stuff that is not strictly necessary for generating manuals.
|
||||
misc-dvi-common misc-html-common misc-pdf-common misc-ps-common: src
|
||||
misc-dvi misc-html misc-pdf misc-ps: src
|
||||
|
||||
info-dir: ${srcdir}/info/dir
|
||||
|
||||
define set_texi_misc
|
||||
texi_misc_$(1) = $$(shell MAKEFLAGS= $${MAKE} --no-print-directory -s -C doc/misc DOCLANG=$(1) echo-sources)
|
||||
texi_misc = $(shell MAKEFLAGS= ${MAKE} --no-print-directory -s -C doc/misc echo-sources)
|
||||
|
||||
endef
|
||||
|
||||
$(foreach lang,$(DOCLANGS),$(eval $(call set_texi_misc,$(lang))))
|
||||
|
||||
## For the default language, depend on the actual sources reported by
|
||||
## doc/misc (echo-sources): .org files for the org-based manuals and
|
||||
## .texi files for the rest. Deriving foo.texi names from INFO_COMMON
|
||||
## would break in a fresh checkout, because the .texi files of the
|
||||
## org-based manuals (e.g. modus-themes.texi) are generated and there
|
||||
## is no rule to build them at this level. make-info-dir extracts dir
|
||||
## entries from both formats. The first three are not gated by
|
||||
## DOCLANGS, because MANDATORY_DOC_DIRS always builds them.
|
||||
srcdir_doc_info_dir_inputs := \
|
||||
srcdir_doc_info_dir_inputs = \
|
||||
${srcdir}/doc/emacs/emacs.texi \
|
||||
${srcdir}/doc/lispintro/emacs-lisp-intro.texi \
|
||||
${srcdir}/doc/lispref/elisp.texi \
|
||||
$(addprefix ${srcdir}/doc/misc/,${texi_misc_default})
|
||||
TRANSLATED_DIRS:=misc
|
||||
# $(1) = dir
|
||||
# $(2) = lang
|
||||
define GET_DOC_SRC
|
||||
-include ${srcdir}/doc/translations/$(2)/$(1)/info_common.mk
|
||||
INFO_COMMON:=$$(subst ccmode,cc-mode,$$(INFO_COMMON))
|
||||
srcdir_doc_info_dir_inputs:=$$(srcdir_doc_info_dir_inputs) $$(patsubst %,${srcdir}/doc/translations/$(2)/$(1)/%-$(2).texi,$$(INFO_COMMON))
|
||||
endef
|
||||
$(foreach dir,$(TRANSLATED_DIRS),$(foreach lang,$(filter-out default,$(DOCLANGS)),$(eval $(call GET_DOC_SRC,$(dir),$(lang)))))
|
||||
|
||||
$(addprefix ${srcdir}/doc/misc/,${texi_misc})
|
||||
info_dir_inputs = \
|
||||
../build-aux/dir_top \
|
||||
$(subst ${srcdir}/doc/,,${srcdir_doc_info_dir_inputs})
|
||||
|
|
|
|||
2
README
2
README
|
|
@ -2,7 +2,7 @@ Copyright (C) 2001-2026 Free Software Foundation, Inc.
|
|||
See the end of the file for license conditions.
|
||||
|
||||
|
||||
This directory tree holds version 32.0.50 of GNU Emacs, the extensible,
|
||||
This directory tree holds version 31.1 of GNU Emacs, the extensible,
|
||||
customizable, self-documenting real-time display editor.
|
||||
|
||||
The file INSTALL in this directory says how to build and install GNU
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@
|
|||
(defun admin--read-version ()
|
||||
(read-string "Version number: " emacs-version))
|
||||
|
||||
;;;###autoload
|
||||
(defun add-release-logs (root version &optional date)
|
||||
"Add \"Version VERSION released.\" change log entries in ROOT.
|
||||
Also update the etc/HISTORY file.
|
||||
|
|
@ -103,7 +102,6 @@ Optional argument DATE is the release date, default today."
|
|||
"\\bAuto-incrementing version code\\(?:.\\|\n\\)*\\([[:digit:]]\\{9\\}\\)$"
|
||||
"Regexp with which to detect the version code in AndroidManifest.xml.")
|
||||
|
||||
;;;###autoload
|
||||
(defun set-version (root version)
|
||||
"Set Emacs version to VERSION in relevant files under ROOT.
|
||||
Root must be the root of an Emacs source tree."
|
||||
|
|
@ -194,7 +192,7 @@ Documentation changes might not have been completed!"))))
|
|||
"mv" newsfile oldnewsfile)
|
||||
(when (y-or-n-p "Commit move of NEWS file?")
|
||||
(call-process admin-git-command nil nil nil
|
||||
"commit" "-m" (format "; Move etc/%s to etc/%s."
|
||||
"commit" "-m" (format "; Move etc/%s to etc/%s"
|
||||
(file-name-nondirectory newsfile)
|
||||
(file-name-nondirectory oldnewsfile))))
|
||||
(find-file oldnewsfile) ; to prompt you to commit it
|
||||
|
|
@ -248,7 +246,6 @@ Non-Free Operating Systems\n" newshort)))
|
|||
(message "Setting version numbers...done"))
|
||||
|
||||
;; Note this makes some assumptions about form of short copyright.
|
||||
;;;###autoload
|
||||
(defun set-copyright (root copyright)
|
||||
"Set Emacs short copyright to COPYRIGHT in relevant files under ROOT.
|
||||
Root must be the root of an Emacs source tree."
|
||||
|
|
@ -303,7 +300,6 @@ ROOT should be the root of an Emacs source tree."
|
|||
'("efaq-w32")))))
|
||||
|
||||
;; TODO report the progress
|
||||
;;;###autoload
|
||||
(defun make-manuals (root &optional type)
|
||||
"Generate the web manuals for the Emacs webpage.
|
||||
ROOT should be the root of an Emacs source tree.
|
||||
|
|
@ -326,8 +322,8 @@ Optional argument TYPE is type of output (nil means all)."
|
|||
(push (concat i j) res))))
|
||||
(manual-misc-manuals root)))))))
|
||||
(let* ((dest (expand-file-name "manual" root))
|
||||
(html-node-dir (expand-file-name "html_node/" dest))
|
||||
(html-mono-dir (expand-file-name "html_mono/" dest))
|
||||
(html-node-dir (expand-file-name "html_node" dest))
|
||||
(html-mono-dir (expand-file-name "html_mono" dest))
|
||||
(ps-dir (expand-file-name "ps" dest))
|
||||
(pdf-dir (expand-file-name "pdf" dest))
|
||||
(emacs (expand-file-name "doc/emacs/emacs.texi" root))
|
||||
|
|
@ -373,13 +369,6 @@ Optional argument TYPE is type of output (nil means all)."
|
|||
(dolist (manual misc)
|
||||
(if (member type `(nil ,manual "misc"))
|
||||
(manual-misc-html manual root html-node-dir html-mono-dir)))
|
||||
;; Auxiliary files
|
||||
(when (member type '(nil "elisp" "elisp-mono" "elisp-node"))
|
||||
(dolist (file '("doc/lispref/elisp_type_hierarchy.txt"
|
||||
"doc/lispref/elisp_type_hierarchy.jpg"))
|
||||
(let ((file (expand-file-name file root)))
|
||||
(copy-file file html-mono-dir t)
|
||||
(copy-file file (expand-file-name "elisp/" html-node-dir) t))))
|
||||
(message "Manuals created in %s" dest)))
|
||||
|
||||
(defconst manual-doctype-string
|
||||
|
|
@ -772,9 +761,6 @@ style=\"text-align:left\">")
|
|||
(and (equal type "lispintro")
|
||||
(string-match-p "\\.\\(eps\\|pdf\\)\\'" file)))
|
||||
(copy-file file stem)))
|
||||
(when (equal type "lispref")
|
||||
(copy-file "../doc/lispref/elisp_type_hierarchy.txt" stem)
|
||||
(copy-file "../doc/lispref/elisp_type_hierarchy.jpg" stem))
|
||||
(with-temp-buffer
|
||||
(let ((outvars make-manuals-dist-output-variables)
|
||||
(case-fold-search nil))
|
||||
|
|
@ -796,7 +782,6 @@ style=\"text-align:left\">")
|
|||
(message "...created %s" tarfile)))
|
||||
|
||||
;; Does anyone actually use these tarfiles?
|
||||
;;;###autoload
|
||||
(defun make-manuals-dist (root &optional type)
|
||||
"Make the standalone manual source tarfiles for the Emacs webpage.
|
||||
ROOT should be the root of an Emacs source tree.
|
||||
|
|
@ -888,7 +873,6 @@ $Date: %s $
|
|||
(defvar org-html-mathjax-template)
|
||||
(defvar htmlize-output-type)
|
||||
|
||||
;;;###autoload
|
||||
(defun make-news-html-file (root version)
|
||||
"Convert the NEWS file into an HTML file."
|
||||
(interactive (let ((root
|
||||
|
|
@ -902,10 +886,7 @@ $Date: %s $
|
|||
(unless (file-exists-p (expand-file-name "src/emacs.c" root))
|
||||
(user-error "%s doesn't seem to be the root of an Emacs source tree" root))
|
||||
(admin--require-external-package 'htmlize)
|
||||
(let* ((oldnewsfile (expand-file-name (format "etc/NEWS.%s" version) root))
|
||||
(newsfile (if (file-exists-p oldnewsfile)
|
||||
oldnewsfile
|
||||
(expand-file-name "etc/NEWS" root)))
|
||||
(let* ((newsfile (expand-file-name "etc/NEWS" root))
|
||||
(orgfile (expand-file-name (format "etc/NEWS.%s.org" version) root))
|
||||
(html (format "%s.html" (file-name-base orgfile)))
|
||||
(copyright-years (format-time-string "%Y")))
|
||||
|
|
@ -915,7 +896,7 @@ $Date: %s $
|
|||
|
||||
;; Find the copyright range.
|
||||
(goto-char (point-min))
|
||||
(re-search-forward "^Copyright (C) \\([0-9, -]+\\) Free Software Foundation, Inc.")
|
||||
(re-search-forward "^Copyright (C) \\([0-9-]+\\) Free Software Foundation, Inc.")
|
||||
(setq copyright-years (match-string 1))
|
||||
|
||||
;; Delete some unnecessary stuff.
|
||||
|
|
@ -934,7 +915,6 @@ $Date: %s $
|
|||
|
||||
;; Escape some characters.
|
||||
(replace-regexp-in-region (rx "$") "@@html:$@@" (point-min) (point-max))
|
||||
(replace-regexp-in-region (rx "[[") "[\u200B[" (point-min) (point-max))
|
||||
|
||||
;; Use Org-mode markers for 'symbols', 'C-x k', etc.
|
||||
(replace-regexp-in-region
|
||||
|
|
@ -953,22 +933,18 @@ $Date: %s $
|
|||
;; Format code blocks.
|
||||
(while (re-search-forward "^ " nil t)
|
||||
(let ((elisp-block (looking-at "(")))
|
||||
(let ((paragraph-start "^ "))
|
||||
(backward-paragraph))
|
||||
(unless (looking-at paragraph-separate)
|
||||
(save-excursion (insert "\n")))
|
||||
(backward-paragraph)
|
||||
(insert (if elisp-block
|
||||
"\n#+BEGIN_SRC emacs-lisp"
|
||||
"\n#+BEGIN_EXAMPLE"))
|
||||
(let ((paragraph-start "^[^ ]"))
|
||||
(forward-paragraph))
|
||||
(forward-paragraph)
|
||||
(insert (if elisp-block
|
||||
"#+END_SRC\n"
|
||||
"#+END_EXAMPLE\n"))))
|
||||
|
||||
;; Delete buffer local variables.
|
||||
(goto-char (point-max))
|
||||
(when (re-search-backward "Local variables:" nil t)
|
||||
(when (re-search-backward "Local variables:")
|
||||
(forward-line -1)
|
||||
(delete-region (point) (point-max)))
|
||||
|
||||
|
|
@ -1123,7 +1099,6 @@ If optional argument OLD is non-nil, also scan for `defvar's."
|
|||
;; to check the results of this look sensible.
|
||||
;; TODO Check cus-start if something moved from C to Lisp.
|
||||
;; TODO Handle renamed things with aliases to the old names.
|
||||
;;;###autoload
|
||||
(defun cusver-check (newdir olddir version)
|
||||
"Check that `defcustom's have :version tags where needed.
|
||||
NEWDIR is the current lisp/ directory, OLDDIR is that from the
|
||||
|
|
@ -1197,7 +1172,6 @@ changes (in a non-trivial way). This function does not check for that."
|
|||
;; Reminder message for open release-blocking bugs. This requires the
|
||||
;; GNU ELPA package `debbugs'.
|
||||
|
||||
;;;###autoload
|
||||
(defun reminder-for-release-blocking-bugs (version)
|
||||
"Submit a reminder message for release-blocking bugs of Emacs VERSION."
|
||||
(interactive
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ main (int argc, char **argv)
|
|||
int opt, ncolors = 0, i;
|
||||
XColor *allocated;
|
||||
int nallocated;
|
||||
XColor color = {0};
|
||||
XColor color;
|
||||
Colormap cmap;
|
||||
|
||||
while ((opt = getopt (argc, argv, "n:")) != EOF)
|
||||
|
|
@ -76,6 +76,7 @@ main (int argc, char **argv)
|
|||
|
||||
allocated = malloc (ncolors * sizeof *allocated);
|
||||
nallocated = 0;
|
||||
memset (&color, 0, sizeof color);
|
||||
|
||||
while (nallocated < ncolors
|
||||
&& color.red < 65536)
|
||||
|
|
|
|||
|
|
@ -309,9 +309,7 @@ files.")
|
|||
("William M. Perry" "Bill Perry")
|
||||
("William O'Brien" "will\\.08rien@gmail.com")
|
||||
("Włodzimierz Bzyl" "W.*dek Bzyl")
|
||||
("Wu fa yang" "zhaodaniu1@gmail\\.com")
|
||||
(nil "xyblor")
|
||||
("Yifei Yao" "donplat@barrensea\\.org")
|
||||
("Yilkal Argaw" "yilkalargaw" "yilkalargawworkneh@gmail\\.com")
|
||||
("Yoni Rabkin" "Yoni Rabkin Katzenell")
|
||||
("Yoshinori Koseki" "KOSEKI Yoshinori" "小関 吉則")
|
||||
|
|
@ -2236,7 +2234,6 @@ and changed by AUTHOR."
|
|||
(cons (list author wrote-list cowrote-list changed-list)
|
||||
authors-author-list)))))
|
||||
|
||||
;;;###autoload
|
||||
(defun authors (root &optional nologupdate)
|
||||
"Extract author information from change logs and Lisp source files.
|
||||
ROOT is the root directory under which to find the files.
|
||||
|
|
|
|||
|
|
@ -1,21 +1,21 @@
|
|||
// Use the countof macro where possible.
|
||||
// Use the ARRAYELTS macro where possible.
|
||||
@@
|
||||
type T;
|
||||
T[] E;
|
||||
@@
|
||||
- (sizeof (E) / sizeof (E[...]))
|
||||
+ countof (E)
|
||||
+ ARRAYELTS (E)
|
||||
|
||||
@@
|
||||
type T;
|
||||
T[] E;
|
||||
@@
|
||||
- (sizeof (E) / sizeof (T))
|
||||
+ countof (E)
|
||||
+ ARRAYELTS (E)
|
||||
|
||||
@@
|
||||
type T;
|
||||
T[] E;
|
||||
@@
|
||||
- (sizeof (E) / sizeof (*E))
|
||||
+ countof (E)
|
||||
+ ARRAYELTS (E)
|
||||
|
|
|
|||
|
|
@ -597,7 +597,6 @@ Branch FROM will be prepended to the list."
|
|||
(setq-local truncate-lines t)
|
||||
(setq-local font-lock-defaults '(gitmerge-mode-font-lock-keywords)))
|
||||
|
||||
;;;###autoload
|
||||
(defun gitmerge (from)
|
||||
"Merge from branch FROM into `default-directory'."
|
||||
(interactive
|
||||
|
|
|
|||
|
|
@ -102,7 +102,9 @@ General steps (for each step, check for possible errors):
|
|||
easiest way of creating the new ChangeLog.N is to rename the file
|
||||
ChangeLog (without the .N suffix) left over from the last release
|
||||
(it is usually unversioned) and commit it, together with the
|
||||
modified Makefile.in.
|
||||
modified Makefile.in. If you don't have the unversioned ChangeLog
|
||||
file from the last release, you can take it from the release
|
||||
tarball.
|
||||
|
||||
Now:
|
||||
|
||||
|
|
@ -131,7 +133,6 @@ General steps (for each step, check for possible errors):
|
|||
Save the "*Authors*" buffer as etc/AUTHORS.
|
||||
Check the diff looks reasonable. Maybe add more entries to
|
||||
authors-ambiguous-files or authors-aliases, and repeat.
|
||||
If making a release, move the "Version NN.N released." back to the top.
|
||||
Commit and push any fixes to authors.el with a message like this:
|
||||
|
||||
; Update exported ChangeLog files and etc/AUTHORS
|
||||
|
|
@ -160,17 +161,30 @@ General steps (for each step, check for possible errors):
|
|||
one, as described above). Pick a date about a week from now when
|
||||
you intend to make the release. Use M-x add-release-logs from
|
||||
admin/admin.el to add entries to etc/HISTORY and the ChangeLog
|
||||
file. Merge the entries from the unversioned ChangeLog into the
|
||||
top of the current versioned ChangeLog.N and commit that along
|
||||
with etc/HISTORY. Name the tar file as emacs-XX.Y-rc1.tar.
|
||||
file. It's best not to commit these files until the release is
|
||||
actually made. Merge the entries from (unversioned) ChangeLog
|
||||
into the top of the current versioned ChangeLog.N and commit that
|
||||
along with etc/HISTORY. Then you can tag that commit as the
|
||||
release.
|
||||
|
||||
If you need another release candidate, remember to adjust the
|
||||
ChangeLog and etc/HISTORY entries. Never replace an existing
|
||||
tarfile! If you need to fix something, always upload it with a
|
||||
different name.
|
||||
Alternatively, you can commit and tag with the RC tag right away,
|
||||
and delay the final tagging until you actually decide to make a
|
||||
release and announce it. The "git tag" command can tag a specific
|
||||
commit if you give it the SHA1 of that commit, even if additional
|
||||
commits have been pushed in the meantime.
|
||||
|
||||
If this is the release itself, copy the unversioned ChangeLog from
|
||||
the previous release candidate tarball into your worktree.
|
||||
Name the tar file as emacs-XX.Y-rc1.tar. If all goes well in the
|
||||
following week, you can simply rename the file and use it for the
|
||||
actual release. If you need another release candidate, remember
|
||||
to adjust the ChangeLog and etc/HISTORY entries.
|
||||
|
||||
If you need to change only a file(s) that cannot possibly affect
|
||||
the build (README, ChangeLog, NEWS, etc.) then rather than doing
|
||||
an entirely new build, it is better to unpack the existing
|
||||
tarfile, modify the file(s), and tar it back up again.
|
||||
|
||||
Never replace an existing tarfile! If you need to fix something,
|
||||
always upload it with a different name.
|
||||
|
||||
4. autoreconf -i -I m4 --force && make bootstrap
|
||||
|
||||
|
|
@ -217,8 +231,8 @@ General steps (for each step, check for possible errors):
|
|||
Alternatively, if you want to do this manually using the compressed
|
||||
tarballs:
|
||||
|
||||
tar tJf emacs-OLD.tar.xz | sed -e 's,^[^/]*,,' | sort >old_tmp
|
||||
tar tJf emacs-NEW.tar.xz | sed -e 's,^[^/]*,,' | sort >new_tmp
|
||||
tar tJf emacs-OLD.tar.xz | sed -e 's,^[^/]*,,' | sort > old_tmp
|
||||
tar tJf emacs-NEW.tar.xz | sed -e 's,^[^/]*,,' | sort > new_tmp
|
||||
diff -u old_tmp new_tmp
|
||||
|
||||
If this is the first pretest of a major release, just comparing
|
||||
|
|
@ -275,8 +289,8 @@ General steps (for each step, check for possible errors):
|
|||
|
||||
11. Decide what compression schemes to offer.
|
||||
For a release, at least gz and xz:
|
||||
gzip --best --no-name -c emacs-NEW.tar >emacs-NEW.tar.gz
|
||||
xz -c emacs-NEW.tar >emacs-NEW.tar.xz
|
||||
gzip --best --no-name -c emacs-NEW.tar > emacs-NEW.tar.gz
|
||||
xz -c emacs-NEW.tar > emacs-NEW.tar.xz
|
||||
For pretests, just xz is probably fine (saves bandwidth).
|
||||
|
||||
Now we will upload the files to the GNU FTP server. In the case of
|
||||
|
|
@ -290,8 +304,6 @@ General steps (for each step, check for possible errors):
|
|||
-- NEW_FILE.gz NEW_FILE.xz ...
|
||||
|
||||
For a release:
|
||||
gnupload [--user your@gpg.key.email] --to alpha.gnu.org:emacs/pretest \
|
||||
--delete NEW-rc1_FILE.xz
|
||||
gnupload [--user your@gpg.key.email] --to ftp.gnu.org:emacs \
|
||||
NEW_FILE.gz NEW_FILE.xz ...
|
||||
|
||||
|
|
@ -309,8 +321,8 @@ General steps (for each step, check for possible errors):
|
|||
clearsigned directive file like this:
|
||||
|
||||
gpg -b FILE
|
||||
echo directory: emacs/pretest >FILE.directive (for a pretest)
|
||||
echo directory: emacs >FILE.directive (for a release)
|
||||
echo directory: emacs/pretest > FILE.directive (for a pretest)
|
||||
echo directory: emacs > FILE.directive (for a release)
|
||||
gpg --clearsign FILE.directive
|
||||
Upload by anonymous ftp to ftp://ftp-upload.gnu.org/ the files FILE,
|
||||
FILE.sig, FILE.directive.asc.
|
||||
|
|
@ -321,8 +333,8 @@ General steps (for each step, check for possible errors):
|
|||
12. After five minutes, verify that the files are visible at
|
||||
<https://alpha.gnu.org/gnu/emacs/pretest/> for a pretest, or
|
||||
<https://ftp.gnu.org/gnu/emacs/> for a release. If uploading a
|
||||
pretest, the deletion of the previous pretest happens a few minutes
|
||||
before the creation of the new file.
|
||||
pretest, the delete of the previous pretest a few minutes before the
|
||||
creation of the new file.
|
||||
|
||||
Download them and check the signatures and SHA1/SHA256 checksums.
|
||||
|
||||
|
|
@ -349,17 +361,9 @@ General steps (for each step, check for possible errors):
|
|||
(Use e.g. `M-x mml-secure-message-sign' in `message-mode' to sign
|
||||
an email.)
|
||||
|
||||
14. Generate an HTML-formatted version of the NEWS file: M-x load-file
|
||||
RET admin/admin.el RET, then M-x make-news-html-file RET.
|
||||
14. After a release, update the Emacs pages as described below.
|
||||
|
||||
15. After a release, update the Emacs pages as described below.
|
||||
Note: it is important to add the new NEWS file _before_ bumping the
|
||||
Emacs version on the release branch, because doing the latter will
|
||||
add (empty) sections to NEWS for the next version, and you don't
|
||||
want those sections in the NEWS file reachable from the GNU Emacs
|
||||
page.
|
||||
|
||||
16. After a release, bump the Emacs version on the release branch.
|
||||
15. After a release, bump the Emacs version on the release branch.
|
||||
There is no need to bump the version after a pretest; the version
|
||||
is bumped before the next pretest or release instead.
|
||||
|
||||
|
|
@ -379,7 +383,6 @@ The pages and files to update are:
|
|||
update is needed)
|
||||
. history.html (add a line for the new release)
|
||||
. add the new NEWS file as news/NEWS.xx.y
|
||||
. add the new NEWS.xx.html file as news/NEWS.xx.html
|
||||
. copy new etc/MACHINES to MACHINES and CONTRIBUTE to CONTRIBUTE
|
||||
. possibly/rarely also download.html (see below)
|
||||
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ GNULIB_MODULES='
|
|||
qcopy-acl readlink readlinkat realloc-posix regex
|
||||
sig2str sigdescr_np socklen stat-time std-gnu23
|
||||
stdc_bit_width stdc_count_ones stdc_trailing_zeros
|
||||
stdckdint-h stdcountof-h stddef-h stdio-h stdio-windows
|
||||
stdckdint-h stddef-h stdio-h stdio-windows
|
||||
stpcpy streq strnlen strtoimax symlink sys_stat-h sys_time-h
|
||||
tempname time-h time_r time_rz timegm timer-time timespec-add timespec-sub
|
||||
unlocked-io update-copyright utimensat
|
||||
|
|
@ -58,18 +58,14 @@ GNULIB_MODULES='
|
|||
'
|
||||
|
||||
AVOIDED_MODULES='
|
||||
access btoc32
|
||||
c32_apply_type_test c32_get_type_test
|
||||
c32isalnum c32rtomb c32tolower c32toupper
|
||||
chmod close dup fchdir fstat gnulib-i18n
|
||||
langinfo-h libgmp-mpq
|
||||
localcharset localeinfo localename-unsafe-limited lock
|
||||
mbrtoc32-regular mbsinit memchr mkdir
|
||||
msvc-inval msvc-nothrow nl_langinfo
|
||||
openat-die opendir pthread-h
|
||||
save-cwd select setenv sigprocmask stat std-gnu11 strncpy
|
||||
access btowc chmod close crypto/af_alg dup fchdir fstat gnulib-i18n
|
||||
iswblank iswctype iswdigit iswxdigit langinfo-h libgmp-mpq
|
||||
localcharset locale-h localename-unsafe-limited lock
|
||||
mbrtowc mbsinit memchr mkdir msvc-inval msvc-nothrow nl_langinfo
|
||||
openat-die opendir pthread-h raise
|
||||
save-cwd select setenv sigprocmask stat std-gnu11 stdarg-h strncpy
|
||||
threadlib tzset unsetenv utime utime-h
|
||||
wchar-h uchar-h
|
||||
wchar-h wcrtomb wctype wctype-h
|
||||
'
|
||||
|
||||
GNULIB_TOOL_FLAGS='
|
||||
|
|
@ -164,7 +160,8 @@ cp -- "$gnulib_srcdir"/build-aux/config.guess \
|
|||
"$gnulib_srcdir"/build-aux/install-sh \
|
||||
"$gnulib_srcdir"/build-aux/move-if-change \
|
||||
"$src"build-aux &&
|
||||
cp -- "$gnulib_srcdir"/lib/save-cwd.h \
|
||||
cp -- "$gnulib_srcdir"/lib/af_alg.h \
|
||||
"$gnulib_srcdir"/lib/save-cwd.h \
|
||||
"$src"lib &&
|
||||
cp -- "$gnulib_srcdir"/m4/codeset.m4 \
|
||||
"$src"m4 &&
|
||||
|
|
|
|||
|
|
@ -76,10 +76,6 @@ Every pipeline generates a JUnit test report for the respective test
|
|||
jobs, which can be inspected on the pipeline web page. This test
|
||||
report counts completed ERT tests, aborted tests are not counted.
|
||||
|
||||
Twice a day, a pipeline for branch 'master', and another pipeline for
|
||||
branch 'emacs-31' are started automatically, running all stages for
|
||||
normal and expensive tests.
|
||||
|
||||
* Emba configuration
|
||||
|
||||
The emba configuration files are hosted on
|
||||
|
|
|
|||
|
|
@ -16,14 +16,14 @@ Initial setup
|
|||
|
||||
Then we want to clone the repository. We normally want to have both
|
||||
the current master and (if there is one) the active release branch
|
||||
(eg emacs-31).
|
||||
(eg emacs-30).
|
||||
|
||||
mkdir ~/emacs
|
||||
cd ~/emacs
|
||||
git clone <membername>@git.sv.gnu.org:/srv/git/emacs.git master
|
||||
cd master
|
||||
git config push.default current
|
||||
git worktree add ../emacs-31 emacs-31
|
||||
git worktree add ../emacs-30 emacs-30
|
||||
|
||||
You now have both branches conveniently accessible, and you can do
|
||||
"git pull" in them once in a while to keep updated.
|
||||
|
|
@ -67,7 +67,7 @@ which will look like
|
|||
|
||||
commit 958b768a6534ae6e77a8547a56fc31b46b63710b
|
||||
|
||||
cd ~/emacs/emacs-31
|
||||
cd ~/emacs/emacs-30
|
||||
git cherry-pick -xe 958b768a6534ae6e77a8547a56fc31b46b63710b
|
||||
|
||||
and add "Backport:" to the commit string. Then
|
||||
|
|
@ -109,7 +109,7 @@ up-to-date by doing a pull. Then start Emacs with
|
|||
emacs -l admin/gitmerge.el -f gitmerge
|
||||
|
||||
You'll be asked for the branch to merge, which will default to
|
||||
(eg) 'origin/emacs-31', which you should accept. Merging a local tracking
|
||||
(eg) 'origin/emacs-30', which you should accept. Merging a local tracking
|
||||
branch is discouraged, since it might not be up-to-date, or worse,
|
||||
contain commits from you which are not yet pushed upstream.
|
||||
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ DTRT - do the right thing
|
|||
DWIM - do what I mean
|
||||
ENOPATCH - no patch is attached
|
||||
FTR - for the record
|
||||
FUD - fear, uncertainty and doubt
|
||||
FUD - fear, uncertainty and doubt
|
||||
FWIW - for what it's worth
|
||||
FYI - for your information
|
||||
GNU - GNU is not Unix
|
||||
|
|
|
|||
|
|
@ -79,8 +79,8 @@ people who want to report bugs against the current master, to help in
|
|||
"pretesting" new release versions, and so on.
|
||||
|
||||
The files follow the same naming convention, but also include a date
|
||||
(and sometimes information about their branch) or they may relate to a
|
||||
specific pretest or release candidate for an "uncut" Emacs. Emacs
|
||||
(and sometimes information about their branch) or they may releate to a
|
||||
sepecific pretest or release candidate for an "uncut" Emacs. Emacs
|
||||
sources are distributed along with each dated snapshot. Sources are
|
||||
provided for the pretest and release candidate Emacs versions here, as
|
||||
for release builds, are found in the directory (or directories) above.
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@
|
|||
# Base URI for the package sources mapped in PKG_REQ
|
||||
SRC_REPO="https://repo.msys2.org/mingw/sources"
|
||||
|
||||
# Map items in `dynamic-library-alist' to source packages.
|
||||
# Map items in `dynamic-library-alist' to source pakages
|
||||
PKG_REQ='''mingw-w64-x86_64-giflib
|
||||
mingw-w64-x86_64-gnutls
|
||||
mingw-w64-x86_64-harfbuzz
|
||||
|
|
@ -47,7 +47,7 @@
|
|||
mingw-w64-x86_64-tree-sitter
|
||||
mingw-w64-x86_64-sqlite3'''.split()
|
||||
|
||||
# Emacs style path to dependency DLLs on build system
|
||||
# Emacs style path to dependancy DLLs on build system
|
||||
DLL_SRC="mingw64"
|
||||
OUT_TAG=""
|
||||
|
||||
|
|
@ -95,7 +95,7 @@ def gather_deps():
|
|||
print("Deps updated in", os.getcwd(), "as", zipfile)
|
||||
os.chdir("../")
|
||||
|
||||
# Return dependencies listed in Emacs.
|
||||
# Return dependancies listed in Emacs
|
||||
def init_deps():
|
||||
return '''libXpm-nox4.dll
|
||||
libpng16-16.dll
|
||||
|
|
@ -315,7 +315,7 @@ def clean():
|
|||
parser.add_argument("-l", help="list dependencies",
|
||||
action="store_true")
|
||||
|
||||
parser.add_argument("-e", help="extract direct dependencies",
|
||||
parser.add_argument("-e", help="extract direct dependancies",
|
||||
action="store_true")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ ${unidir}/charscript.el: ${blocks_sources}
|
|||
emoji-zwj.el: ${unidir}/emoji-zwj.el
|
||||
|
||||
zwj = ${srcdir}/emoji-zwj.awk
|
||||
zwj_sources = ${srcdir}/emoji-zwj-sequences.txt $(srcdir)/emoji-sequences.txt $(srcdir)/emoji-variation-sequences.txt $(srcdir)/emoji-test.txt
|
||||
zwj_sources = ${srcdir}/emoji-zwj-sequences.txt $(srcdir)/emoji-sequences.txt
|
||||
${unidir}/emoji-zwj.el: ${zwj}
|
||||
|
||||
# Don't use $^, since that includes the awk script.
|
||||
|
|
|
|||
|
|
@ -64,8 +64,6 @@ BEGIN {
|
|||
alias["halfwidth and fullwidth forms"] = "cjk-misc"
|
||||
alias["yijing hexagram symbols"] = "cjk-misc"
|
||||
alias["common indic number forms"] = "north-indic-number"
|
||||
alias["kanbun"] = "han"
|
||||
alias["vertical forms"] = "cjk-misc"
|
||||
|
||||
tohex["a"] = 10
|
||||
tohex["b"] = 11
|
||||
|
|
@ -162,17 +160,6 @@ FILENAME ~ "Blocks.txt" && /^[0-9A-F]/ {
|
|||
end[i] = "33FF"
|
||||
name[i] = "CJK Compatibility"
|
||||
}
|
||||
else if (start[i] == "FFF0")
|
||||
{
|
||||
start[i] = "FFFC"
|
||||
end[i] = "FFFD"
|
||||
name[i] = "Replacement Symbols"
|
||||
alt[i] = "symbol"
|
||||
i++
|
||||
start[i] = "FFFE"
|
||||
end[i] = "FFFF"
|
||||
name[i] = "Specials"
|
||||
}
|
||||
|
||||
alt[i] = name2alias(name[i])
|
||||
|
||||
|
|
|
|||
45
admin/unidata/emoji-zwj.awk
Executable file → Normal file
45
admin/unidata/emoji-zwj.awk
Executable file → Normal file
|
|
@ -39,9 +39,7 @@
|
|||
|
||||
### Code:
|
||||
|
||||
(/^[0-9A-F].*; RGI_Emoji_(ZWJ|Modifier)_Sequence/)||
|
||||
(/^[0-9A-F].*; (un|minimally-)qualified/ && /.+200D.+;/) {
|
||||
is_unqualified = $0 ~ /; unqualified/
|
||||
/^[0-9A-F].*; RGI_Emoji_(ZWJ|Modifier)_Sequence/ {
|
||||
sub(/ *;.*/, "", $0)
|
||||
num = split($0, elts)
|
||||
if (ch[elts[1]] == "")
|
||||
|
|
@ -60,15 +58,6 @@
|
|||
vec[elts[1]] = vec[elts[1]] c
|
||||
}
|
||||
vec[elts[1]] = vec[elts[1]] "\""
|
||||
|
||||
if (is_unqualified && elts[2] == "200D") {
|
||||
unqualified_tail_initials[++n_unqualified_tail_initials] = elts[3]
|
||||
}
|
||||
}
|
||||
|
||||
/^[0-9A-F]+ FE0F *; *emoji style;/ {
|
||||
tty_trigger_codepoints[++n_tty_triggers] = $1
|
||||
ch[$1] = $1
|
||||
}
|
||||
|
||||
END {
|
||||
|
|
@ -97,37 +86,13 @@ END {
|
|||
|
||||
print "(setq auto-composition-emoji-eligible-codepoints"
|
||||
print "'("
|
||||
|
||||
for (trig in trigger_codepoints)
|
||||
{
|
||||
print "?\\N{U+" trigger_codepoints[trig] "}"
|
||||
}
|
||||
print "))"
|
||||
|
||||
# On tty terminals, emoji sequences are simply composed and the
|
||||
# rendering is delegated to the terminal emulators. All codepoints
|
||||
# in the variation sequence is considered a valid beginning.
|
||||
print "(setq auto-composition-emoji-tty-eligible-codepoints"
|
||||
print "'("
|
||||
for (trig in tty_trigger_codepoints)
|
||||
{
|
||||
print "?\\N{U+" tty_trigger_codepoints[trig] "}"
|
||||
}
|
||||
print "))"
|
||||
# Exclude keycap sequence initials
|
||||
delete ch["0023"]
|
||||
delete ch["002A"]
|
||||
for (i = 0; i <= 9; i ++)
|
||||
delete ch[sprintf("003%d", i)]
|
||||
|
||||
# Generate unqualified tail initials.
|
||||
print "(setq auto-composition-emoji-unqualified-tail-initials"
|
||||
print "'("
|
||||
for (trig in unqualified_tail_initials)
|
||||
{
|
||||
print "?\\N{U+" unqualified_tail_initials[trig] "}"
|
||||
}
|
||||
print "))"
|
||||
|
||||
# We add entries for 'codepoint U+FE0F' here to ensure that the
|
||||
# code in font_range is triggered.
|
||||
|
||||
|
|
@ -149,7 +114,7 @@ END {
|
|||
print " (nconc (char-table-range composition-function-table (car elt))"
|
||||
print " (list (vector (cdr elt)"
|
||||
print " 0"
|
||||
print " #'compose-gstring-and-emoji)))))"
|
||||
print " #'compose-gstring-for-graphic)))))"
|
||||
|
||||
print ";; The following two blocks are derived by hand from emoji-sequences.txt"
|
||||
print ";; FIXME: add support for Emoji_Keycap_Sequence once we learn how to respect FE0F/VS-16"
|
||||
|
|
@ -161,7 +126,7 @@ END {
|
|||
print " (nconc (char-table-range composition-function-table '(#x1F1E6 . #x1F1FF))"
|
||||
print " (list (vector \"[\\U0001F1E6-\\U0001F1FF][\\U0001F1E6-\\U0001F1FF]\""
|
||||
print " 0"
|
||||
print " #'compose-gstring-and-emoji))))"
|
||||
print " #'compose-gstring-for-graphic))))"
|
||||
|
||||
print ";; UK Flags"
|
||||
print "(set-char-table-range composition-function-table"
|
||||
|
|
@ -169,7 +134,7 @@ END {
|
|||
print " (nconc (char-table-range composition-function-table #x1F3F4)"
|
||||
print " (list (vector \"\\U0001F3F4\\U000E0067\\U000E0062\\\\(?:\\U000E0065\\U000E006E\\U000E0067\\\\|\\U000E0073\\U000E0063\\U000E0074\\\\|\\U000E0077\\U000E006C\\U000E0073\\\\)\\U000E007F\""
|
||||
print " 0"
|
||||
print " #'compose-gstring-and-emoji))))"
|
||||
print " #'compose-gstring-for-graphic))))"
|
||||
|
||||
printf "\n(provide 'emoji-zwj)"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1037,10 +1037,10 @@ Property value is a symbol `o' (Open), `c' (Close), or `n' (None)."
|
|||
(cdr (assq elt word-list))))
|
||||
(setcar tail (string code))
|
||||
(setq tail (cdr tail)))
|
||||
(aset vec i (mapconcat #'identity (aref vec i))))))
|
||||
(aset vec i (mapconcat #'identity (aref vec i) "")))))
|
||||
(set-char-table-range
|
||||
table (cons idx (+ idx 127))
|
||||
(mapconcat #'identity vec)))))
|
||||
(mapconcat #'identity vec "")))))
|
||||
|
||||
(setq block-word-table (make-vector (length block-list) nil))
|
||||
(setq idx 0)
|
||||
|
|
|
|||
17
build-aux/config.guess
vendored
17
build-aux/config.guess
vendored
|
|
@ -1,10 +1,10 @@
|
|||
#! /bin/sh
|
||||
# Attempt to guess a canonical system name.
|
||||
# Copyright 1992-2026 Free Software Foundation, Inc.
|
||||
# Copyright 1992-2025 Free Software Foundation, Inc.
|
||||
|
||||
# shellcheck disable=SC2006,SC2268 # see below for rationale
|
||||
|
||||
timestamp='2026-05-17'
|
||||
timestamp='2025-07-10'
|
||||
|
||||
# This file is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by
|
||||
|
|
@ -60,7 +60,7 @@ version="\
|
|||
GNU config.guess ($timestamp)
|
||||
|
||||
Originally written by Per Bothner.
|
||||
Copyright 1992-2026 Free Software Foundation, Inc.
|
||||
Copyright 1992-2025 Free Software Foundation, Inc.
|
||||
|
||||
This is free software; see the source for copying conditions. There is NO
|
||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||
|
|
@ -150,7 +150,7 @@ UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
|
|||
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
|
||||
|
||||
case $UNAME_SYSTEM in
|
||||
Ironclad|Linux|GNU|GNU/*)
|
||||
Linux|GNU|GNU/*)
|
||||
LIBC=unknown
|
||||
|
||||
set_cc_for_build
|
||||
|
|
@ -167,8 +167,6 @@ Ironclad|Linux|GNU|GNU/*)
|
|||
LIBC=gnu
|
||||
#elif defined(__LLVM_LIBC__)
|
||||
LIBC=llvm
|
||||
#elif defined(__mlibc__)
|
||||
LIBC=mlibc
|
||||
#else
|
||||
#include <stdarg.h>
|
||||
/* First heuristic to detect musl libc. */
|
||||
|
|
@ -1188,9 +1186,6 @@ EOF
|
|||
sparc:Linux:*:* | sparc64:Linux:*:*)
|
||||
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
|
||||
;;
|
||||
sw_64:Linux:*:*)
|
||||
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
|
||||
;;
|
||||
tile*:Linux:*:*)
|
||||
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
|
||||
;;
|
||||
|
|
@ -1603,10 +1598,10 @@ EOF
|
|||
GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE
|
||||
;;
|
||||
x86_64:[Ii]ronclad:*:*|i?86:[Ii]ronclad:*:*)
|
||||
GUESS=$UNAME_MACHINE-pc-ironclad-$LIBC
|
||||
GUESS=$UNAME_MACHINE-pc-ironclad-mlibc
|
||||
;;
|
||||
*:[Ii]ronclad:*:*)
|
||||
GUESS=$UNAME_MACHINE-unknown-ironclad-$LIBC
|
||||
GUESS=$UNAME_MACHINE-unknown-ironclad-mlibc
|
||||
;;
|
||||
esac
|
||||
|
||||
|
|
|
|||
11
build-aux/config.sub
vendored
11
build-aux/config.sub
vendored
|
|
@ -1,10 +1,10 @@
|
|||
#! /bin/sh
|
||||
# Configuration validation subroutine script.
|
||||
# Copyright 1992-2026 Free Software Foundation, Inc.
|
||||
# Copyright 1992-2025 Free Software Foundation, Inc.
|
||||
|
||||
# shellcheck disable=SC2006,SC2268,SC2162 # see below for rationale
|
||||
|
||||
timestamp='2026-05-17'
|
||||
timestamp='2025-07-10'
|
||||
|
||||
# This file is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by
|
||||
|
|
@ -76,7 +76,7 @@ Report bugs and patches to <config-patches@gnu.org>."
|
|||
version="\
|
||||
GNU config.sub ($timestamp)
|
||||
|
||||
Copyright 1992-2026 Free Software Foundation, Inc.
|
||||
Copyright 1992-2025 Free Software Foundation, Inc.
|
||||
|
||||
This is free software; see the source for copying conditions. There is NO
|
||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||
|
|
@ -1432,7 +1432,6 @@ case $cpu-$vendor in
|
|||
| sparcv9v \
|
||||
| spu \
|
||||
| sv1 \
|
||||
| sw_64 \
|
||||
| sx* \
|
||||
| tahoe \
|
||||
| thumbv7* \
|
||||
|
|
@ -1526,7 +1525,7 @@ EOF
|
|||
;;
|
||||
ironclad*)
|
||||
kernel=ironclad
|
||||
os=`echo "$basic_os" | sed -e 's|ironclad|gnu|'`
|
||||
os=`echo "$basic_os" | sed -e 's|ironclad|mlibc|'`
|
||||
;;
|
||||
linux*)
|
||||
kernel=linux
|
||||
|
|
@ -2221,7 +2220,7 @@ case $kernel-$os-$obj in
|
|||
;;
|
||||
uclinux-uclibc*- | uclinux-gnu*- )
|
||||
;;
|
||||
ironclad-gnu*- | ironclad-mlibc*- )
|
||||
ironclad-mlibc*-)
|
||||
;;
|
||||
managarm-mlibc*- | managarm-kernel*- )
|
||||
;;
|
||||
|
|
|
|||
|
|
@ -292,7 +292,6 @@ If Exist limits.in.h update limits.in.h limits.in-h
|
|||
If Exist signal.in.h update signal.in.h signal.in-h
|
||||
If Exist signal.in.h update signal.in.h signal.in-h
|
||||
If Exist stdalign.in.h update stdalign.in.h stdalign.in-h
|
||||
If Exist stdcountof.in.h update stdcountof.in.h stdcountof.in-h
|
||||
If Exist stddef.in.h update stddef.in.h stddef.in-h
|
||||
If Exist stdint.in.h update stdint.in.h stdint.in-h
|
||||
If Exist stdio.in.h update stdio.in.h stdio.in-h
|
||||
|
|
|
|||
63
configure.ac
63
configure.ac
|
|
@ -23,7 +23,7 @@ dnl along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
|||
|
||||
AC_PREREQ([2.65])
|
||||
dnl Note this is parsed by (at least) make-dist and lisp/cedet/ede/emacs.el.
|
||||
AC_INIT([GNU Emacs], [32.0.50], [bug-gnu-emacs@gnu.org], [],
|
||||
AC_INIT([GNU Emacs], [31.1], [bug-gnu-emacs@gnu.org], [],
|
||||
[https://www.gnu.org/software/emacs/])
|
||||
|
||||
if test "$XCONFIGURE" = "android"; then
|
||||
|
|
@ -966,7 +966,7 @@ a valid path to android.jar. See config.log for more details.])
|
|||
fi
|
||||
|
||||
AC_CACHE_CHECK([whether android.jar is new enough],
|
||||
[emacs_cv_android_x_or_later],
|
||||
[emacs_cv_android_w_or_later],
|
||||
AS_IF([rm -f conftest.class
|
||||
cat << EOF > conftest.java
|
||||
|
||||
|
|
@ -974,7 +974,7 @@ import android.os.Build;
|
|||
|
||||
class conftest
|
||||
{
|
||||
private static int test = Build.VERSION_CODES.CINNAMON_BUN;
|
||||
private static int test = Build.VERSION_CODES.BAKLAVA;
|
||||
}
|
||||
|
||||
EOF
|
||||
|
|
@ -985,7 +985,7 @@ EOF
|
|||
|
||||
if test "$emacs_cv_android_w_or_later" = "no"; then
|
||||
AC_MSG_ERROR([Emacs must be built with an android.jar file produced for \
|
||||
Android 17 (CINNAMON_BUN) or later.])
|
||||
Android 16 (BAKLAVA) or later.])
|
||||
fi
|
||||
|
||||
dnl See if the Java compiler supports the `--release' option which
|
||||
|
|
@ -1615,10 +1615,6 @@ AC_DEFUN([gt_TYPE_WINT_T],
|
|||
AC_DEFUN([gl_TYPE_OFF64_T],
|
||||
[HAVE_OFF64_T=1
|
||||
AC_SUBST([HAVE_OFF64_T])])
|
||||
# Emacs does not want Gnulib's fixes for glibc bug 20381 or for
|
||||
# Unicode-compatible case matching, as that brings in too many Gnulib files.
|
||||
AC_DEFINE([_REGEX_AVOID_UCHAR_H], [1],
|
||||
[Define to 1 so that the Gnulib regex module does not use Gnulib uchar-h.])
|
||||
|
||||
# Initialize gnulib right after choosing the compiler.
|
||||
dnl Amongst other things, this sets AR and ARFLAGS.
|
||||
|
|
@ -2107,7 +2103,44 @@ if test $opsys = darwin; then
|
|||
AC_PATH_PROG([HAVE_MACPORTS], [port])
|
||||
fi
|
||||
|
||||
gl_TEXINFO
|
||||
## Require makeinfo >= 4.13 (last of the 4.x series) to build the manuals.
|
||||
: ${MAKEINFO:=makeinfo}
|
||||
case `($MAKEINFO --version) 2>/dev/null` in
|
||||
*' (GNU texinfo) '4.1[[3-9]]* | \
|
||||
*' (GNU texinfo) '[[5-9]]* | \
|
||||
*' (GNU texinfo) '[[1-9][0-9]]* ) ;;
|
||||
*) MAKEINFO=no;;
|
||||
esac
|
||||
|
||||
## Makeinfo is unusual. For a released Emacs, the manuals are
|
||||
## pre-built, and not deleted by the normal clean rules. makeinfo is
|
||||
## therefore in the category of "special tools" not normally required, which
|
||||
## configure does not have to check for (eg autoconf itself).
|
||||
## In a repository checkout on the other hand, the manuals are not included.
|
||||
## So makeinfo is a requirement to build from the repository, and configure
|
||||
## should test for it as it does for any other build requirement.
|
||||
## We use the presence of $srcdir/info/emacs to distinguish a release,
|
||||
## with pre-built manuals, from a repository checkout.
|
||||
if test "$MAKEINFO" = "no"; then
|
||||
MAKEINFO=makeinfo
|
||||
if test ! -e "$srcdir/info/emacs" && test ! -e "$srcdir/info/emacs.info"; then
|
||||
AC_MSG_ERROR( [You do not seem to have makeinfo >= 4.13, and your
|
||||
source tree does not seem to have pre-built manuals in the 'info' directory.
|
||||
Please install a suitable version of makeinfo.] )
|
||||
else
|
||||
AC_MSG_WARN( [You do not seem to have makeinfo >= 4.13.
|
||||
You will not be able to rebuild the manuals if you delete them or change
|
||||
their sources.] )
|
||||
fi
|
||||
fi
|
||||
AC_SUBST([MAKEINFO])
|
||||
|
||||
if test $opsys = mingw32; then
|
||||
DOCMISC_W32=efaq-w32
|
||||
else
|
||||
DOCMISC_W32=
|
||||
fi
|
||||
AC_SUBST([DOCMISC_W32])
|
||||
|
||||
dnl Add our options to ac_link now, after it is set up.
|
||||
|
||||
|
|
@ -5067,7 +5100,6 @@ AC_SUBST_FILE([module_env_snippet_28])
|
|||
AC_SUBST_FILE([module_env_snippet_29])
|
||||
AC_SUBST_FILE([module_env_snippet_30])
|
||||
AC_SUBST_FILE([module_env_snippet_31])
|
||||
AC_SUBST_FILE([module_env_snippet_32])
|
||||
module_env_snippet_25="$srcdir/src/module-env-25.h"
|
||||
module_env_snippet_26="$srcdir/src/module-env-26.h"
|
||||
module_env_snippet_27="$srcdir/src/module-env-27.h"
|
||||
|
|
@ -5075,7 +5107,6 @@ module_env_snippet_28="$srcdir/src/module-env-28.h"
|
|||
module_env_snippet_29="$srcdir/src/module-env-29.h"
|
||||
module_env_snippet_30="$srcdir/src/module-env-30.h"
|
||||
module_env_snippet_31="$srcdir/src/module-env-31.h"
|
||||
module_env_snippet_32="$srcdir/src/module-env-32.h"
|
||||
emacs_major_version=`AS_ECHO([$PACKAGE_VERSION]) | sed 's/[[.]].*//'`
|
||||
AC_SUBST([emacs_major_version])
|
||||
|
||||
|
|
@ -7277,8 +7308,6 @@ AC_SUBST([LIBXT_OTHER])
|
|||
if test "${HAVE_X11}" = "yes" ; then
|
||||
AC_DEFINE([HAVE_X11], [1],
|
||||
[Define to 1 if you want to use version 11 of X windows.])
|
||||
AC_DEFINE([_CONST_X_STRING], [1],
|
||||
[Define to 1 for X11 headers to use the 'const' keyword of C89 or later.])
|
||||
LIBX_OTHER="\$(LIBXT) \$(LIBX_EXTRA)"
|
||||
else
|
||||
LIBX_OTHER=
|
||||
|
|
@ -7884,10 +7913,10 @@ if test "$XCONFIGURE" != "android"; then
|
|||
AS_MKDIR_P([cross/etc])
|
||||
|
||||
AS_IF([test "x$with_android" != "xno"], [
|
||||
dnl Link gnulib files to cross/lib as well.
|
||||
dnl lib/save-cwd.h is copied manually from gnulib,
|
||||
dnl and as such isn't specified in gl_FILE_LIST.
|
||||
emacs_files='gl_FILE_LIST lib/save-cwd.h'
|
||||
dnl Link gnulib files to cross/lib as well. af_alg.h and
|
||||
dnl lib/save-cwd.h are copied manually from gnulib, and as such
|
||||
dnl aren't specified in gl_FILE_LIST.
|
||||
emacs_files='gl_FILE_LIST lib/af_alg.h lib/save-cwd.h'
|
||||
dnl These files are specific to Emacs.
|
||||
emacs_files="$emacs_files lib/fingerprint.c lib/fingerprint.h \
|
||||
lib/save-cwd.c lib/openat-die.c lib/save-cwd.c \
|
||||
|
|
|
|||
|
|
@ -529,8 +529,6 @@ version of Android installed:
|
|||
@item
|
||||
@code{android.permission.ACCESS_LOCATION_EXTRA_COMMANDS}
|
||||
@item
|
||||
@code{android.permission.ACCESS_LOCAL_NETWORK}
|
||||
@item
|
||||
@code{android.permission.ACCESS_NETWORK_STATE}
|
||||
@item
|
||||
@code{android.permission.ACCESS_NOTIFICATION_POLICY}
|
||||
|
|
|
|||
|
|
@ -4,123 +4,133 @@
|
|||
@c See file emacs.texi for copying conditions.
|
||||
|
||||
@node Antinews
|
||||
@appendix Emacs 30 Antinews
|
||||
@appendix Emacs 29 Antinews
|
||||
@c Update the emacs.texi Antinews menu entry with the above version number.
|
||||
|
||||
For those users who live backwards in time, here is information
|
||||
about downgrading to Emacs version 30.2. We hope you will enjoy the
|
||||
about downgrading to Emacs version 29.4. We hope you will enjoy the
|
||||
greater simplicity that results from the absence of many @w{Emacs
|
||||
@value{EMACSVER}} features.
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
The venerable @code{unexec} dumper is back! It is still deprecated, but
|
||||
we plan on un-deprecating it in Emacs 26, in preparation for the
|
||||
@file{glibc} developers' reinstating the various hooks which Emacs needs
|
||||
to reliably be built using @code{unexec}.
|
||||
Emacs can no longer be built for Android mobile devices. We have
|
||||
removed the Android support because it was deemed unnecessary, what with
|
||||
the screens of the mobile devices becoming smaller and smaller as you
|
||||
move back in time. We expect Android users to enjoy the much simpler
|
||||
text editors available on their devices. As a nice bonus, removing
|
||||
Android support allowed us to get rid of gobs of related files, thus
|
||||
making the release tarballs much leaner.
|
||||
|
||||
@item
|
||||
@command{ctags} is once again a separate program. We decided that the
|
||||
need to remember the @option{--ctags} option to @command{etags} is not
|
||||
friendly enough to our users, and switched back to a time-proven Unix
|
||||
philosophy of ``programs that do one thing and do it well''.
|
||||
We have deleted much of the enhanced support for touchscreen devices,
|
||||
for the same reason we dropped Android: there will be no need for that
|
||||
as you move back in time.
|
||||
|
||||
@item
|
||||
We dropped the annoying feature of scraping at startup files and
|
||||
directories in @file{user-lisp} subdirectory of your Emacs configuration
|
||||
directory. It slows down startup, especially as computers and hard
|
||||
disks become slower and slower as you move back in time.
|
||||
We also dropped support for sophisticated input methods that include
|
||||
text conversions, again because those are mostly needed on mobile and
|
||||
hand-held devices, which we gradually remove from Emacs in each past
|
||||
version.
|
||||
|
||||
@item
|
||||
As part of our continuous struggle to make Emacs simpler, we've removed
|
||||
the @code{margin} face, so text shown in display margins will now use
|
||||
the same @code{default} face as the rest of buffer text. Our long-term
|
||||
goal is to remove faces completely, thus leaving the Emacs with just two
|
||||
colors, so we gradually remove more and more faces as we go.
|
||||
Like its newer releases, Emacs 29 can still be built with support of
|
||||
native compilation of Lisp programs. However, in preparation for
|
||||
removal of this feature in some previous version, we've made the native
|
||||
compiler support off by default; you will now have to request it
|
||||
explicitly at configure time. This makes the default Emacs build
|
||||
process much faster.
|
||||
|
||||
@item
|
||||
Yet another complication which we got rid of is child frames on
|
||||
text-only terminals. They are still supported on GUI frames, but one
|
||||
improvement at a time.
|
||||
JSON interfaces slowly move into oblivion as past years come closer, so
|
||||
we have removed our internal implementation of JSON; you will now need
|
||||
to build Emacs with the libjansson library, if you need JSON.
|
||||
Eventually, we plan on removing JSON support from Emacs altogether; this
|
||||
move will make the removal much simpler.
|
||||
|
||||
@item
|
||||
Fancy completion bells and whistles, such as eager display of completion
|
||||
candidates, updating the @file{*Completions*} buffer as you type,
|
||||
control of point motion in @file{*Completions*} via
|
||||
@code{completions-format}, etc.@: will no longer confuse you because we
|
||||
deleted all of that stuff. No one should need completion features
|
||||
beyond what typing @key{TAB} produces!
|
||||
Tree-sitter based modes are now completely independent of their
|
||||
non-Tree-Sitter counterparts. We decided that keeping the settings
|
||||
separate and independent goes a long way toward simplicity, which is one
|
||||
of our main motivations for removing stuff from Emacs.
|
||||
|
||||
@item
|
||||
Commands that modify the window layout of a frame are gone. You can no
|
||||
longer be seduced to transpose or rotate windows on their frame. Once
|
||||
again, only Emacs decides how to arrange and re-arrange windows.
|
||||
Various Help commands no longer turn on Outline minor mode. With less
|
||||
material to display in the *Help* buffers, due to removing of excess
|
||||
documentation from Emacs, we think using outlining is an unnecessary
|
||||
complication, as scrolling through plain text is so much simpler.
|
||||
|
||||
For the same reason, we nuked @code{split-frame} and @code{merge-frames}
|
||||
commands. @kbd{C-x 2} and @kbd{C-x 0} should be enough for everyone!
|
||||
For the same reasons, Emacs no longer shows Unicode names of characters
|
||||
in *Help* buffers shown by @code{describe-bindings}.
|
||||
|
||||
@item
|
||||
We removed quite a few complications due to Unicode Standard version
|
||||
17.0 and related features. This includes quite a few characters which
|
||||
will never be needed in the past, the language environments for Syriac
|
||||
and Tifinagh, and several input methods which no one should miss, and
|
||||
which will fall in disuse soon enough anyway. As memory becomes more
|
||||
and more at premium, we must make Emacs leaner and meaner to follow
|
||||
suit.
|
||||
To make Emacs configuration simpler and easier to control, the tool bar
|
||||
can now be displayed only in its natural and logical position: on the
|
||||
top of the frame; no more of that @code{tool-bar-position} nonsense with
|
||||
tool bars on the bottom. For the same reasons @code{modifier-bar-mode}
|
||||
is now gone.
|
||||
|
||||
@item
|
||||
User option @code{treesit-enabled-modes} is no longer part of Emacs.
|
||||
Customize @code{major-mode-remap-alist} to activate Tree-sitter based
|
||||
modes instead of the traditional modes; this is much simpler and easier
|
||||
to remember and manage.
|
||||
The command @code{recover-file} no longer lets you display the diffs
|
||||
between a file and its auto-save file. You either want to recover a
|
||||
file or you don't; confusing users with a third alternative when they
|
||||
are anxious already by the possibility of losing precious edits is
|
||||
considered a bad idea, certainly so as we move further towards smaller,
|
||||
simpler Emacs.
|
||||
|
||||
@item
|
||||
Sendmail and Rmail no longer try to detect suspicious email addresses
|
||||
and warn you about them. As you move back in time, people become nicer
|
||||
and nicer, and all those malevolent souls who constantly look for
|
||||
opportunities to cause you damage become more and more vague memories
|
||||
from the distant future. Eventually, we will once again have just the
|
||||
small Arpanet where everyone were your friends, and who needs these
|
||||
paranoid features then?
|
||||
Several languages and input methods, which will fall in disuse as you
|
||||
move back in time, were removed. This includes Urdu, Pashto, and Sindhi
|
||||
languages, and the input method for the Colemak keyboard layout. Many
|
||||
@kbd{C-x 8} key sequences, including those which insert various
|
||||
quotation characters and guillemets, were deleted for the same reason.
|
||||
|
||||
@item
|
||||
You can no longer edit Grep results and have the edits reflected in the
|
||||
original files. We've removed that because we believe one should only
|
||||
edit the original files directly, with the full benefit of the
|
||||
surrounding context.
|
||||
The support for @code{lzip}-compressed Info manuals was removed from the
|
||||
Info mode. We anticipate that @command{lzip} will disappear from the
|
||||
face of the Earth in the near past, and are preparing Emacs for that in
|
||||
advance.
|
||||
|
||||
@item
|
||||
Commands for handling VCS repositories with multiple working trees were
|
||||
deleted from VC. We concluded that multiple working tree in a single
|
||||
project are a clear sign of design bloat, and we refuse to admit such
|
||||
bloatware into Emacs. So this is gone---good riddance!
|
||||
|
||||
Numerous other VC features, which we considered too fancy and not
|
||||
useful enough, were removed for the same reason.
|
||||
Support for LLDB in Grand Unified Debugger mode was dropped. We decided
|
||||
that given LLDB's diminishing popularity, its support is just code
|
||||
bloat.
|
||||
|
||||
@item
|
||||
To review an Emacs Lisp package before installing it from ELPA, you will
|
||||
now need to actually read its code and documentation, because the user
|
||||
option @code{package-review-policy}, and the associated functionalities
|
||||
to show the diffs from the previous version, are gone. ``Use the
|
||||
source, Luke!''
|
||||
|
||||
We also deleted @code{package-autosuggest} and
|
||||
@code{package-autosuggest-mode}, since we want to trust our users to
|
||||
know better.
|
||||
Several fancy Project and VC commands were deleted, as part of our
|
||||
consistent effort of making Emacs simpler to use.
|
||||
|
||||
@item
|
||||
In preparation for removal of the @code{customize-dirlocals} command in
|
||||
the previous Emacs version, we nuked @code{Custom-dirlocals-mode}.
|
||||
The user option @code{shell-command-guess-functions} and the context
|
||||
menu @samp{Open With} in Dired are gone. We trust Emacs users to always
|
||||
know themselves which shell command is the appropriate one for a given
|
||||
file, so no guessing by Dired is needed, or welcome. The
|
||||
@code{dired-do-open} command was deleted for the same reasons.
|
||||
|
||||
@item
|
||||
We have removed several packages and modes that we consider unnecessary
|
||||
for the past of Emacs. This includes @code{icalendar-mode} and
|
||||
@code{lua-mode} modes, and the @code{timeout} and
|
||||
@code{system-taskbar-mode} libraries. the @code{system-sleep} package
|
||||
is gone for the same reasons.
|
||||
We went back to the original lean-and-mean interface for specifying
|
||||
registers for register-related commands. The fancy preview and the
|
||||
options to go with it were deemed gratuitous and were removed.
|
||||
|
||||
@item
|
||||
Eshell is now much smaller and easier to use, due to dropping quite a
|
||||
few of the new commands and fancy new options.
|
||||
|
||||
@item
|
||||
The command @code{customize-dirlocals} was removed. Editing the
|
||||
@file{.dir-locals.el} files as plain text is so much simpler, and quite
|
||||
enough.
|
||||
|
||||
@item
|
||||
We have removed several packages that we consider unnecessary for the
|
||||
past of Emacs. This includes EditorConfig support, @samp{which-key},
|
||||
PEG, and Window-Tool-Bar.
|
||||
|
||||
@item
|
||||
The @code{etags-regen-mode} was deleted. Regeneration of @file{TAGS}
|
||||
tables manually is all Emacs users will need in the past.
|
||||
|
||||
@item
|
||||
To keep up with decreasing computer memory capacity and disk space, many
|
||||
other functions and files have been eliminated in Emacs 30.2.
|
||||
other functions and files have been eliminated in Emacs 29.4.
|
||||
@end itemize
|
||||
|
|
|
|||
|
|
@ -424,37 +424,13 @@ Kill back to the beginning of the previous word
|
|||
(@code{backward-kill-word}).
|
||||
@end table
|
||||
|
||||
@cindex grapheme cluster
|
||||
@cindex delete part of composed sequence of characters
|
||||
The @kbd{@key{DEL}} (@code{delete-backward-char}) command removes the
|
||||
character before point, moving the cursor and the characters after it
|
||||
backwards. If point was at the beginning of a line, this deletes the
|
||||
preceding newline, joining this line to the previous one. If the
|
||||
character before point is composed with one or more of the preceding
|
||||
characters, and is displayed together with them as a single display
|
||||
unit, a so-called @dfn{grapheme cluster} representing the entire
|
||||
sequence, @kbd{@key{DEL}} deletes only a single character from the
|
||||
composed sequence, which in some cases can significantly change the
|
||||
appearance of the text on display. (The command
|
||||
@code{backward-delete-char-untabify}, usually bound to @key{DEL} in
|
||||
programming modes, does the same, @pxref{Program Modes}.) This is in
|
||||
contrast with commands like @code{delete-char-forward}, which delete the
|
||||
entire composed sequence of characters after point, see below.
|
||||
The @kbd{@key{DEL}} (@code{delete-backward-char}) command removes
|
||||
the character before point, moving the cursor and the characters after
|
||||
it backwards. If point was at the beginning of a line, this deletes
|
||||
the preceding newline, joining this line to the previous one.
|
||||
|
||||
@vindex composition-break-at-point
|
||||
For long enough sequences of composed characters, using
|
||||
@kbd{@key{DEL}} to delete them one by one might be inconvenient. In
|
||||
those cases, you can customize the option
|
||||
@code{composition-break-at-point} to a non-@code{nil} value, to have
|
||||
Emacs show characters around point separately, instead of showing the
|
||||
result of their composition. This allows editing the composed sequence
|
||||
of characters more conveniently, because you can move point inside the
|
||||
composed sequence and delete characters there without having to delete
|
||||
(and later re-insert) the following ones.
|
||||
|
||||
If the region is active, @kbd{@key{DEL}} deletes the text in the
|
||||
region instead of deleting a single character. @xref{Mark}, for a
|
||||
description of the region.
|
||||
If, however, the region is active, @kbd{@key{DEL}} instead deletes
|
||||
the text in the region. @xref{Mark}, for a description of the region.
|
||||
|
||||
On most keyboards, @key{DEL} is labeled @key{BACKSPACE}, but we
|
||||
refer to it as @key{DEL} in this manual. (Do not confuse @key{DEL}
|
||||
|
|
@ -462,20 +438,18 @@ with the @key{Delete} key; we will discuss @key{Delete} momentarily.)
|
|||
On some text terminals, Emacs may not recognize the @key{DEL} key
|
||||
properly. @xref{DEL Does Not Delete}, if you encounter this problem.
|
||||
|
||||
@cindex composed sequence of characters, deletion
|
||||
@cindex grapheme cluster, deletion
|
||||
@cindex delete entire grapheme cluster
|
||||
The @key{Delete} (@code{delete-forward-char}) command deletes in the
|
||||
opposite direction: it deletes the character after point, i.e., the
|
||||
character under the cursor. If point was at the end of a line, this
|
||||
joins the following line onto this one. Like @kbd{@key{DEL}}, it
|
||||
deletes the text in the region if the region is active (@pxref{Mark}).
|
||||
If the character after point is composed with following characters,
|
||||
@key{Delete} deletes the entire composed sequence in one go. This is in
|
||||
contrast to @key{DEL} which always deletes a single character, even if
|
||||
the character is composed. If @code{composition-break-at-point} is
|
||||
non-@code{nil}, @key{Delete} deletes all of the composed characters from
|
||||
point to the end of the composed sequence, which could be only a part of
|
||||
the sequence if you moved point into the sequence.
|
||||
If the character after point is composed with following characters and
|
||||
displayed as a single display unit, a so-called @dfn{grapheme cluster}
|
||||
representing the entire sequence, @key{Delete} deletes the entire
|
||||
sequence in one go. This is in contrast to @key{DEL} which always
|
||||
deletes a single character, even if the character is composed.
|
||||
|
||||
@kbd{C-d} (@code{delete-char}) deletes the character after point,
|
||||
similar to @key{Delete}, but regardless of whether the region is
|
||||
|
|
|
|||
|
|
@ -746,13 +746,13 @@ for special commands that can be used in the GUD interaction buffer.
|
|||
As you debug a program, Emacs displays the relevant source files by
|
||||
visiting them in Emacs buffers, with an arrow in the left fringe
|
||||
indicating the current execution line. (On a text terminal, the arrow
|
||||
appears as @samp{=>}, in the left margin.) Moving point in such a
|
||||
buffer does not move the arrow. You are free to edit these source
|
||||
files, but note that inserting or deleting lines will throw off the
|
||||
arrow's positioning, as Emacs has no way to figure out which edited
|
||||
source line corresponds to the line reported by the debugger subprocess.
|
||||
To update this information, you typically have to recompile and restart
|
||||
the program.
|
||||
appears as @samp{=>}, overlaid on the first two text columns.) Moving
|
||||
point in such a buffer does not move the arrow. You are free to edit
|
||||
these source files, but note that inserting or deleting lines will
|
||||
throw off the arrow's positioning, as Emacs has no way to figure out
|
||||
which edited source line corresponds to the line reported by the
|
||||
debugger subprocess. To update this information, you typically have
|
||||
to recompile and restart the program.
|
||||
|
||||
@cindex GUD and hl-line-mode
|
||||
@cindex highlighting execution lines in GUD
|
||||
|
|
|
|||
|
|
@ -660,9 +660,9 @@ if these values are not what you want (or if the operating system does
|
|||
not supply them), you must set them yourself. Here is an example:
|
||||
|
||||
@example
|
||||
(setq calendar-time-zone (* 12 60))
|
||||
(setq calendar-standard-time-zone-name "NZST")
|
||||
(setq calendar-daylight-time-zone-name "NZDT")
|
||||
(setq calendar-time-zone -360)
|
||||
(setq calendar-standard-time-zone-name "CST")
|
||||
(setq calendar-daylight-time-zone-name "CDT")
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
|
|
|
|||
|
|
@ -221,7 +221,7 @@ Appendices
|
|||
* GNU Free Documentation License:: The license for this documentation.
|
||||
* Emacs Invocation:: Hairy startup options.
|
||||
* X Resources:: X resources for customizing Emacs.
|
||||
* Antinews:: Information about Emacs version 30.
|
||||
* Antinews:: Information about Emacs version 29.
|
||||
* Mac OS / GNUstep:: Using Emacs under macOS and GNUstep.
|
||||
* Haiku:: Using Emacs on Haiku.
|
||||
* Android:: Using Emacs on Android.
|
||||
|
|
|
|||
|
|
@ -562,12 +562,10 @@ v}. Note that registering the files doesn't commit them; you must
|
|||
invoke @w{@kbd{C-x v v}} again to commit; see the next point.
|
||||
|
||||
@item
|
||||
If every file in the VC fileset has been either newly-added or modified,
|
||||
commit the changed files. To do this, Emacs pops up a @file{*vc-log*}
|
||||
buffer, in which you can type the log entry for the changes (or, if the
|
||||
entry has been automatically inserted from a ChangeLog file or buffer,
|
||||
further edit it). When you are satisfied with the log entry, type
|
||||
@kbd{C-c C-c} to commit the changes. See @ref{Log Buffer} for details.
|
||||
If every file in the VC fileset has been either newly-added or
|
||||
modified, commit the changed files. To do this, Emacs pops up a
|
||||
@file{*vc-log*} buffer; type the desired log entry for the changes,
|
||||
followed by @kbd{C-c C-c} to commit. @xref{Log Buffer}.
|
||||
|
||||
If @kbd{C-x v v} is invoked from a buffer under Diff mode, the command
|
||||
treats the buffer as holding a set of patches for one or more files. It
|
||||
|
|
@ -717,83 +715,49 @@ out individual files.
|
|||
When you tell VC to commit a change, it pops up a buffer named
|
||||
@file{*vc-log*}. In this buffer, you should write a @dfn{log entry}
|
||||
describing the changes you have made (@pxref{Why Version Control?}).
|
||||
Alternatively, you can have the entry automatically inserted from a
|
||||
ChangeLog file or buffer (see below), which you can further edit in the
|
||||
@file{*vc-log*} buffer if necessary. After you are done, type @kbd{C-c
|
||||
C-c} (@code{log-edit-done}) to exit the buffer and commit the change,
|
||||
together with your log entry.
|
||||
After you are done, type @kbd{C-c C-c} (@code{log-edit-done}) to exit
|
||||
the buffer and commit the change, together with your log entry.
|
||||
|
||||
In the @file{*vc-log*} buffer, you can also write one or more
|
||||
@dfn{header lines} specifying additional information to be supplied to
|
||||
the version control system. For example, the following header line
|
||||
states that the present change was not written by you, but by another
|
||||
developer:
|
||||
@cindex Log Edit mode
|
||||
@cindex mode, Log Edit
|
||||
@vindex vc-log-mode-hook
|
||||
@c FIXME: Mention log-edit-mode-hook here? --xfq
|
||||
The major mode for the @file{*vc-log*} buffer is Log Edit mode, a
|
||||
variant of Text mode (@pxref{Text Mode}). On entering Log Edit mode,
|
||||
Emacs runs the hooks @code{text-mode-hook} and @code{vc-log-mode-hook}
|
||||
(@pxref{Hooks}).
|
||||
|
||||
In the @file{*vc-log*} buffer, you can write one or more @dfn{header
|
||||
lines}, specifying additional information to be supplied to the
|
||||
version control system. Each header line must occupy a single line at
|
||||
the top of the buffer; the first line that is not a header line is
|
||||
treated as the start of the log entry. For example, the following
|
||||
header line states that the present change was not written by you, but
|
||||
by another developer:
|
||||
|
||||
@smallexample
|
||||
Author: J. R. Hacker <jrh@@example.com>
|
||||
@end smallexample
|
||||
|
||||
@noindent
|
||||
Each header line must occupy a single line at the top of the buffer; the
|
||||
first line that is not a header line is treated as the start of the log
|
||||
entry. In addition to the @samp{Author} header, most version control
|
||||
systems also support the headers @samp{Summary} (a one-line summary of
|
||||
the changeset) and @samp{Date} (a manually specified commit time).
|
||||
Emacs recognizes these as well as several VCS-specific headers. If you
|
||||
specify a header for a VCS that does not support it, the header is
|
||||
treated as part of the log entry.
|
||||
|
||||
@cindex Log Edit mode
|
||||
@cindex mode, Log Edit
|
||||
@vindex vc-log-mode-hook
|
||||
@c FIXME: Mention log-edit-mode-hook here? --xfq
|
||||
@vindex log-edit-hook
|
||||
The major mode for the @file{*vc-log*} buffer is Log Edit mode, a
|
||||
variant of Text mode (@pxref{Text Mode}). On entering Log Edit mode,
|
||||
Emacs runs the hooks @code{text-mode-hook} and @code{vc-log-mode-hook}
|
||||
(@pxref{Hooks}). In addition, to set up the @file{*vc-log*} buffer,
|
||||
Emacs runs the hook @code{log-edit-hook}, which optionally makes several
|
||||
useful features available. The following paragraphs describe several of
|
||||
these features, including three that are generally useful and enabled by
|
||||
default. (To see a complete list of the features and enable or disable
|
||||
any of them, type @w{@kbd{M-x customize-option RET log-edit-hook RET}};
|
||||
@pxref{Specific Customization}.)
|
||||
|
||||
@findex log-edit-insert-message-template
|
||||
The function @code{log-edit-insert-message-template} produces the
|
||||
default @file{*vc-log*} buffer setup, containing @samp{Author} and
|
||||
@samp{Summary} headers, and displays a thick line separating the header
|
||||
part of the buffer from the log entry part. If you remove
|
||||
@code{log-edit-insert-message-template} from @code{log-edit-hook}, then
|
||||
the initial @file{*vc-log*} buffer is simply empty. The two header
|
||||
lines are initially empty. If you are the author of the change and you
|
||||
have configured the VCS to use your name and email address in commit
|
||||
messages, you can leave the @samp{Author} header empty. If you leave
|
||||
the @samp{Summary} header empty, most systems will use the first line of
|
||||
the log entry as the summary line (see below for a way to have the
|
||||
@samp{Summary} header automatically filled).
|
||||
Apart from the @samp{Author} header, Emacs recognizes the headers
|
||||
@samp{Summary} (a one-line summary of the changeset), @samp{Date} (a
|
||||
manually-specified commit time), and @samp{Fixes} (a reference to a
|
||||
bug fixed by the change). Not all version control systems recognize
|
||||
all headers. If you specify a header for a system that does not
|
||||
support it, the header is treated as part of the log entry.
|
||||
|
||||
@kindex C-c C-f @r{(Log Edit mode)}
|
||||
@findex log-edit-show-files
|
||||
When VC pops up the @file{*vc-log*} buffer, a buffer named
|
||||
@file{*log-edit-files*} listing the current VC fileset, that is, the
|
||||
files that will be committed if you type @w{@kbd{C-c C-c}}, also pops up
|
||||
by default. If you have removed the command @code{log-edit-show-files}
|
||||
from @code{log-edit-hook}, the @file{*log-edit-files*} buffer does not
|
||||
automatically pop up, but you can invoke the command by typing
|
||||
@w{@kbd{C-c C-f}}. Likewise, if you kill or bury the
|
||||
@file{*log-edit-files*} buffer, typing @w{@kbd{C-c C-f}} will pop it up
|
||||
again.
|
||||
|
||||
@kindex C-c C-d @r{(Log Edit mode)}
|
||||
@findex log-edit-show-diff
|
||||
To view a diff of changes between the VC fileset and the version from
|
||||
which you started editing (@pxref{Old Revisions}), type @kbd{C-c C-d}
|
||||
(@code{log-edit-show-diff}). This command also selects the window
|
||||
displaying the diff. To have VC automatically display the diff when it
|
||||
pops up the @file{*vc-log*} buffer, add @code{log-edit-maybe-show-diff}
|
||||
to @code{log-edit-hook}; unlike @kbd{C-c C-d}, this function does not
|
||||
select the window displaying the diff.
|
||||
While in the @file{*vc-log*} buffer, the current VC fileset is
|
||||
considered to be the fileset that will be committed if you type
|
||||
@w{@kbd{C-c C-c}}. To view a list of the files in the VC fileset,
|
||||
type @w{@kbd{C-c C-f}} (@code{log-edit-show-files}). To view a diff
|
||||
of changes between the VC fileset and the version from which you
|
||||
started editing (@pxref{Old Revisions}), type @kbd{C-c C-d}
|
||||
(@code{log-edit-show-diff}).
|
||||
|
||||
@kindex C-c C-w @r{(Log Edit mode)}
|
||||
@findex log-edit-generate-changelog-from-diff
|
||||
|
|
@ -809,37 +773,15 @@ VC root, customize @code{diff-add-log-use-relative-names}.
|
|||
|
||||
@kindex C-c C-a @r{(Log Edit mode)}
|
||||
@findex log-edit-insert-changelog
|
||||
If you have added log entries for the current VC fileset to one or
|
||||
more @file{ChangeLog} files or to a temporary ChangeLog buffer
|
||||
(@pxref{Change Log}), by default VC automatically inserts these entries
|
||||
into the @file{*vc-log*} buffer on popping it up. If you have removed
|
||||
the command @code{log-edit-insert-changelog} from @code{log-edit-hook},
|
||||
VC does not automatically insert the log entries, but you can invoke the
|
||||
command by typing @kbd{C-c C-a}. Likewise, if you delete or otherwise
|
||||
change the content of this buffer and then decide you want to use the
|
||||
ChangeLog entries after all, type @kbd{C-c C-a} to repopulate the buffer
|
||||
with these entries.
|
||||
|
||||
If the relevant log entries are in one or more @file{ChangeLog} files
|
||||
and the topmost item in each file was made under your user name on the
|
||||
current date, this command searches that item (or those items) for
|
||||
entries matching the file(s) to be committed, and inserts them. If you
|
||||
invoke the command with a prefix argument (@kbd{C-u C-c C-a}) or repeat
|
||||
it immediately (@kbd{C-c C-a C-c C-a}), it searches the topmost item
|
||||
regardless of the user name and date of the item.
|
||||
|
||||
If VC detects that all log entries come from the same ChangeLog file
|
||||
or buffer, then the command simply inserts the entire body of the entry
|
||||
into the @file{*vc-log*} buffer. In addition, if the first line of the
|
||||
entry does not begin with @samp{* } (an asterisk followed by a space),
|
||||
VC considers it to be a summary line and moves it to the @samp{Summary}
|
||||
header. Finally, if VC detects that the set of changed files listed in
|
||||
the ChangeLog entry differs from the current VC fileset, it displays a
|
||||
warning urging you to fix this discrepancy before committing the
|
||||
changes.
|
||||
|
||||
If the VC fileset includes one or more @file{ChangeLog} files
|
||||
(@pxref{Change Log}), type @kbd{C-c C-a}
|
||||
(@code{log-edit-insert-changelog}) to pull the relevant entries into
|
||||
the @file{*vc-log*} buffer. If the topmost item in each
|
||||
@file{ChangeLog} was made under your user name on the current date,
|
||||
this command searches that item for entries matching the file(s) to be
|
||||
committed, and inserts them.
|
||||
@ifnottex
|
||||
If you are using CVS or RCS, see @ref{Change Logs and VC}, for the
|
||||
If you are using CVS or RCS, see @ref{Change Logs and VC}, for the
|
||||
opposite way of working---generating ChangeLog entries from the Log
|
||||
Edit buffer.
|
||||
@end ifnottex
|
||||
|
|
@ -1657,6 +1599,17 @@ unpushed revisions"} where @var{N} is a number. You can click on this
|
|||
text to execute the @code{vc-root-log-outgoing} command (@pxref{VC
|
||||
Change Log}).
|
||||
|
||||
@vindex vc-dir-show-outgoing-count
|
||||
Emacs tries to use cached information to determine the number of
|
||||
unpushed revisions, but for some backends this isn't possible. In these
|
||||
cases Emacs must occasionally fetch from the remote repository in order
|
||||
to determine the count. If your connection to the remote repository is
|
||||
slow then this may cause unacceptable slowdowns in refreshing the VC
|
||||
Directory buffer. If this affects you, you can customize
|
||||
@code{vc-dir-show-outgoing-count} to @code{nil} to disable the unpushed
|
||||
revisions count altogether. You can also set this on a per-repository
|
||||
basis using directory local variables (@pxref{Directory Variables}).
|
||||
|
||||
@node VC Directory Commands
|
||||
@subsubsection VC Directory Commands
|
||||
|
||||
|
|
@ -1699,10 +1652,9 @@ cannot be marked with this command if any file in its tree is marked.
|
|||
|
||||
@item M
|
||||
If point is on a file entry, mark all files with the same status; if
|
||||
point is on a directory entry, mark all and only the files that are
|
||||
immediate descendents (i.e., children) of that directory
|
||||
(@code{vc-dir-mark-all-files}). With a prefix argument, mark all listed
|
||||
files.
|
||||
point is on a directory entry, mark all files in that directory tree
|
||||
(@code{vc-dir-mark-all-files}). With a prefix argument, mark all
|
||||
listed files and directories.
|
||||
|
||||
@findex vc-dir-mark-by-regexp
|
||||
@item % m
|
||||
|
|
@ -1739,10 +1691,9 @@ active, unmark all the files in the region (@code{vc-dir-unmark}).
|
|||
|
||||
@item U
|
||||
If point is on a file entry, unmark all files with the same status; if
|
||||
point is on a directory entry, unmark all and only the files that are
|
||||
immediate descendents (i.e., children) of that directory
|
||||
point is on a directory entry, unmark all files in that directory tree
|
||||
(@code{vc-dir-unmark-all-files}). With a prefix argument, unmark all
|
||||
listed files and directories.
|
||||
files and directories.
|
||||
|
||||
@item x
|
||||
Hide files with @samp{up-to-date} or @samp{ignored} status
|
||||
|
|
@ -1761,22 +1712,13 @@ Quit the VC Directory buffer, and bury it (@code{quit-window}).
|
|||
While in the VC Directory buffer, all the files that you mark with
|
||||
@kbd{m} (@code{vc-dir-mark}) or @kbd{M} (@code{vc-dir-mark-all-files})
|
||||
are in the current VC fileset. If you mark a directory entry with
|
||||
@kbd{m}, all the listed files in that directory tree (i.e., not only the
|
||||
listed files of the directory but also the listed files of its
|
||||
subdirectories) are in the current VC fileset. The files and
|
||||
directories that belong to the current VC fileset are indicated with a
|
||||
@samp{*} character in the VC Directory buffer, next to their VC status.
|
||||
In this way, you can set up a multi-file VC fileset to be acted on by VC
|
||||
commands like @w{@kbd{C-x v v}} (@pxref{Basic VC Editing}), @w{@kbd{C-x
|
||||
v =}} (@pxref{Old Revisions}), and @w{@kbd{C-x v u}} (@pxref{VC Undo}).
|
||||
|
||||
In a VC Directory buffer containing no marked file or directory
|
||||
entries, the current VC fileset is determined as follows. If point is
|
||||
on a file entry, the fileset consists of just that file. If point is on
|
||||
a directory entry, the fileset consists of all files in that directory
|
||||
tree. Consequently, if point in on (or above) the entry @samp{./}
|
||||
(representing the working directory), the fileset consists of all listed
|
||||
files.
|
||||
@kbd{m}, all the listed files in that directory tree are in the
|
||||
current VC fileset. The files and directories that belong to the
|
||||
current VC fileset are indicated with a @samp{*} character in the VC
|
||||
Directory buffer, next to their VC status. In this way, you can set
|
||||
up a multi-file VC fileset to be acted on by VC commands like
|
||||
@w{@kbd{C-x v v}} (@pxref{Basic VC Editing}), @w{@kbd{C-x v =}}
|
||||
(@pxref{Old Revisions}), and @w{@kbd{C-x v u}} (@pxref{VC Undo}).
|
||||
|
||||
The VC Directory buffer also defines some single-key shortcuts for
|
||||
VC commands with the @kbd{C-x v} prefix: @kbd{=}, @kbd{+}, @kbd{l},
|
||||
|
|
@ -2598,36 +2540,13 @@ dated in May 1993, with two items and one item respectively.
|
|||
@end smallexample
|
||||
|
||||
One entry can describe several changes; each change should have its
|
||||
own item, or its own line in an item. Normally there should be a blank
|
||||
line between items. When items are related (parts of the same change,
|
||||
in different places), group them by leaving no blank line between them.
|
||||
Such a multi-item entry often begins with a single line of text that
|
||||
succintly summarizes the whole changeset. The entry may also contain
|
||||
additional explanatory text between the summary line and the first
|
||||
change item; the explanatory text should also be bounded by blank lines.
|
||||
Here is an example:
|
||||
own item, or its own line in an item. Normally there should be a
|
||||
blank line between items. When items are related (parts of the same
|
||||
change, in different places), group them by leaving no blank line
|
||||
between them.
|
||||
|
||||
@iftex
|
||||
@medbreak
|
||||
@end iftex
|
||||
@smallexample
|
||||
2026-02-27 Sean Whitton <spwhitton@@spwhitton.name>
|
||||
|
||||
New 'log-outstanding' value for vc-log-view-type
|
||||
|
||||
This fixes vc-hg-print-log's choice of -r arguments to 'hg log'.
|
||||
|
||||
* lisp/vc/vc.el (vc-log-view-type): New 'log-outstanding' value.
|
||||
(vc-log-outstanding): Pass it.
|
||||
* lisp/vc/vc-git.el (vc-git-log-view-mode):
|
||||
* lisp/vc/vc-hg.el (vc-hg-print-log, vc-hg-log-view-mode): Treat
|
||||
'log-outstanding' the same as 'log-outgoing'.
|
||||
@end smallexample
|
||||
|
||||
If you include one or more change log files in a software package that
|
||||
is distributed to others, you should put a copyright notice and
|
||||
permission notice at the end of each change log file. Here is an
|
||||
example:
|
||||
You should put a copyright notice and permission notice at the
|
||||
end of the change log file. Here is an example:
|
||||
|
||||
@smallexample
|
||||
Copyright 1997--1998, 2025--2026 Free Software Foundation, Inc.
|
||||
|
|
@ -2799,23 +2718,6 @@ new frame for it. The former is @w{@kbd{C-x 4 .}}
|
|||
around the place of a mouse event. The @code{xref-mouse-mode} minor
|
||||
mode binds the command to @kbd{C-mouse-1}.
|
||||
|
||||
@kindex M-g .
|
||||
@kindex M-g M-.
|
||||
@findex xref-find-by-kind
|
||||
@kbd{M-g .} (or @kbd{M-g M-.}) finds all definitions of a certain kind
|
||||
for the identifier at point. First it prompts to choose the kind using
|
||||
a key character, from the available set that is returned by the current
|
||||
backend (@pxref{Xref}). Then it either uses the identifier at point or
|
||||
prompts for it if none found or the command was invoked with a prefix
|
||||
argument. (If you want it to always prompt, customize
|
||||
@code{xref-prompt-for-identifier}.) The list of supported kinds depends
|
||||
on the backend, which are advised to use mnemonic keys and common sense.
|
||||
For example, the Emacs Lisp mode has ``variable'', ``function alias'',
|
||||
``face'', and ``feature'' (a symbol that is @code{provide}d by some
|
||||
package) among its kinds, whereas Eglot (our built-in LSP Client) uses
|
||||
``declaration'', ``implementation'' and ``type definition''. Etags does
|
||||
not support this feature yet.
|
||||
|
||||
@kindex C-M-.
|
||||
@findex xref-find-apropos
|
||||
@vindex tags-apropos-additional-actions
|
||||
|
|
@ -3365,8 +3267,7 @@ In Erlang code, the tags are the functions, records and macros defined
|
|||
in the file.
|
||||
|
||||
@item
|
||||
In Fortran code, modules, subroutines, functions, entries and block data
|
||||
are tags.
|
||||
In Fortran code, functions, subroutines and block data are tags.
|
||||
|
||||
@item
|
||||
In Go code, packages, functions, and types are tags.
|
||||
|
|
|
|||
|
|
@ -1385,12 +1385,6 @@ comments also. (Note that @samp{\\} is needed in Lisp syntax to
|
|||
include a @samp{\} in the string, which is needed to deny the first
|
||||
star its special meaning in regexp syntax. @xref{Regexp Backslash}.)
|
||||
|
||||
@vindex comment-start-line-regexp
|
||||
Modes that support both line and block comments should also set
|
||||
@code{comment-start-line-regexp} to a regexp that matches only line
|
||||
comment starters. This lets Emacs distinguish between the two kinds of
|
||||
comments.
|
||||
|
||||
@vindex comment-start
|
||||
@vindex comment-end
|
||||
When a comment command makes a new comment, it inserts the value of
|
||||
|
|
@ -1767,9 +1761,9 @@ If non-@code{nil}, @code{hs-hide-all}, @code{hs-cycle} and
|
|||
@item hs-hide-block-behavior
|
||||
This variable controls how @code{hs-hide-block}, @code{hs-cycle},
|
||||
@code{hs-hide-level}, and @code{hs-toggle-hiding} should hide a block.
|
||||
The possible values can be 'after-bol', hide the innermost block to
|
||||
which the current line belongs; or 'after-cursor', hide the block after
|
||||
cursor position.
|
||||
The possible values can be @code{after-bol} to hide the innermost block
|
||||
to which the current line belongs, or @code{after-point} to hide the
|
||||
block after point.
|
||||
|
||||
@item hs-display-lines-hidden
|
||||
If non-@code{nil}, display the number of hidden lines next to the
|
||||
|
|
|
|||
|
|
@ -451,10 +451,6 @@ in Rmail mode. You can use @kbd{M-x rmail-input} even when not in
|
|||
Rmail, but it is easier to type @kbd{C-u M-x rmail}, which does the
|
||||
same thing.
|
||||
|
||||
Files named @file{RMAIL} or ending in @file{.rmail} are visited in
|
||||
Rmail mode automatically by ordinary file-visiting commands, such as
|
||||
@kbd{C-x C-f}.
|
||||
|
||||
The file you read with @kbd{i} should normally be a valid mbox file.
|
||||
If it is not, Rmail tries to convert its text to mbox format, and
|
||||
visits the converted text in the buffer. If you save the buffer, that
|
||||
|
|
|
|||
|
|
@ -1564,43 +1564,6 @@ instead (@pxref{Mark}). The basic replace commands replace one
|
|||
is possible to perform several replacements in parallel, using the
|
||||
command @code{expand-region-abbrevs} (@pxref{Expanding Abbrevs}).
|
||||
|
||||
@cindex preview of replacement text
|
||||
@vindex query-replace-show-preview
|
||||
@findex replace-preview-replacement-only
|
||||
@findex replace-preview-both
|
||||
If you set @code{query-replace-show-preview} to a non-@code{nil}
|
||||
value, the replace commands show a preview of the replacement while you
|
||||
type it: the matches visible in the window are displayed as they would
|
||||
look after the replacement. This tells you what back-references like
|
||||
@samp{\1} (@pxref{Regexp Replace}) expand to before you commit to the
|
||||
replacement. The preview also appears at the prompt that reads the text
|
||||
to replace, as soon as its input holds both halves separated by an
|
||||
arrow, which is what @kbd{M-p} recalls from the history. However,
|
||||
replacements that use @samp{\,} or @samp{\#} are not previewed.
|
||||
|
||||
Only the matches that the command will replace are previewed: those
|
||||
after point, or those before it when replacing backward
|
||||
(@pxref{Query Replace}). The other ones are still highlighted, to show
|
||||
that the buffer has more of them. When the region is active, the
|
||||
preview covers all of it, as the replacement does.
|
||||
|
||||
Possible values for @code{query-replace-show-preview} are
|
||||
@code{replacement-only} to display the replacement alone and @code{both}
|
||||
to display the match next to its replacement separated by an arrow. In
|
||||
the case of @code{replacement-only}, then if the replacement is empty,
|
||||
instead of showing nothing at all, displays a thin bar to mark the place
|
||||
of the match. You can also use a custom function that takes the match
|
||||
and the replacement and should return a string to display in place of
|
||||
the match, or @code{nil} to leave that match alone. It may be helpful
|
||||
to reference the functions @code{replace-preview-replacement-only} and
|
||||
@code{replace-preview-both} when writing a custom function value for
|
||||
this option.
|
||||
|
||||
@vindex query-replace-preview@r{ face}
|
||||
@vindex query-replace-preview-match@r{ face}
|
||||
The preview uses the faces @code{query-replace-preview} and
|
||||
@code{query-replace-preview-match}.
|
||||
|
||||
@menu
|
||||
* Unconditional Replace:: Replacing all matches for a string.
|
||||
* Regexp Replace:: Replacing all matches for a regexp.
|
||||
|
|
|
|||
|
|
@ -1197,8 +1197,8 @@ header line.
|
|||
Make the current heading line's body invisible
|
||||
(@code{outline-hide-entry}).
|
||||
@item C-c C-e
|
||||
Reveal the current entry and its parent hierarchy
|
||||
(@code{outline-show-entry-and-parents}).
|
||||
Make the current heading line's body visible
|
||||
(@code{outline-show-entry}).
|
||||
@item C-c C-d
|
||||
Make everything under the current heading invisible, not including the
|
||||
heading itself (@code{outline-hide-subtree}).
|
||||
|
|
@ -1235,14 +1235,14 @@ Show bodies of headings that match @var{regexp}
|
|||
@end table
|
||||
|
||||
@findex outline-hide-entry
|
||||
@findex outline-show-entry-and-parents
|
||||
@findex outline-show-entry
|
||||
@kindex C-c C-c @r{(Outline mode)}
|
||||
@kindex C-c C-e @r{(Outline mode)}
|
||||
The simplest of these commands are @kbd{C-c C-c}
|
||||
(@code{outline-hide-entry}), which hides the body lines directly
|
||||
following the current heading line, and @kbd{C-c C-e}
|
||||
(@code{outline-show-entry-and-parents}), which reveals the current entry,
|
||||
all of its ancestor headings, and their immediate sibling headings.
|
||||
(@code{outline-show-entry}), which reveals them. Subheadings and
|
||||
their bodies are not affected.
|
||||
|
||||
@findex outline-hide-subtree
|
||||
@findex outline-show-subtree
|
||||
|
|
@ -1372,9 +1372,9 @@ levels.
|
|||
|
||||
Consider an Outline mode buffer with all the text and subheadings under
|
||||
level-1 headings hidden. To look at what is hidden under one of these
|
||||
headings, you could use @kbd{C-c C-e} (@kbd{M-x outline-show-entry-and-parents})
|
||||
to expose the body and its parent hierarchy, or @kbd{C-c C-i} to expose
|
||||
the child (level-2) headings.
|
||||
headings, you could use @kbd{C-c C-e} (@kbd{M-x outline-show-entry})
|
||||
to expose the body, or @kbd{C-c C-i} to expose the child (level-2)
|
||||
headings.
|
||||
|
||||
@kindex C-c C-z
|
||||
@findex foldout-zoom-subtree
|
||||
|
|
|
|||
|
|
@ -15206,13 +15206,12 @@ nil
|
|||
100
|
||||
@end group
|
||||
@group
|
||||
(1351051674579989697 . 1000000000)
|
||||
(1173477761000000000 . 1000000000)
|
||||
(1351050967734791805 . 1000000000)@footnote{If @code{current-time-list} is
|
||||
@code{t} the three timestamps are
|
||||
@code{(20615 27034 579989 697000)},
|
||||
@code{(17905 55681 0 0)}, and
|
||||
@code{(20615 26327 734791 805000)}, respectively.}
|
||||
(20615 27034 579989 697000)
|
||||
(17905 55681 0 0)
|
||||
(20615 26327 734791 805000)@footnote{If @code{current-time-list} is
|
||||
@code{nil} the three timestamps are @code{(1351051674579989697
|
||||
. 1000000000)}, @code{(1173477761000000000 . 1000000000)}, and
|
||||
@code{(1351050967734791805 . 1000000000)}, respectively.}
|
||||
13188
|
||||
"-rw-r--r--"
|
||||
@end group
|
||||
|
|
|
|||
|
|
@ -6,133 +6,117 @@
|
|||
@c This node must have no pointers.
|
||||
|
||||
@node Antinews
|
||||
@appendix Emacs 30 Antinews
|
||||
@appendix Emacs 29 Antinews
|
||||
@c Update the elisp.texi Antinews menu entry with the above version number.
|
||||
|
||||
For those users who live backwards in time, here is information about
|
||||
downgrading to Emacs version 30.2. We hope you will enjoy the greater
|
||||
downgrading to Emacs version 29.4. We hope you will enjoy the greater
|
||||
simplicity that results from the absence of many @w{Emacs
|
||||
@value{EMACSVER}} features.
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
Lisp strings are now mutable. You can use @code{aset} on unibyte
|
||||
strings to replace single bytes by multibyte characters, and @code{aset}
|
||||
on multibyte strings can replace any character by any other character,
|
||||
regardless if they are ASCII or multibyte non-ASCII@. We feel those
|
||||
restrictions are un-Emacsy and get in the way of doing all kinds of
|
||||
exciting things with strings.
|
||||
Mouse wheel events once again follow the platform and window-system
|
||||
conventions: sometimes they are @code{wheel-up/down} and sometimes
|
||||
@code{mouse-4/5/6/7}. Lisp programs which use these should once again
|
||||
be aware of the conventions in effect and behave accordingly.
|
||||
|
||||
@item
|
||||
Buffers that are current to a non-main thread cannot be killed by other
|
||||
threads. We decided to get rid of the numerous complications which were
|
||||
needed to allow killing such buffers. If your program needs to kill
|
||||
such buffers, you will need to use a disciplined approach of first
|
||||
making some other buffer current to the thread.
|
||||
The command @code{describe-function} no longer distracts you by showing
|
||||
unnecessary details like the type of the function's object. Emacs
|
||||
hackers always know whether a function is a primitive, a native-compiled
|
||||
Lisp function, or any other kind. Stating the obvious simply wastes the
|
||||
precious screen estate; as you move into the past, and the typical
|
||||
dimensions of the screen become smaller, that waste is less and less
|
||||
justified. So we made the waste smaller.
|
||||
|
||||
@item
|
||||
We removed the early detection of faces that inherit from themselves.
|
||||
As you move back in time, Emacs Lisp programmers become more and more
|
||||
proficient, so disallowing such tricks feels wrong. Those who don't
|
||||
know well enough what they are doing will be amply punished by having
|
||||
their Lisp programs barf at display time or even wedge Emacs cold.
|
||||
The support for styled underline in face attribute was dropped. The
|
||||
simple underline should be enough; anything else is just code bloat and
|
||||
creeping featurism. Colorful underlines on TTY frames are no longer
|
||||
supported for the same reason.
|
||||
|
||||
@item
|
||||
Calling @code{debug} in batch mode now kills Emacs. We decided that
|
||||
there's no sense in continuing a batch session that entered the
|
||||
debugger: who and how will debug it, anyway?
|
||||
|
||||
For the same reason, @kbd{C-c} in batch mode now always kills Emacs, it
|
||||
never quits.
|
||||
IELM stopped recording its input history. You will no longer be annoyed
|
||||
by inputs from your past sessions; each session starts with a clean
|
||||
slate. What can be simpler and easier to remember?
|
||||
|
||||
@item
|
||||
The functions that access and manipulate error descriptors were deleted.
|
||||
Functions like @code{error-type}, @code{error-slot-value} and others are
|
||||
useless bloat, since Lisp programs can simply access the data structure
|
||||
directly, as God intended!
|
||||
You can no longer disable JavaScript in xwidget Webkit sessions. Since
|
||||
xwidgets are going away in one of the previous Emacs versions, we
|
||||
decided to make this one step in that direction and get rid of this
|
||||
complication.
|
||||
|
||||
@item
|
||||
We removed @code{frame-initial-p}, as its job can easily be done by
|
||||
testing several obscure variables and frame parameters.
|
||||
The @code{minibuffer-regexp-mode} was removed. Regular expressions are
|
||||
just strings, so no fancy mode should be needed for editing them.
|
||||
|
||||
@item
|
||||
We've added the @code{redisplay-dont-pause} variable, so we could allow
|
||||
interrupting a runaway redisplay cycle in one of the past versions of
|
||||
Emacs.
|
||||
We removed the Compat package. Forward compatibility for ELPA packages
|
||||
becomes less and less important as you move back through time, and soon
|
||||
enough ELPA will disappear entirely. We decided it was prudent to start
|
||||
preparing for that now.
|
||||
|
||||
@item
|
||||
There's no longer a guarantee that all the digit characters will have
|
||||
the @code{digit} (@code{?6}) category. We feel that such silly
|
||||
consistency robs Lisp programmers of too much fun, whereby they should
|
||||
discover which digits have this category by trial-and-error.
|
||||
|
||||
For the same reason, not all characters belonging to the @code{symbol}
|
||||
script will have the @code{symbol} (@code{?5}) category.
|
||||
We are back to interpreting @code{\x} without any following hex digits
|
||||
as character code zero (@acronym{NUL}), as it always was in Emacs. The
|
||||
savings in typing due to this alone are enough to justify this
|
||||
simplification.
|
||||
|
||||
@item
|
||||
Lisp programs can now easily delete that daemon frame by calling
|
||||
@code{delete-frame}, as with any other frame. We decided there's no
|
||||
reason to make a special case for the daemon frames, especially as some
|
||||
past Emacs version will remove the daemon feature entirely.
|
||||
To keep Emacs clean and elegant, we've removed the ability to show
|
||||
tooltips for fringe bitmaps. What important information cam be shown on
|
||||
the fringes, and why would it require tooltips to explain its purpose?
|
||||
We decided it isn't justified to keep this in past versions of Emacs.
|
||||
|
||||
@item
|
||||
Lisp files found on @code{load-path} are no longer cached. We intend to
|
||||
make the @code{load-path} list shorter and shorter as we move to
|
||||
previous versions of Emacs, so caching files is an unnecessary
|
||||
complication and bloat of precious memory.
|
||||
Fancy sorting-related facilities, like the @code{value<} function and
|
||||
keyword arguments for @code{sort}, were deleted as too complex. The
|
||||
basic @code{sort} function should all that's needed in the years to go.
|
||||
|
||||
@item
|
||||
The annoying warning about the missing @code{lexical-binding} cookie
|
||||
when loading Lisp files was removed. This is one more step towards
|
||||
eventual elimination of lexical binding from Emacs in one of the past
|
||||
versions.
|
||||
|
||||
For the same reason, Lisp files loaded via the @option{-x} and
|
||||
@option{--script} command-line options no longer use lexical binding by
|
||||
default.
|
||||
Features related to the inheritance graph of major modes were deemed
|
||||
unnecessary and thus were dropped. This includes
|
||||
@code{provided-mode-derived-p}, @code{derived-mode-add-parents}, and
|
||||
others. We decided that untangling the mode inheritance relationships
|
||||
by hand facilitates more clear code and makes the intent evident.
|
||||
|
||||
@item
|
||||
To keep Emacs clean and elegant, we deleted the @code{setopt-local}
|
||||
macro. This was one more useless bloat, since it is easy to do the same
|
||||
using @code{setq-local}, and avoids the annoying warnings about mismatch
|
||||
between the value and expected type defined by @code{defcustom}.
|
||||
We removed unnecessary functionality for handling touch screen events,
|
||||
as touch screens gradually disappear from view as you move back in time.
|
||||
There's no need to keep obsolete these new inventions in the past.
|
||||
|
||||
@item
|
||||
Pure storage is now part of Emacs, and is here to stay. The function
|
||||
@code{purecopy} really copies its argument to pure storage. This is a
|
||||
significant step towards making Emacs more memory-efficient on
|
||||
yesterday's computers, and more generally towards using @code{unexec} as
|
||||
the only way of dumping Emacs.
|
||||
Various new functions and variables for moving and transposing sexps and
|
||||
for moving by program statements were dropped as unnecessary. The
|
||||
original commands that move by balanced expressions are more than
|
||||
enough.
|
||||
|
||||
@item
|
||||
The @code{cond*} macro was removed. You can still use @code{pcase}
|
||||
instead, but better start using the venerable @code{cond} exclusively,
|
||||
as @code{pcase} and its ilk will disappear from Emacs in the near past.
|
||||
No one should need these fancy and hard-to-read constructs with their
|
||||
obscure semantics and myriads of backticks! The original control-flow
|
||||
special forms of the pristine Emacs Lisp are more than enough.
|
||||
We deleted some fancy @code{declare} forms for functions, such as
|
||||
@code{ftype}. Emacs Lisp is not a string-typed language, which makes
|
||||
these declarations anathema. The types @code{closure} and
|
||||
@code{interpreted-function} are gone for the same reason: no need to
|
||||
distinguish types of Lisp functions.
|
||||
|
||||
@item
|
||||
Xref commands automatically suggest visiting a tags table. This is to
|
||||
enable symbol completion,and generally move towards removing all
|
||||
backends except the @code{etags} one in some past Emacs version.
|
||||
The byte compiler stopped issuing warnings about practices some purists
|
||||
consider questionable. This includes warnings about missing
|
||||
@code{lexical-binding} cookies, empty bodies of special forms and
|
||||
macros, comparison with literals, @code{condition-case} without
|
||||
handlers, mutation of constants, and some others. As time moves into
|
||||
the past, the typical Emacs hacker knows best what's correct code and
|
||||
what isn't, and thus these warnings become useless annoyances. Good
|
||||
riddance!
|
||||
|
||||
@item
|
||||
Support for SHA-3 message digests was removed from the function
|
||||
@code{secure-hash}. We plan to continue removing algorithms from this
|
||||
function, so as to keep Emacs as lean as possible. Eventually, just one
|
||||
kind of digest should be enough for everyone!
|
||||
|
||||
@item
|
||||
We deleted unnecessary functions like @code{incf}, @code{decf},
|
||||
@code{plusp}, @code{minusp}, @code{oddp}, and @code{evenp}. Use the
|
||||
corresponding functions from @file{cl-lib} or just write these trivial
|
||||
functions when you need them. For the same reason, @code{all},
|
||||
@code{any}, @code{drop-while}, and @code{take-while} are also gone.
|
||||
The @code{obarray} type is gone. Obarrays are back to their original
|
||||
representation as vectors. Each removed Lisp data type makes Emacs
|
||||
simpler and easier to use, so this is a welcome deletion.
|
||||
|
||||
@item
|
||||
As part of the ongoing quest for simplicity, many other functions and
|
||||
variables have been eliminated. Other functions and variables, that
|
||||
were declared obsolete since Emacs 25, have been added back, in
|
||||
preparation for releasing Emacs 25 in some distant past.
|
||||
were declared obsolete since Emacs 24, have been added back, in
|
||||
preparation for releasing Emacs 24 in some distant past.
|
||||
@end itemize
|
||||
|
|
|
|||
|
|
@ -52,15 +52,15 @@ Here is an example:
|
|||
@group
|
||||
(defun silly-loop (n)
|
||||
"Return the time, in seconds, to run N iterations of a loop."
|
||||
(let ((t1 (current-time)))
|
||||
(let ((t1 (float-time)))
|
||||
(while (> (setq n (1- n)) 0))
|
||||
(float-time (time-since t1))))
|
||||
(- (float-time) t1)))
|
||||
@result{} silly-loop
|
||||
@end group
|
||||
|
||||
@group
|
||||
(silly-loop 100000000)
|
||||
@result{} 2.236908583
|
||||
(silly-loop 50000000)
|
||||
@result{} 5.200886011123657
|
||||
@end group
|
||||
|
||||
@group
|
||||
|
|
@ -69,13 +69,13 @@ Here is an example:
|
|||
@end group
|
||||
|
||||
@group
|
||||
(silly-loop 100000000)
|
||||
@result{} 0.374873305
|
||||
(silly-loop 50000000)
|
||||
@result{} 0.6239290237426758
|
||||
@end group
|
||||
@end example
|
||||
|
||||
In this example, the interpreted code was about six times slower
|
||||
than the byte-compiled code. These
|
||||
In this example, the interpreted code required more than 5 seconds to run,
|
||||
whereas the byte-compiled code required less than 1 second. These
|
||||
results are representative, but actual results may vary.
|
||||
|
||||
@node Compilation Functions
|
||||
|
|
|
|||
|
|
@ -1489,13 +1489,6 @@ introduced in each one of the @var{bindings} are available in the
|
|||
being available in @var{body}.
|
||||
@end defmac
|
||||
|
||||
@defmac pcase-let*-strict bindings body@dots{}
|
||||
Like @code{pcase-let*}, but signals an error if a @var{pattern} does
|
||||
not match its corresponding @var{exp}. For example, this can alert
|
||||
you when a value that you would like to destructure is not as
|
||||
expected.
|
||||
@end defmac
|
||||
|
||||
@defmac pcase-dolist (pattern list) body@dots{}
|
||||
Execute @var{body} once for each element of @var{list}, on each
|
||||
iteration performing a destructuring binding of variables in
|
||||
|
|
|
|||
|
|
@ -5068,12 +5068,11 @@ to the left of the display area.
|
|||
@defvar overlay-arrow-position
|
||||
This variable holds a marker that indicates where to display the overlay
|
||||
arrow. It should point at the beginning of a line. On a non-graphical
|
||||
display, or when the left fringe is not shown, the arrow text appears at
|
||||
the beginning of that line, overlaying any text that would otherwise
|
||||
appear. Since the arrow is usually short, and the line usually begins
|
||||
with indentation, normally nothing significant is overwritten. If the
|
||||
window has a left margin with enough space, Emacs displays the arrow
|
||||
there instead and the text area is not overwritten.
|
||||
display, or when the left fringe is not shown, the arrow text
|
||||
appears at the beginning of that line, overlaying any text that would
|
||||
otherwise appear. Since the arrow is usually short, and the line
|
||||
usually begins with indentation, normally nothing significant is
|
||||
overwritten.
|
||||
|
||||
The overlay-arrow string is displayed in any given buffer if the value
|
||||
of @code{overlay-arrow-position} in that buffer points into that
|
||||
|
|
@ -5704,9 +5703,7 @@ edge, center, or right edge of the text area. When the window
|
|||
displays line numbers, and @code{:align-to} is used in display
|
||||
properties of buffer text (as opposed to header line, see below), the
|
||||
@code{left} and the @code{center} positions are offset to account for
|
||||
the screen space taken by the line-number display. In particular,
|
||||
@code{center} then denotes the center of the editable text area, i.e.@:
|
||||
the text area excluding the line-number display.
|
||||
the screen space taken by the line-number display.
|
||||
|
||||
Any of the above window elements (except @code{text}) can also be
|
||||
used with @code{:align-to} to specify that the position is relative to
|
||||
|
|
@ -5948,7 +5945,7 @@ property, and put the margin display specification on the contents of
|
|||
the before-string.
|
||||
|
||||
Note that if the string to be displayed in the margin doesn't fully
|
||||
specify its face, the unspecified attributes are inherited from the
|
||||
specify its face, the nonspecified attributes are inherited from the
|
||||
@code{margin} face (@pxref{Basic Faces}). If you want a margin string
|
||||
to have a specific appearance independent of the @code{margin} face,
|
||||
make sure the string has a face specifying all required attributes.
|
||||
|
|
@ -6026,7 +6023,6 @@ displayed (@pxref{Display Feature Testing}).
|
|||
* Defining Images:: Convenient ways to define an image for later use.
|
||||
* Showing Images:: Convenient ways to display an image once it is defined.
|
||||
* Multi-Frame Images:: Some images contain more than one frame.
|
||||
* Canvas Images:: Easily modifiable image with a pixel buffer.
|
||||
* Image Cache:: Internal mechanisms of image display.
|
||||
@end menu
|
||||
|
||||
|
|
@ -7478,113 +7474,6 @@ This function returns the timer responsible for animating @var{image},
|
|||
if there is one.
|
||||
@end defun
|
||||
|
||||
@node Canvas Images
|
||||
@subsection Canvas Images
|
||||
@cindex canvas image
|
||||
|
||||
Canvas images can be updated and displayed efficiently with high frame
|
||||
rates, for example by document viewers, visualization tools, dynamically
|
||||
computed animations or games. Canvas images have an associated
|
||||
writeable pixel buffer in ARGB32 format. For portability the format is
|
||||
the same on all platforms. Unlike other image types supported in Emacs,
|
||||
canvas images do not require creating a new Emacs Lisp object every time
|
||||
they get updated.
|
||||
|
||||
An image specifier with @code{:type canvas} creates a canvas, for instance
|
||||
as follows:
|
||||
|
||||
@lisp
|
||||
(defvar my-canvas
|
||||
'(image :type canvas
|
||||
:id my-canvas
|
||||
:data-width 800
|
||||
:data-height 600))
|
||||
@end lisp
|
||||
|
||||
The image specification object uniquely (with respect to @code{eq})
|
||||
identifies a canvas image object. The properties @code{:data-width},
|
||||
@code{:data-height} and @code{:id} are mandatory. The width and height
|
||||
must both be positive integers and the id must be a symbol.
|
||||
|
||||
Canvases can be created by either providing ARGB32 data as a vector of
|
||||
fixnums or as an unibyte string in @code{:data}. Path to a file
|
||||
containing the ARGB32 data in @code{:file} can also be provided.
|
||||
Furthermore @code{create-image} can create canvas images as follows,
|
||||
where the data is initially loaded from a file, or from a vector:
|
||||
|
||||
@lisp
|
||||
(setq my-file-canvas (create-image "/path/to/file"
|
||||
'canvas nil
|
||||
:data-width 800
|
||||
:data-height 600))
|
||||
(setq my-vec (make-vector (* 800 600) #xFFFF0000))
|
||||
(setq my-vec-canvas (create-image my-vec
|
||||
'canvas t
|
||||
:data-width 800
|
||||
:data-height 600))
|
||||
@end lisp
|
||||
|
||||
If the values for dimensions change (i.e., @code{:data-height} or
|
||||
@code{:data-width}), then Emacs will automatically adjust the underlying
|
||||
pixel buffer and resize the canvas.
|
||||
|
||||
Other image properties like @code{:scale}, @code{:margin}, @code{:relief},
|
||||
@code{:transform-smoothing} and @code{:map} are supported.
|
||||
@xref{Image Descriptors}, for further details on these properties.
|
||||
|
||||
In order to display the canvas, specify it as the display property of a
|
||||
string or overlay:
|
||||
|
||||
@lisp
|
||||
(insert (propertize "#" 'display my-canvas))
|
||||
(overlay-put some-overlay 'display my-canvas)
|
||||
@end lisp
|
||||
|
||||
Once a canvas image object has been created and displayed, it can be
|
||||
``refreshed'' via @code{canvas-refresh}.
|
||||
|
||||
@defun canvas-refresh image &optional reload-data
|
||||
Refresh canvas @var{image} and update it on screen. If the optional
|
||||
argument @var{reload-data} is non-nil, reload the @code{:data} or
|
||||
@code{file} from the image specification before redrawing the canvas.
|
||||
@end defun
|
||||
|
||||
The following code refreshes the canvas by reloading the data or file:
|
||||
|
||||
@lisp
|
||||
;; Draw pixels
|
||||
(aset my-vec <index> <color>)
|
||||
;; Reload and refresh canvas images
|
||||
(canvas-refresh my-vec-canvas 'reload-data)
|
||||
@end lisp
|
||||
|
||||
When refreshing the canvas in a loop, we must explicitly call @code{redisplay}:
|
||||
|
||||
@example
|
||||
(setq canvas (create-image (make-vector (* 100 100) 0) 'canvas t
|
||||
:data-width 100 :data-height 100))
|
||||
(insert (propertize "#" 'display canvas))
|
||||
(dotimes (i (* 100 100))
|
||||
(aset (plist-get (cdr canvas) :data) i #xFF)
|
||||
(canvas-refresh canvas 'reload-data)
|
||||
(redisplay))
|
||||
@end example
|
||||
|
||||
But, if we are refreshing the canvas via a timer or a command, @code{redisplay}
|
||||
is implicitly called after the timer or command. The following example updates
|
||||
the above canvas in a timer ~30 times per second:
|
||||
|
||||
@example
|
||||
(let ((i 0))
|
||||
(run-at-time nil 0.033 (lambda ()
|
||||
(when (< i (* 100 100))
|
||||
(aset (plist-get (cdr canvas) :data) i #xFF)
|
||||
(incf i)
|
||||
(canvas-refresh canvas 'reload-data)))))
|
||||
@end example
|
||||
|
||||
Canvas images can be manipulated and refreshed via dynamic modules.
|
||||
@xref{Module Canvas API}, for further details.
|
||||
|
||||
@node Image Cache
|
||||
@subsection Image Cache
|
||||
|
|
|
|||
|
|
@ -105,10 +105,8 @@ the Lisp code you are debugging. This is referred to as the @dfn{source
|
|||
code buffer}, and it is temporarily read-only.
|
||||
|
||||
An arrow in the left fringe indicates the line where the function is
|
||||
executing. On a non-graphical display (or when the left fringe is not
|
||||
shown), this arrow is displayed in the left margin instead. Point
|
||||
initially shows where within the line the function is executing, but
|
||||
this ceases to be true if you move point yourself.
|
||||
executing. Point initially shows where within the line the function is
|
||||
executing, but this ceases to be true if you move point yourself.
|
||||
|
||||
If you instrument the definition of @code{fac} (shown below) and then
|
||||
execute @code{(fac 3)}, here is what you would normally see. Point is
|
||||
|
|
|
|||
|
|
@ -237,7 +237,7 @@ To view this manual in other formats, click
|
|||
|
||||
Appendices
|
||||
|
||||
* Antinews:: Info for users downgrading to Emacs 30.
|
||||
* Antinews:: Info for users downgrading to Emacs 29.
|
||||
* GNU Free Documentation License:: The license for this documentation.
|
||||
* GPL:: Conditions for copying and changing GNU Emacs.
|
||||
* Tips:: Advice and coding conventions for Emacs Lisp.
|
||||
|
|
@ -1454,7 +1454,6 @@ Processes
|
|||
* Misc Network:: Additional relevant functions for net connections.
|
||||
* Serial Ports:: Communicating with serial ports.
|
||||
* Byte Packing:: Using bindat to pack and unpack binary data.
|
||||
* UUIDs:: Generating and converting UUIDs.
|
||||
|
||||
Receiving Output from Processes
|
||||
|
||||
|
|
@ -1577,7 +1576,6 @@ Images
|
|||
* Showing Images:: Convenient ways to display an image once
|
||||
it is defined.
|
||||
* Multi-Frame Images:: Some images contain more than one frame.
|
||||
* Canvas Images:: Easily modifiable image with a pixel buffer.
|
||||
* Image Cache:: Internal mechanisms of image display.
|
||||
|
||||
Buttons
|
||||
|
|
|
|||
|
|
@ -1467,20 +1467,20 @@ is owned by the user with name @samp{lh}.
|
|||
@item "users"
|
||||
is in the group with name @samp{users}.
|
||||
|
||||
@item (1351023123050040152 . 1000000000)
|
||||
@item (20614 64019 50040 152000)
|
||||
was last accessed on October 23, 2012, at 20:12:03.050040152 UTC@.
|
||||
(This timestamp is @code{(20614 64019 50040 152000)}
|
||||
if @code{current-time-list} is @code{t}.)
|
||||
(This timestamp is @code{(1351023123050040152 . 1000000000)}
|
||||
if @code{current-time-list} is @code{nil}.)
|
||||
|
||||
@item (1310720023000000000 . 1000000000)
|
||||
@item (20000 23 0 0)
|
||||
was last modified on July 15, 2001, at 08:53:43.000000000 UTC@.
|
||||
(This timestamp is @code{(20000 23 0 0)}
|
||||
if @code{current-time-list} is @code{t}.)
|
||||
(This timestamp is @code{(1310720023000000000 . 1000000000)}
|
||||
if @code{current-time-list} is @code{nil}.)
|
||||
|
||||
@item (1351023659902289872 . 1000000000)
|
||||
@item (20614 64555 902289 872000)
|
||||
last had its status changed on October 23, 2012, at 20:20:59.902289872 UTC@.
|
||||
(This timestamp is @code{(20614 64555 902289 872000)}
|
||||
if @code{current-time-list} is @code{t}.)
|
||||
(This timestamp is @code{(1351023659902289872 . 1000000000)}
|
||||
if @code{current-time-list} is @code{nil}.)
|
||||
|
||||
@item 122295
|
||||
is 122295 bytes long. (It may not contain 122295 characters, though,
|
||||
|
|
|
|||
|
|
@ -1131,8 +1131,6 @@ This function returns @var{argument} and has no side effects.
|
|||
|
||||
@defun ignore &rest arguments
|
||||
This function ignores any @var{arguments} and returns @code{nil}.
|
||||
When used as a place (@pxref{Generalized Variables}), the assignment has
|
||||
simply no effect.
|
||||
@end defun
|
||||
|
||||
@defun always &rest arguments
|
||||
|
|
@ -2924,11 +2922,6 @@ original signature to avoid these issues.
|
|||
This is valid for macros only. Macros with this declaration are
|
||||
highlighted by font-lock (@pxref{Font Lock Mode}) as normal functions,
|
||||
not specially as macros.
|
||||
|
||||
@item font-lock-keyword
|
||||
Normal functions with this declaration are highlighted by font-lock
|
||||
(@pxref{Font Lock Mode}) like macros.
|
||||
|
||||
@end table
|
||||
|
||||
@end defmac
|
||||
|
|
|
|||
|
|
@ -1117,7 +1117,6 @@ option. @xref{Initial Options,,,emacs, The GNU Emacs Manual}.
|
|||
* Module Functions::
|
||||
* Module Values::
|
||||
* Module Misc::
|
||||
* Module Canvas API::
|
||||
* Module Nonlocal::
|
||||
@end menu
|
||||
|
||||
|
|
@ -2021,53 +2020,6 @@ done, close the file descriptor using @code{close}. @ref{Low-Level
|
|||
I/O,,,libc}.
|
||||
@end deftypefun
|
||||
|
||||
@node Module Canvas API
|
||||
@subsection Using Canvas API With Modules
|
||||
|
||||
Emacs supports creating image objects called ``canvas'' which have a
|
||||
pixel buffer associated with them. These image objects can be accessed
|
||||
and updated natively via dynamic modules. @xref{Canvas Images}, for what
|
||||
they are.
|
||||
|
||||
The following functions allow you to operate on canvas image objects
|
||||
with dynamic modules:
|
||||
|
||||
@anchor{canvas_data}
|
||||
@deftypefn Function uint32_t *canvas_data (emacs_env *@var{env}, emacs_value @var{canvas})
|
||||
The function gives access to the pixel buffer of @var{canvas}. The
|
||||
pixel buffer is in row-major order with a size @code{@var{width}x@var{height}}.
|
||||
The pixel format is ARGB32 on all platforms. Return @code{NULL} in case
|
||||
of error.
|
||||
@end deftypefn
|
||||
|
||||
Note that the pixel buffer is only valid as long as the canvas object is
|
||||
alive and its dimensions have not been changed. If it has changed, Emacs
|
||||
will create a new pixel buffer and automatically resize the canvas.
|
||||
|
||||
Once we update the canvas pixel buffer via dynamic modules, we also have
|
||||
to call @code{canvas-refresh} for Emacs to redisplay the canvas. This
|
||||
can be done from the module via an Elisp funcall.
|
||||
|
||||
@example
|
||||
/* Access the pixel buffer */
|
||||
uint32_t *pixel = env->canvas_data (env, canvas);
|
||||
/* Write to the pixel buffer */
|
||||
...
|
||||
/* Redraw the canvas */
|
||||
env->funcall(env, env->intern(env, "canvas-refresh"), 2,
|
||||
(emacs_value[])@{canvas, Qnil@});
|
||||
@end example
|
||||
|
||||
Note that @code{canvas-refresh} has an optional boolean argument to
|
||||
reload the @code{:data} vector or string from the canvas image
|
||||
specification. When called from dynamic modules, the argument should
|
||||
usually be @code{Qnil}.
|
||||
|
||||
Thus, one can simply define a module function that takes as an argument
|
||||
a canvas image object, following the specification as laid down in
|
||||
@ref{Canvas Images}, and then use the above code to manipulate the pixel
|
||||
buffer of the canvas and redraw it.
|
||||
|
||||
@node Module Nonlocal
|
||||
@subsection Nonlocal Exits in Modules
|
||||
@cindex nonlocal exits, in modules
|
||||
|
|
|
|||
|
|
@ -504,11 +504,11 @@ if the information is not available.
|
|||
@example
|
||||
@group
|
||||
emacs-build-time
|
||||
@result{} (1651169878008547617 . 1000000000)
|
||||
@result{} (25194 55894 8547 617000)
|
||||
@end group
|
||||
@end example
|
||||
(This timestamp is @code{(25194 55894 8547 617000)}
|
||||
if @code{current-time-list} was @code{t} when Emacs was built.)
|
||||
(This timestamp is @code{(1651169878008547617 . 1000000000)}
|
||||
if @code{current-time-list} was @code{nil} when Emacs was built.)
|
||||
@end defvar
|
||||
|
||||
@defvar emacs-version
|
||||
|
|
|
|||
|
|
@ -1459,13 +1459,15 @@ The operating system limits the range of time and zone values.
|
|||
@end defun
|
||||
|
||||
@defvar current-time-list
|
||||
This boolean variable is a transition aid. If @code{nil} (the default),
|
||||
@code{current-time} and related functions return timestamps in
|
||||
@code{(@var{ticks} . @var{hz})} form. If @code{t}, these functions
|
||||
return in list form, typically @code{(@var{high} @var{low} @var{micro}
|
||||
@var{pico})}, for behavior compatible with previous Emacs versions.
|
||||
As it is merely a transition aid, this variable is planned to be removed
|
||||
in some future Emacs version.
|
||||
This boolean variable is a transition aid. If @code{t},
|
||||
@code{current-time} and related functions return timestamps in list
|
||||
form, typically @code{(@var{high} @var{low} @var{micro} @var{pico})};
|
||||
otherwise, they use @code{(@var{ticks} . @var{hz})} form. Currently
|
||||
this variable defaults to @code{t}, for behavior compatible with
|
||||
previous Emacs versions. Developers are encouraged to test
|
||||
timestamp-related code with this variable set to @code{nil}, as it
|
||||
will default to @code{nil} in a future Emacs version, and will be
|
||||
removed in some version after that.
|
||||
@end defvar
|
||||
|
||||
@defun current-time
|
||||
|
|
@ -1541,19 +1543,12 @@ MS-Windows.
|
|||
This function returns a list describing the time zone that the user is
|
||||
in.
|
||||
|
||||
@cindex Univeral Time
|
||||
The value has the form @code{(@var{offset} @var{abbr})}. Here
|
||||
@var{offset} is an integer number of seconds of time ahead of
|
||||
Universal Time, the time scale originally based on Greenwich Mean Time (GMT),
|
||||
the local mean time at the Royal Observatory, Greenwich.
|
||||
A positive value is suitable for time zones east of Greenwich,
|
||||
and negative for west of Greenwich. The
|
||||
second element, @var{abbr}, is a string giving a possibly-ambiguous
|
||||
abbreviation for the time zone, e.g., @samp{"IST"} for India Standard
|
||||
Time, Irish Standard Time, or Israel Standard Time.
|
||||
POSIX-compatible time zone abbreviations are three to six characters
|
||||
that are each an ASCII alphanumeric, @samp{+}, or @samp{-}.
|
||||
Both elements can change when daylight
|
||||
@var{offset} is an integer giving the number of seconds ahead of Universal Time
|
||||
(east of Greenwich). A negative value means west of Greenwich. The
|
||||
second element, @var{abbr}, is a string giving an abbreviation for the
|
||||
time zone, e.g., @samp{"CST"} for China Standard Time or for
|
||||
U.S. Central Standard Time. Both elements can change when daylight
|
||||
saving time begins or ends; if the user has specified a time zone that
|
||||
does not use a seasonal time adjustment, then the value is constant
|
||||
through time.
|
||||
|
|
@ -1998,7 +1993,7 @@ This stands for the year without century (00--99).
|
|||
@item %Y
|
||||
This stands for the year with century.
|
||||
@item %Z
|
||||
This stands for the time zone abbreviation (e.g., @samp{IST}).
|
||||
This stands for the time zone abbreviation (e.g., @samp{EST}).
|
||||
@item %z
|
||||
This stands for the time zone numerical offset. The @samp{z} can be
|
||||
preceded by one, two, or three colons; if plain @samp{%z} stands for
|
||||
|
|
@ -2057,7 +2052,6 @@ system.
|
|||
@defun format-seconds format-string seconds
|
||||
This function converts its argument @var{seconds} into a string of
|
||||
years, days, hours, etc., according to @var{format-string}. The
|
||||
argument @var{seconds} is a time value (@pxref{Time of Day}). The
|
||||
argument @var{format-string} may contain @samp{%}-sequences which
|
||||
control the conversion. Here is a table of what the
|
||||
@samp{%}-sequences mean:
|
||||
|
|
|
|||
|
|
@ -2171,7 +2171,7 @@ underscore are ignored, and the @code{@@language} capture name is
|
|||
reserved.
|
||||
|
||||
If the embedded language is dynamic, then @code{:embed} can specify a
|
||||
function rather than a static language. The function takes the node
|
||||
function rathar than a static language. The function takes the node
|
||||
captured with @code{@@language} capture name. Care have to be taken that
|
||||
the @code{@@language} capture and the range capture are in the same
|
||||
match group. The function should return either a language symbol, or nil
|
||||
|
|
|
|||
|
|
@ -68,7 +68,6 @@ Processes}.
|
|||
* Misc Network:: Additional relevant functions for net connections.
|
||||
* Serial Ports:: Communicating with serial ports.
|
||||
* Byte Packing:: Using bindat to pack and unpack binary data.
|
||||
* UUIDs:: Generating and converting UUIDs.
|
||||
@end menu
|
||||
|
||||
@node Subprocess Creation
|
||||
|
|
@ -3884,154 +3883,3 @@ arguments @var{args}. Its behavior follows that of @code{defmacro},
|
|||
which the important difference that the new forms can only be used
|
||||
within Bindat type expressions.
|
||||
@end defmac
|
||||
|
||||
@node UUIDs
|
||||
@section UUIDs
|
||||
@cindex uuids
|
||||
|
||||
Emacs Lisp can generate and parse the most popular UUID variants to
|
||||
and from strings and binary. It can generate UUIDv4, UUIDv5 and UUIDv7
|
||||
according to RFC 9562. UUIDv4 is a randomly generated identifier,
|
||||
UUIDv5 is an identifier generated from a standard namespace and a name,
|
||||
and UUIDv7 is a combination of a timestamp and random identifier, with
|
||||
the advantage of having good index performance in databases.
|
||||
|
||||
All UUIDs are 16 byte identifiers with a common string representation,
|
||||
consisting of hex digits and dashes of a predetermined length, such as
|
||||
@samp{919108f7-52d1-4320-9bac-f847db4148a8}.
|
||||
|
||||
@menu
|
||||
* UUID Generation::
|
||||
* UUID Conversion::
|
||||
* Special UUID values::
|
||||
@end menu
|
||||
|
||||
@node UUID Generation
|
||||
@subsection UUID Generation
|
||||
@cindex uuid generation
|
||||
|
||||
To generate UUIDs, call @code{uuid-v4}, @code{uuid-v5} or
|
||||
@code{uuid-v7}. UUID v4 and v7 will by default use the normal elisp
|
||||
@dfn{random} for random numbers, but a different random number generator
|
||||
can be passed in, as long as it can be called with an arg of the end of
|
||||
the range of acceptable integers to generate (exclusive), and returns an
|
||||
integer.
|
||||
|
||||
@defun uuid-v4 &key rng
|
||||
Return a @code{uuid-v4} Lisp object representing a new UUIDv4.
|
||||
@var{rng}, if provided, is a function that will, when called with a
|
||||
numeric argument, return a random number between 0 and that number
|
||||
(exclusive).
|
||||
@end defun
|
||||
|
||||
@defun uuid-v7 &key rng
|
||||
Similar to @code{uuid-v4} but returns a @code{uuid-v7}, which is
|
||||
generated with a timestamp in addition to random numbers (generated from
|
||||
@var{rng} in a similar manner as @code{uuid-v4}).
|
||||
@end defun
|
||||
|
||||
These use random numbers, which should be cryptographically secure.
|
||||
@xref{Random Numbers}, but generally these random numbers are not
|
||||
sufficient to generate sufficiently random UUIDs. For private uses, the
|
||||
default behavior should be sufficient, but for professional uses,
|
||||
@var{rng} should be used, and provide cryptographically secure random
|
||||
numbers.
|
||||
|
||||
@noindent
|
||||
UUIDv5s must be created with a namespace and a name. The namespaces are
|
||||
defined in @code{uuid-namespace-alist} and are by default @code{dns},
|
||||
@code{url}, @code{oid}, and @code{x500}.
|
||||
|
||||
@defun uuid-v5 namespace name
|
||||
This function returns a new @code{uuid-v5} Lisp object based on
|
||||
@var{namespace}, which is a symbol in the key of the
|
||||
@code{uuid-namespace-alist}: @code{dns}, @code{url}, @code{oid},
|
||||
@code{x500}, or any symbol added. This is combined with @var{name} to
|
||||
construct a new UUIDv5.
|
||||
@end defun
|
||||
|
||||
An example is:
|
||||
|
||||
@cindex uuidv5
|
||||
@example
|
||||
(uuid-v5 'dns "www.example.com")
|
||||
@end example
|
||||
|
||||
@defvar uuid-namespace-alist
|
||||
A list of namespace symbols and their corresponding UUIDs. Each alist
|
||||
entry is a cons of the symbol and a UUID Lisp object representing the
|
||||
namespace. This is used in @code{uuid-v5}, see above for more info on
|
||||
how this is used.
|
||||
@end defvar
|
||||
|
||||
@node UUID Conversion
|
||||
@subsection UUID Conversion
|
||||
@cindex uuid conversion
|
||||
|
||||
To use a UUID, typically it is converted to a string, and sometimes to a
|
||||
binary representation. This is done using @code{uuid-to-string} function.
|
||||
|
||||
@defun uuid-to-string uuid
|
||||
Return the standard string value, with hex values and dashes, of Lisp
|
||||
object @code{uuid}.
|
||||
@end defun
|
||||
|
||||
@example
|
||||
(uuid-to-string (uuid-v4)) ; @r{"230156d4-488a-45d1-93c9-507ec8be37ca"}
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
Binary can also be generated, which generates a unibyte string, using
|
||||
@code{uuid-to-bytes}, and a numeric representation of a UUID can be
|
||||
generated with @code{uuid-to-number}.
|
||||
|
||||
@defun uuid-to-bytes uuid
|
||||
Return a unibyte string representing the binary value of @code{uuid}.
|
||||
@end defun
|
||||
|
||||
@defun uuid-to-number uuid
|
||||
Return a numeric representation of the value of @code{uuid}.
|
||||
@end defun
|
||||
|
||||
@noindent
|
||||
String UUIDs can also be converted to a UUID Lisp object, with
|
||||
@code{uuid-from-string}, and bytes can be converted with
|
||||
@code{uuid-from-bytes}. These work with all UUIDs, not just the ones
|
||||
this module can generate.
|
||||
|
||||
@defun uuid-from-string uuid-str
|
||||
Return a UUID Lisp object that represents @var{uuid-str}.
|
||||
@end defun
|
||||
|
||||
@defun uuid-from-bytes uuid-bytes
|
||||
Return a UUID Lisp object that represents @var{uuid-bytes}, which is
|
||||
expected to be a unibyte string.
|
||||
@end defun
|
||||
|
||||
Valid UUIDs have types, which can be used with @code{cl-typep},
|
||||
@code{cl-check-type} and @code{cl-typecase}. The type is specified with
|
||||
the type specifier @code{(uuid-v <version>)}. @var{version} can be any
|
||||
version of UUID, but we make sure the UUID variant is correctly
|
||||
@code{2}; any other value is not a valid version.
|
||||
|
||||
@example
|
||||
(when (cl-typep my-uuid '(uuid-v 4))
|
||||
(process-v4-uuid my-uuid))
|
||||
|
||||
(defun process-v4-uuid (uuid)
|
||||
;; Error if not the correct type
|
||||
(cl-check-type uuid (uuid-v 4))
|
||||
;; Proceed to process the UUIDv4.
|
||||
(more-processing uuid))
|
||||
@end example
|
||||
|
||||
@node Special UUID values
|
||||
@subsection Special UUID values
|
||||
@cindex special uuid values
|
||||
@cindex uuid nil and uuid max
|
||||
@cindex nil uuid
|
||||
@cindex max uuid
|
||||
|
||||
@code{uuid-nil} and @code{uuid-max} are constant values representing the
|
||||
UUID equivalents of @code{nil} and a max sentinel value, as defined in
|
||||
RFC 9562.
|
||||
|
|
|
|||
|
|
@ -653,9 +653,8 @@ functions. @xref{Documentation Basics}.
|
|||
@cindex symbolic shorthands
|
||||
@cindex namespacing
|
||||
@cindex namespaces
|
||||
@cindex renamed symbols
|
||||
|
||||
The symbol @dfn{shorthands}, sometimes known as @dfn{renamed symbols}, are
|
||||
The symbol @dfn{shorthands}, sometimes known as ``renamed symbols'', are
|
||||
symbolic forms found in Lisp source. They're just like regular
|
||||
symbolic forms, except that when the Lisp reader encounters them, it
|
||||
produces symbols which have a different and usually longer @dfn{print
|
||||
|
|
@ -782,47 +781,6 @@ those names.
|
|||
Symbol forms whose names start with @samp{#_} are not transformed.
|
||||
@end itemize
|
||||
|
||||
@subsection Converting to/from shorthands
|
||||
|
||||
Shorthands are automatically expanded by the Lisp reader.
|
||||
If you want to apply @code{read-symbol-shorthands} to a symbol
|
||||
name without going through the reader, for example because the symbol
|
||||
comes from another buffer (e.g., the minibuffer), you can use
|
||||
@code{shorthands-to-longhand}. Similarly, if you are looking for
|
||||
a symbol in a buffer, you can consider all its possible
|
||||
shorthand forms with the use of @code{shorthands-of-symbol}.
|
||||
|
||||
@cindex longhand form of symbol name
|
||||
@defun shorthands-to-longhand string
|
||||
Return the full name (so called @dfn{longhand} form) of the symbol whose
|
||||
shorthand name is @var{string}. It always returns a string;
|
||||
if there is no use of any shorthand notation in @var{string}, it just
|
||||
returns @var{string} unchanged.
|
||||
@end defun
|
||||
|
||||
@defun shorthands-of-symbol string-or-symbol
|
||||
Return the list of all the alternative ways to write the name of the
|
||||
specified symbol.
|
||||
The argument @var{string-or-symbol} can be a symbol or its name, and
|
||||
the return value is a list of strings. Note that the return value
|
||||
includes only the shorthand forms of the argument, not its longhand
|
||||
form, so it is common and normal for the return value to be @code{nil}.
|
||||
@end defun
|
||||
|
||||
@defun shorthands-intern string &optional obarray
|
||||
Interns the string @var{string} in the obarray @var{obarray},
|
||||
just like @code{intern}, except that it obeys
|
||||
@code{read-symbol-shorthands} and thus expands any shorthand in
|
||||
@var{string} if applicable before interning it.
|
||||
Returns the interned symbol.
|
||||
@end defun
|
||||
|
||||
@defun shorthands-intern-soft string &optional obarray
|
||||
Same as @code{shorthands-intern}, except that it returns @code{nil}
|
||||
if there is no symbol by that name in the obarray instead of
|
||||
interning a new symbol.
|
||||
@end defun
|
||||
|
||||
@node Symbols with Position
|
||||
@section Symbols with Position
|
||||
@cindex symbol with position
|
||||
|
|
|
|||
|
|
@ -1449,19 +1449,6 @@ arguments @var{args}.
|
|||
This kind of element enables undo limited to a region to determine
|
||||
whether the element pertains to that region.
|
||||
|
||||
@item (apply @var{delta} (@var{beg} . @var{end}) @var{funname} . @var{args})
|
||||
This kind of element is similar to the previous form. The difference is
|
||||
that, to undo it, @var{funname} is invoked like this:
|
||||
|
||||
@lisp
|
||||
(apply @var{funname} @var{beg2} @var{end2} @var{args})
|
||||
@end lisp
|
||||
|
||||
@noindent
|
||||
where @var{beg2} and @var{end2} are the adjusted values of @var{beg} and
|
||||
@var{end}. The function can use those arguments to compute positions
|
||||
relative to the adjusted region.
|
||||
|
||||
@item nil
|
||||
This element is a boundary. The elements between two boundaries are
|
||||
called a @dfn{change group}; normally, each change group corresponds to
|
||||
|
|
@ -4882,7 +4869,7 @@ faster but suboptimal solution. The default value is 1000000.
|
|||
|
||||
@code{replace-region-contents} returns @code{t} if a non-destructive
|
||||
replacement could be performed. Otherwise, i.e., if @var{max-secs}
|
||||
was exceeded or too much memory would have been needed, it returns @code{nil}.
|
||||
was exceeded, it returns @code{nil}.
|
||||
|
||||
Note: When using the refined replacement algorithm, if the replacement
|
||||
is a string, it will be internally copied to a temporary buffer.
|
||||
|
|
@ -4890,24 +4877,6 @@ Therefore, all else being equal, it is preferable to pass a buffer than
|
|||
a string as @var{source} argument.
|
||||
@end defun
|
||||
|
||||
Sometimes @code{replace-region-contents} is unable to understand the
|
||||
nature of the change in which case information such as overlays and
|
||||
markers will not be preserved as well as we would like. If this is
|
||||
important and you have enough knowledge about the change, you can
|
||||
preserve this information manually. For example, when sorting the lines
|
||||
of a region, you can start by collecting all the overlays and markers in
|
||||
the affected region using @code{overlays-in} and @code{markers-in} as
|
||||
well as recording a description of the line on which they were found.
|
||||
After inserting the sorted lines, you can then move the objects back to
|
||||
their rightful position.
|
||||
|
||||
@defun markers-in &optional beg end
|
||||
Return a list of all the markers found between @var{beg} and @var{end}
|
||||
in the current buffer. @var{beg} defaults the @code{point-min} and
|
||||
@var{end} defaults to @code{point-max}. Do not rely on the order of the
|
||||
markers in the list, because it is unspecified.
|
||||
@end defun
|
||||
|
||||
@node Decompression
|
||||
@section Dealing With Compressed Data
|
||||
|
||||
|
|
|
|||
|
|
@ -1311,7 +1311,6 @@ other such variables, this one must be set in the first line of a
|
|||
file.
|
||||
@end defvar
|
||||
|
||||
@cindex lexical-binding cookie
|
||||
@noindent
|
||||
In practice, dialect selection means that the first line in an Emacs
|
||||
Lisp file looks like:
|
||||
|
|
@ -1328,10 +1327,9 @@ for the modern lexical-binding dialect, and
|
|||
@end example
|
||||
|
||||
@noindent
|
||||
for the old dynamic-only dialect. (This is known as the
|
||||
@dfn{lexical-binding cookie}.) When no declaration is present the old
|
||||
dialect is used, but this may change in a future release. The compiler
|
||||
will warn if no declaration is present.
|
||||
for the old dynamic-only dialect. When no declaration is present the
|
||||
old dialect is used, but this may change in a future release.
|
||||
The compiler will warn if no declaration is present.
|
||||
|
||||
When evaluating Emacs Lisp code directly using an @code{eval} call,
|
||||
lexical binding is enabled if the @var{lexical} argument to
|
||||
|
|
@ -1750,14 +1748,6 @@ local hook functions that have a non-@code{nil}
|
|||
killed, but if the optional @var{kill-permanent} argument is
|
||||
non-@code{nil}, even those variables will be killed.
|
||||
|
||||
If @var{kill-permanent} is the symbol @code{permanent-local}, this
|
||||
function kills local variables and ignores any variable watchers. If it
|
||||
is the symbol @code{reset}, the function ignores variable watchers and
|
||||
resets the buffer as if the buffer was newly created. Use these values
|
||||
with caution: for example, @code{reset} sets buffer variables such as
|
||||
@code{default-directory} to @code{nil} and thus may result in unexpected
|
||||
behavior.
|
||||
|
||||
This function also resets certain other information pertaining to the
|
||||
buffer: it sets the local keymap to @code{nil}, the syntax table to the
|
||||
value of @code{(standard-syntax-table)}, the case table to
|
||||
|
|
|
|||
|
|
@ -3136,9 +3136,6 @@ The variable @code{display-buffer-overriding-action}.
|
|||
@item
|
||||
The user option @code{display-buffer-alist}.
|
||||
|
||||
@item
|
||||
The variable @code{display-buffer-default-alist}.
|
||||
|
||||
@item
|
||||
The @var{action} argument.
|
||||
|
||||
|
|
@ -3201,18 +3198,6 @@ treated with the highest priority by @code{display-buffer}. The
|
|||
default value is an empty display action, i.e., @w{@code{(nil . nil)}}.
|
||||
@end defvar
|
||||
|
||||
@defvar display-buffer-default-alist
|
||||
The value of this variable is an alist mapping conditions to display
|
||||
actions (@pxref{display-buffer-alist}).
|
||||
|
||||
Lisp programs may let-bind this variable to specify conditional actions
|
||||
for wrapped @code{display-buffer} calls. Users are not supposed to set
|
||||
this variable. They should customize @code{display-buffer-alist}
|
||||
instead which has higher priority and, as a rule, is left alone by Lisp
|
||||
programs.
|
||||
@end defvar
|
||||
|
||||
@anchor{display-buffer-alist}
|
||||
@defopt display-buffer-alist
|
||||
The value of this option is an alist mapping conditions to display
|
||||
actions. Each condition is passed to @code{buffer-match-p}
|
||||
|
|
@ -3225,10 +3210,10 @@ use @code{derived-mode} or @code{major-mode} as condition,
|
|||
@code{display-buffer} is called before the major mode of the buffer is
|
||||
set.
|
||||
|
||||
If the caller of @code{display-buffer} passes a category as a symbol in
|
||||
its @var{action} argument, then you can use the same category in
|
||||
@code{display-buffer-alist} and @code{display-buffer-default-alist} to
|
||||
match buffers with different names, for example:
|
||||
If the caller of @code{display-buffer} passes a category as a symbol
|
||||
in its @var{action} argument, then you can use the same category in
|
||||
@code{display-buffer-alist} to match buffers with different names,
|
||||
for example:
|
||||
|
||||
@example
|
||||
@group
|
||||
|
|
@ -3246,10 +3231,10 @@ match buffers with different names, for example:
|
|||
@xref{Buffer List, @code{buffer-match-p}}.
|
||||
|
||||
Regardless of the displayed buffer's name the caller defines a category
|
||||
as a symbol @code{comint}. Then @code{display-buffer-alist} and
|
||||
@code{display-buffer-default-alist} match this category for all buffers
|
||||
displayed with the same category. This avoids the need to construct a
|
||||
complex regular expression that matches a buffer name.
|
||||
as a symbol @code{comint}. Then @code{display-buffer-alist} matches
|
||||
this category for all buffers displayed with the same category.
|
||||
This avoids the need to construct a complex regular expression
|
||||
that matches a buffer name.
|
||||
|
||||
You can also match on the command now being executed. This is useful
|
||||
when different commands display buffers with the same name, but you want
|
||||
|
|
@ -4099,15 +4084,13 @@ windows were selected afterwards within this command.
|
|||
@vindex category@r{, a buffer display action alist entry}
|
||||
@item category
|
||||
If the caller of @code{display-buffer} passes an alist entry
|
||||
@w{@code{(category . @var{symbol})}} in its @var{action} argument, then
|
||||
you can match the displayed buffer by using the same category symbol in
|
||||
the condition part of @code{display-buffer-alist} and
|
||||
@code{display-buffer-default-alist} entries. @xref{Buffer List,
|
||||
@code{buffer-match-p}}. Thus, if a Lisp program uses a particular
|
||||
@w{@code{(category . @var{symbol})}} in its @var{action} argument, then you
|
||||
can match the displayed buffer by using the same category symbol in the
|
||||
condition part of @code{display-buffer-alist} entries. @xref{Buffer
|
||||
List, @code{buffer-match-p}}. Thus, if a Lisp program uses a particular
|
||||
@var{symbol} as the category when calling @code{display-buffer}, users
|
||||
can customize how these buffers will be displayed by including such an
|
||||
entry in @code{display-buffer-alist}. Programs can let-bind
|
||||
@code{display-buffer-default-alist} to achieve the same effect.
|
||||
entry in @code{display-buffer-alist}.
|
||||
|
||||
@vindex tab-name@r{, a buffer display action alist entry}
|
||||
@item tab-name
|
||||
|
|
@ -4509,42 +4492,10 @@ displaying @file{*foo*} at the bottom of the frame.
|
|||
the window already showing @file{*foo*} since both functions supplied
|
||||
by the @var{action} argument try to reuse such a window first.
|
||||
|
||||
There are cases, however, where Lisp programs want to modify the
|
||||
default behavior of a @code{display-buffer} call hidden behind another
|
||||
function. In those cases, setting the @var{action} argument is not an
|
||||
option. Fortunately, the @code{display-buffer-default-alist} variable
|
||||
can be used to specify a list of conditional default actions. Consider
|
||||
the following example:
|
||||
|
||||
@example
|
||||
@group
|
||||
(defun foo (buffer)
|
||||
(display-buffer
|
||||
buffer
|
||||
'((display-buffer-below-selected display-buffer-at-bottom))))
|
||||
|
||||
(defun bar ()
|
||||
(let ((display-buffer-default-alist
|
||||
'(("\\*bar\\*" (display-buffer-pop-up-frame)))))
|
||||
(foo (get-buffer-create "*bar*"))))
|
||||
|
||||
(defun baz ()
|
||||
(let ((display-buffer-default-alist
|
||||
'(("\\*baz\\*" (display-buffer-same-window)))))
|
||||
(foo (get-buffer-create "*baz*"))))
|
||||
@end group
|
||||
@end example
|
||||
|
||||
Here, @code{foo} calls @code{display-buffer} with a specific
|
||||
@var{action}. Let-binding @code{display-buffer-default-alist} allows
|
||||
the functions @code{bar} and @code{baz} to specify their own action
|
||||
functions.
|
||||
|
||||
By setting the @var{action} argument and/or the
|
||||
@code{display-buffer-default-alist} variable, an application effectively
|
||||
By setting the @var{action} argument, an application effectively
|
||||
overrules any customization of @code{display-buffer-base-action}. Our
|
||||
user can now either accept the choice of the application, or redouble by
|
||||
customizing the option @code{display-buffer-alist} as follows:
|
||||
user can now either accept the choice of the application, or redouble
|
||||
by customizing the option @code{display-buffer-alist} as follows:
|
||||
|
||||
@example
|
||||
@group
|
||||
|
|
|
|||
|
|
@ -8562,7 +8562,7 @@
|
|||
* doclicense.texi: Remove node heading, so that it can be included by
|
||||
other files.
|
||||
|
||||
* dired-x.texi: Relicense under GFDL. Remove date from title page.
|
||||
* dired-x.texi: Relicence under GFDL. Remove date from title page.
|
||||
|
||||
* calc.texi (Algebraic Tutorial): Emphasize that / binds less strongly
|
||||
than *.
|
||||
|
|
|
|||
|
|
@ -63,22 +63,18 @@ INSTALL_DATA = @INSTALL_DATA@
|
|||
MAKEINFO = @MAKEINFO@
|
||||
MAKEINFO_OPTS = --force -I$(emacsdir)
|
||||
|
||||
ifeq ($(DOCLANG),)
|
||||
DOCLANG:=default
|
||||
else ifeq ($(wildcard $(srcdir)/../translations/$(DOCLANG)/misc/info_common.mk),)
|
||||
$(error No manual language $(DOCLANG) found)
|
||||
DOCLANG:=default
|
||||
endif
|
||||
|
||||
lang_suffix:=$(filter-out -default,-$(DOCLANG))
|
||||
lang_subdir:=$(filter-out ../translations/default/misc/,../translations/$(DOCLANG)/misc/)
|
||||
|
||||
## On MS Windows, efaq-w32; otherwise blank.
|
||||
DOCMISC_W32 = @DOCMISC_W32@
|
||||
DOCMISC_W32_TARGET = efaq-w32
|
||||
|
||||
## Info files to build and install on all platforms.
|
||||
include $(srcdir)/../translations/$(DOCLANG)/misc/info_common.mk
|
||||
INFO_COMMON = auth autotype bovine calc ccmode cl dbus dired-x \
|
||||
ebrowse ede ediff edt efaq eglot eieio emacs-gnutls \
|
||||
emacs-mime epa erc ert eshell eudc eww flymake forms gnus \
|
||||
htmlfontify idlwave ido info.info mairix-el message mh-e \
|
||||
modus-themes newsticker nxml-mode octave-mode org pcl-cvs pgg \
|
||||
rcirc reftex remember sasl sc semantic ses sieve smtpmail \
|
||||
speedbar srecode todo-mode tramp transient url use-package \
|
||||
vhdl-mode viper vtable widget wisent woman
|
||||
|
||||
## Info files to install on current platform.
|
||||
INFO_INSTALL = $(INFO_COMMON) $(DOCMISC_W32)
|
||||
|
|
@ -86,31 +82,29 @@ INFO_INSTALL = $(INFO_COMMON) $(DOCMISC_W32)
|
|||
## Info files to build on current platform.
|
||||
## This is all of them, even though they might not all get installed,
|
||||
## because the info files are pre-built in release tarfiles.
|
||||
INFO_TARGETS = $(INFO_COMMON) $(DOCMISC_W32_TARGET)
|
||||
INFO_TARGETS = $(INFO_COMMON) efaq-w32
|
||||
|
||||
## Some manuals have their source in .org format.
|
||||
## This is discouraged because the .texi files it generates
|
||||
## are not as well formatted as handwritten ones.
|
||||
ORG_SETUP = $(wildcard ${srcdir}/$(lang_subdir)*-setup.org)
|
||||
ORG_SRC = $(filter-out ${ORG_SETUP},$(wildcard ${srcdir}/$(lang_subdir)*.org))
|
||||
ORG_SETUP = $(wildcard ${srcdir}/*-setup.org)
|
||||
ORG_SRC = $(filter-out ${ORG_SETUP},$(wildcard ${srcdir}/*.org))
|
||||
TEXI_FROM_ORG = ${ORG_SRC:.org=.texi}
|
||||
|
||||
# There are some naming differences between the info targets and the other
|
||||
# targets, so let's resolve them here.
|
||||
TARGETS = $(INFO_INSTALL:ccmode=cc-mode)
|
||||
TARGETS_1 = $(INFO_INSTALL:ccmode=cc-mode)
|
||||
TARGETS = $(TARGETS_1:info.info=info)
|
||||
|
||||
# Sources are also suffixed, this is useless as they are in different
|
||||
# directories, but some people argued that there should not be
|
||||
# different files with same name in the repo.
|
||||
texi_sources = $(addsuffix $(lang_suffix).texi,${TARGETS})
|
||||
texi_sources = $(addsuffix .texi,${TARGETS})
|
||||
texi_notgen = $(filter-out $(notdir ${TEXI_FROM_ORG}),${texi_sources})
|
||||
texi_and_org = $(notdir ${ORG_SRC}) ${texi_notgen}
|
||||
SOURCES = $(sort ${texi_and_org})
|
||||
|
||||
DVI_TARGETS = $(TARGETS:=$(lang_suffix).dvi)
|
||||
HTML_TARGETS = $(TARGETS:=$(lang_suffix).html)
|
||||
PDF_TARGETS = $(TARGETS:=$(lang_suffix).pdf)
|
||||
PS_TARGETS = $(TARGETS:=$(lang_suffix).ps)
|
||||
DVI_TARGETS = $(TARGETS:=.dvi)
|
||||
HTML_TARGETS = $(TARGETS:=.html)
|
||||
PDF_TARGETS = $(TARGETS:=.pdf)
|
||||
PS_TARGETS = $(TARGETS:=.ps)
|
||||
|
||||
TEXI2DVI = texi2dvi
|
||||
TEXI2PDF = texi2pdf
|
||||
|
|
@ -124,21 +118,21 @@ ENVADD = $(AM_V_GEN)TEXINPUTS="$(srcdir):$(emacsdir):$(TEXINPUTS)" \
|
|||
gfdl = ${srcdir}/doclicense.texi
|
||||
style = ${emacsdir}/docstyle.texi
|
||||
|
||||
.PHONY: info dvi html pdf ps echo-info echo-sources $(patsubst info, info-doc, $(INFO_TARGETS))
|
||||
.PHONY: info dvi html pdf ps echo-info echo-sources $(INFO_TARGETS)
|
||||
## Prevent implicit rule triggering for foo.info.
|
||||
.SUFFIXES:
|
||||
|
||||
## Disable implicit rules.
|
||||
%.texi: ;
|
||||
|
||||
# Default. patsubst as "info" is already taken.
|
||||
info: $(patsubst info, info-doc,$(INFO_TARGETS))
|
||||
# Default.
|
||||
info: $(INFO_TARGETS)
|
||||
|
||||
## Used by top-level Makefile.
|
||||
## Base file names of output info files.
|
||||
INFO_BASES = $(patsubst %.info,%,$(notdir $(INFO_INSTALL)))
|
||||
echo-info:
|
||||
@: $(info $(addsuffix $(lang_suffix).info,$(INFO_BASES)))
|
||||
@: $(info $(addsuffix .info,$(INFO_BASES)))
|
||||
|
||||
echo-sources:
|
||||
@: $(info $(SOURCES))
|
||||
|
|
@ -158,30 +152,32 @@ ${buildinfodir}:
|
|||
|
||||
EXTRA_OPTS =
|
||||
|
||||
${buildinfodir}/%$(lang_suffix).info: ${srcdir}/$(lang_subdir)%$(lang_suffix).texi ${gfdl} ${style} | ${buildinfodir}
|
||||
${buildinfodir}/%.info: ${srcdir}/%.texi ${gfdl} ${style} | ${buildinfodir}
|
||||
$(AM_V_GEN)$(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) $(EXTRA_OPTS) \
|
||||
-o $@ $<
|
||||
|
||||
## The short aliases, eg efaq = $(buildinfodir)/efaq.info.
|
||||
define info_template
|
||||
## patsubst as "info" is already taken.
|
||||
$$(patsubst info, info-doc, $(1)): $$(buildinfodir)/$(1)$$(lang_suffix).info
|
||||
$(1): $$(buildinfodir)/$(1).info
|
||||
endef
|
||||
|
||||
$(foreach ifile,$(INFO_TARGETS),$(eval $(call info_template,$(ifile))))
|
||||
## "info" is already taken.
|
||||
info.info: $(buildinfodir)/info.info
|
||||
|
||||
$(foreach ifile,$(filter-out info.info,$(INFO_TARGETS)),$(eval $(call info_template,$(ifile))))
|
||||
|
||||
|
||||
%$(lang_suffix).dvi: ${srcdir}/$(lang_subdir)%$(lang_suffix).texi ${gfdl} ${style}
|
||||
%.dvi: ${srcdir}/%.texi ${gfdl} ${style}
|
||||
$(ENVADD) $(TEXI2DVI) $<
|
||||
|
||||
%$(lang_suffix).pdf: ${srcdir}/$(lang_subdir)%$(lang_suffix).texi ${gfdl} ${style}
|
||||
%.pdf: ${srcdir}/%.texi ${gfdl} ${style}
|
||||
$(ENVADD) $(TEXI2PDF) $<
|
||||
|
||||
%$(lang_suffix).html: ${srcdir}/$(lang_subdir)%$(lang_suffix).texi ${gfdl} ${style}
|
||||
%.html: ${srcdir}/%.texi ${gfdl} ${style}
|
||||
$(AM_V_GEN)$(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) $(EXTRA_OPTS) \
|
||||
-o $@ $<
|
||||
|
||||
%$(lang_suffix).ps: %$(lang_suffix).dvi
|
||||
%.ps: %.dvi
|
||||
$(DVIPS) -o $@ $<
|
||||
|
||||
|
||||
|
|
@ -208,16 +204,16 @@ ${buildinfodir}/ccmode.info: \
|
|||
|
||||
## efaq, efaq_w32 do not depend on gfdl.
|
||||
## Maybe we can use .SECONDEXPANSION for this.
|
||||
${buildinfodir}/efaq%$(lang_suffix).info: ${srcdir}/efaq%$(lang_suffix).texi ${style} | ${buildinfodir}
|
||||
${buildinfodir}/efaq%.info: ${srcdir}/efaq%.texi ${style} | ${buildinfodir}
|
||||
$(AM_V_GEN)$(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ $<
|
||||
|
||||
efaq%$(lang_suffix).dvi: ${srcdir}/efaq%$(lang_suffix).texi
|
||||
efaq%.dvi: ${srcdir}/efaq%.texi
|
||||
$(ENVADD) $(TEXI2DVI) $<
|
||||
|
||||
efaq%$(lang_suffix).pdf: ${srcdir}/efaq%$(lang_suffix).texi
|
||||
efaq%.pdf: ${srcdir}/efaq%.texi
|
||||
$(ENVADD) $(TEXI2PDF) $<
|
||||
|
||||
efaq%$(lang_suffix).html: ${srcdir}/efaq%$(lang_suffix).texi
|
||||
efaq%.html: ${srcdir}/efaq%.texi
|
||||
$(AM_V_GEN)$(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ $<
|
||||
|
||||
${buildinfodir}/emacs-mime.info emacs-mime.html: EXTRA_OPTS = --enable-encoding
|
||||
|
|
@ -252,10 +248,7 @@ emacs = "${EMACS}" -batch --no-site-file --no-site-lisp --eval '(setq load-prefe
|
|||
# things like org-setup's "version" macro work. Sigh.
|
||||
define org_template
|
||||
$(1:.org=.texi): $(1) ${top_srcdir}/lisp/org/ox-texinfo.el
|
||||
$${AM_V_GEN}cd "$${srcdir}" && $${emacs} \
|
||||
--eval '(add-to-list (quote load-path) "$(abspath ${top_srcdir}/lisp/org)")' \
|
||||
--eval '(setq org--inhibit-version-check t)' \
|
||||
-l ox-texinfo \
|
||||
$${AM_V_GEN}cd "$${srcdir}" && $${emacs} -l ox-texinfo \
|
||||
--eval '(setq gc-cons-threshold 50000000)' \
|
||||
--eval '(setq org-confirm-babel-evaluate nil)' \
|
||||
--eval '(setq org-id-track-globally nil)' \
|
||||
|
|
|
|||
|
|
@ -17367,14 +17367,12 @@ and @kbd{t U}, the normal argument is then taken from the second-to-top
|
|||
stack position.) This allows you to give a non-integer time zone
|
||||
adjustment. The time-zone argument can also be an HMS form, or
|
||||
it can be a variable which is a time zone name in upper- or lower-case.
|
||||
For example @samp{tzone(JST) = tzone(-9)} and @samp{tzone(gmt) = tzone(0)}
|
||||
(for Japan standard and Greenwich mean time, respectively).
|
||||
For example @samp{tzone(PST) = tzone(8)} and @samp{tzone(pdt) = tzone(7)}
|
||||
(for Pacific standard and daylight saving times, respectively).
|
||||
|
||||
North American and European time zone names are defined as follows.
|
||||
These names are obsolete and new code should not rely on them:
|
||||
These names are obsolescent and new code should not rely on them:
|
||||
the @samp{YST}-related names have disagreed with time in Yukon since 1973,
|
||||
the @samp{PST}- and @samp{MST-}related names have disagreed with
|
||||
time in western Canada since 2026,
|
||||
and other names could well become confusing or wrong in the future
|
||||
as countries change their time zone rules.
|
||||
For each time zone there is one name for standard time,
|
||||
|
|
@ -17394,6 +17392,21 @@ YGT PGT MGT CGT EGT AGT NGT BGT WEGT MEGT MEGZ
|
|||
@end group
|
||||
@end smallexample
|
||||
|
||||
@vindex math-tzone-names
|
||||
To define time zone names that do not appear in the above table,
|
||||
you must modify the Lisp variable @code{math-tzone-names}. This
|
||||
is a list of lists describing the different time zone names; its
|
||||
structure is best explained by an example. The three entries for
|
||||
circa-2022 US Pacific Time look like this:
|
||||
|
||||
@smallexample
|
||||
@group
|
||||
( ( "PST" 8 0 ) ; Name as an upper-case string, then standard
|
||||
( "PDT" 8 -1 ) ; adjustment, then daylight saving adjustment.
|
||||
( "PGT" 8 "PST" "PDT" ) ) ; Generalized time zone.
|
||||
@end group
|
||||
@end smallexample
|
||||
|
||||
@cindex @code{TimeZone} variable
|
||||
@vindex TimeZone
|
||||
With no arguments, @code{calc-time-zone} or @samp{tzone()} will by
|
||||
|
|
|
|||
|
|
@ -1340,20 +1340,9 @@ keyword @code{:session}.
|
|||
D-Bus object path, @var{service} is registered at. @var{interface} is
|
||||
an interface offered by @var{service}. It must provide @var{method}.
|
||||
|
||||
@var{handler} is a Lisp function, which is called when the corresponding
|
||||
return message has arrived. It uses the returned values from the
|
||||
@var{method} call as arguments. These are the same arguments which are
|
||||
returned when @code{dbus-call-method} is invoked instead,
|
||||
@pxref{Synchronous Methods}. If @var{handler} is @code{nil}, no return
|
||||
message will be expected.
|
||||
|
||||
@var{handler} can also be the cons cell @code{(@var{handler}
|
||||
. @var{error-handler})}. In this case, @var{error-handler} will be
|
||||
called in case an error is returned from D-Bus. It uses the returned
|
||||
D-Bus error as argument.
|
||||
|
||||
Neither the return value of @var{handler} nor the return value of
|
||||
@var{error-handler} is used.
|
||||
@var{handler} is a Lisp function, which is called when the
|
||||
corresponding return message arrives. If @var{handler} is @code{nil},
|
||||
no return message will be expected.
|
||||
|
||||
If the parameter @code{:timeout} is given, the following integer
|
||||
@var{timeout} specifies the maximum number of milliseconds before a
|
||||
|
|
@ -1377,40 +1366,19 @@ arguments. They are converted into D-Bus types as described in
|
|||
If @var{handler} is a Lisp function, the function returns a key into
|
||||
the hash table @code{dbus-registered-objects-table}. The
|
||||
corresponding entry in the hash table is removed, when the return
|
||||
message arrives, and @var{handler} is called. Examples:
|
||||
|
||||
The return value of @samp{org.freedesktop.portal.Settings.ReadOne} is a variant.
|
||||
message arrives, and @var{handler} is called. Example:
|
||||
|
||||
@lisp
|
||||
(dbus-call-method-asynchronously
|
||||
:session "org.freedesktop.portal.Desktop"
|
||||
"/org/freedesktop/portal/desktop"
|
||||
"org.freedesktop.portal.Settings" "ReadOne"
|
||||
'((lambda (msg) (message "Method handler %s" msg)) .
|
||||
(lambda (err) (message "Error handler %s" err)))
|
||||
"org.freedesktop.appearance" "color-scheme")
|
||||
:system "org.freedesktop.Hal"
|
||||
"/org/freedesktop/Hal/devices/computer"
|
||||
"org.freedesktop.Hal.Device" "GetPropertyString"
|
||||
(lambda (msg) (message "%s" msg))
|
||||
"system.kernel.machine")
|
||||
|
||||
@print{} Method handler (0)
|
||||
@print{} i686
|
||||
|
||||
@result{} (:serial :session 4)
|
||||
@end lisp
|
||||
|
||||
There does not exist a method @samp{org.freedesktop.portal.Settings.ReadTwo}.
|
||||
|
||||
@lisp
|
||||
(dbus-call-method-asynchronously
|
||||
:session "org.freedesktop.portal.Desktop"
|
||||
"/org/freedesktop/portal/desktop"
|
||||
"org.freedesktop.portal.Settings" "ReadTwo"
|
||||
'((lambda (msg) (message "Method handler %s" msg)) .
|
||||
(lambda (err) (message "Error handler %s" err)))
|
||||
"org.freedesktop.appearance" "color-scheme")
|
||||
|
||||
@print{} Error handler
|
||||
(dbus-error "org.freedesktop.DBus.Error.UnknownMethod
|
||||
No such method "ReadTwo")
|
||||
|
||||
@result{} (:serial :session 5)
|
||||
@result{} (:serial :system 2)
|
||||
@end lisp
|
||||
@end defun
|
||||
|
||||
|
|
|
|||
|
|
@ -513,7 +513,8 @@ Finally, it's worth noting that, by default, Eglot generally turns on
|
|||
all features that it @emph{can} turn on. It's possible to opt out of
|
||||
features via the @code{eglot-ignored-server-capabilities} user option
|
||||
(@pxref{Customizing Eglot}) and the @code{eglot-managed-mode-hook} hook
|
||||
that runs after Eglot starts managing a buffer (@pxref{Other Variables}).
|
||||
that runs after Eglot starts managing a buffer (@pxref{Eglot and
|
||||
Buffers}).
|
||||
|
||||
@node Eglot and Buffers
|
||||
@section Buffers, Projects, and Eglot
|
||||
|
|
@ -624,14 +625,34 @@ starting an Eglot session for the buffer. When Eglot stops managing the
|
|||
buffer, the minor mode is turned off, and all the settings that Eglot
|
||||
changed are restored to their original values.
|
||||
|
||||
@vindex eglot-managed-mode-hook
|
||||
@vindex eglot-managed-p
|
||||
@item
|
||||
The minor mode's main job is to ``hook up'' Eglot to other Emacs
|
||||
functionality, i.e. arrange for these features to receive information
|
||||
from the language server, by changing special variables controlling
|
||||
these features. @xref{Eglot Features} and @xref{Other Variables} for
|
||||
how to exercise finer control over this minor mode's activation.
|
||||
these features. @xref{Eglot Features}.
|
||||
|
||||
@item
|
||||
To customize this, Eglot's special minor mode provides a hook variable
|
||||
@code{eglot-managed-mode-hook} specifically to alter Eglot's interaction
|
||||
with these variables in each buffer. This hook is run both when the
|
||||
minor mode is turned on and when it's turned off; use the function
|
||||
@code{eglot-managed-p} to tell if current buffer is still being managed
|
||||
or not.
|
||||
@end itemize
|
||||
|
||||
For example, to turn off @dfn{inlay hints} and @dfn{semantic tokens} by
|
||||
default but still retain the ability to turn them on again
|
||||
interactively use this:
|
||||
|
||||
@lisp
|
||||
(add-hook 'eglot-managed-mode-hook
|
||||
(lambda ()
|
||||
(eglot-inlay-hints-mode -1)
|
||||
(eglot-semantic-tokens-mode -1)))
|
||||
@end lisp
|
||||
|
||||
@node Eglot Commands
|
||||
@section Eglot Commands
|
||||
@cindex commands, Eglot
|
||||
|
|
@ -1095,25 +1116,9 @@ A hook run after the LSP connection to the server is successfully
|
|||
established. Each function receives a @code{eglot-lsp-server} instance
|
||||
as argument. @xref{Starting Eglot}.
|
||||
|
||||
@vindex eglot-managed-mode-hook
|
||||
@vindex eglot-managed-p
|
||||
@item eglot-managed-mode-hook
|
||||
A hook run after Eglot started or stopped managing a buffer.
|
||||
|
||||
You may use it to alter Eglot's setting of other Eglot and Emacs
|
||||
variables in each buffer. This hook is run both when the minor mode is
|
||||
turned on and when it's turned off; use the function
|
||||
@code{eglot-managed-p} to tell if current buffer is still being managed
|
||||
or not. For example, to turn off @dfn{inlay hints} and @dfn{semantic
|
||||
tokens} by default but still retain the ability to turn them on again
|
||||
interactively use this:
|
||||
|
||||
@lisp
|
||||
(add-hook 'eglot-managed-mode-hook
|
||||
(lambda ()
|
||||
(eglot-inlay-hints-mode -1)
|
||||
(eglot-semantic-tokens-mode -1)))
|
||||
@end lisp
|
||||
@xref{Eglot and Buffers}, for details of its usage.
|
||||
|
||||
@vindex eglot-stay-out-of
|
||||
@item eglot-stay-out-of
|
||||
|
|
@ -1871,17 +1876,9 @@ slowly, try to customize the variable @code{eglot-events-buffer-config}
|
|||
0. This will disable recording any events and may speed things up.
|
||||
|
||||
In other situations, the cause of poor performance lies in the language
|
||||
server itself. Some servers may have poor implementations of some LSP
|
||||
features that Eglot turns on by default. Some servers use aggressive
|
||||
caching and other techniques to improve their performance. Often, this
|
||||
can be tweaked by changing the server configuration (@pxref{Advanced
|
||||
server configuration}).
|
||||
|
||||
Depending on the specific nature of the performance bottleneck,
|
||||
sometimes a workaround is to turn off these features on the Eglot side
|
||||
using the @code{eglot-ignored-server-capabilities} and
|
||||
@code{eglot-managed-mode-hook} variables (@pxref{Other Variables} and
|
||||
@pxref{More Customization}).
|
||||
server itself. Some servers use aggressive caching and other techniques
|
||||
to improve their performance. Often, this can be tweaked by changing
|
||||
the server configuration (@pxref{Advanced server configuration}).
|
||||
|
||||
Another aspect that may cause performance degradation is the amount of
|
||||
JSONRPC information exchanged with Emacs. Using an LSP program like
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -336,9 +336,7 @@ failing test.
|
|||
|
||||
Each entry consists of the name of the test followed by the code that
|
||||
performs the transform being tested. The buffer also contains buttons
|
||||
that allow jumping to the test definitions. If a test fails, the diff
|
||||
button displays a Diff Mode buffer comparing the actual and expected
|
||||
output.
|
||||
that allow jumping to the test definitions.
|
||||
|
||||
@xref{erts files} for more information.
|
||||
|
||||
|
|
|
|||
|
|
@ -650,12 +650,6 @@ passing any @var{arguments} to the script (@pxref{Scripts}). This is
|
|||
not to be confused with the command @command{source}, which sources a
|
||||
file in a subshell environment.
|
||||
|
||||
@cmindex accumulate
|
||||
@item accumulate @var{function}
|
||||
When used as a pipe target (@pxref{Lisp Pipelines}), this accumulates
|
||||
all the output from the left side of the pipe and passes it to
|
||||
@var{function} as a single argument.
|
||||
|
||||
@cmindex addpath
|
||||
@item addpath
|
||||
@itemx addpath [-b] @var{directory}@dots{}
|
||||
|
|
@ -676,12 +670,6 @@ adding it to the aliases file (@pxref{Aliases}). If @var{command} is
|
|||
omitted, delete the alias named @var{name}. With no arguments at all,
|
||||
list all the currently-defined aliases.
|
||||
|
||||
@cmindex apply-lines
|
||||
@item apply-lines @var{function}
|
||||
When used as a pipe target (@pxref{Lisp Pipelines}), this passes each
|
||||
line of output from the left side of the pipe as a list of arguments to
|
||||
@var{function}.
|
||||
|
||||
@cmindex basename
|
||||
@item basename @var{filename}
|
||||
Return @var{filename} without its directory.
|
||||
|
|
@ -1187,12 +1175,6 @@ Manual}. Otherwise call the external @command{make} command.
|
|||
Display Man pages using the Emacs @code{man} command.
|
||||
@xref{Man Page, , , emacs, The GNU Emacs Manual}.
|
||||
|
||||
@cmindex map-lines
|
||||
@item map-lines @var{function}
|
||||
When used as a pipe target (@pxref{Lisp Pipelines}), this calls
|
||||
@var{function} once for each line of output from the left side of the
|
||||
pipe with that line as a single argument.
|
||||
|
||||
@cmindex mkdir
|
||||
@item mkdir [-p] @var{directory}@dots{}
|
||||
Make new directories. With @code{-p} or @code{--parents},
|
||||
|
|
@ -2521,71 +2503,6 @@ olleh
|
|||
To send both the standard output and standard error of a command to
|
||||
another command's input, you can use the @code{|&} operator.
|
||||
|
||||
@menu
|
||||
* Lisp Pipelines::
|
||||
* Running Shell Pipelines Natively::
|
||||
@end menu
|
||||
|
||||
@node Lisp Pipelines
|
||||
@subsection Lisp Pipelines
|
||||
|
||||
In addition to piping data to external programs on your system, Eshell
|
||||
supports piping to ordinary Lisp functions. This lets you mix and match
|
||||
external commands and Lisp functions in your pipelines to manipulate
|
||||
output however works best. Normally in Eshell, entering the bare name
|
||||
of a function in a command calls that function, so e.g.@: @samp{ding}
|
||||
will beep or flash the screen. To avoid this, pass the quoted name of
|
||||
the function:
|
||||
|
||||
@example
|
||||
~ $ echo hello | #'upcase
|
||||
HELLO
|
||||
@end example
|
||||
|
||||
You can also use forms that return a function, such as @code{lambda}:
|
||||
|
||||
@example
|
||||
~ $ echo hello | (lambda (i) (format ">> %s" i))
|
||||
>> hello
|
||||
@end example
|
||||
|
||||
For simple cases, the above is likely all you need. When passed
|
||||
directly as a pipe target like this, Eshell collects all the output from
|
||||
the left side of the pipe and passes it as a single argument to the
|
||||
right side. However, Lisp functions have many other ways they could be
|
||||
called, so Eshell supports these with some higher-order commands:
|
||||
|
||||
@table @code
|
||||
|
||||
@cmindex accumulate
|
||||
@item accumulate @var{function}
|
||||
This is equivalent to passing @var{function} directly as a pipe target,
|
||||
accumulating all the output from the left side of the pipe and passing
|
||||
it as a single argument to @var{function}.
|
||||
|
||||
@cmindex map-lines
|
||||
@item map-lines @var{function}
|
||||
For each line of output from the left side of the pipe, call
|
||||
@var{function} with that line as a single argument. For example, you
|
||||
could "quote" some output for pasting into an email like this:
|
||||
|
||||
@example
|
||||
cat some-file.txt | map-lines (lambda (i) (format "> %s" i))
|
||||
@end example
|
||||
|
||||
@cmindex apply-lines
|
||||
@item apply-lines @var{function}
|
||||
Pass each line of output from the left side of the pipe as a list of
|
||||
arguments to @var{function}. For example, to sum up a list of numbers
|
||||
written one per line:
|
||||
|
||||
@example
|
||||
cat numbers.txt | apply-lines #'+
|
||||
@end example
|
||||
|
||||
@end table
|
||||
|
||||
@node Running Shell Pipelines Natively
|
||||
@subsection Running Shell Pipelines Natively
|
||||
When constructing shell pipelines that will move a lot of data, it is
|
||||
a good idea to bypass Eshell's own pipelining support and use the
|
||||
|
|
@ -3099,11 +3016,15 @@ scrolls back.
|
|||
|
||||
@item Use a timer instead of @code{sleep-for} when killing child processes
|
||||
|
||||
@item Piping to a Lisp function is not supported
|
||||
|
||||
Make it so that the Lisp command on the right of the pipe is repeatedly
|
||||
called with the input strings as arguments. This will require changing
|
||||
@code{eshell-do-pipelines} to handle non-process targets.
|
||||
|
||||
@item Input redirection is not supported
|
||||
|
||||
With support for piping to Lisp functions, this should mostly be a
|
||||
matter of parsing the redirection operator and generating a Lisp form
|
||||
roughly equivalent to what @code{cat file.txt | some-command} produces.
|
||||
See the above entry.
|
||||
|
||||
@item Problem running @command{less} without arguments on Windows
|
||||
|
||||
|
|
@ -3301,6 +3222,13 @@ from @samp{!:1*}.
|
|||
|
||||
@item Specifying a frame as a redirection target should imply the currently active window's buffer
|
||||
|
||||
@item Implement @samp{>@var{func-or-func-list}}
|
||||
|
||||
This would allow for an ``output translators'', that take a function to
|
||||
modify output with, and a target. Devise a syntax that works well with
|
||||
pipes, and can accommodate multiple functions (i.e., @samp{>'(upcase
|
||||
regexp-quote)} or @samp{>'upcase}).
|
||||
|
||||
@item Allow Eshell to read/write to/from standard input and output
|
||||
|
||||
This would be optional, rather than always using the Eshell buffer.
|
||||
|
|
|
|||
|
|
@ -146,9 +146,10 @@ is. Alternatively, place point on the highlighted regions and use the
|
|||
commands @code{eldoc} or @code{display-local-help}.
|
||||
|
||||
Another easy way to get instant access to the diagnostic text is to
|
||||
set @code{flymake-inline-diagnostics} to a non-@code{nil} value. This
|
||||
makes the diagnostic messages appear directly in the buffer, in the
|
||||
vicinity of the affected line (@pxref{Customizable variables})
|
||||
set @code{flymake-show-diagnostics-at-end-of-line} to a non-@code{nil}
|
||||
value. This makes the diagnostic messages appear at the end of the
|
||||
line where the regular annotation is located (@pxref{Customizable
|
||||
variables})
|
||||
|
||||
@cindex next and previous diagnostic
|
||||
If the diagnostics are outside the visible region of the buffer,
|
||||
|
|
@ -346,39 +347,26 @@ Only relevant if @code{flymake-indicator-type} is set to @code{margins}.
|
|||
If non-@code{nil}, moving to errors with @code{flymake-goto-next-error} and
|
||||
@code{flymake-goto-prev-error} wraps around buffer boundaries.
|
||||
|
||||
@item flymake-inline-diagnostics
|
||||
If non-@code{nil}, annotate lines with diagnostics directly in the
|
||||
buffer. Depending on your preference, this can either be distracting
|
||||
and easily confused with actual code, or a significant early aid that
|
||||
relieves you from moving around or reaching for the mouse to consult an
|
||||
error message. A number of styles can be used: the value @code{eol}
|
||||
shows all diagnostics at the end of the line, @code{short} shows only
|
||||
the most severe one, and @code{fancy} lays out the diagnostics below the
|
||||
affected line using Unicode graphics to point to the diagnostic locus.
|
||||
|
||||
The value can also be an alist, which allows you to have the position of
|
||||
point dictate the style used for nearby annotation of nearby
|
||||
diagnostics. The alist keys @code{current} and @code{current-line}
|
||||
designate the style affect the appearance of nearby diagnostics, while a
|
||||
value keyed by @code{t} is style used for every other diagnostic. For
|
||||
example, to keep a discreet @code{short} annotation on most lines while
|
||||
expanding to @code{fancy} only for the diagnostic point in currently on:
|
||||
|
||||
@lisp
|
||||
(setopt flymake-inline-diagnostics '((current . fancy) (t . short)))
|
||||
@end lisp
|
||||
@item flymake-show-diagnostics-at-end-of-line
|
||||
If non-@code{nil}, show summarized descriptions of diagnostics at the
|
||||
end of the line. Depending on your preference, this can either be
|
||||
distracting and easily confused with actual code, or a significant early
|
||||
aid that relieves you from moving around or reaching for the mouse to
|
||||
consult an error message. This value may also be set to @code{fancy},
|
||||
which will attempt to layout diagnostics below the affected line using
|
||||
unicode graphics to point to diagnostic locus.
|
||||
|
||||
@item flymake-diagnostic-format-alist
|
||||
Control which parts of a diagnostic to show in various situations.
|
||||
|
||||
@item flymake-error-inline
|
||||
A custom face for inline diagnostic error messages.
|
||||
@item flymake-error-eol
|
||||
A custom face for summarizing diagnostic error messages.
|
||||
|
||||
@item flymake-warning-inline
|
||||
A custom face for inline diagnostic warning messages.
|
||||
@item flymake-warning-eol
|
||||
A custom face for summarizing diagnostic warning messages.
|
||||
|
||||
@item flymake-note-inline
|
||||
A custom face for inline diagnostic notes.
|
||||
@item flymake-note-eol
|
||||
A custom face for summarizing diagnostic notes.
|
||||
@end vtable
|
||||
|
||||
@node Flymake API, The legacy Proc backend, Using Flymake, Top
|
||||
|
|
|
|||
|
|
@ -18335,12 +18335,12 @@ As a special case, a star in either @code{Dom} or @code{Dow} doesn't
|
|||
mean ``all possible values'', but ``use only the other field''. Note
|
||||
that if both are star'ed, the use of either one gives the same result.
|
||||
@item
|
||||
The @code{Time-Zone} header is special in that it can have only one
|
||||
The @code{Time-Zone} header is special in that it can only have one
|
||||
value (@code{GMT}, for instance). A star doesn't mean ``all possible
|
||||
values'' (because it makes no sense), but ``the current local time
|
||||
zone''. Most of the time, you'll be using a star here. However, for a
|
||||
Universal Time entry, you can use @code{GMT}, @code{UT}, @code{UTC} or
|
||||
@code{Z}.
|
||||
list of available time zone values, see the variable
|
||||
@code{nndiary-headers}.
|
||||
@end itemize
|
||||
|
||||
As a concrete example, here are the diary headers to add to your message
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -14990,7 +14990,7 @@ set it to =toc=:
|
|||
#+cindex: LaTeX ToC export a la ~org~
|
||||
#+cindex: @samp{org-latex-toc-include-unnumbered}
|
||||
If you want the LaTeX exporter to behave like other exporters,
|
||||
customize the variable ~org-latex-toc-include-unnumbered~ and
|
||||
customise the variable ~org-latex-toc-include-unnumbered~ and
|
||||
set it to ~t~:
|
||||
|
||||
#+begin_example
|
||||
|
|
|
|||
|
|
@ -9,13 +9,6 @@
|
|||
@syncodeindex vr cp
|
||||
@syncodeindex ky cp
|
||||
@c %**end of header
|
||||
@c compile info with
|
||||
@c make -C doc/misc ../../info/ses.info
|
||||
@c or just
|
||||
@c make -C doc/misc ses
|
||||
@c compile pdf with
|
||||
@c make -C doc/misc ses.pdf
|
||||
|
||||
|
||||
@copying
|
||||
This file documents @acronym{SES}: the Simple Emacs Spreadsheet.
|
||||
|
|
|
|||
|
|
@ -3,9 +3,9 @@
|
|||
% Load plain if necessary, i.e., if running under initex.
|
||||
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
|
||||
%
|
||||
\def\texinfoversion{2026-08-13.21}
|
||||
\def\texinfoversion{2025-12-23.13}
|
||||
%
|
||||
% Copyright 1985, 1986, 1988, 1990-2026 Free Software Foundation, Inc.
|
||||
% Copyright 1985, 1986, 1988, 1990-2025 Free Software Foundation, Inc.
|
||||
%
|
||||
% This texinfo.tex file is free software: you can redistribute it and/or
|
||||
% modify it under the terms of the GNU General Public License as
|
||||
|
|
@ -153,9 +153,6 @@
|
|||
\ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi
|
||||
\ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi
|
||||
|
||||
% scratch count register
|
||||
\newcount\countA
|
||||
|
||||
% Give the space character the catcode for a space.
|
||||
\def\spaceisspace{\catcode`\ =10\relax}
|
||||
|
||||
|
|
@ -351,6 +348,7 @@
|
|||
% before the \shipout runs.
|
||||
%
|
||||
\atdummies % don't expand commands in the output.
|
||||
\turnoffactive
|
||||
\shipout\vbox{%
|
||||
% Do this early so pdf references go to the beginning of the page.
|
||||
\ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi
|
||||
|
|
@ -772,20 +770,18 @@
|
|||
\def\includezzz#1{%
|
||||
\pushthisfilestack
|
||||
\def\thisfile{#1}%
|
||||
\includecheckspace\thisfile
|
||||
{%
|
||||
\makevalueexpandable % we want to expand any @value in FILE.
|
||||
\turnoffactive % and allow special characters in the expansion
|
||||
\indexnofonts % Allow `@@' and other weird things in file names.
|
||||
\wlog{texinfo.tex: doing @include of #1^^J}%
|
||||
\edef\temp{\noexpand\input \thisfile }%
|
||||
\edef\temp{\noexpand\input #1 }%
|
||||
%
|
||||
% This trickery is to read FILE outside of a group, in case it makes
|
||||
% definitions, etc.
|
||||
\expandafter
|
||||
}\temp
|
||||
\popthisfilestack
|
||||
\def\thisfile{#1}% for @thisfile command
|
||||
}
|
||||
\def\filenamecatcodes{%
|
||||
\catcode`\\=\other
|
||||
|
|
@ -801,21 +797,6 @@
|
|||
\catcode`\'=\other
|
||||
}
|
||||
|
||||
% \includecheckspace\FILENAME - if there is a space in the expansion of
|
||||
% \FILENAME, wrap the expansion in braces
|
||||
\def\includecheckspace#1{%
|
||||
\expandafter\includecheckspacezz\expandafter#1#1 \includecheckspacezz}
|
||||
|
||||
\def\includecheckspacezz#1#2 #3\includecheckspacezz{%
|
||||
\def\tmp{#3}%
|
||||
\ifx\tmp\empty
|
||||
% no space in the file name
|
||||
\else
|
||||
% there is a space in the file name
|
||||
\edef#1{{#1}}%
|
||||
\fi
|
||||
}
|
||||
|
||||
\def\pushthisfilestack{%
|
||||
\expandafter\pushthisfilestackX\popthisfilestack\StackTerm
|
||||
}
|
||||
|
|
@ -1000,6 +981,7 @@
|
|||
\newtoks\toksD
|
||||
\newbox\boxA
|
||||
\newbox\boxB
|
||||
\newcount\countA
|
||||
\newif\ifpdf
|
||||
\newif\ifpdfmakepagedest
|
||||
|
||||
|
|
@ -5339,13 +5321,14 @@
|
|||
\def\indexisfl{fl}
|
||||
|
||||
% Definition for writing index entry sort key.
|
||||
\def\indexwritesortas{%
|
||||
{
|
||||
\catcode`\-=13
|
||||
\gdef\indexwritesortas{%
|
||||
\begingroup
|
||||
\indexnonalnumreappear
|
||||
\indexwritesortasxxx
|
||||
}
|
||||
\def\indexwritesortasxxx#1{%
|
||||
\xdef\indexsortkey{#1}\endgroup
|
||||
\indexwritesortasxxx}
|
||||
\gdef\indexwritesortasxxx#1{%
|
||||
\xdef\indexsortkey{#1}\endgroup}
|
||||
}
|
||||
|
||||
\def\indexwriteseealso#1{
|
||||
|
|
@ -5376,51 +5359,6 @@
|
|||
\expandafter\doindexsegment#1\subentry\finish\subentry
|
||||
}
|
||||
|
||||
% \checksortas\segment
|
||||
% Call \indexwritesortas if a @sortas command appears in the segment
|
||||
\def\checksortas#1{%
|
||||
\let\sortas\relax
|
||||
\expandafter\checksortasx#1\relax\sortas{}\sortas
|
||||
}
|
||||
\def\checksortasx#1\sortas#2#3\sortas{%
|
||||
\def\tmp{#3}%
|
||||
\ifx\tmp\empty\else
|
||||
\indexwritesortas{#2}%
|
||||
\fi
|
||||
}
|
||||
|
||||
% \checkseealso\segment
|
||||
% Call \indexwriteseealso if a @seealso command appears in the segment
|
||||
\def\checkseealso#1{%
|
||||
\let\seealso\relax
|
||||
\expandafter\checkseealsox#1\relax\seealso{}\seealso
|
||||
}
|
||||
\def\checkseealsox#1\seealso#2#3\seealso{%
|
||||
\def\tmp{#3}%
|
||||
\ifx\tmp\empty\else
|
||||
\indexwriteseealso{#2}%
|
||||
\fi
|
||||
}
|
||||
|
||||
% \checkseeentry\segment
|
||||
% Call \indexwriteseeentry if a @seeentry command appears in the segment
|
||||
\def\checkseeentry#1{%
|
||||
\let\seeentry\relax
|
||||
\expandafter\checkseeentryx#1\relax\seeentry{}\seeentry
|
||||
}
|
||||
\def\checkseeentryx#1\seeentry#2#3\seeentry{%
|
||||
\def\tmp{#3}%
|
||||
\ifx\tmp\empty\else
|
||||
\indexwriteseeentry{#2}%
|
||||
\fi
|
||||
}
|
||||
|
||||
\def\extractindexcommands#1{%
|
||||
\checksortas#1%
|
||||
\checkseealso#1%
|
||||
\checkseeentry#1%
|
||||
}
|
||||
|
||||
% append the results from the next segment
|
||||
\def\doindexsegment#1\subentry{%
|
||||
\def\segment{#1}%
|
||||
|
|
@ -5440,6 +5378,9 @@
|
|||
% Get the string to sort by. Process the segment with all
|
||||
% font commands turned off.
|
||||
\bgroup
|
||||
\let\sortas\indexwritesortas
|
||||
\let\seealso\indexwriteseealso
|
||||
\let\seeentry\indexwriteseeentry
|
||||
\indexnofonts
|
||||
% The braces around the commands are recognized by texindex.
|
||||
\def\lbracechar{{\string\indexlbrace}}%
|
||||
|
|
@ -5453,10 +5394,11 @@
|
|||
%
|
||||
\let\indexsortkey\empty
|
||||
\global\let\pagenumbertext\empty
|
||||
\extractindexcommands\segment
|
||||
% Execute the segment and throw away the typeset output. This executes
|
||||
% any @sortas or @seealso commands in this segment.
|
||||
\setbox\dummybox = \hbox{\segment}%
|
||||
\ifx\indexsortkey\empty{%
|
||||
\indexnonalnumdisappear
|
||||
\inindexsortkeytrue
|
||||
\xdef\trimmed{\segment}%
|
||||
\xdef\trimmed{\expandafter\eatspaces\expandafter{\trimmed}}%
|
||||
\xdef\indexsortkey{\trimmed}%
|
||||
|
|
@ -5477,6 +5419,7 @@
|
|||
\fi
|
||||
}
|
||||
\def\isfinish{\finish}%
|
||||
\newbox\dummybox % used above
|
||||
|
||||
\let\subentry\relax
|
||||
|
||||
|
|
@ -5817,9 +5760,9 @@
|
|||
% The glue before the bonus allows a little bit of space at the
|
||||
% bottom of a column to reduce an increase in inter-line spacing.
|
||||
\nobreak
|
||||
\vskip 0pt plus 4\baselineskip
|
||||
\vskip 0pt plus 5\baselineskip
|
||||
\penalty -300
|
||||
\vskip 0pt plus -4\baselineskip
|
||||
\vskip 0pt plus -5\baselineskip
|
||||
%
|
||||
% Typeset the initial. Making this add up to a whole number of
|
||||
% baselineskips increases the chance of the dots lining up from column
|
||||
|
|
@ -7064,7 +7007,6 @@
|
|||
\newdimen\curchapmax
|
||||
\newdimen\cursecmax
|
||||
\newdimen\curssecmax
|
||||
\newbox\dummybox % used above
|
||||
|
||||
|
||||
% set #1 to the maximum section width for #2
|
||||
|
|
@ -9164,9 +9106,7 @@
|
|||
% type (Ynumbered, Yappendix, Ynothing). #2 is the section title.
|
||||
%
|
||||
\def\donoderef#1#2{%
|
||||
\ifx\lastnode\empty
|
||||
\setrefshadow{#1}{#2}%
|
||||
\else
|
||||
\ifx\lastnode\empty\else
|
||||
\setref{\lastnode}{#1}{#2}%
|
||||
\global\let\lastnode=\empty
|
||||
\setnodeseenonce
|
||||
|
|
@ -9211,9 +9151,6 @@
|
|||
%
|
||||
\def\setref#1#2#3{%
|
||||
\pdfmkdest{#1}%
|
||||
\dosetref{#1}{#2}{#3}{xrdef}%
|
||||
}
|
||||
\def\dosetref#1#2#3#4{%
|
||||
\iflinks
|
||||
{%
|
||||
\requireauxfile
|
||||
|
|
@ -9221,28 +9158,17 @@
|
|||
% match definition in \xrdef, \refx, \xrefX.
|
||||
\def\value##1{##1}%
|
||||
\edef\writexrdef##1##2{%
|
||||
\write\auxfile{@#4{#1-% #1 of \setref, expanded by the \edef
|
||||
\write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef
|
||||
##1}{##2}}% these are parameters of \writexrdef
|
||||
}%
|
||||
\toks0 = {#3}%
|
||||
\immediate \writexrdef{title}{\the\toks0 }%
|
||||
\immediate \writexrdef{snt}{\csname #2\endcsname}%
|
||||
\safewhatsit{\writexrdef{pg}{\folio}}%
|
||||
\immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc.
|
||||
\safewhatsit{\writexrdef{pg}{\folio}}% will be written later, at \shipout
|
||||
}%
|
||||
\fi
|
||||
}
|
||||
|
||||
% Similar to \setref, but used for targets created by sectioning commands.
|
||||
% Write information about this target using @xrshad instead of @xrdef.
|
||||
\def\setrefshadow#1#2{%
|
||||
% For PDF, output the target with \pdfdest. Note pdfTeX issues a warning
|
||||
% if we output two targets with the same name.
|
||||
\pdfmkdest{\pdfshadowprefix#2}%
|
||||
\dosetref{#2}{#1}{#2}{xrshad}%
|
||||
}
|
||||
|
||||
\def\pdfshadowprefix{XXSHADOW-}
|
||||
|
||||
% @xrefautosectiontitle on|off says whether @section(ing) names are used
|
||||
% automatically in xrefs, if the third arg is not explicitly specified.
|
||||
% This was provided as a "secret" @set xref-automatic-section-title
|
||||
|
|
@ -9288,17 +9214,7 @@
|
|||
\def\infofilename{\ignorespaces #4}%
|
||||
\setbox\infofilenamebox = \hbox{\infofilename\unskip}%
|
||||
%
|
||||
\ifdim \wd\printedmanualbox = 0pt
|
||||
\checkshadowactive{#1}\countA
|
||||
\expandafter\ifnum\countA = 1
|
||||
\startxreflink{\pdfshadowprefix#1}{}%
|
||||
\else
|
||||
\startxreflink{#1}{}%
|
||||
\fi
|
||||
\else
|
||||
\startxreflink{#1}{#4}%
|
||||
\fi
|
||||
%
|
||||
\startxreflink{#1}{#4}%
|
||||
\getrefx{#1-title}\Xthisreftitle
|
||||
%
|
||||
% Float references are printed completely differently: "Figure 1.2"
|
||||
|
|
@ -9564,62 +9480,31 @@
|
|||
\fi
|
||||
}
|
||||
|
||||
\def\xrdefctxt{%
|
||||
% Context for expanding the node or anchor name to remove control sequences.
|
||||
% \turnoffactive stops 8-bit characters being changed to commands
|
||||
% like @'e.
|
||||
\indexnofonts
|
||||
\turnoffactive
|
||||
\def\value##1{##1}%
|
||||
}
|
||||
|
||||
% Set #2 to xref string #1
|
||||
\def\getrefx#1#2{%
|
||||
\requireauxfile
|
||||
{%
|
||||
\xrdefctxt
|
||||
\indexnofonts
|
||||
\turnoffactive
|
||||
\def\value##1{##1}%
|
||||
\expandafter\global\expandafter\let\expandafter#2\csname XR#1\endcsname
|
||||
\ifx#2\relax
|
||||
% try a shadow definition
|
||||
\expandafter\global\expandafter\let\expandafter#2\csname SXR#1\endcsname
|
||||
\ifx#2\empty
|
||||
\let#2\relax
|
||||
\fi
|
||||
\fi
|
||||
}%
|
||||
}
|
||||
|
||||
% Check if shadow definitions are active for target name #1, setting the
|
||||
% count register sequence in #2 to 1 if so.
|
||||
\def\checkshadowactive#1#2{%
|
||||
\requireauxfile
|
||||
{%
|
||||
\xrdefctxt
|
||||
\expandafter\global\expandafter\let\expandafter\tmp\csname SXR#1-title\endcsname
|
||||
}%
|
||||
\ifx\tmp\relax
|
||||
#2=0 % no definitions made
|
||||
\else
|
||||
\ifx\tmp\empty
|
||||
#2=0 % shadow definitions were disabled
|
||||
\else
|
||||
\expandafter\let\expandafter\tmp\csname XR#1-title\endcsname
|
||||
\ifx\tmp\relax
|
||||
#2=1 % yes, shadow definitions are active
|
||||
\else
|
||||
#2=0 % no, a real definition was made.
|
||||
\fi
|
||||
\fi
|
||||
\fi
|
||||
}%
|
||||
|
||||
% This is the macro invoked by entries in the aux file. Define a control
|
||||
% sequence for a cross-reference target (we prepend XR to the control sequence
|
||||
% name to avoid collisions). The value is the page number. If this is a float
|
||||
% type, we have more work to do.
|
||||
%
|
||||
\def\xrdef#1#2{%
|
||||
{\xrdefctxt \xdef\safexrefname{#1}}%
|
||||
{% Expand the node or anchor name to remove control sequences.
|
||||
% \turnoffactive stops 8-bit characters being changed to commands
|
||||
% like @'e. \refx does the same to retrieve the value in the definition.
|
||||
\indexnofonts
|
||||
\turnoffactive
|
||||
\def\value##1{##1}%
|
||||
\xdef\safexrefname{#1}%
|
||||
}%
|
||||
%
|
||||
\bgroup
|
||||
\expandafter\gdef\csname XR\safexrefname\endcsname{#2}%
|
||||
|
|
@ -9651,24 +9536,6 @@
|
|||
\ignorespaces % ignore ends of line in aux file
|
||||
}
|
||||
|
||||
% Like \xrdef, but used for "shadow" definitions.
|
||||
\def\xrshad#1#2{%
|
||||
{\xrdefctxt \xdef\safexrefname{#1}}%
|
||||
\bgroup
|
||||
\expandafter\ifx\csname XR\safexrefname\endcsname\relax
|
||||
\expandafter\ifx\csname SXR\safexrefname\endcsname\relax
|
||||
% safe to make shadow definition.
|
||||
\expandafter\gdef\csname SXR\safexrefname\endcsname{#2}%
|
||||
\else
|
||||
% earlier shadow definition. disable.
|
||||
\expandafter\gdef\csname SXR\safexrefname\endcsname{}%
|
||||
\fi
|
||||
\else
|
||||
% blocked by node or anchor definition
|
||||
\fi
|
||||
\egroup
|
||||
}
|
||||
|
||||
% If working on a large document in chapters, it is convenient to
|
||||
% be able to disable indexing, cross-referencing, and contents, for test runs.
|
||||
% This is done with @novalidate at the beginning of the file.
|
||||
|
|
@ -10065,14 +9932,6 @@
|
|||
% We can't be used inside a paragraph.
|
||||
\par
|
||||
%
|
||||
% Allow a page break with a ragged page bottom. This could help to reduce
|
||||
% interparagraph spacing if a large float doesn't fit on the current page.
|
||||
%
|
||||
\penalty 0
|
||||
\vskip 0pt plus 5\baselineskip
|
||||
\penalty 1000
|
||||
\vskip 0pt plus -5\baselineskip
|
||||
%
|
||||
\vtop\bgroup
|
||||
\def\floattype{#1}%
|
||||
\def\floatlabel{#2}%
|
||||
|
|
@ -10372,15 +10231,6 @@
|
|||
\global\righthyphenmin = #3\relax
|
||||
}
|
||||
|
||||
% @documentlanguagevariant - do nothing
|
||||
\parseargdef\documentlanguagevariant{}
|
||||
|
||||
% @documentscript - do nothing
|
||||
% This command would only become relevant if we had translations in
|
||||
% multiple "scripts", e.g. Sebian in both Latin and Cyrillic alphabets.
|
||||
% However, we do not even support loading Cyrillic fonts.
|
||||
\parseargdef\documentscript{}
|
||||
|
||||
% XeTeX and LuaTeX can handle Unicode natively.
|
||||
% Their default I/O uses UTF-8 sequences instead of a byte-wise operation.
|
||||
% Other TeX engines' I/O (pdfTeX, etc.) is byte-wise.
|
||||
|
|
@ -10823,38 +10673,6 @@
|
|||
\newif\ifutfviiidefinedwarning
|
||||
\utfviiidefinedwarningtrue
|
||||
|
||||
% Macros to output a string to sort a multibyte UTF-8 sequence by.
|
||||
% Check if there is a special definition to be used in the index
|
||||
% sort key for a character.
|
||||
% Output the sequence as-is, surrounded by curly braces. The braces are
|
||||
% to help texindex find the first character regardless of locale character
|
||||
% encoding or version of awk used to run texindex.
|
||||
\gdef\UTFviiiSortkeyTwo#1#2{%
|
||||
\expandafter\ifx\csname sort:#1#2\endcsname\relax
|
||||
{\string #1\string #2}%
|
||||
\else
|
||||
\csname sort:#1#2\endcsname
|
||||
\fi
|
||||
}
|
||||
\gdef\UTFviiiSortkeyThree#1#2#3{%
|
||||
\expandafter\ifx\csname sort:#1#2#3\endcsname\relax
|
||||
{\string #1\string #2\string #3}%
|
||||
\else
|
||||
\csname sort:#1#2#3\endcsname
|
||||
\fi
|
||||
}
|
||||
\gdef\UTFviiiSortkeyFour#1#2#3#4{%
|
||||
\expandafter\ifx\csname sort:#1#2#3#4\endcsname\relax
|
||||
{\string #1\string #2\string #3\string #4}%
|
||||
\else
|
||||
\csname sort:#1#2#3#4\endcsname
|
||||
\fi
|
||||
}
|
||||
|
||||
% We use this with the \ifindexsortkey condition to expand and discard
|
||||
% an \else block in the containing conditional.
|
||||
\def\swapnestedfi#1\fi{\fi\expandafter#1\expandafter}
|
||||
|
||||
% Give non-ASCII bytes the active definitions for processing UTF-8 sequences
|
||||
\begingroup
|
||||
\catcode`\~13
|
||||
|
|
@ -10873,8 +10691,8 @@
|
|||
\expandafter\UTFviiiLoop
|
||||
\fi}
|
||||
%
|
||||
% UTF-8 continuation bytes (10XX XXXX) or unused (hex C1, C2).
|
||||
% Not expected to be expanded except when writing to auxiliary files.
|
||||
% For bytes other than the first in a UTF-8 sequence. Not expected to
|
||||
% be expanded except when writing to auxiliary files.
|
||||
\countUTFx = "80
|
||||
\countUTFy = "C2
|
||||
\def\UTFviiiTmp{%
|
||||
|
|
@ -10886,9 +10704,7 @@
|
|||
\countUTFy = "E0
|
||||
\def\UTFviiiTmp{%
|
||||
\gdef~{%
|
||||
\ifpassthroughchars
|
||||
\ifinindexsortkey\swapnestedfi\UTFviiiSortkeyTwo\fi
|
||||
$%
|
||||
\ifpassthroughchars $%
|
||||
\else\expandafter\UTFviiiTwoOctets\expandafter$\fi}}%
|
||||
\UTFviiiLoop
|
||||
|
||||
|
|
@ -10896,9 +10712,7 @@
|
|||
\countUTFy = "F0
|
||||
\def\UTFviiiTmp{%
|
||||
\gdef~{%
|
||||
\ifpassthroughchars
|
||||
\ifinindexsortkey\swapnestedfi\UTFviiiSortkeyThree\fi
|
||||
$%
|
||||
\ifpassthroughchars $%
|
||||
\else\expandafter\UTFviiiThreeOctets\expandafter$\fi}}%
|
||||
\UTFviiiLoop
|
||||
|
||||
|
|
@ -10906,9 +10720,7 @@
|
|||
\countUTFy = "F4
|
||||
\def\UTFviiiTmp{%
|
||||
\gdef~{%
|
||||
\ifpassthroughchars
|
||||
\ifinindexsortkey\swapnestedfi\UTFviiiSortkeyFour\fi
|
||||
$%
|
||||
\ifpassthroughchars $%
|
||||
\else\expandafter\UTFviiiFourOctets\expandafter$\fi
|
||||
}}%
|
||||
\UTFviiiLoop
|
||||
|
|
@ -11002,7 +10814,7 @@
|
|||
\parseXMLCharref
|
||||
%
|
||||
% Completely expand \UTFviiiTmp, which looks like:
|
||||
% 1. \UTFviiiTwoOctetsName B1 B2
|
||||
% 1. \UTFviiTwoOctetsName B1 B2
|
||||
% 2. \csname u8:B1 \string B2 \endcsname
|
||||
% 3. \u8: B1 B2 (a single control sequence token)
|
||||
\xdef\UTFviiiTmp{\UTFviiiTmp}%
|
||||
|
|
@ -11079,61 +10891,6 @@
|
|||
\uppercase{\gdef\UTFviiiTmp{#2#3#4}}}
|
||||
\endgroup
|
||||
|
||||
% Used in \DefineSortKey as temporary definitions of \UTFviiiTwoOctetsName etc.
|
||||
% Use \expandafter\noexpand to prevent excessive expansion if \DefineSortKey is
|
||||
% called more than once for the same codepoint.
|
||||
\def\UTFviiiSortTwoOctetsName#1#2{%
|
||||
\expandafter\noexpand\csname sort:#1\string #2\endcsname}%
|
||||
\def\UTFviiiSortThreeOctetsName#1#2#3{%
|
||||
\expandafter\noexpand\csname sort:#1\string #2\string #3\endcsname}%
|
||||
\def\UTFviiiSortFourOctetsName#1#2#3#4{%
|
||||
\expandafter\noexpand\csname sort:#1\string #2\string #3\string #4\endcsname}%
|
||||
|
||||
% To be used in translation files to provide strings to be output
|
||||
% in the index sort key where a character occurs.
|
||||
\def\DefineSortKey#1#2{%
|
||||
\countUTFz = "#1\relax
|
||||
\parseXMLCharref
|
||||
\def\tmp{#2}%
|
||||
\expandafter\let\csname usort:#1\endcsname\tmp
|
||||
\bgroup
|
||||
\let\UTFviiiTwoOctetsName\UTFviiiSortTwoOctetsName
|
||||
\let\UTFviiiThreeOctetsName\UTFviiiSortThreeOctetsName
|
||||
\let\UTFviiiFourOctetsName\UTFviiiSortFourOctetsName
|
||||
%
|
||||
% Expand \UTFviiiTmp fully, which looks like:
|
||||
% 1. \UTFviiiTwoOctetsName B1 B2
|
||||
% 2. \expandafter\noexpand\csname sort:B1 \string B2 \endcsname
|
||||
% 3. \noexpand\sort: B1 B2
|
||||
% 4. \sort: B1 B2 (a single control sequence token)
|
||||
%
|
||||
\xdef\UTFviiiTmp{\UTFviiiTmp}%
|
||||
\egroup
|
||||
\expandafter\gdef\UTFviiiTmp{#2}%
|
||||
}
|
||||
|
||||
% Used in translation files, e.g. in txi-is.tex:
|
||||
% \DefineSortKey{00DE}{{\string\idxsort{1}{\string\TH{}}}} % Þ
|
||||
% We provide a definition here in case the sequence shows up in sorted
|
||||
% index files.
|
||||
\def\idxsort#1#2{#2}
|
||||
|
||||
% this could be used as follows
|
||||
%\DefineSortKey{00F1}{nzzz} % n tilde - sort between n and o
|
||||
%\DefineSortKey{00D1}{Nzzz} % N tilde - sort between n and o
|
||||
|
||||
% Can be used in place of \DeclareUnicodeCharacter where the value for
|
||||
% the character is completely expandable when writing to indices:
|
||||
% Good: \DeclareUnicodeCharacterSK{00C9}{\'E}
|
||||
% (\' expands to empty string)
|
||||
% Bad: \DeclareUnicodeCharacterSK{03BB}{\ensuremath\lambda}%
|
||||
% (\ensuremath expands to junk)
|
||||
\def\DeclareUnicodeCharacterSK#1#2{%
|
||||
\DeclareUnicodeCharacter{#1}{#2}%
|
||||
\DefineSortKey{#1}{#2}%
|
||||
}
|
||||
|
||||
|
||||
% For native Unicode handling (XeTeX and LuaTeX),
|
||||
% provide a definition macro that sets a catcode to `other' non-globally
|
||||
%
|
||||
|
|
@ -11297,73 +11054,73 @@
|
|||
\DeclareUnicodeCharacter{00BE}{$3\over4$}%
|
||||
\DeclareUnicodeCharacter{00BF}{\questiondown}%
|
||||
%
|
||||
\DeclareUnicodeCharacterSK{00C0}{\`A}%
|
||||
\DeclareUnicodeCharacterSK{00C1}{\'A}%
|
||||
\DeclareUnicodeCharacterSK{00C2}{\^A}%
|
||||
\DeclareUnicodeCharacterSK{00C3}{\~A}%
|
||||
\DeclareUnicodeCharacterSK{00C4}{\"A}%
|
||||
\DeclareUnicodeCharacterSK{00C5}{\AA}%
|
||||
\DeclareUnicodeCharacterSK{00C6}{\AE}%
|
||||
\DeclareUnicodeCharacterSK{00C7}{\cedilla{C}}%
|
||||
\DeclareUnicodeCharacterSK{00C8}{\`E}%
|
||||
\DeclareUnicodeCharacterSK{00C9}{\'E}%
|
||||
\DeclareUnicodeCharacterSK{00CA}{\^E}%
|
||||
\DeclareUnicodeCharacterSK{00CB}{\"E}%
|
||||
\DeclareUnicodeCharacterSK{00CC}{\`I}%
|
||||
\DeclareUnicodeCharacterSK{00CD}{\'I}%
|
||||
\DeclareUnicodeCharacterSK{00CE}{\^I}%
|
||||
\DeclareUnicodeCharacterSK{00CF}{\"I}%
|
||||
\DeclareUnicodeCharacter{00C0}{\`A}%
|
||||
\DeclareUnicodeCharacter{00C1}{\'A}%
|
||||
\DeclareUnicodeCharacter{00C2}{\^A}%
|
||||
\DeclareUnicodeCharacter{00C3}{\~A}%
|
||||
\DeclareUnicodeCharacter{00C4}{\"A}%
|
||||
\DeclareUnicodeCharacter{00C5}{\AA}%
|
||||
\DeclareUnicodeCharacter{00C6}{\AE}%
|
||||
\DeclareUnicodeCharacter{00C7}{\cedilla{C}}%
|
||||
\DeclareUnicodeCharacter{00C8}{\`E}%
|
||||
\DeclareUnicodeCharacter{00C9}{\'E}%
|
||||
\DeclareUnicodeCharacter{00CA}{\^E}%
|
||||
\DeclareUnicodeCharacter{00CB}{\"E}%
|
||||
\DeclareUnicodeCharacter{00CC}{\`I}%
|
||||
\DeclareUnicodeCharacter{00CD}{\'I}%
|
||||
\DeclareUnicodeCharacter{00CE}{\^I}%
|
||||
\DeclareUnicodeCharacter{00CF}{\"I}%
|
||||
%
|
||||
\DeclareUnicodeCharacterSK{00D0}{\DH}%
|
||||
\DeclareUnicodeCharacterSK{00D1}{\~N}%
|
||||
\DeclareUnicodeCharacterSK{00D2}{\`O}%
|
||||
\DeclareUnicodeCharacterSK{00D3}{\'O}%
|
||||
\DeclareUnicodeCharacterSK{00D4}{\^O}%
|
||||
\DeclareUnicodeCharacterSK{00D5}{\~O}%
|
||||
\DeclareUnicodeCharacterSK{00D6}{\"O}%
|
||||
\DeclareUnicodeCharacter{00D0}{\DH}%
|
||||
\DeclareUnicodeCharacter{00D1}{\~N}%
|
||||
\DeclareUnicodeCharacter{00D2}{\`O}%
|
||||
\DeclareUnicodeCharacter{00D3}{\'O}%
|
||||
\DeclareUnicodeCharacter{00D4}{\^O}%
|
||||
\DeclareUnicodeCharacter{00D5}{\~O}%
|
||||
\DeclareUnicodeCharacter{00D6}{\"O}%
|
||||
\DeclareUnicodeCharacter{00D7}{\ensuremath\times}%
|
||||
\DeclareUnicodeCharacterSK{00D8}{\O}%
|
||||
\DeclareUnicodeCharacterSK{00D9}{\`U}%
|
||||
\DeclareUnicodeCharacterSK{00DA}{\'U}%
|
||||
\DeclareUnicodeCharacterSK{00DB}{\^U}%
|
||||
\DeclareUnicodeCharacterSK{00DC}{\"U}%
|
||||
\DeclareUnicodeCharacterSK{00DD}{\'Y}%
|
||||
\DeclareUnicodeCharacter{00D8}{\O}%
|
||||
\DeclareUnicodeCharacter{00D9}{\`U}%
|
||||
\DeclareUnicodeCharacter{00DA}{\'U}%
|
||||
\DeclareUnicodeCharacter{00DB}{\^U}%
|
||||
\DeclareUnicodeCharacter{00DC}{\"U}%
|
||||
\DeclareUnicodeCharacter{00DD}{\'Y}%
|
||||
\DeclareUnicodeCharacter{00DE}{\TH}%
|
||||
\DeclareUnicodeCharacterSK{00DF}{\ss}%
|
||||
\DeclareUnicodeCharacter{00DF}{\ss}%
|
||||
%
|
||||
\DeclareUnicodeCharacterSK{00E0}{\`a}%
|
||||
\DeclareUnicodeCharacterSK{00E1}{\'a}%
|
||||
\DeclareUnicodeCharacterSK{00E2}{\^a}%
|
||||
\DeclareUnicodeCharacterSK{00E3}{\~a}%
|
||||
\DeclareUnicodeCharacterSK{00E4}{\"a}%
|
||||
\DeclareUnicodeCharacterSK{00E5}{\aa}%
|
||||
\DeclareUnicodeCharacterSK{00E6}{\ae}%
|
||||
\DeclareUnicodeCharacterSK{00E7}{\cedilla{c}}%
|
||||
\DeclareUnicodeCharacterSK{00E8}{\`e}%
|
||||
\DeclareUnicodeCharacterSK{00E9}{\'e}%
|
||||
\DeclareUnicodeCharacterSK{00EA}{\^e}%
|
||||
\DeclareUnicodeCharacterSK{00EB}{\"e}%
|
||||
\DeclareUnicodeCharacterSK{00EC}{\`{\dotless{i}}}%
|
||||
\DeclareUnicodeCharacterSK{00ED}{\'{\dotless{i}}}%
|
||||
\DeclareUnicodeCharacterSK{00EE}{\^{\dotless{i}}}%
|
||||
\DeclareUnicodeCharacterSK{00EF}{\"{\dotless{i}}}%
|
||||
\DeclareUnicodeCharacter{00E0}{\`a}%
|
||||
\DeclareUnicodeCharacter{00E1}{\'a}%
|
||||
\DeclareUnicodeCharacter{00E2}{\^a}%
|
||||
\DeclareUnicodeCharacter{00E3}{\~a}%
|
||||
\DeclareUnicodeCharacter{00E4}{\"a}%
|
||||
\DeclareUnicodeCharacter{00E5}{\aa}%
|
||||
\DeclareUnicodeCharacter{00E6}{\ae}%
|
||||
\DeclareUnicodeCharacter{00E7}{\cedilla{c}}%
|
||||
\DeclareUnicodeCharacter{00E8}{\`e}%
|
||||
\DeclareUnicodeCharacter{00E9}{\'e}%
|
||||
\DeclareUnicodeCharacter{00EA}{\^e}%
|
||||
\DeclareUnicodeCharacter{00EB}{\"e}%
|
||||
\DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}}%
|
||||
\DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}}%
|
||||
\DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}}%
|
||||
\DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}}%
|
||||
%
|
||||
\DeclareUnicodeCharacterSK{00F0}{\dh}%
|
||||
\DeclareUnicodeCharacterSK{00F1}{\~n}%
|
||||
\DeclareUnicodeCharacterSK{00F2}{\`o}%
|
||||
\DeclareUnicodeCharacterSK{00F3}{\'o}%
|
||||
\DeclareUnicodeCharacterSK{00F4}{\^o}%
|
||||
\DeclareUnicodeCharacterSK{00F5}{\~o}%
|
||||
\DeclareUnicodeCharacterSK{00F6}{\"o}%
|
||||
\DeclareUnicodeCharacter{00F0}{\dh}%
|
||||
\DeclareUnicodeCharacter{00F1}{\~n}%
|
||||
\DeclareUnicodeCharacter{00F2}{\`o}%
|
||||
\DeclareUnicodeCharacter{00F3}{\'o}%
|
||||
\DeclareUnicodeCharacter{00F4}{\^o}%
|
||||
\DeclareUnicodeCharacter{00F5}{\~o}%
|
||||
\DeclareUnicodeCharacter{00F6}{\"o}%
|
||||
\DeclareUnicodeCharacter{00F7}{\ensuremath\div}%
|
||||
\DeclareUnicodeCharacterSK{00F8}{\o}%
|
||||
\DeclareUnicodeCharacterSK{00F9}{\`u}%
|
||||
\DeclareUnicodeCharacterSK{00FA}{\'u}%
|
||||
\DeclareUnicodeCharacterSK{00FB}{\^u}%
|
||||
\DeclareUnicodeCharacterSK{00FC}{\"u}%
|
||||
\DeclareUnicodeCharacterSK{00FD}{\'y}%
|
||||
\DeclareUnicodeCharacter{00F8}{\o}%
|
||||
\DeclareUnicodeCharacter{00F9}{\`u}%
|
||||
\DeclareUnicodeCharacter{00FA}{\'u}%
|
||||
\DeclareUnicodeCharacter{00FB}{\^u}%
|
||||
\DeclareUnicodeCharacter{00FC}{\"u}%
|
||||
\DeclareUnicodeCharacter{00FD}{\'y}%
|
||||
\DeclareUnicodeCharacter{00FE}{\th}%
|
||||
\DeclareUnicodeCharacterSK{00FF}{\"y}%
|
||||
\DeclareUnicodeCharacter{00FF}{\"y}%
|
||||
%
|
||||
\DeclareUnicodeCharacter{0100}{\=A}%
|
||||
\DeclareUnicodeCharacter{0101}{\=a}%
|
||||
|
|
@ -11962,9 +11719,6 @@
|
|||
\newif\ifpassthroughchars
|
||||
\passthroughcharsfalse
|
||||
|
||||
\newif\ifinindexsortkey
|
||||
\inindexsortkeyfalse
|
||||
|
||||
% For native Unicode handling (XeTeX and LuaTeX),
|
||||
% provide a definition macro to replace/pass-through a Unicode character
|
||||
%
|
||||
|
|
@ -11976,15 +11730,7 @@
|
|||
\uccode`\~="##2\relax
|
||||
\uppercase{\gdef~}{%
|
||||
\ifpassthroughchars
|
||||
\ifinindexsortkey
|
||||
\expandafter\ifx\csname usort:#1\endcsname\relax
|
||||
{##1}%
|
||||
\else
|
||||
\csname usort:#1\endcsname
|
||||
\fi
|
||||
\else
|
||||
##1%
|
||||
\fi
|
||||
##1%
|
||||
\else
|
||||
##3%
|
||||
\fi
|
||||
|
|
|
|||
|
|
@ -1833,7 +1833,7 @@ and the target host matching @var{user}@@@var{host}. @var{host} and
|
|||
@var{user} are regular expressions or @code{nil}, interpreted as a
|
||||
regular expression which always matches.
|
||||
|
||||
@var{proxy} is a literal @value{tramp} file name whose localname part
|
||||
@var{proxy} is a literal @value{tramp} file name whose local name part
|
||||
is ignored, and the method and user name parts are optional.
|
||||
|
||||
The method must be an inline method (@pxref{Inline methods}). If
|
||||
|
|
@ -3380,23 +3380,13 @@ of the secretfile is now owned by the user logged in from
|
|||
When @code{backup-directory-alist} is @code{nil} (the default), such
|
||||
problems do not occur.
|
||||
|
||||
@vindex make-backup-files
|
||||
In case you do not want to use backup files for remote files, use
|
||||
connection-local variable @code{make-backup-files}
|
||||
@ifinfo
|
||||
(@pxref{Connection Variables, , , emacs})
|
||||
@end ifinfo
|
||||
like this:
|
||||
To ``turn off'' the backup feature for remote files and stop
|
||||
@value{tramp} from saving to the backup directory, use this:
|
||||
|
||||
@lisp
|
||||
@group
|
||||
(connection-local-set-profile-variables
|
||||
'no-remote-backup-files '((make-backup-files . nil)))
|
||||
@end group
|
||||
|
||||
@group
|
||||
(connection-local-set-profiles
|
||||
'(:application tramp) 'no-remote-backup-files)
|
||||
(add-to-list 'backup-directory-alist
|
||||
(cons tramp-file-name-regexp nil))
|
||||
@end group
|
||||
@end lisp
|
||||
|
||||
|
|
@ -3406,13 +3396,13 @@ Disabling backups can be targeted to just the @option{su} and
|
|||
|
||||
@lisp
|
||||
@group
|
||||
(connection-local-set-profiles
|
||||
'(:application tramp :protocol "su") 'no-remote-backup-files)
|
||||
@end group
|
||||
|
||||
@group
|
||||
(connection-local-set-profiles
|
||||
'(:application tramp :protocol "sudo") 'no-remote-backup-files)
|
||||
(setq backup-enable-predicate
|
||||
(lambda (name)
|
||||
(and (normal-backup-enable-predicate name)
|
||||
(not
|
||||
(let ((method (file-remote-p name 'method)))
|
||||
(when (stringp method)
|
||||
(member method '("su" "sudo"))))))))
|
||||
@end group
|
||||
@end lisp
|
||||
|
||||
|
|
@ -3699,9 +3689,7 @@ brackets @file{@value{ipv6prefix}} and @file{@value{ipv6postfix}}.
|
|||
By default, @value{tramp} will use the current local user name as the
|
||||
remote user name for log in to the remote host. Specifying a
|
||||
different name using the proper syntax will override this default
|
||||
behavior: @file{@trampfn{method,user@@host,path/to/file}}. The user
|
||||
name can also be taken from an environment variable, like
|
||||
@file{@trampfn{method,@env{$MY_REMOTE_USER}@@host,path/to/file}}.
|
||||
behavior: @file{@trampfn{method,user@@host,path/to/file}}.
|
||||
|
||||
@file{@trampfn{ssh,daniel@@melancholia,.emacs}} is for file
|
||||
@file{.emacs} in @samp{daniel}'s home directory on the host,
|
||||
|
|
@ -3712,7 +3700,7 @@ name. For example: @file{@trampfn{ssh,daniel@@melancholia#42,.emacs}}.
|
|||
If the host is an IPv6 address, the port is appended like this:
|
||||
@file{@trampfn{ssh,@value{ipv6prefix}::1@value{ipv6postfix}#42,.emacs}}.
|
||||
|
||||
All method, user name, host name, port number and localname parts are
|
||||
All method, user name, host name, port number and local name parts are
|
||||
optional, @xref{Default Method}, @xref{Default User}, @xref{Default Host}.
|
||||
@ifset unified
|
||||
For syntactical reasons, the default method must be indicated by the
|
||||
|
|
@ -4103,24 +4091,6 @@ configured to expand a home directory via a connection property,
|
|||
When your remote file name does not contain a @samp{user} part, the
|
||||
connection property @t{"~"} must be used instead.
|
||||
|
||||
In case there is no remote home directory and you haven't specified a
|
||||
respective connection property, you should avoid using @file{~} in
|
||||
file names. This means for example
|
||||
|
||||
@itemize
|
||||
@item
|
||||
Don't use a remote file name like @file{@trampfn{ssh,user@@host,}} or
|
||||
@file{@trampfn{ssh,user@@host,~/}}. Use an absolute localname part
|
||||
instead, like @file{@trampfn{ssh,user@@host,/path/to/file}}.
|
||||
|
||||
@item
|
||||
Disable @code{tramp-histfile-override}, @ref{Managing remote shell history}:
|
||||
|
||||
@lisp
|
||||
(setopt tramp-histfile-override nil)
|
||||
@end lisp
|
||||
@end itemize
|
||||
|
||||
|
||||
@node Remote processes
|
||||
@section Integration with other Emacs packages
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
@c In the Tramp GIT, the version number and the bug report address
|
||||
@c are auto-frobbed from configure.ac.
|
||||
@set trampver 2.8.3-pre
|
||||
@set trampver 2.8.2.31.1
|
||||
@set trampurl https://www.gnu.org/software/tramp/
|
||||
@set tramp-bug-report-address tramp-devel@@gnu.org
|
||||
@set emacsver 28.1
|
||||
|
|
|
|||
|
|
@ -25,13 +25,13 @@ General Public License for more details.
|
|||
|
||||
@dircategory Emacs misc features
|
||||
@direntry
|
||||
* Transient: (transient). Transient Commands.
|
||||
* Transient: (transient). Transient Commands.
|
||||
@end direntry
|
||||
|
||||
@finalout
|
||||
@titlepage
|
||||
@title Transient User and Developer Manual
|
||||
@subtitle for version 0.13.8
|
||||
@subtitle for version 0.13.3
|
||||
@author Jonas Bernoulli
|
||||
@page
|
||||
@vskip 0pt plus 1filll
|
||||
|
|
@ -53,7 +53,7 @@ resource to get over that hurdle is Psionic K's interactive tutorial,
|
|||
available at @uref{https://github.com/positron-solutions/transient-showcase}.
|
||||
|
||||
@noindent
|
||||
This manual is for Transient version 0.13.8.
|
||||
This manual is for Transient version 0.13.3.
|
||||
|
||||
@insertcopying
|
||||
@end ifnottex
|
||||
|
|
@ -385,7 +385,7 @@ than outlined above and even customizable.}
|
|||
If the user does not save the value and just exits using a regular
|
||||
suffix command, then the value is merely saved to the transient's
|
||||
history. That value won't be used when the transient is next invoked,
|
||||
but it is easily accessible (@pxref{Using History}).
|
||||
but it is easily accessible (see @ref{Using History}).
|
||||
|
||||
Option @code{transient-common-command-prefix} controls the prefix key used
|
||||
in the following bindings. For simplicity's sake the default, @kbd{C-x},
|
||||
|
|
@ -454,8 +454,8 @@ previously used values. Usually the same keys as those mentioned
|
|||
above are bound to those commands.
|
||||
|
||||
Authors of transients should arrange for different infix commands that
|
||||
read the same kind of value to also use the same history key
|
||||
(@pxref{Suffix Slots}).
|
||||
read the same kind of value to also use the same history key (see
|
||||
@ref{Suffix Slots}).
|
||||
|
||||
Both kinds of history are saved to a file when Emacs is exited.
|
||||
|
||||
|
|
@ -795,7 +795,7 @@ menu buffer. The menu buffer is displayed in a window using
|
|||
The value of this option has the form @code{(@var{FUNCTION} . @var{ALIST})},
|
||||
where @var{FUNCTION} is a function or a list of functions. Each such
|
||||
function should accept two arguments: a buffer to display and an
|
||||
alist of the same form as @var{ALIST}. @xref{Choosing Window,,,elisp,},
|
||||
alist of the same form as @var{ALIST}. See @ref{Choosing Window,,,elisp,},
|
||||
for details.
|
||||
|
||||
The default is:
|
||||
|
|
@ -862,7 +862,7 @@ text at point, to be run when a transient menu is active, for example:
|
|||
@end lisp
|
||||
|
||||
@defopt transient-enable-menu-navigation
|
||||
This option is documented in the previous node (@pxref{Essential Options}). You might want to change the value from @code{verbose} to
|
||||
This option is documented in the previous node (@ref{Essential Options}). You might want to change the value from @code{verbose} to
|
||||
@code{force-verbose}, which causes information to be shown in the echo
|
||||
area, even if it is identical to information already displayed in
|
||||
the menu buffer. Whether that is useful to you depends on whether
|
||||
|
|
@ -1007,7 +1007,7 @@ used to draw the line.
|
|||
This user option may be overridden if @code{:mode-line-format} is passed
|
||||
when creating a new prefix with @code{transient-define-prefix}.
|
||||
|
||||
Otherwise this can be any mode-line format. @xref{Mode Line Format,,,elisp,}, for details.
|
||||
Otherwise this can be any mode-line format. See @ref{Mode Line Format,,,elisp,}, for details.
|
||||
@end defopt
|
||||
|
||||
@defopt transient-semantic-coloring
|
||||
|
|
@ -1175,10 +1175,10 @@ which can be included in multiple prefixes. See TODO@.
|
|||
as expected by @code{transient-define-prefix}. Note that an infix is a
|
||||
special kind of suffix. Depending on context ``suffixes'' means
|
||||
``suffixes (including infixes)'' or ``non-infix suffixes''. Here it
|
||||
means the former. @xref{Suffix Specifications}.
|
||||
means the former. See @ref{Suffix Specifications}.
|
||||
|
||||
@var{SUFFIX} may also be a group in the same form as expected by
|
||||
@code{transient-define-prefix}. @xref{Group Specifications}.
|
||||
@code{transient-define-prefix}. See @ref{Group Specifications}.
|
||||
|
||||
@item
|
||||
@var{LOC} is a key description (a string as returned by @code{key-description}
|
||||
|
|
@ -1351,14 +1351,14 @@ enabled. One benefit of the Transient interface is that it remembers
|
|||
history not only on a global level (``this command was invoked using
|
||||
these arguments, and previously it was invoked using those other
|
||||
arguments''), but also remembers the values of individual arguments
|
||||
independently. @xref{Using History}.
|
||||
independently. See @ref{Using History}.
|
||||
|
||||
After a transient prefix command is invoked, @kbd{C-h @var{KEY}} can be used to
|
||||
show the documentation for the infix or suffix command that @kbd{@var{KEY}} is
|
||||
bound to (@pxref{Getting Help for Suffix Commands}), and infixes and
|
||||
bound to (see @ref{Getting Help for Suffix Commands}), and infixes and
|
||||
suffixes can be removed from the transient using @kbd{C-x l @var{KEY}}. Infixes
|
||||
and suffixes that are disabled by default can be enabled the same way.
|
||||
@xref{Enabling and Disabling Suffixes}.
|
||||
See @ref{Enabling and Disabling Suffixes}.
|
||||
|
||||
Transient ships with support for a few different types of specialized
|
||||
infix commands. A command that sets a command line option, for example,
|
||||
|
|
@ -1409,7 +1409,7 @@ explicitly.
|
|||
|
||||
@var{GROUP}s add key bindings for infix and suffix commands and specify
|
||||
how these bindings are presented in the menu buffer. At least one
|
||||
@var{GROUP} has to be specified. @xref{Binding Suffix and Infix Commands}.
|
||||
@var{GROUP} has to be specified. See @ref{Binding Suffix and Infix Commands}.
|
||||
|
||||
The @var{BODY} is optional. If it is omitted, then @var{ARGLIST} is ignored and
|
||||
the function definition becomes:
|
||||
|
|
@ -1460,11 +1460,11 @@ GROUPs have the same form as for @code{transient-define-prefix}.
|
|||
@section Binding Suffix and Infix Commands
|
||||
|
||||
The macro @code{transient-define-prefix} is used to define a transient.
|
||||
This defines the actual transient prefix command (@pxref{Defining Transients}) and adds the transient's infix and suffix bindings, as
|
||||
This defines the actual transient prefix command (see @ref{Defining Transients}) and adds the transient's infix and suffix bindings, as
|
||||
described below.
|
||||
|
||||
Users and third-party packages can add additional bindings using
|
||||
functions such as @code{transient-insert-suffix} (@pxref{Modifying Existing Transients}). These functions take a ``suffix specification'' as one of
|
||||
functions such as @code{transient-insert-suffix} (see @ref{Modifying Existing Transients}). These functions take a ``suffix specification'' as one of
|
||||
their arguments, which has the same form as the specifications used in
|
||||
@code{transient-define-prefix}.
|
||||
|
||||
|
|
@ -1490,10 +1490,10 @@ brackets to do the latter.
|
|||
Group specifications then have this form:
|
||||
|
||||
@lisp
|
||||
[@{@var{LEVEL}@} @{@var{DESCRIPTION}@} @{@var{KEYWORD} @var{VALUE}@}... @var{ELEMENT}...]
|
||||
[@{LEVEL@} @{DESCRIPTION@} @{KEYWORD VALUE@}... ELEMENT...]
|
||||
@end lisp
|
||||
|
||||
The @var{LEVEL} is optional and defaults to 4. @xref{Enabling and Disabling Suffixes}.
|
||||
The @var{LEVEL} is optional and defaults to 4. See @ref{Enabling and Disabling Suffixes}.
|
||||
|
||||
The @var{DESCRIPTION} is optional. If present, it is used as the heading of
|
||||
the group.
|
||||
|
|
@ -1567,8 +1567,6 @@ is used and a warning is displayed. This warning will eventually
|
|||
be replaced with an error.
|
||||
|
||||
@lisp
|
||||
;; -*- lexical-binding:t -*-
|
||||
;; Before evaluating this example, make sure `lexical-binding' is t.
|
||||
(transient-define-prefix my-finder-by-keyword ()
|
||||
"Select a keyword and list matching packages."
|
||||
;; The real `finder-by-keyword' is more convenient
|
||||
|
|
@ -1646,7 +1644,7 @@ suffixes''. Here it means the former.
|
|||
Suffix specifications have this form:
|
||||
|
||||
@lisp
|
||||
([@var{LEVEL}] [@var{KEY} [@var{DESCRIPTION}]] @var{COMMAND}|@var{ARGUMENT} [@var{KEYWORD} @var{VALUE}]...)
|
||||
([LEVEL] [KEY [DESCRIPTION]] COMMAND|ARGUMENT [KEYWORD VALUE]...)
|
||||
@end lisp
|
||||
|
||||
@var{LEVEL}, @var{KEY} and @var{DESCRIPTION} can also be specified using the @var{KEYWORD}s
|
||||
|
|
@ -1657,8 +1655,8 @@ the object's values just for the binding inside this transient.
|
|||
|
||||
@itemize
|
||||
@item
|
||||
@var{LEVEL} is the suffix level, an integer between 1 and 7.
|
||||
@xref{Enabling and Disabling Suffixes}.
|
||||
@var{LEVEL} is the suffix level, an integer between 1 and 7. See
|
||||
@ref{Enabling and Disabling Suffixes}.
|
||||
|
||||
@item
|
||||
KEY is the key binding, a string in the format returned by
|
||||
|
|
@ -1732,7 +1730,7 @@ guessed based on the long argument. If the argument ends with @samp{=}
|
|||
|
||||
Finally, details can be specified using optional @var{KEYWORD}-@var{VALUE} pairs.
|
||||
Each keyword has to be a keyword symbol, either @code{:class} or a keyword
|
||||
argument supported by the constructor of that class. @xref{Suffix Slots}.
|
||||
argument supported by the constructor of that class. See @ref{Suffix Slots}.
|
||||
|
||||
If a keyword argument accepts a function as value, you an use a @code{lambda}
|
||||
expression. As a special case, the @code{##} macro (which returns a @code{lambda}
|
||||
|
|
@ -2082,8 +2080,8 @@ means that all outer prefixes are exited at once.
|
|||
@item
|
||||
The behavior for non-suffixes can be set for a particular prefix,
|
||||
by the prefix's @code{transient-non-suffix} slot to a boolean, a suitable
|
||||
pre-command function, or a shorthand for such a function.
|
||||
@xref{Pre-commands for Non-Suffixes}.
|
||||
pre-command function, or a shorthand for such a function. See
|
||||
@ref{Pre-commands for Non-Suffixes}.
|
||||
|
||||
@item
|
||||
The common behavior for the suffixes of a particular prefix can be
|
||||
|
|
@ -2408,7 +2406,7 @@ Transient itself provides a single class for prefix commands,
|
|||
@code{transient-prefix}, but package authors may wish to define specialized
|
||||
classes. Doing so makes it possible to change the behavior of the set
|
||||
of prefix commands that use that class, by implementing specialized
|
||||
methods for certain generic functions (@pxref{Prefix Methods}).
|
||||
methods for certain generic functions (see @ref{Prefix Methods}).
|
||||
|
||||
A transient prefix command's object is stored in the @code{transient--prefix}
|
||||
property of the command symbol. While a transient is active, a clone
|
||||
|
|
@ -2423,7 +2421,7 @@ object should not affect later invocations.
|
|||
@item
|
||||
All suffix and infix classes derive from @code{transient-suffix}, which in
|
||||
turn derives from @code{transient-child}, from which @code{transient-group} also
|
||||
derives (@pxref{Group Classes}).
|
||||
derives (see @ref{Group Classes}).
|
||||
|
||||
@item
|
||||
All infix classes derive from the abstract @code{transient-infix} class,
|
||||
|
|
@ -2431,13 +2429,13 @@ which in turn derives from the @code{transient-suffix} class.
|
|||
|
||||
Infixes are a special type of suffixes. The primary difference is
|
||||
that infixes always use the @code{transient--do-stay} pre-command, while
|
||||
non-infix suffixes use a variety of pre-commands (@pxref{Transient State}). Doing that is most easily achieved by using this class,
|
||||
non-infix suffixes use a variety of pre-commands (see @ref{Transient State}). Doing that is most easily achieved by using this class,
|
||||
though theoretically it would be possible to define an infix class
|
||||
that does not do so. If you do that then you get to implement many
|
||||
methods.
|
||||
|
||||
Also, infixes and non-infix suffixes are usually defined using
|
||||
different macros (@pxref{Defining Suffix and Infix Commands}).
|
||||
different macros (see @ref{Defining Suffix and Infix Commands}).
|
||||
|
||||
@item
|
||||
Classes used for infix commands that represent arguments should
|
||||
|
|
@ -2847,7 +2845,7 @@ secondary value, called a ``scope''. See @code{transient-define-prefix}.
|
|||
@code{transient-suffix}, @code{transient-non-suffix} and @code{transient-switch-frame}
|
||||
play a part when determining whether the currently active transient
|
||||
prefix command remains active/transient when a suffix or arbitrary
|
||||
non-suffix command is invoked. @xref{Transient State}.
|
||||
non-suffix command is invoked. See @ref{Transient State}.
|
||||
|
||||
@item
|
||||
@code{refresh-suffixes} Normally suffix objects and keymaps are only setup
|
||||
|
|
@ -2935,7 +2933,7 @@ of the same symbol.
|
|||
|
||||
@item
|
||||
@code{level} The level of the prefix commands. The suffix commands whose
|
||||
layer is equal or lower are displayed. @xref{Enabling and Disabling Suffixes}.
|
||||
layer is equal or lower are displayed. See @ref{Enabling and Disabling Suffixes}.
|
||||
|
||||
@item
|
||||
@code{value} The likely outdated value of the prefix. Instead of accessing
|
||||
|
|
@ -2959,15 +2957,15 @@ Here we document most of the slots that are only available for suffix
|
|||
objects. Some slots are shared by suffix and group objects, they are
|
||||
documented in @ref{Predicate Slots}.
|
||||
|
||||
See also @ref{Suffix Classes}.
|
||||
Also see @ref{Suffix Classes}.
|
||||
|
||||
@anchor{Slots of @code{transient-child}}
|
||||
@subheading Slots of @code{transient-child}
|
||||
|
||||
This is the abstract superclass of @code{transient-suffix} and
|
||||
@code{transient-group}. In addition to the slots listed below, this class
|
||||
is also where the @code{if*} and @code{inapt-if*} slots (@pxref{Predicate Slots}) and
|
||||
the @code{level} slot (@pxref{Enabling and Disabling Suffixes}) are defined.
|
||||
is also where the @code{if*} and @code{inapt-if*} slots (see @ref{Predicate Slots}) and
|
||||
the @code{level} slot (see @ref{Enabling and Disabling Suffixes}) are defined.
|
||||
|
||||
@itemize
|
||||
@item
|
||||
|
|
@ -3020,7 +3018,7 @@ which is useful for alignment purposes.
|
|||
@code{command} The command, a symbol.
|
||||
|
||||
@item
|
||||
@code{transient} Whether to stay transient. @xref{Transient State}.
|
||||
@code{transient} Whether to stay transient. See @ref{Transient State}.
|
||||
|
||||
@item
|
||||
@code{format} The format used to display the suffix in the menu buffer.
|
||||
|
|
@ -3081,15 +3079,6 @@ They are defined here anyway to allow sharing certain methods.
|
|||
@item
|
||||
@code{shortarg} The short argument, e.g., @code{-v}.
|
||||
|
||||
@item
|
||||
@code{claim-argument} Whether to claim matched arguments exclusively, i.e.,
|
||||
whether to prevent other "overlapping" infixes from also matching.
|
||||
|
||||
For example, consider the suffix arguments @code{--push-option=known=<val>}
|
||||
and @code{--push-option=<arbitrary>}. Unless the former claims any matched
|
||||
value exclusively (and appears before the latter in the menu), the
|
||||
latter also matches, which would lead to undesirable behavior.
|
||||
|
||||
@item
|
||||
@code{value} The value. Should not be accessed directly.
|
||||
|
||||
|
|
@ -3242,14 +3231,14 @@ currently cannot be invoked.
|
|||
|
||||
By default these predicates run when the prefix command is invoked,
|
||||
but this can be changes, using the @code{refresh-suffixes} prefix slot.
|
||||
@xref{Prefix Slots}.
|
||||
See @ref{Prefix Slots}.
|
||||
|
||||
One more slot is shared between group and suffix classes, @code{level}. Like
|
||||
the slots documented above, it is a predicate, but it is used for a
|
||||
different purpose. The value has to be an integer between 1
|
||||
and 7. @code{level} controls whether a suffix or a group should be
|
||||
available depending on user preference.
|
||||
@xref{Enabling and Disabling Suffixes}.
|
||||
See @ref{Enabling and Disabling Suffixes}.
|
||||
|
||||
@node FAQ
|
||||
@appendix FAQ
|
||||
|
|
|
|||
|
|
@ -127,21 +127,20 @@ standard-compliant URI parser, as well as function
|
|||
@code{url-recreate-url}, which converts a parsed URI back into a URI
|
||||
string.
|
||||
|
||||
@defun url-generic-parse-url url
|
||||
This function returns a parsed version of the string @var{url}.
|
||||
@defun url-generic-parse-url uri-string
|
||||
This function returns a parsed version of the string @var{uri-string}.
|
||||
@end defun
|
||||
|
||||
@defun url-recreate-url urlobj
|
||||
@defun url-recreate-url uri-obj
|
||||
@cindex unparsing URLs
|
||||
Given a parsed URI in @var{urlobj}, this function returns the
|
||||
corresponding URI string.
|
||||
Given a parsed URI, this function returns the corresponding URI string.
|
||||
@end defun
|
||||
|
||||
@cindex parsed URI
|
||||
The return value of @code{url-generic-parse-url}, and the argument
|
||||
expected by @code{url-recreate-url}, is a @dfn{parsed URI}: a CL
|
||||
structure whose slots hold the various components of the URI@.
|
||||
@xref{Structures,the CL Manual,,cl,GNU Emacs Common Lisp Emulation}, for
|
||||
@xref{Top,the CL Manual,,cl,GNU Emacs Common Lisp Emulation}, for
|
||||
details about CL structures. Most of the other functions in the
|
||||
@code{url} library act on parsed URIs.
|
||||
|
||||
|
|
@ -241,15 +240,15 @@ appear in URI components.)
|
|||
string containing arbitrary characters to one that is properly
|
||||
percent-encoded in accordance with RFC 3986.
|
||||
|
||||
@cindex URI normalization
|
||||
@defun url-encode-url url
|
||||
@defun url-encode-url url-string
|
||||
This function return a properly URI-encoded version of
|
||||
@var{url}. It also performs @dfn{URI normalization},
|
||||
@var{url-string}. It also performs @dfn{URI normalization},
|
||||
e.g., converting the scheme component to lowercase if it was
|
||||
previously uppercase.
|
||||
@end defun
|
||||
|
||||
@cindex percent-encoding of URL
|
||||
@findex url-hexify-string
|
||||
@findex url-unhex-string
|
||||
To convert between a string containing arbitrary characters and a
|
||||
percent-encoded all-@acronym{ASCII} string, use the functions
|
||||
@code{url-hexify-string} and @code{url-unhex-string}:
|
||||
|
|
@ -273,8 +272,8 @@ be either a list of allowed chars, or a vector whose Nth element is
|
|||
non-@code{nil} if character N is allowed.
|
||||
@end defun
|
||||
|
||||
@defun url-unhex-string str &optional allow-newlines
|
||||
This function replaces percent-encoding sequences in @var{str} with
|
||||
@defun url-unhex-string string &optional allow-newlines
|
||||
This function replaces percent-encoding sequences in @var{string} with
|
||||
their character equivalents, and returns the resulting string.
|
||||
|
||||
If @var{allow-newlines} is non-@code{nil}, it allows the decoding of
|
||||
|
|
@ -295,20 +294,20 @@ string or a parsed URL structure. If it is a string, that string is
|
|||
passed through @code{url-encode-url} before using it, to ensure that
|
||||
it is properly URI-encoded (@pxref{URI Encoding}).
|
||||
|
||||
@defun url-retrieve-synchronously url &optional silent inhibit-cookies timeout
|
||||
@defun url-retrieve-synchronously url &optional silent no-cookies timeout
|
||||
This function synchronously retrieves the data specified by @var{url},
|
||||
and returns a buffer containing the data. The return value is
|
||||
@code{nil} if there is no data associated with the URL (as is the case
|
||||
for @code{dired}, @code{info}, and @code{mailto} URLs).
|
||||
|
||||
If the optional argument @var{silent} is non-@code{nil}, progress
|
||||
messages are suppressed. If the optional argument @var{inhibit-cookies} is
|
||||
messages are suppressed. If the optional argument @var{no-cookies} is
|
||||
non-@code{nil}, cookies are not stored or sent. If the optional
|
||||
argument @var{timeout} is non-@code{nil}, it should be a number that
|
||||
says (in seconds) how long to wait for a response before giving up.
|
||||
@end defun
|
||||
|
||||
@defun url-retrieve url callback &optional cbargs silent inhibit-cookies
|
||||
@defun url-retrieve url callback &optional cbargs silent no-cookies
|
||||
This function retrieves @var{url} asynchronously, calling the function
|
||||
@var{callback} when the object has been completely retrieved. The
|
||||
return value is the buffer into which the data will be inserted, or
|
||||
|
|
@ -337,7 +336,7 @@ signaled with @code{(signal @var{error-symbol} @var{data})}.
|
|||
@cindex status of GnuTLS connection, as provided by @code{url-retrieve}
|
||||
@findex gnutls-peer-status-warning-describe
|
||||
@findex gnutls-peer-status
|
||||
@item (:peer @var{gnutls-information})
|
||||
@item (:peer @var{gnutls-information})
|
||||
This means that GnuTLS was used for a TLS connection to the peer. The
|
||||
@var{gnutls-information} has the following form:
|
||||
|
||||
|
|
@ -363,11 +362,11 @@ containing the retrieved data (if any). The buffer also contains any
|
|||
MIME headers associated with the data retrieval.
|
||||
|
||||
If the optional argument @var{silent} is non-@code{nil}, progress
|
||||
messages are suppressed. If the optional argument @var{inhibit-cookies} is
|
||||
messages are suppressed. If the optional argument @var{no-cookies} is
|
||||
non-@code{nil}, cookies are not stored or sent.
|
||||
@end defun
|
||||
|
||||
@defun url-queue-retrieve url callback &optional cbargs silent inhibit-cookies
|
||||
@defun url-queue-retrieve url callback &optional cbargs silent no-cookies
|
||||
This function acts like @code{url-retrieve}, but with limits on the
|
||||
number of concurrently-running network processes. The option
|
||||
@code{url-queue-parallel-processes} controls the number of concurrent
|
||||
|
|
@ -377,6 +376,7 @@ seconds.
|
|||
To use this function, you must @code{(require 'url-queue)}.
|
||||
@end defun
|
||||
|
||||
@vindex url-queue-parallel-processes
|
||||
@defopt url-queue-parallel-processes
|
||||
The value of this option is an integer specifying the maximum number
|
||||
of concurrent @code{url-queue-retrieve} network processes. If the
|
||||
|
|
@ -451,11 +451,10 @@ cookies, if there are any. You can remove a cookie using the
|
|||
@kbd{C-k} (@code{url-cookie-delete}) command.
|
||||
@end defun
|
||||
|
||||
@defun url-cookie-delete-cookies &optional regexp keep
|
||||
@defun url-cookie-delete-cookies &optional regexp
|
||||
This function takes a regular expression as its parameters and deletes
|
||||
all cookies from that domain. If @var{regexp} is @code{nil}, delete
|
||||
all cookies. If @var{keep} is non-@code{nil}, instead delete all cookies
|
||||
that do not match @var{regexp}.
|
||||
all cookies.
|
||||
@end defun
|
||||
|
||||
@defopt url-cookie-file
|
||||
|
|
@ -534,7 +533,7 @@ HTTP supports an @samp{OPTIONS} method describing things supported by
|
|||
the URL@.
|
||||
|
||||
@defun url-http-options url
|
||||
Returns a property list describing options available for @var{url}. The
|
||||
Returns a property list describing options available for URL@. The
|
||||
property list members are:
|
||||
|
||||
@table @code
|
||||
|
|
@ -936,13 +935,10 @@ more likely to conflict with other files.
|
|||
@end smallexample
|
||||
@end defun
|
||||
|
||||
@defun url-cache-expired url &optional expire-time
|
||||
This function returns non-@code{nil} if a cache entry for @var{url} has
|
||||
expired (or is absent). The expiration time is given by the option
|
||||
@code{url-cache-expire-time}, but if the optional argument
|
||||
@var{expire-time} is non-@code{nil}, its value overrides that option.
|
||||
However, if the value of the @code{url-standalone-mode} option is
|
||||
non-@code{nil}, cached URLs never expire.
|
||||
@defun url-cache-expired
|
||||
This function returns non-@code{nil} if a cache entry has expired (or is absent).
|
||||
The arguments are a URL and optional expiration delay in seconds
|
||||
(default @var{url-cache-expire-time}).
|
||||
@end defun
|
||||
|
||||
@defopt url-cache-expire-time
|
||||
|
|
@ -950,7 +946,7 @@ This variable is the default number of seconds to use for the
|
|||
expire-time argument of the function @code{url-cache-expired}.
|
||||
@end defopt
|
||||
|
||||
@defun url-fetch-from-cache url
|
||||
@defun url-fetch-from-cache
|
||||
This function takes a URL as its argument and returns a buffer
|
||||
containing the data cached for that URL.
|
||||
@end defun
|
||||
|
|
@ -1041,14 +1037,12 @@ others.@footnote{Proxies (which only operate over HTTP) are
|
|||
implemented using this.} The library's basic function responsible for
|
||||
making connections is @code{url-open-stream}.
|
||||
|
||||
@defun url-open-stream name buffer host service
|
||||
@cindex opening a stream
|
||||
@cindex stream, opening
|
||||
@defun url-open-stream name buffer host service &optional gateway-method
|
||||
Open a stream to @var{host}, possibly via a gateway. The other
|
||||
arguments are as for @code{open-network-stream}. This will not make a
|
||||
connection if @code{url-gateway-unplugged} is non-@code{nil}. Optional
|
||||
argument @var{gateway-method} specifies the gateway to be used, and
|
||||
defaults to the value of @code{url-gateway-method}, described below.
|
||||
connection if @code{url-gateway-unplugged} is non-@code{nil}.
|
||||
@end defun
|
||||
|
||||
@defvar url-gateway-local-host-regexp
|
||||
|
|
|
|||
|
|
@ -1,79 +1,3 @@
|
|||
* Translated Emacs manuals
|
||||
** Translations available
|
||||
|
||||
Translations for language DOCLANG can be found under directory
|
||||
doc/translations/DOCLANG. DOCLANG is for instance fr for French.
|
||||
|
||||
** Compiling all manual translations
|
||||
|
||||
Manual Texinfo sources are grouped into four subdirectories DIR with DIR
|
||||
in { lispref, lispintro, emacs, misc}, and can be compiled to five
|
||||
output formats FORMAT with FORMAT in { dvi, html, info, pdf, ps}. Texinfo
|
||||
source code is under doc/DIR for the default language, and under
|
||||
doc/translations/DOCLANG/DIR for language DOCLANG, for instance replace
|
||||
DOCLANG by fr for French.
|
||||
|
||||
You can build all the manuals including their translations for any
|
||||
combination of DIR and FORMAT by making the target DIR-FORMAT with the
|
||||
top level Makefile. For instance:
|
||||
|
||||
make misc-info
|
||||
|
||||
to make all manuals from the misc subdirectory into the info format and
|
||||
for all the language listed in the DOCLANGS list resulting from the
|
||||
./configure step or superseded by setting DOCLANGS in the
|
||||
environment. Outputs are made into the info directory for info format
|
||||
and into the doc/DIR subdirectory for other formats (the output is in
|
||||
doc/DIR, not doc/translations/DOCLANG/DIR, even when the DOCLANG is not
|
||||
default).
|
||||
|
||||
You can select only some translations by means of the DOCLANGS
|
||||
environment variable. DOCLANGS is otherwise set by the ./configure step
|
||||
to all language supported by the Texinfo compiler and for which at least
|
||||
one manual translation is available. DOCLANGS is a space separated list
|
||||
of languages. ./configure --help for values supported. For instance:
|
||||
|
||||
make misc-info DOCLANGS=fr
|
||||
|
||||
to make all manuals from the misc subdirectory into the info format and
|
||||
for language French only.
|
||||
|
||||
Note that the Emacs manual, the Emacs Lisp Reference manual and the
|
||||
Introduction to Emacs Lisp Programming are always built in the default
|
||||
language, whatever DOCLANGS says: the first two are referenced from doc
|
||||
strings, and all three are expected to be part of any Emacs build.
|
||||
Their translations, if any, are selected by DOCLANGS as usual.
|
||||
|
||||
Alternatively, you can use:
|
||||
|
||||
make -C doc/DIR FORMAT
|
||||
|
||||
to build manuals from DIR subdirectory, output format FORMAT and for the
|
||||
default language only.
|
||||
|
||||
Use:
|
||||
|
||||
make -C doc/DIR FORMAT DOCLANG=fr
|
||||
|
||||
to build manuals from DIR subdirectory and output format FORMAT for the
|
||||
French language only (replace fr by any language supported for DOCLANGS
|
||||
as listed in ./configure --help).
|
||||
|
||||
|
||||
** Compiling one manual translation
|
||||
|
||||
For the info output, and, say, SES manual in French:
|
||||
|
||||
make -C doc/misc ses DOCLANG=fr
|
||||
|
||||
ses-fr.info will go into the info directory.
|
||||
|
||||
For the pdf output:
|
||||
|
||||
make -C doc/misc ses-fr.pdf DOCLANG=fr
|
||||
|
||||
ses-fr.pdf will go into the doc/misc directory.
|
||||
|
||||
* Translating the Emacs manuals
|
||||
|
||||
** Copyright assignment
|
||||
|
|
@ -145,7 +69,7 @@ few rules to follow:
|
|||
|
||||
- Most Emacs manuals are set to include the docstyle.Texi file. This
|
||||
file adds the "@documentencoding UTF-8" directive to the targeted
|
||||
manual. There is no need to add this directive in a manual that
|
||||
manual. There is no need to add this directive in a manual that
|
||||
includes docstyle.texi.
|
||||
|
||||
- Add a @documentlanguage directive that includes your language.
|
||||
|
|
@ -172,7 +96,7 @@ See the 'Bugs' section in the Emacs manual.
|
|||
** Sending your contributions
|
||||
|
||||
Send your contributions (files or revisions) for review to the Emacs
|
||||
development list at emacs-devel@gnu.org. Subscribing to the list is not
|
||||
development list at emacs-devel@gnu.org. Subscribing to the list is not
|
||||
obligatory.
|
||||
|
||||
Always send contributions in the format of the original document. Most
|
||||
|
|
|
|||
|
|
@ -1,9 +0,0 @@
|
|||
## Info files to build and install on all platforms.
|
||||
INFO_COMMON = auth autotype bovine calc ccmode cl dbus dired-x \
|
||||
ebrowse ede ediff edt efaq eglot eieio emacs-gnutls \
|
||||
emacs-mime epa erc ert eshell eudc eww flymake forms gnus \
|
||||
htmlfontify idlwave ido info mairix-el message mh-e \
|
||||
modus-themes newsticker nxml-mode octave-mode org pcl-cvs pgg \
|
||||
rcirc reftex remember sasl sc semantic ses sieve smtpmail \
|
||||
speedbar srecode todo-mode tramp transient url use-package \
|
||||
vhdl-mode viper vtable widget wisent woman
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
## Info files to build and install on all platforms (only ses has been
|
||||
## translated to French)
|
||||
INFO_COMMON = ses
|
||||
|
||||
## efaq-w32 has not been translated to French
|
||||
DOCMISC_W32:=#
|
||||
|
||||
DOCMISC_W32_TARGET:=#
|
||||
|
|
@ -10,12 +10,6 @@
|
|||
@syncodeindex vr cp
|
||||
@syncodeindex ky cp
|
||||
@c %**end of header
|
||||
@c compiler info avec
|
||||
@c make -C doc/misc ../../info/ses-fr.info DOCLANG=fr
|
||||
@c ou juste
|
||||
@c make -C doc/misc ses DOCLANG=fr
|
||||
@c compiler pdf avec
|
||||
@c make -C doc/misc ses-fr.pdf DOCLANG=fr
|
||||
|
||||
@copying
|
||||
Ce fichier documente @acronym{SES} : le tableur simple d’Emacs (Simple
|
||||
|
|
|
|||
10
etc/AUTHORS
10
etc/AUTHORS
|
|
@ -5787,7 +5787,7 @@ and co-wrote vc-tests-helpers.el vc-tests.el
|
|||
and changed vc.el vc-git.el vc-dispatcher.el vc-hg.el vc-dir.el
|
||||
vc-hooks.el diff-mode.el vc1-xtra.texi log-view.el maintaining.texi
|
||||
subr.el project.el log-edit.el files.texi server.el simple.el window.el
|
||||
cond-star.el configure.ac dired-aux.el keyboard.c and 348 other files
|
||||
cond-star.el configure.ac dired-aux.el keyboard.c and 347 other files
|
||||
|
||||
Sebastian Fieber: changed gnus-art.el mm-decode.el mm-view.el
|
||||
|
||||
|
|
@ -6076,9 +6076,9 @@ Stephen Berman: wrote todo-mode-tests.el
|
|||
and co-wrote todo-mode.el visual-wrap.el
|
||||
and changed dired.el wid-edit.el dired-tests.el wdired.el files.el
|
||||
todo-mode.texi dabbrev-tests.el wdired-tests.el diary-lib.el
|
||||
menu-bar.el minibuffer.el simple.el dabbrev.el dired-aux.el doc-view.el
|
||||
info.el outline.el todo-test-1.todo widget.texi INSTALL_BEGIN allout.el
|
||||
and 89 other files
|
||||
menu-bar.el minibuffer.el dabbrev.el dired-aux.el doc-view.el info.el
|
||||
outline.el simple.el todo-test-1.todo widget.texi INSTALL_BEGIN
|
||||
allout.el and 89 other files
|
||||
|
||||
Stephen C. Gilardi: changed configure.ac
|
||||
|
||||
|
|
@ -6616,7 +6616,7 @@ Ulrich Müller: changed configure.ac calc-units.el Makefile.in
|
|||
emacsclient-mail.desktop lib-src/Makefile.in src/Makefile.in version.el
|
||||
bindings.el calc-ext.el doctor.el emacs.1 files.el gamegrid.el gud.el
|
||||
language/cyrillic.el server.el strings.texi ChgPane.c ChgSel.c HELLO
|
||||
INSTALL and 63 other files
|
||||
INSTALL and 61 other files
|
||||
|
||||
Ulrich Neumerkel: changed xterm.c
|
||||
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ to look up issue github#1234, go to
|
|||
https://github.com/joaotavora/eglot/issues/1234.
|
||||
|
||||
|
||||
* Changes to upcoming Eglot
|
||||
* Changes in Eglot 1.24.31 (Eglot bundled with Emacs 31.1)
|
||||
|
||||
** Changes to 'eglot-server-programs'
|
||||
|
||||
|
|
|
|||
61
etc/ERC-NEWS
61
etc/ERC-NEWS
|
|
@ -11,67 +11,6 @@ This file is about changes in ERC, the powerful, modular, and
|
|||
extensible IRC (Internet Relay Chat) client distributed with
|
||||
GNU Emacs since Emacs version 22.1.
|
||||
|
||||
|
||||
* Changes in ERC 5.7
|
||||
|
||||
** A flexible 'match' API.
|
||||
To the frustration many, ERC has long lacked of a flexible API for
|
||||
reacting to a message's contents and envelope info, like its sender and
|
||||
associated IRC command. While the long-term plan is to transition to an
|
||||
object-based formatting model that should offer more useful access to
|
||||
the various parts of a message before they're assembled, it's become
|
||||
obvious that users need something practical in the interim. This
|
||||
'match' API is based on a simple hook-like handler system that offers
|
||||
more opportunities for things like filtering and styling. See Info node
|
||||
'Match API' to find out more.
|
||||
|
||||
** Exercise more control in skipping certain desktop notifications.
|
||||
Skip select notifications that ERC would otherwise emit with new hook
|
||||
option 'erc-desktop-notifications-skip-predicates'. Its default members
|
||||
skip messages from "fools" and those in untracked buffers.
|
||||
|
||||
** Opt out of desktop notifications from the active buffer.
|
||||
Option 'erc-desktop-notifications-ignored-when-focused' can spare users
|
||||
from being notified when interacting with the initiating buffer.
|
||||
|
||||
** Apply options locally to specific connections or buffers.
|
||||
Based on an idea drafted nearly a quarter century ago by ERC's earliest
|
||||
contributors, the 'settings' module offers a ready-made method for
|
||||
binding arbitrary user options to various "scopes" of interest. It
|
||||
leverages buffer-local variables and match conditions reminiscent of
|
||||
'buffer-match-p'.
|
||||
|
||||
** Changes in the library API.
|
||||
|
||||
*** Module setup runs in query buffers on reconnect.
|
||||
A module's setup would always run in channel buffers on reconnect, due
|
||||
to channels being rejoined, but query buffers lacked a similar
|
||||
opportunity to reinitialize their state for the new session. This is no
|
||||
longer the case.
|
||||
|
||||
*** Local modules activate in preferred order instead of in reverse.
|
||||
In recent versions, ERC has enabled local modules in the reverse order
|
||||
of that produced by the "set" function used by 'setopt' and the Custom
|
||||
UI for the option 'erc-modules'. Specifically, Built-in locals were
|
||||
activated in reverse lexicographic order after third-party ones, which
|
||||
were simply reversed as given. Now, just like with global modules, ERC
|
||||
preserves the preferred order when activating local modules for new
|
||||
sessions.
|
||||
|
||||
*** Major-mode setup runs before global-module setup in 'erc-open'.
|
||||
The "enable" body of a global module's minor-mode command will now see
|
||||
'erc-mode' as the 'major-mode'. Although ERC still delays its
|
||||
major-mode hook until after it has initialized its main session
|
||||
variables, a module can also now set any of its own variables that don't
|
||||
depend on such initialization immediately and without fear of their
|
||||
being killed. For modules still needing to run delayed, session-aware
|
||||
code, a new convenience macro called 'erc-with-initialized-session' is
|
||||
now available to automate any 'erc-mode-hook' wrangling for you.
|
||||
|
||||
*** A predicate to detect if the current buffer is a channel.
|
||||
New function 'erc-channel-buffer-p' is a channel-detecting complement to
|
||||
'erc-query-buffer-p' and a light wrapper around 'erc-channel-p'.
|
||||
|
||||
|
||||
* Changes in ERC 5.6.2
|
||||
|
||||
|
|
|
|||
4274
etc/NEWS.31
4274
etc/NEWS.31
File diff suppressed because it is too large
Load diff
|
|
@ -3763,13 +3763,6 @@ This is because the SECONDARY selection is not implemented by the
|
|||
Wayland compositor being used. A workaround is to use other kinds of
|
||||
selections.
|
||||
|
||||
** Pasting non-ASCII text from Emacs into Chromium or Brave inserts mojibake.
|
||||
|
||||
These are bugs in these browsers: they chose incorrect format of the
|
||||
copied text amongst those which Emacs provides. Emacs provides UTF-8 as
|
||||
one of the formats, but these browsers use Latin-1 instead. So please
|
||||
report these bugs to the developers of the respective browsers.
|
||||
|
||||
** Giant tool bar icons are displayed in some cases
|
||||
|
||||
This is because some icon themes (such as the KDE Breeze icon theme)
|
||||
|
|
|
|||
|
|
@ -41,24 +41,6 @@ symbol: aix
|
|||
****** Error number 140 in line 8 of file errors.c ******
|
||||
|
||||
|
||||
* Ansible
|
||||
|
||||
symbols: ansible-error ansible-fatal ansible-warning
|
||||
ansible-included ansible-origin
|
||||
|
||||
[ERROR]: couldn't resolve module/action 'shelll'. This often indicates a misspelling, missing collection, or incorrect module path.
|
||||
Origin: /home/albinus/src/tramp-tests/roles/test/tasks/adb.yml:19:3
|
||||
[WARNING]: Deprecation warnings can be disabled by setting `deprecation_warnings=False` in ansible.cfg.
|
||||
[DEPRECATION WARNING]: Importing 'to_bytes' from 'ansible.module_utils._text' is deprecated. This feature will be removed from ansible-core version 2.24. Use ansible.module_utils.common.text.converters instead.
|
||||
included: /home/albinus/src/tramp-tests/roles/test/tasks/adb.yml for localhost => (item={'name': 'adb', 'start': '04157df41d46b840'})
|
||||
fatal: [localhost]: FAILED! => {
|
||||
"assertion": "message == []",
|
||||
"changed": false,
|
||||
"evaluated_to": false,
|
||||
"msg": "Assertion failed"
|
||||
}
|
||||
|
||||
|
||||
* Ant Java: works at least for jikes and javac
|
||||
|
||||
symbol: ant
|
||||
|
|
@ -179,7 +161,7 @@ cucumber foo/cucumber.feature:15 # Scenario: deep backtrace in step definition
|
|||
|
||||
* EDG C/C++
|
||||
|
||||
symbols: edg-1 edg-2
|
||||
symbol: edg-1 edg-2
|
||||
|
||||
build/intel/debug/../../../struct.cpp(42): error: identifier "foo" is undefined
|
||||
build/intel/debug/../../../struct.cpp(44): warning #1011: missing return statement at end of ...
|
||||
|
|
@ -196,7 +178,7 @@ Error 24 at (2:progran.f90) : syntax error
|
|||
|
||||
* Fortran checker
|
||||
|
||||
symbol: ftnchek
|
||||
symbols: ftnchek
|
||||
|
||||
Dummy arg W in module SUBA line 8 file arrayclash.f is array
|
||||
L4 used at line 55 file test/assign.f; never set
|
||||
|
|
@ -322,251 +304,6 @@ In file included from /usr/include/c++/3.3/backward/warn.h:4,
|
|||
from /usr/include/c++/3.3/backward/iostream.h:31:0,
|
||||
from test_clt.cc:1:
|
||||
|
||||
* GCC nested notes
|
||||
|
||||
symbol: gcc-nested-notes
|
||||
|
||||
Example from https://developers.redhat.com/articles/2026/04/28/gcc-16-improved-error-messages-sarif-output#new_c___error_improvements with and without Unicode
|
||||
|
||||
test.cc:8:6: error: no declaration matches 'void foo::test(int, int, const void*, int)'
|
||||
8 | void foo::test(int i, int j, const void *ptr, int k)
|
||||
| ^~~
|
||||
* there is 1 candidate
|
||||
* candidate is: 'void foo::test(int, int, void*, int)'
|
||||
test.cc:4:10:
|
||||
4 | void test(int i, int j, void *ptr, int k);
|
||||
| ^~~~
|
||||
* parameter 3 of candidate has type 'void*'...
|
||||
test.cc:4:35:
|
||||
4 | void test(int i, int j, void *ptr, int k);
|
||||
| ~~~~~~^~~
|
||||
* ...which does not match type 'const void*'
|
||||
test.cc:8:42:
|
||||
8 | void foo::test(int i, int j, const void *ptr, int k)
|
||||
| ~~~~~~~~~~~~^~~
|
||||
test.cc:1:7: note: 'class foo' defined here
|
||||
1 | class foo
|
||||
| ^~~
|
||||
|
||||
test.cc:8:6: error: no declaration matches ‘void foo::test(int, int, const void*, int)’
|
||||
8 | void foo::test(int i, int j, const void *ptr, int k)
|
||||
| ^~~
|
||||
• there is 1 candidate
|
||||
• candidate is: ‘void foo::test(int, int, void*, int)’
|
||||
test.cc:4:10:
|
||||
4 | void test(int i, int j, void *ptr, int k);
|
||||
| ^~~~
|
||||
• parameter 3 of candidate has type ‘void*’...
|
||||
test.cc:4:35:
|
||||
4 | void test(int i, int j, void *ptr, int k);
|
||||
| ~~~~~~^~~
|
||||
• ...which does not match type ‘const void*’
|
||||
test.cc:8:42:
|
||||
8 | void foo::test(int i, int j, const void *ptr, int k)
|
||||
| ~~~~~~~~~~~~^~~
|
||||
test.cc:1:7: note: ‘class foo’ defined here
|
||||
1 | class foo
|
||||
| ^~~
|
||||
|
||||
../../gcc/gcc/cp/module.cc: In member function ‘void {anonymous}::trees_out::type_node(tree)’:
|
||||
../../gcc/gcc/cp/module.cc:9628:40: error: cannot convert ‘qualifier_set’ to ‘int’ in initialization
|
||||
9628 | int quals = type_memfn_quals (type);
|
||||
| ~~~~~~~~~~~~~~~~~^~~~~~
|
||||
| |
|
||||
| qualifier_set
|
||||
../../gcc/gcc/cp/module.cc:9635:24: error: no match for ‘operator!=’ (operand types are ‘int’ and ‘qualifier_set’)
|
||||
9635 | || quals != type_memfn_quals (root)
|
||||
| ~~~~~ ^~ ~~~~~~~~~~~~~~~~~~~~~~~
|
||||
| | |
|
||||
| int qualifier_set
|
||||
• there are 3 candidates
|
||||
../../gcc/gcc/cp/module.cc:9635:24:
|
||||
9635 | || quals != type_memfn_quals (root)
|
||||
| ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
In file included from ../../gcc/gcc/cp/module.cc:215:
|
||||
• candidate 1: ‘bool operator==(const cp_expr&, tree)’ (reversed)
|
||||
../../gcc/gcc/cp/cp-tree.h:126:1:
|
||||
126 | operator == (const cp_expr &lhs, tree rhs)
|
||||
| ^~~~~~~~
|
||||
• no known conversion for argument 1 from ‘qualifier_set’ to ‘const cp_expr&’
|
||||
../../gcc/gcc/cp/cp-tree.h:126:29:
|
||||
126 | operator == (const cp_expr &lhs, tree rhs)
|
||||
| ~~~~~~~~~~~~~~~^~~
|
||||
In file included from ../../gcc/gcc/coretypes.h:479,
|
||||
from ../../gcc/gcc/cp/module.cc:214:
|
||||
• candidate 2: ‘template<class T1, class T2> typename wi::binary_traits<T1, T2>::predicate_result operator!=(const T1&, const T2&)’
|
||||
../../gcc/gcc/wide-int.h:3853:19:
|
||||
3853 | BINARY_PREDICATE (operator !=, ne_p)
|
||||
| ^~~~~~~~
|
||||
• in definition of macro ‘BINARY_PREDICATE’
|
||||
3829 | OP (const T1 &x, const T2 &y) \
|
||||
| ^~
|
||||
• template argument deduction/substitution failed:
|
||||
• in definition of macro ‘BINARY_PREDICATE’
|
||||
3829 | OP (const T1 &x, const T2 &y) \
|
||||
| ^~
|
||||
• ../../gcc/gcc/wide-int.h: In substitution of ‘template<class T1, class T2> typename wi::binary_traits<T1, T2>::predicate_result operator!=(const T1&, const T2&) [with T1 = int; T2 = qualifier_set]’:
|
||||
• required from here
|
||||
../../gcc/gcc/cp/module.cc:9635:42:
|
||||
9635 | || quals != type_memfn_quals (root)
|
||||
| ^
|
||||
• error: incomplete type ‘wi::int_traits<qualifier_set>’ used in nested name specifier
|
||||
../../gcc/gcc/wide-int.h:3853:19:
|
||||
3853 | BINARY_PREDICATE (operator !=, ne_p)
|
||||
| ^~~~~~~~
|
||||
• in definition of macro ‘BINARY_PREDICATE’
|
||||
3829 | OP (const T1 &x, const T2 &y) \
|
||||
| ^~
|
||||
In file included from ../../gcc/gcc/input.h:24,
|
||||
from ../../gcc/gcc/coretypes.h:507:
|
||||
• candidate 3: ‘bool operator!=(const expanded_location&, const expanded_location&)’
|
||||
../../gcc/gcc/../libcpp/include/line-map.h:1313:1:
|
||||
1313 | operator!= (const expanded_location &a,
|
||||
| ^~~~~~~~
|
||||
• no known conversion for argument 1 from ‘int’ to ‘const expanded_location&’
|
||||
../../gcc/gcc/../libcpp/include/line-map.h:1313:38:
|
||||
1313 | operator!= (const expanded_location &a,
|
||||
| ~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||||
../../gcc/gcc/c/c-typeck.cc:8719:38: error: no match for ‘operator|’ (operand types are ‘qualifier_set’ and ‘qualifier_set’)
|
||||
8719 | : ((lquals | rquals) == lquals)))
|
||||
| ~~~~~~ ^ ~~~~~~
|
||||
| | |
|
||||
| | qualifier_set
|
||||
| qualifier_set
|
||||
• there are 6 candidates
|
||||
../../gcc/gcc/c/c-typeck.cc:8719:38:
|
||||
8719 | : ((lquals | rquals) == lquals)))
|
||||
| ~~~~~~~^~~~~~~~
|
||||
• candidate 1: ‘template<class T1, class T2> typename wi::binary_traits<T1, T2>::operator_result operator|(const T1&, const T2&)’
|
||||
../../gcc/gcc/wide-int.h:3855:18:
|
||||
3855 | BINARY_OPERATOR (operator |, bit_or)
|
||||
| ^~~~~~~~
|
||||
• in definition of macro ‘BINARY_OPERATOR’
|
||||
3837 | OP (const T1 &x, const T2 &y) \
|
||||
| ^~
|
||||
• template argument deduction/substitution failed:
|
||||
• in definition of macro ‘BINARY_OPERATOR’
|
||||
3837 | OP (const T1 &x, const T2 &y) \
|
||||
| ^~
|
||||
• ../../gcc/gcc/wide-int.h: In substitution of ‘template<class T1, class T2> typename wi::binary_traits<T1, T2>::operator_result operator|(const T1&, const T2&) [with T1 = qualifier_set; T2 = qualifier_set]’:
|
||||
• required from here
|
||||
../../gcc/gcc/c/c-typeck.cc:8719:19:
|
||||
8719 | : ((lquals | rquals) == lquals)))
|
||||
| ^~~~~~
|
||||
• error: incomplete type ‘wi::int_traits<qualifier_set>’ used in nested name specifier
|
||||
../../gcc/gcc/wide-int.h:3855:18:
|
||||
3855 | BINARY_OPERATOR (operator |, bit_or)
|
||||
| ^~~~~~~~
|
||||
• in definition of macro ‘BINARY_OPERATOR’
|
||||
3837 | OP (const T1 &x, const T2 &y) \
|
||||
| ^~
|
||||
• candidate 2: ‘dump_flags_t operator|(dump_flags_t, dump_flags_t)’
|
||||
../../gcc/gcc/dumpfile.h:212:1:
|
||||
212 | operator| (dump_flags_t lhs, dump_flags_t rhs)
|
||||
| ^~~~~~~~
|
||||
• no known conversion for argument 1 from ‘qualifier_set’ to ‘dump_flags_t’ {aka ‘dump_flag’}
|
||||
../../gcc/gcc/dumpfile.h:212:25:
|
||||
212 | operator| (dump_flags_t lhs, dump_flags_t rhs)
|
||||
| ~~~~~~~~~~~~~^~~
|
||||
• candidate 3: ‘optgroup_flags_t operator|(optgroup_flags_t, optgroup_flags_t)’
|
||||
../../gcc/gcc/dumpfile.h:280:1:
|
||||
280 | operator| (optgroup_flags_t lhs, optgroup_flags_t rhs)
|
||||
| ^~~~~~~~
|
||||
• no known conversion for argument 1 from ‘qualifier_set’ to ‘optgroup_flags_t’ {aka ‘optgroup_flag’}
|
||||
../../gcc/gcc/dumpfile.h:280:29:
|
||||
280 | operator| (optgroup_flags_t lhs, optgroup_flags_t rhs)
|
||||
| ~~~~~~~~~~~~~~~~~^~~
|
||||
• candidate 4: ‘constexpr cv_qualifier operator|(cv_qualifier, cv_qualifier)’
|
||||
../../gcc/gcc/tree-core.h:716:1:
|
||||
716 | operator| (cv_qualifier l, cv_qualifier r)
|
||||
| ^~~~~~~~
|
||||
• no known conversion for argument 1 from ‘qualifier_set’ to ‘cv_qualifier’
|
||||
../../gcc/gcc/tree-core.h:716:25:
|
||||
716 | operator| (cv_qualifier l, cv_qualifier r)
|
||||
| ~~~~~~~~~~~~~^
|
||||
• candidate 5: ‘constexpr qualifier_set operator|(qualifier_set, cv_qualifier)’
|
||||
../../gcc/gcc/tree.h:2816:1:
|
||||
2816 | operator| (qualifier_set qs, cv_qualifier cvs)
|
||||
| ^~~~~~~~
|
||||
• no known conversion for argument 2 from ‘qualifier_set’ to ‘cv_qualifier’
|
||||
../../gcc/gcc/tree.h:2816:43:
|
||||
2816 | operator| (qualifier_set qs, cv_qualifier cvs)
|
||||
| ~~~~~~~~~~~~~^~~
|
||||
• candidate 6: ‘constexpr qualifier_set operator|(cv_qualifier, qualifier_set)’
|
||||
../../gcc/gcc/tree.h:2822:1:
|
||||
2822 | operator| (cv_qualifier cvs, qualifier_set qs)
|
||||
| ^~~~~~~~
|
||||
• no known conversion for argument 1 from ‘qualifier_set’ to ‘cv_qualifier’
|
||||
../../gcc/gcc/tree.h:2822:25:
|
||||
2822 | operator| (cv_qualifier cvs, qualifier_set qs)
|
||||
| ~~~~~~~~~~~~~^~~
|
||||
|
||||
The g++.dg/diagnostic/pr100716.C example has some more complex cases:
|
||||
|
||||
pr100716.C: In function ‘int main()’:
|
||||
pr100716.C:34:13: error: no matching function for call to ‘A<int>::f(int)’
|
||||
34 | A<int>().f(0); // { dg-error "no matching function for call to 'A<int>::f\\(int\\)'" }
|
||||
| ~~~~~~~~~~^~~
|
||||
• there is 1 candidate
|
||||
• candidate 1: ‘template<class U> void A<T>::f() [with T = int]’
|
||||
pr100716.C:7:12:
|
||||
7 | void f() {} // { dg-line Af }
|
||||
| ^
|
||||
• candidate expects 0 arguments, 1 provided
|
||||
pr100716.C:37:13: error: no matching function for call to ‘A<int>::g()’
|
||||
37 | A<int>().g(); // { dg-error "no matching function for call to 'A<int>::g\\(\\)'" }
|
||||
| ~~~~~~~~~~^~
|
||||
• there is 1 candidate
|
||||
• candidate 1: ‘template<class U> void A<T>::g(U) [with T = int]’
|
||||
pr100716.C:10:12:
|
||||
10 | void g(U) {} // { dg-line Ag }
|
||||
| ^
|
||||
• candidate expects 1 argument, 0 provided
|
||||
pr100716.C:40:13: error: no matching function for call to ‘B<int>::f()’
|
||||
40 | B<int>().f(); // { dg-error "no matching function for call to 'B<int>::f\\(\\)'" }
|
||||
| ~~~~~~~~~~^~
|
||||
• there is 1 candidate
|
||||
• candidate 1: ‘template<class U> void B<T>::f(U) [with T = int]’
|
||||
pr100716.C:17:12:
|
||||
17 | void f(U) {} // { dg-line Bf }
|
||||
| ^
|
||||
• candidate expects 1 argument, 0 provided
|
||||
pr100716.C:43:13: error: no matching function for call to ‘B<int>::g()’
|
||||
43 | B<int>().g(); // { dg-error "no matching function for call to 'B<int>::g\\(\\)'" }
|
||||
| ~~~~~~~~~~^~
|
||||
• there is 1 candidate
|
||||
• candidate 1: ‘template<class U> void B<T>::g(U, T) [with T = int]’
|
||||
pr100716.C:20:12:
|
||||
20 | void g(U, T) {} // { dg-line Bg }
|
||||
| ^
|
||||
• candidate expects 2 arguments, 0 provided
|
||||
pr100716.C:46:15: error: no matching function for call to ‘B<float>::g(int)’
|
||||
46 | B<float>().g(0); // { dg-error "no matching function for call to 'B<float>::g\\(int\\)'" }
|
||||
| ~~~~~~~~~~~~^~~
|
||||
• there is 1 candidate
|
||||
• candidate 1: ‘template<class U> void B<T>::g(U, T) [with T = float]’
|
||||
pr100716.C:20:12:
|
||||
20 | void g(U, T) {} // { dg-line Bg }
|
||||
| ^
|
||||
• candidate expects 2 arguments, 1 provided
|
||||
pr100716.C:49:8: error: no matching function for call to ‘C::f()’
|
||||
49 | C().f(); // { dg-error "no matching function for call to 'C::f\\(\\)'" }
|
||||
| ~~~~~^~
|
||||
• there is 1 candidate
|
||||
• candidate 1: ‘template<class U> void C::f(U)’
|
||||
pr100716.C:26:10:
|
||||
26 | void f(U) {} // { dg-line Cf }
|
||||
| ^
|
||||
• candidate expects 1 argument, 0 provided
|
||||
pr100716.C:52:8: error: no matching function for call to ‘C::g(int)’
|
||||
52 | C().g(0); // { dg-error "no matching function for call to 'C::g\\(int\\)'" }
|
||||
| ~~~~~^~~
|
||||
• there is 1 candidate
|
||||
• candidate 1: ‘template<class U> void C::g()’
|
||||
pr100716.C:29:10:
|
||||
29 | void g() {} // { dg-line Cg }
|
||||
| ^
|
||||
• candidate expects 0 arguments, 1 provided
|
||||
|
||||
* GNU style
|
||||
|
||||
|
|
@ -599,7 +336,7 @@ boost/container/detail/flat_tree.hpp:589:25: [ skipping 5 instantiation contex
|
|||
|
||||
* Guile backtrace, 2.0.11
|
||||
|
||||
symbols: guile-file guile-line
|
||||
symbols: guile-file, guile-line
|
||||
|
||||
Backtrace:
|
||||
In ice-9/boot-9.scm:
|
||||
|
|
@ -619,8 +356,6 @@ In /home/janneke/vc/guile/examples/gud-break.scm:
|
|||
|
||||
* Lua 5.1, 5.2, 5.3, 5.4, and LuaJIT 2.1
|
||||
|
||||
symbols: lua lua-stack
|
||||
|
||||
/usr/bin/lua: database.lua:31: assertion failed!
|
||||
stack traceback:
|
||||
[C]: in function 'assert'
|
||||
|
|
@ -755,7 +490,7 @@ Fatal error: Call to undefined function: mysql_pconnect() in db.inc on line 66
|
|||
|
||||
* Rust
|
||||
|
||||
symbols: rust rust-panic
|
||||
symbol: rust rust-panic
|
||||
|
||||
error[E0277]: `Foo` is not an iterator
|
||||
--> src/main.rs:4:16
|
||||
|
|
@ -877,7 +612,7 @@ bloofle defined( /users/wolfgang/foo.c(4) ), but never used
|
|||
|
||||
* GCOV (test coverage program)
|
||||
|
||||
symbols: gcov-file gcov-bb-file gcov-never-called-line gcov-called-line
|
||||
symbol: gcov-file gcov-bb-file gcov-never-called-line gcov-called-line
|
||||
|
||||
-: 0:Source:foo.c
|
||||
-: 0:Object:foo.bb
|
||||
|
|
|
|||
|
|
@ -265,11 +265,7 @@ document ysave-buffer
|
|||
end
|
||||
|
||||
define ybuffer-contents
|
||||
if defined_WINDOWSNT
|
||||
ydump-buffer $arg0 CONOUT$
|
||||
else
|
||||
ydump-buffer $arg0 /dev/stdout
|
||||
end
|
||||
ydump-buffer $arg0 /dev/stdout
|
||||
if $yverbose && $buf->z_byte <= 1
|
||||
yget-current-buffer-name
|
||||
printf "[Buffer \"%s\" is empty.]\n", $ycurrent_buffer_name
|
||||
|
|
|
|||
|
|
@ -1,19 +0,0 @@
|
|||
COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES -*- coding: utf-8 -*-
|
||||
|
||||
The following icons were derived from GIMP 3.2.X icons, modified for
|
||||
Emacs by Elías Gabriel Pérez <eg642616@gmail.com>.
|
||||
Copyright (C) 2026 Free Software Foundation, Inc.
|
||||
License: GNU General Public License version 3 or later (see COPYING)
|
||||
|
||||
char-for-spray.xpm char-for-spray.pbm
|
||||
char-to-fill.xpm char-to-fill.pbm
|
||||
ellipse.xpm ellipse.pbm
|
||||
eraser.xpm eraser.pbm
|
||||
fill.xpm fill.pbm
|
||||
line.xpm line.pbm
|
||||
pen.xpm pen.pbm
|
||||
poly-line.xpm poly-line.pbm
|
||||
rectangle.xpm rectangle.pbm
|
||||
spray.xpm spray.pbm
|
||||
square.xpm square.pbm
|
||||
text.xpm text.pbm
|
||||
Binary file not shown.
|
|
@ -1,281 +0,0 @@
|
|||
/* XPM */
|
||||
static char * char_for_spray_xpm[] = {
|
||||
"26 24 254 2",
|
||||
" c None",
|
||||
". c #A1A39E",
|
||||
"+ c #CDCECC",
|
||||
"@ c #CFD0CD",
|
||||
"# c #CDCDCB",
|
||||
"$ c #A1A29F",
|
||||
"% c #E1E1DF",
|
||||
"& c #CCCEC8",
|
||||
"* c #C8CAC4",
|
||||
"= c #E0E1DF",
|
||||
"- c #959691",
|
||||
"; c #E4E5E3",
|
||||
"> c #CACCC7",
|
||||
", c #BDBEBA",
|
||||
"' c #ABADA9",
|
||||
") c #BDBFBB",
|
||||
"! c #939792",
|
||||
"~ c #E6E7E4",
|
||||
"{ c #CCCEC9",
|
||||
"] c #575856",
|
||||
"^ c #333432",
|
||||
"/ c #444543",
|
||||
"( c #212120",
|
||||
"_ c #4E4E4C",
|
||||
": c #CBCDC8",
|
||||
"< c #959792",
|
||||
"[ c #E7E8E5",
|
||||
"} c #CED0CB",
|
||||
"| c #282827",
|
||||
"1 c #959793",
|
||||
"2 c #E8E9E6",
|
||||
"3 c #D0D2CD",
|
||||
"4 c #9A9C98",
|
||||
"5 c #3B3B3A",
|
||||
"6 c #2F302F",
|
||||
"7 c #373837",
|
||||
"8 c #141413",
|
||||
"9 c #767775",
|
||||
"0 c #CDCFCA",
|
||||
"a c #000000",
|
||||
"b c #C9CBC6",
|
||||
"c c #E9EAE7",
|
||||
"d c #C7C9C4",
|
||||
"e c #090909",
|
||||
"f c #AAACA8",
|
||||
"g c #D2D4CF",
|
||||
"h c #3C3D3B",
|
||||
"i c #737472",
|
||||
"j c #CFD1CC",
|
||||
"k c #959893",
|
||||
"l c #EAEBE9",
|
||||
"m c #C0C1BD",
|
||||
"n c #050505",
|
||||
"o c #BEBEBB",
|
||||
"p c #D5D6D2",
|
||||
"q c #A5A6A3",
|
||||
"r c #060606",
|
||||
"s c #757573",
|
||||
"t c #D2D3CF",
|
||||
"u c #8B8B89",
|
||||
"v c #2E2E2D",
|
||||
"w c #393938",
|
||||
"x c #B4B4B1",
|
||||
"y c #DDDEDC",
|
||||
"z c #494D4C",
|
||||
"A c #2F3235",
|
||||
"B c #979893",
|
||||
"C c #EBECEA",
|
||||
"D c #D7D8D4",
|
||||
"E c #767774",
|
||||
"F c #1E1E1E",
|
||||
"G c #313130",
|
||||
"H c #50504F",
|
||||
"I c #5E5E5C",
|
||||
"J c #898A88",
|
||||
"K c #D4D5D1",
|
||||
"L c #5D5D5B",
|
||||
"M c #030303",
|
||||
"N c #232322",
|
||||
"O c #C4C5C2",
|
||||
"P c #686B6B",
|
||||
"Q c #4A4D4D",
|
||||
"R c #303537",
|
||||
"S c #979895",
|
||||
"T c #ECEDEB",
|
||||
"U c #D9DAD6",
|
||||
"V c #D6D7D3",
|
||||
"W c #BBBCB9",
|
||||
"X c #414140",
|
||||
"Y c #0D1012",
|
||||
"Z c #5C605F",
|
||||
"` c #575A58",
|
||||
" . c #323939",
|
||||
".. c #EDEEEC",
|
||||
"+. c #DBDCD8",
|
||||
"@. c #D8D9D5",
|
||||
"#. c #010101",
|
||||
"$. c #C4C4C1",
|
||||
"%. c #4D4D4C",
|
||||
"&. c #333839",
|
||||
"*. c #555957",
|
||||
"=. c #454948",
|
||||
"-. c #3B4040",
|
||||
";. c #2F3536",
|
||||
">. c #979A95",
|
||||
",. c #EEEFED",
|
||||
"'. c #DDDEDA",
|
||||
"). c #AFB0AD",
|
||||
"!. c #474746",
|
||||
"~. c #424241",
|
||||
"{. c #373736",
|
||||
"]. c #A8A9A6",
|
||||
"^. c #DADBD7",
|
||||
"/. c #171A1C",
|
||||
"(. c #303538",
|
||||
"_. c #7A7C7A",
|
||||
":. c #34393A",
|
||||
"<. c #525654",
|
||||
"[. c #3E4343",
|
||||
"}. c #6D716E",
|
||||
"|. c #989A95",
|
||||
"1. c #EFF0EE",
|
||||
"2. c #DFE0DD",
|
||||
"3. c #A4A4A2",
|
||||
"4. c #111110",
|
||||
"5. c #BCBDBA",
|
||||
"6. c #40403F",
|
||||
"7. c #939492",
|
||||
"8. c #DBDCDA",
|
||||
"9. c #000101",
|
||||
"0. c #293030",
|
||||
"a. c #3D4242",
|
||||
"b. c #434848",
|
||||
"c. c #484C4B",
|
||||
"d. c #353B3B",
|
||||
"e. c #B3B4B3",
|
||||
"f. c #989A97",
|
||||
"g. c #F0F1EF",
|
||||
"h. c #E1E2DF",
|
||||
"i. c #DEDFDC",
|
||||
"j. c #181818",
|
||||
"k. c #737372",
|
||||
"l. c #B5B6B3",
|
||||
"m. c #D2D3D0",
|
||||
"n. c #BABBB8",
|
||||
"o. c #696B68",
|
||||
"p. c #6B6D6D",
|
||||
"q. c #3B4141",
|
||||
"r. c #A8A9A7",
|
||||
"s. c #F1F2F0",
|
||||
"t. c #E3E4E1",
|
||||
"u. c #A9AAA8",
|
||||
"v. c #B9BAB8",
|
||||
"w. c #D3D5D2",
|
||||
"x. c #818380",
|
||||
"y. c #C1C1C1",
|
||||
"z. c #DEDEDE",
|
||||
"A. c #A4A4A3",
|
||||
"B. c #878988",
|
||||
"C. c #9A9B97",
|
||||
"D. c #F3F3F1",
|
||||
"E. c #E6E6E3",
|
||||
"F. c #939391",
|
||||
"G. c #DDDDDA",
|
||||
"H. c #E3E3E0",
|
||||
"I. c #D9D9D7",
|
||||
"J. c #D5D5D2",
|
||||
"K. c #888986",
|
||||
"L. c #CCCCCC",
|
||||
"M. c #E4E4E4",
|
||||
"N. c #BFBFBE",
|
||||
"O. c #B5B5B5",
|
||||
"P. c #7C7C7B",
|
||||
"Q. c #CBCBC9",
|
||||
"R. c #232323",
|
||||
"S. c #F4F4F2",
|
||||
"T. c #E8E8E5",
|
||||
"U. c #AEAEAC",
|
||||
"V. c #CACAC7",
|
||||
"W. c #747473",
|
||||
"X. c #737371",
|
||||
"Y. c #E7E7E4",
|
||||
"Z. c #C3C3C0",
|
||||
"`. c #A3A5A3",
|
||||
" + c #E6E6E5",
|
||||
".+ c #A3A4A2",
|
||||
"++ c #7A7B79",
|
||||
"@+ c #ADAEAD",
|
||||
"#+ c #8F8F8F",
|
||||
"$+ c #AFAFAD",
|
||||
"%+ c #8B8B88",
|
||||
"&+ c #5D5D5D",
|
||||
"*+ c #585858",
|
||||
"=+ c #9A9B98",
|
||||
"-+ c #F5F5F4",
|
||||
";+ c #EAEAE8",
|
||||
">+ c #666665",
|
||||
",+ c #2D2D2D",
|
||||
"'+ c #767675",
|
||||
")+ c #575756",
|
||||
"!+ c #6C6C6B",
|
||||
"~+ c #E7E7E5",
|
||||
"{+ c #757774",
|
||||
"]+ c #B0B3AD",
|
||||
"^+ c #A0A19E",
|
||||
"/+ c #B0B0AE",
|
||||
"(+ c #BBBBB9",
|
||||
"_+ c #6A6B68",
|
||||
":+ c #626262",
|
||||
"<+ c #C3C3C2",
|
||||
"[+ c #595959",
|
||||
"}+ c #7F7F7F",
|
||||
"|+ c #9B9D99",
|
||||
"1+ c #ECECEA",
|
||||
"2+ c #E5E5E3",
|
||||
"3+ c #C9C9C7",
|
||||
"4+ c #E3E3E1",
|
||||
"5+ c #777775",
|
||||
"6+ c #939591",
|
||||
"7+ c #B9BAB7",
|
||||
"8+ c #4D4E4D",
|
||||
"9+ c #767676",
|
||||
"0+ c #747474",
|
||||
"a+ c #777777",
|
||||
"b+ c #545454",
|
||||
"c+ c #EBEBEA",
|
||||
"d+ c #EFEFED",
|
||||
"e+ c #EEEEEC",
|
||||
"f+ c #E8E9E8",
|
||||
"g+ c #9AA2B5",
|
||||
"h+ c #BDBDBB",
|
||||
"i+ c #B7B8B5",
|
||||
"j+ c #EBEBE9",
|
||||
"k+ c #EDEDEB",
|
||||
"l+ c #C0C0BE",
|
||||
"m+ c #4B4B4A",
|
||||
"n+ c #595958",
|
||||
"o+ c #3F3F3F",
|
||||
"p+ c #969894",
|
||||
"q+ c #D0D1D0",
|
||||
"r+ c #D9D9D8",
|
||||
"s+ c #DADAD9",
|
||||
"t+ c #C6C8CB",
|
||||
"u+ c #A5ABB8",
|
||||
"v+ c #466293",
|
||||
"w+ c #818DA6",
|
||||
"x+ c #D7D7D6",
|
||||
"y+ c #D8D8D7",
|
||||
"z+ c #939390",
|
||||
"A+ c #375A8F",
|
||||
"B+ c #38598F",
|
||||
"C+ c #37578C",
|
||||
"D+ c #37588E",
|
||||
"E+ c #355887",
|
||||
" ",
|
||||
" . + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # $ ",
|
||||
" % & * * * * * * * * * * * * * * * * & = ",
|
||||
" - ; > > , ' ) > > > > > > > > > > > > > ; - ",
|
||||
" ! ~ { ] ^ / ( _ : { { { { { { { { { { { ~ ! ",
|
||||
" < [ } > } } { | 1 } } } } } } } } } } } [ < ",
|
||||
" < 2 3 4 5 6 7 8 9 3 3 3 0 a a b 3 3 3 3 2 < ",
|
||||
" 1 c d e f g g h i g g g j a a : g g g g c 1 ",
|
||||
" k l m n o p q r s p p p t a a u v w x p y z A ",
|
||||
" B C D E F G H I J D D D K a a G L M N O P Q R ",
|
||||
" S T U U U U U U U U U U V a a W U X Y Z ` z . ",
|
||||
" S ..+.+.+.+.+.+.+.+.+.+.@.a #.$.D %.&.*.=.-.;. ",
|
||||
" >.,.'.'.'.'.).!.H ~.{.].^.a /.(._.:.<.z [.}. ",
|
||||
" |.1.2.2.2.3.4.5.2.2.6.7.8.9.0.:.a.b.c.d.e.|. ",
|
||||
" f.g.h.h.i.j.k.h.h.h.l.m.h.m.n.o.e.p.q.r...f. ",
|
||||
" f.s.t.t.u.a v.t.t.t.t.t.t.w.x.y.z.A.B.t.s.f. ",
|
||||
" C.D.E.E.F.a G.E.E.H.I.E.J.K.L.M.N.O.P.Q.D.C. R.",
|
||||
" C.S.T.T.U.a V.T.T.W.X.Y.Z.`. +.+++@+#+$+D.%+&+*+",
|
||||
" =+-+;+;+;+>+,+'+)+!+~+% {+]+^+/+(+_+#+:+<+[+}+ ",
|
||||
" |+-+1+1+1+1+2+3+4+1+1+4+5+6+7+1+1+(+8+9+0+a+b+ ",
|
||||
" c+d+e+e+e+e+e+e+T f+g+h+i+j+e+e+k+l+m+n+o+ ",
|
||||
" p+q+r+s+r+r+r+t+u+v+w+x+y+r+r+r+s+y+# z+ ",
|
||||
" A+B+C+ ",
|
||||
" D+E+ "};
|
||||
Binary file not shown.
|
|
@ -1,301 +0,0 @@
|
|||
/* XPM */
|
||||
static char * char_to_fill_xpm[] = {
|
||||
"26 24 274 2",
|
||||
" c None",
|
||||
". c #A1A39E",
|
||||
"+ c #CDCECC",
|
||||
"@ c #CFD0CD",
|
||||
"# c #CDCDCB",
|
||||
"$ c #A1A29F",
|
||||
"% c #E1E1DF",
|
||||
"& c #CCCEC8",
|
||||
"* c #C8CAC4",
|
||||
"= c #E0E1DF",
|
||||
"- c #959691",
|
||||
"; c #E4E5E3",
|
||||
"> c #CACCC7",
|
||||
", c #BDBEBA",
|
||||
"' c #ABADA9",
|
||||
") c #BDBFBB",
|
||||
"! c #939792",
|
||||
"~ c #E6E7E4",
|
||||
"{ c #CCCEC9",
|
||||
"] c #575856",
|
||||
"^ c #333432",
|
||||
"/ c #444543",
|
||||
"( c #212120",
|
||||
"_ c #4E4E4C",
|
||||
": c #CBCDC8",
|
||||
"< c #959792",
|
||||
"[ c #E7E8E5",
|
||||
"} c #CED0CB",
|
||||
"| c #282827",
|
||||
"1 c #959793",
|
||||
"2 c #E8E9E6",
|
||||
"3 c #D0D2CD",
|
||||
"4 c #9A9C98",
|
||||
"5 c #3B3B3A",
|
||||
"6 c #2F302F",
|
||||
"7 c #373837",
|
||||
"8 c #141413",
|
||||
"9 c #767775",
|
||||
"0 c #CDCFCA",
|
||||
"a c #000000",
|
||||
"b c #C9CBC6",
|
||||
"c c #E9EAE7",
|
||||
"d c #C7C9C4",
|
||||
"e c #090909",
|
||||
"f c #AAACA8",
|
||||
"g c #D2D4CF",
|
||||
"h c #3C3D3B",
|
||||
"i c #737472",
|
||||
"j c #CFD1CC",
|
||||
"k c #959893",
|
||||
"l c #EAEBE9",
|
||||
"m c #C0C1BD",
|
||||
"n c #050505",
|
||||
"o c #BEBEBB",
|
||||
"p c #D5D6D2",
|
||||
"q c #A5A6A3",
|
||||
"r c #060606",
|
||||
"s c #757573",
|
||||
"t c #D2D3CF",
|
||||
"u c #8B8B89",
|
||||
"v c #2E2E2D",
|
||||
"w c #393938",
|
||||
"x c #B4B4B1",
|
||||
"y c #979893",
|
||||
"z c #EBECEA",
|
||||
"A c #D7D8D4",
|
||||
"B c #767774",
|
||||
"C c #1E1E1E",
|
||||
"D c #313130",
|
||||
"E c #50504F",
|
||||
"F c #5E5E5C",
|
||||
"G c #898A88",
|
||||
"H c #D4D5D1",
|
||||
"I c #5D5D5B",
|
||||
"J c #30312E",
|
||||
"K c #454744",
|
||||
"L c #979995",
|
||||
"M c #C7C8C6",
|
||||
"N c #979895",
|
||||
"O c #ECEDEB",
|
||||
"P c #D9DAD6",
|
||||
"Q c #D6D7D3",
|
||||
"R c #BBBCB9",
|
||||
"S c #BEBFBB",
|
||||
"T c #4D4E4C",
|
||||
"U c #353533",
|
||||
"V c #A2A3A0",
|
||||
"W c #B2B4B1",
|
||||
"X c #80817E",
|
||||
"Y c #EDEEEC",
|
||||
"Z c #DBDCD8",
|
||||
"` c #D8D9D5",
|
||||
" . c #CCCCC9",
|
||||
".. c #ADAEAB",
|
||||
"+. c #5D5E5C",
|
||||
"@. c #858684",
|
||||
"#. c #969795",
|
||||
"$. c #DDDEDC",
|
||||
"%. c #747673",
|
||||
"&. c #979A95",
|
||||
"*. c #EEEFED",
|
||||
"=. c #DDDEDA",
|
||||
"-. c #AFB0AD",
|
||||
";. c #474746",
|
||||
">. c #424241",
|
||||
",. c #373736",
|
||||
"'. c #A8A9A6",
|
||||
"). c #DADBD7",
|
||||
"!. c #0A0A09",
|
||||
"~. c #70706E",
|
||||
"{. c #787A77",
|
||||
"]. c #C5C5C4",
|
||||
"^. c #E8E8E8",
|
||||
"/. c #BABBB9",
|
||||
"(. c #747773",
|
||||
"_. c #989A95",
|
||||
":. c #EFF0EE",
|
||||
"<. c #DFE0DD",
|
||||
"[. c #A4A4A2",
|
||||
"}. c #111110",
|
||||
"|. c #BCBDBA",
|
||||
"1. c #C8CBCE",
|
||||
"2. c #4A5269",
|
||||
"3. c #808592",
|
||||
"4. c #B7BAC2",
|
||||
"5. c #363C4A",
|
||||
"6. c #6B6D6C",
|
||||
"7. c #BABAB9",
|
||||
"8. c #ADAEAD",
|
||||
"9. c #D1D1D1",
|
||||
"0. c #DBDBDB",
|
||||
"a. c #9EA09E",
|
||||
"b. c #737571",
|
||||
"c. c #989A97",
|
||||
"d. c #F0F1EF",
|
||||
"e. c #E1E2DF",
|
||||
"f. c #DEDFDC",
|
||||
"g. c #181818",
|
||||
"h. c #737372",
|
||||
"i. c #C4C7CC",
|
||||
"j. c #91A1C0",
|
||||
"k. c #8AA6D0",
|
||||
"l. c #7190BF",
|
||||
"m. c #667289",
|
||||
"n. c #A6A9AD",
|
||||
"o. c #E7E7E7",
|
||||
"p. c #F2F3F3",
|
||||
"q. c #B5B6B5",
|
||||
"r. c #C0C0C0",
|
||||
"s. c #D0D0D0",
|
||||
"t. c #D8D8D8",
|
||||
"u. c #C5C6C5",
|
||||
"v. c #757774",
|
||||
"w. c #F1F2F0",
|
||||
"x. c #E3E4E1",
|
||||
"y. c #A9AAA8",
|
||||
"z. c #B9BAB8",
|
||||
"A. c #B1B5C1",
|
||||
"B. c #AABFDE",
|
||||
"C. c #95AED0",
|
||||
"D. c #7F868F",
|
||||
"E. c #D2D3D3",
|
||||
"F. c #F2F2F2",
|
||||
"G. c #F9F9F9",
|
||||
"H. c #797A78",
|
||||
"I. c #C7C7C6",
|
||||
"J. c #CDCDCD",
|
||||
"K. c #E0E0E0",
|
||||
"L. c #949593",
|
||||
"M. c #9A9B97",
|
||||
"N. c #F3F3F1",
|
||||
"O. c #E6E6E3",
|
||||
"P. c #939391",
|
||||
"Q. c #DDDDDA",
|
||||
"R. c #B0B4C0",
|
||||
"S. c #AFC5E3",
|
||||
"T. c #93AACC",
|
||||
"U. c #A4A5A8",
|
||||
"V. c #EAEAEA",
|
||||
"W. c #F0F0F0",
|
||||
"X. c #8B8C8A",
|
||||
"Y. c #8F908F",
|
||||
"Z. c #8E8F8E",
|
||||
"`. c #959795",
|
||||
" + c #D2D2D2",
|
||||
".+ c #D0D1D0",
|
||||
"++ c #F4F4F2",
|
||||
"@+ c #E8E8E5",
|
||||
"#+ c #AEAEAC",
|
||||
"$+ c #CACAC7",
|
||||
"%+ c #B0C5E3",
|
||||
"&+ c #94AED6",
|
||||
"*+ c #787D8A",
|
||||
"=+ c #D9DAD9",
|
||||
"-+ c #DFDFDF",
|
||||
";+ c #E6E6E6",
|
||||
">+ c #959594",
|
||||
",+ c #8D8E8C",
|
||||
"'+ c #A4A5A4",
|
||||
")+ c #CECECE",
|
||||
"!+ c #DBDBDA",
|
||||
"~+ c #A5A6A4",
|
||||
"{+ c #9A9B98",
|
||||
"]+ c #F5F5F4",
|
||||
"^+ c #EAEAE8",
|
||||
"/+ c #666665",
|
||||
"(+ c #2D2D2D",
|
||||
"_+ c #767675",
|
||||
":+ c #58617C",
|
||||
"<+ c #B0B4BC",
|
||||
"[+ c #A4A5A3",
|
||||
"}+ c #DEDEDE",
|
||||
"|+ c #AFB0AF",
|
||||
"1+ c #B1B2B1",
|
||||
"2+ c #E1E1E0",
|
||||
"3+ c #DDDDDD",
|
||||
"4+ c #D3D3D3",
|
||||
"5+ c #757673",
|
||||
"6+ c #9B9D99",
|
||||
"7+ c #ECECEA",
|
||||
"8+ c #E5E5E3",
|
||||
"9+ c #C9C9C7",
|
||||
"0+ c #AEB2BF",
|
||||
"a+ c #93ADD5",
|
||||
"b+ c #C4C6CE",
|
||||
"c+ c #C3C3C1",
|
||||
"d+ c #C8C8C7",
|
||||
"e+ c #F8F8F8",
|
||||
"f+ c #F7F7F7",
|
||||
"g+ c #EDEDED",
|
||||
"h+ c #E3E3E3",
|
||||
"i+ c #D9D9D9",
|
||||
"j+ c #D7D7D7",
|
||||
"k+ c #777875",
|
||||
"l+ c #EBEBEA",
|
||||
"m+ c #EFEFED",
|
||||
"n+ c #EEEEEC",
|
||||
"o+ c #BEC2CC",
|
||||
"p+ c #9AADCF",
|
||||
"q+ c #8AA0C8",
|
||||
"r+ c #CCCED4",
|
||||
"s+ c #B4B4B2",
|
||||
"t+ c #EFEFEF",
|
||||
"u+ c #FAFAFA",
|
||||
"v+ c #F3F3F3",
|
||||
"w+ c #E1E2E1",
|
||||
"x+ c #9C9D9B",
|
||||
"y+ c #656764",
|
||||
"z+ c #969894",
|
||||
"A+ c #D9D9D8",
|
||||
"B+ c #DADAD9",
|
||||
"C+ c #CECFD2",
|
||||
"D+ c #A6ABBA",
|
||||
"E+ c #AAAEBD",
|
||||
"F+ c #D1D2D3",
|
||||
"G+ c #BBBBBA",
|
||||
"H+ c #CFCFCF",
|
||||
"I+ c #DCDCDC",
|
||||
"J+ c #EAEBEA",
|
||||
"K+ c #C6C7C6",
|
||||
"L+ c #7A7A78",
|
||||
"M+ c #838583",
|
||||
"N+ c #E6E6E5",
|
||||
"O+ c #E1E1E1",
|
||||
"P+ c #D6D6D5",
|
||||
"Q+ c #979896",
|
||||
"R+ c #636561",
|
||||
"S+ c #50534B",
|
||||
"T+ c #595C57",
|
||||
"U+ c #A1A3A1",
|
||||
"V+ c #DDDEDD",
|
||||
"W+ c #6D6E6B",
|
||||
"X+ c #50534C",
|
||||
"Y+ c #4F524A",
|
||||
" ",
|
||||
" . + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # $ ",
|
||||
" % & * * * * * * * * * * * * * * * * & = ",
|
||||
" - ; > > , ' ) > > > > > > > > > > > > > ; - ",
|
||||
" ! ~ { ] ^ / ( _ : { { { { { { { { { { { ~ ! ",
|
||||
" < [ } > } } { | 1 } } } } } } } } } } } [ < ",
|
||||
" < 2 3 4 5 6 7 8 9 3 3 3 0 a a b 3 3 3 3 2 < ",
|
||||
" 1 c d e f g g h i g g g j a a : g g g g c 1 ",
|
||||
" k l m n o p q r s p p p t a a u v w x p l k ",
|
||||
" y z A B C D E F G A A A H a a D I J K L M - ",
|
||||
" N O P P P P P P P P P P Q a a R S T U V W X ",
|
||||
" N Y Z Z Z Z Z Z Z Z Z Z ` a a ...+.@.#.$.%. ",
|
||||
" &.*.=.=.=.=.-.;.E >.,.'.).a !.~.{.].^./.+ (. ",
|
||||
" _.:.<.<.<.[.}.|.$.1.2.3.4.5.6.7.8.].9.0.a.b. ",
|
||||
" c.d.e.e.f.g.h.e.i.j.k.l.m.n.o.p.q.r.s.t.u.v. ",
|
||||
" c.w.x.x.y.a z.x.A.B.C.D.E.F.G.t.H.@.I.J.K.L. ",
|
||||
" M.N.O.O.P.a Q.O.R.S.T.U.V.K.W.X.Y.Z.`. +9..+H. ",
|
||||
" M.++@+@+#+a $+@+A.%+&+*+=+-+;+>+,+G '+t.)+!+~+ ",
|
||||
" {+]+^+^+^+/+(+_+:+%+&+<+[+;+}+K.|+1+2+3+4+ + +5+",
|
||||
" 6+]+7+7+7+7+8+9+0+S.a+b+c+d+-+;+e+f+g+h+i+j+h+k+",
|
||||
" l+m+n+n+n+n+n+o+p+q+r+8+s+3+3+t+u+v+V.o.w+x+y+",
|
||||
" z+.+A+B+A+A+A+C+D+E+F+A+G+H+I+h+f+G.J+K+L+ ",
|
||||
" M+N+O+F.P+Q+R+ ",
|
||||
" S+S+T+U+V+x+W+X+Y+S+ "};
|
||||
Binary file not shown.
|
|
@ -1,29 +0,0 @@
|
|||
/* XPM */
|
||||
static char * ellipse_xpm[] = {
|
||||
"24 24 2 1",
|
||||
" c None",
|
||||
". c #204A88",
|
||||
" ",
|
||||
" ....... ",
|
||||
" ........... ",
|
||||
" ... ... ",
|
||||
" .. .. ",
|
||||
" .. .. ",
|
||||
" .. .. ",
|
||||
" .. .. ",
|
||||
" .. .. ",
|
||||
" .. .. ",
|
||||
" .. .. ",
|
||||
" .. .. ",
|
||||
" .. .. ",
|
||||
" .. .. ",
|
||||
" .. .. ",
|
||||
" .. .. ",
|
||||
" .. .. ",
|
||||
" .. .. ",
|
||||
" .. .. ",
|
||||
" ... ... ",
|
||||
" ........... ",
|
||||
" ....... ",
|
||||
" ",
|
||||
" "};
|
||||
Binary file not shown.
|
|
@ -1,138 +0,0 @@
|
|||
/* XPM */
|
||||
static char * eraser_xpm[] = {
|
||||
"24 24 111 2",
|
||||
" c None",
|
||||
". c #ED2F2F",
|
||||
"+ c #EF2929",
|
||||
"@ c #EF2C2B",
|
||||
"# c #ED3030",
|
||||
"$ c #EE2C2C",
|
||||
"% c #EF6968",
|
||||
"& c #EDD0CC",
|
||||
"* c #EDD6D1",
|
||||
"= c #EDCFCB",
|
||||
"- c #EE5252",
|
||||
"; c #EF3535",
|
||||
"> c #EDCEC8",
|
||||
", c #E4B6AE",
|
||||
"' c #E1ABA2",
|
||||
") c #E1ACA2",
|
||||
"! c #EDCFCA",
|
||||
"~ c #F28D8B",
|
||||
"{ c #EF2D2D",
|
||||
"] c #EF2E2E",
|
||||
"^ c #EEA29F",
|
||||
"/ c #EAC5BE",
|
||||
"( c #E2ABA2",
|
||||
"_ c #E6BBB3",
|
||||
": c #EEC5C2",
|
||||
"< c #F49491",
|
||||
"[ c #F03F3E",
|
||||
"} c #EE5857",
|
||||
"| c #EDD1CC",
|
||||
"1 c #E3AEA5",
|
||||
"2 c #E2AAA1",
|
||||
"3 c #E2ABA1",
|
||||
"4 c #ECCEC9",
|
||||
"5 c #F3A2A0",
|
||||
"6 c #F59290",
|
||||
"7 c #F05453",
|
||||
"8 c #F02F2E",
|
||||
"9 c #EFC3BF",
|
||||
"0 c #E6BAB3",
|
||||
"a c #E3A9A1",
|
||||
"b c #EEC5C1",
|
||||
"c c #F5908D",
|
||||
"d c #F48C8A",
|
||||
"e c #ED2E2E",
|
||||
"f c #ED2C2C",
|
||||
"g c #EF8B89",
|
||||
"h c #EBC9C3",
|
||||
"i c #E3A9A0",
|
||||
"j c #E3AAA0",
|
||||
"k c #EDCDC8",
|
||||
"l c #F49F9D",
|
||||
"m c #F58F8C",
|
||||
"n c #F15F5E",
|
||||
"o c #DB2B2B",
|
||||
"p c #EF4242",
|
||||
"q c #EDD1CB",
|
||||
"r c #E5B0A8",
|
||||
"s c #E4A8A0",
|
||||
"t c #E7B9B2",
|
||||
"u c #EFC4C0",
|
||||
"v c #F68C8A",
|
||||
"w c #F68A88",
|
||||
"x c #EC302F",
|
||||
"y c #F02E2E",
|
||||
"z c #F0B3B0",
|
||||
"A c #E9BEB6",
|
||||
"B c #E5A89F",
|
||||
"C c #E5A99F",
|
||||
"D c #EDCEC9",
|
||||
"E c #F49D9A",
|
||||
"F c #F68B89",
|
||||
"G c #F26463",
|
||||
"H c #DC2B2B",
|
||||
"I c #EE2A2A",
|
||||
"J c #EDD5D1",
|
||||
"K c #E6A8A1",
|
||||
"L c #E5A79F",
|
||||
"M c #E8B8B1",
|
||||
"N c #F78886",
|
||||
"O c #F68886",
|
||||
"P c #EC3131",
|
||||
"Q c #EDD2CD",
|
||||
"R c #F59794",
|
||||
"S c #F78785",
|
||||
"T c #F46766",
|
||||
"U c #E32C2C",
|
||||
"V c #FB7575",
|
||||
"W c #FA7776",
|
||||
"X c #FA7877",
|
||||
"Y c #FA7979",
|
||||
"Z c #FA7A7A",
|
||||
"` c #F97C7B",
|
||||
" . c #F97D7C",
|
||||
".. c #F97E7D",
|
||||
"+. c #F97F7E",
|
||||
"@. c #F88180",
|
||||
"#. c #F88281",
|
||||
"$. c #F88382",
|
||||
"%. c #F88583",
|
||||
"&. c #F78684",
|
||||
"*. c #EC3636",
|
||||
"=. c #FB7474",
|
||||
"-. c #F56A68",
|
||||
";. c #E52B2B",
|
||||
">. c #EE2B2B",
|
||||
",. c #F86363",
|
||||
"'. c #F77D7C",
|
||||
"). c #ED3636",
|
||||
"!. c #A01B1B",
|
||||
"~. c #ED2B2B",
|
||||
"{. c #C82727",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" . + + + + + + + + + + @ # ",
|
||||
" $ % & * * * * * * * * * = - ",
|
||||
" ; > , ' ' ' ' ' ' ' ' ) ! ~ { ",
|
||||
" ] ^ / ( ( ( ( ( ( ( ( ( _ : < [ ",
|
||||
" } | 1 2 2 2 2 2 2 2 2 3 4 5 6 7 ",
|
||||
" 8 9 0 a a a a a a a a a 0 b c d e ",
|
||||
" f g h i i i i i i i i i j k l m n o ",
|
||||
" p q r s s s s s s s s s t u v w x ",
|
||||
" y z A B B B B B B B B B C D E F G H ",
|
||||
" I J K L L L L L L L L L M 9 N O P ",
|
||||
" + * * * * * * * * * * * Q R S T U ",
|
||||
" + V W X Y Z ` ...+.@.#.$.%.&.*. ",
|
||||
" + =.V W X Y Z ` ...+.@.#.$.-.;. ",
|
||||
" >.,.=.V W X Y Z ` ...+.@.'.).!. ",
|
||||
" ~.+ + + + + + + + + + + ~.{. ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" "};
|
||||
Binary file not shown.
|
|
@ -1,186 +0,0 @@
|
|||
/* XPM */
|
||||
static char * fill_xpm[] = {
|
||||
"24 24 159 2",
|
||||
" c None",
|
||||
". c #555753",
|
||||
"+ c #585A56",
|
||||
"@ c #595A57",
|
||||
"# c #555653",
|
||||
"$ c #5A5C59",
|
||||
"% c #9FA09F",
|
||||
"& c #A8A9A8",
|
||||
"* c #595B57",
|
||||
"= c #5C5F5B",
|
||||
"- c #565854",
|
||||
"; c #E3E3E2",
|
||||
"> c #F2F2F2",
|
||||
", c #F6F6F6",
|
||||
"' c #676965",
|
||||
") c #595B58",
|
||||
"! c #626460",
|
||||
"~ c #D2D3D2",
|
||||
"{ c #DDDDDD",
|
||||
"] c #CBCBCB",
|
||||
"^ c #DFDFDF",
|
||||
"/ c #CDCECD",
|
||||
"( c #5A5C57",
|
||||
"_ c #5F719F",
|
||||
": c #596C9B",
|
||||
"< c #586A9A",
|
||||
"[ c #566485",
|
||||
"} c #5C5F61",
|
||||
"| c #B0B2B1",
|
||||
"1 c #FAFAFA",
|
||||
"2 c #F3F3F3",
|
||||
"3 c #D1D2D1",
|
||||
"4 c #CFCFCF",
|
||||
"5 c #C9C9C9",
|
||||
"6 c #F5F5F5",
|
||||
"7 c #777976",
|
||||
"8 c #5E709F",
|
||||
"9 c #8B9FC4",
|
||||
"0 c #A0BCE3",
|
||||
"a c #8DB2E2",
|
||||
"b c #6E92C2",
|
||||
"c c #5C636E",
|
||||
"d c #838684",
|
||||
"e c #F4F4F4",
|
||||
"f c #FDFDFD",
|
||||
"g c #E9E9E9",
|
||||
"h c #D6D6D6",
|
||||
"i c #D3D3D3",
|
||||
"j c #CCCCCC",
|
||||
"k c #D7D7D7",
|
||||
"l c #E0E0E0",
|
||||
"m c #5B6D9C",
|
||||
"n c #BACFEB",
|
||||
"o c #A4C0E5",
|
||||
"p c #677589",
|
||||
"q c #666866",
|
||||
"r c #D6D7D6",
|
||||
"s c #FBFBFB",
|
||||
"t c #F7F7F7",
|
||||
"u c #FCFCFC",
|
||||
"v c #EEEEEE",
|
||||
"w c #858683",
|
||||
"x c #575855",
|
||||
"y c #838582",
|
||||
"z c #D1D1D1",
|
||||
"A c #D0D0D0",
|
||||
"B c #C8C8C8",
|
||||
"C c #F0F0F0",
|
||||
"D c #838481",
|
||||
"E c #C0D5F0",
|
||||
"F c #A3BEE2",
|
||||
"G c #585B5B",
|
||||
"H c #E5E5E5",
|
||||
"I c #ECECEC",
|
||||
"J c #8D8E8B",
|
||||
"K c #666865",
|
||||
"L c #8A8B8A",
|
||||
"M c #6E6F6D",
|
||||
"N c #7E807D",
|
||||
"O c #D4D4D4",
|
||||
"P c #CDCDCD",
|
||||
"Q c #EDEEED",
|
||||
"R c #5D5F5B",
|
||||
"S c #A6C3E9",
|
||||
"T c #57637D",
|
||||
"U c #90918E",
|
||||
"V c #E4E4E4",
|
||||
"W c #6D6E6B",
|
||||
"X c #8B8C8B",
|
||||
"Y c #BBBBBB",
|
||||
"Z c #A3A4A3",
|
||||
"` c #666864",
|
||||
" . c #D8D8D8",
|
||||
".. c #A8AAA7",
|
||||
"+. c #A6C2E9",
|
||||
"@. c #576999",
|
||||
"#. c #5A5B58",
|
||||
"$. c #E2E2E2",
|
||||
"%. c #DCDCDC",
|
||||
"&. c #EBEBEB",
|
||||
"*. c #8D8E8C",
|
||||
"=. c #6B6C6A",
|
||||
"-. c #9FA09E",
|
||||
";. c #747673",
|
||||
">. c #898B88",
|
||||
",. c #D5D5D5",
|
||||
"'. c #A5C2E8",
|
||||
"). c #7B7D7A",
|
||||
"!. c #969895",
|
||||
"~. c #727470",
|
||||
"{. c #8C8D8B",
|
||||
"]. c #E1E1E1",
|
||||
"^. c #D9D9D9",
|
||||
"/. c #D2D2D2",
|
||||
"(. c #CACACA",
|
||||
"_. c #BFC0BF",
|
||||
":. c #5B5C58",
|
||||
"<. c #DADADA",
|
||||
"[. c #CECECE",
|
||||
"}. c #5B5D58",
|
||||
"|. c #A4C1E7",
|
||||
"1. c #6D6F6C",
|
||||
"2. c #F8F8F8",
|
||||
"3. c #EFEFEF",
|
||||
"4. c #FEFEFE",
|
||||
"5. c #EAEAEA",
|
||||
"6. c #E3E3E3",
|
||||
"7. c #5A5C58",
|
||||
"8. c #5D6F9E",
|
||||
"9. c #A2B6D7",
|
||||
"0. c #92ACD4",
|
||||
"a. c #5A6D9D",
|
||||
"b. c #595B56",
|
||||
"c. c #C7C7C6",
|
||||
"d. c #E7E7E7",
|
||||
"e. c #EDEDED",
|
||||
"f. c #C9CAC9",
|
||||
"g. c #5F605C",
|
||||
"h. c #5C6E9D",
|
||||
"i. c #5B6D9D",
|
||||
"j. c #646662",
|
||||
"k. c #F9F9F9",
|
||||
"l. c #797A77",
|
||||
"m. c #5B5C59",
|
||||
"n. c #B6B7B6",
|
||||
"o. c #E8E8E8",
|
||||
"p. c #A3A5A3",
|
||||
"q. c #5D5F5C",
|
||||
"r. c #F4F4F3",
|
||||
"s. c #DBDBDB",
|
||||
"t. c #CFCFCE",
|
||||
"u. c #666763",
|
||||
"v. c #535650",
|
||||
"w. c #535652",
|
||||
"x. c #838683",
|
||||
"y. c #F6F7F6",
|
||||
"z. c #E0E0DF",
|
||||
"A. c #797A76",
|
||||
"B. c #50554D",
|
||||
" ",
|
||||
" . . . . ",
|
||||
" . . . . ",
|
||||
" . + @ . ",
|
||||
" # $ % & * . ",
|
||||
" = - ; > , ' . ",
|
||||
" ) ! ~ * { ] ^ / ( . ",
|
||||
" _ : < < < [ } | 1 2 + 3 4 5 6 7 # ",
|
||||
" 8 9 0 a b c d e f 2 g + h i j k l . ",
|
||||
" m n o p q r s t u v w x y z A B C D ",
|
||||
" < E F G H v ^ I s J K L M N O P z Q R ",
|
||||
" < E S T U 6 h V > W X Y Z ` .z 5 g .. ",
|
||||
" < E +.@.#.$.l %.&.*.=.-.;.>.%.,.P j e ! ",
|
||||
" < E '.< ).t ,.$.I !.~.{.$.].^./.(.$._.* ",
|
||||
" < E '.< :.,.$.<.g t s 2 I H { h [.P > }. ",
|
||||
" < E |.< 1.2.O ].3.4.2.C g ].<.,.5.6.7. ",
|
||||
" 8.9.0.a. b.c.H ^.d.6 u e e.H g 2.f.g. ",
|
||||
" h.i. j.t O ^ e.u k.2 k.5.l.m. ",
|
||||
" + n.o.k H e 4.k.p.R ",
|
||||
" q.r.s.o.1 t.u.v. ",
|
||||
" w.x.y.z.A.* ",
|
||||
" - ( #.B. ",
|
||||
" ",
|
||||
" "};
|
||||
Binary file not shown.
|
|
@ -1,29 +0,0 @@
|
|||
/* XPM */
|
||||
static char * line_xpm[] = {
|
||||
"24 24 2 1",
|
||||
" c None",
|
||||
". c #204A88",
|
||||
" ",
|
||||
" . ",
|
||||
" ... ",
|
||||
" ... ",
|
||||
" ... ",
|
||||
" ... ",
|
||||
" ... ",
|
||||
" ... ",
|
||||
" ... ",
|
||||
" ... ",
|
||||
" ... ",
|
||||
" ... ",
|
||||
" ... ",
|
||||
" ... ",
|
||||
" ... ",
|
||||
" ... ",
|
||||
" ... ",
|
||||
" ... ",
|
||||
" ... ",
|
||||
" ... ",
|
||||
" ... ",
|
||||
" ... ",
|
||||
" . ",
|
||||
" "};
|
||||
Binary file not shown.
|
|
@ -1,130 +0,0 @@
|
|||
/* XPM */
|
||||
static char * pen_xpm[] = {
|
||||
"24 24 103 2",
|
||||
" c None",
|
||||
". c #683907",
|
||||
"+ c #764108",
|
||||
"@ c #6B3B07",
|
||||
"# c #673907",
|
||||
"$ c #985B1B",
|
||||
"% c #854A0A",
|
||||
"& c #9C652C",
|
||||
"* c #D48E45",
|
||||
"= c #6B3D0D",
|
||||
"- c #673908",
|
||||
"; c #95632D",
|
||||
"> c #E49745",
|
||||
", c #996731",
|
||||
"' c #885C2D",
|
||||
") c #E79137",
|
||||
"! c #B67836",
|
||||
"~ c #71471B",
|
||||
"{ c #7B5226",
|
||||
"] c #D48839",
|
||||
"^ c #BB6C19",
|
||||
"/ c #8C653A",
|
||||
"( c #693A09",
|
||||
"_ c #764D1F",
|
||||
": c #C1803B",
|
||||
"< c #C97113",
|
||||
"[ c #956430",
|
||||
"} c #7C5021",
|
||||
"| c #734719",
|
||||
"1 c #AF763C",
|
||||
"2 c #DB7C18",
|
||||
"3 c #985916",
|
||||
"4 c #876239",
|
||||
"5 c #6A3B09",
|
||||
"6 c #6E4213",
|
||||
"7 c #9B6D3C",
|
||||
"8 c #E8851D",
|
||||
"9 c #A45B0D",
|
||||
"0 c #785631",
|
||||
"a c #86541E",
|
||||
"b c #837868",
|
||||
"c c #897862",
|
||||
"d c #CB7B27",
|
||||
"e c #B6640E",
|
||||
"f c #7D5223",
|
||||
"g c #976632",
|
||||
"h c #8A8C88",
|
||||
"i c #B2B3B1",
|
||||
"j c #AEAFAC",
|
||||
"k c #8A8A83",
|
||||
"l c #845B2E",
|
||||
"m c #966A3B",
|
||||
"n c #70400D",
|
||||
"o c #92948F",
|
||||
"p c #F4F4F4",
|
||||
"q c #E7E7E7",
|
||||
"r c #ADADAC",
|
||||
"s c #898982",
|
||||
"t c #845A2B",
|
||||
"u c #6D3C07",
|
||||
"v c #8B8E89",
|
||||
"w c #C8C8C7",
|
||||
"x c #F9F9F9",
|
||||
"y c #C6C6C6",
|
||||
"z c #A3A3A3",
|
||||
"A c #9FA19D",
|
||||
"B c #868073",
|
||||
"C c #8B8D88",
|
||||
"D c #F6F6F6",
|
||||
"E c #E0E0E0",
|
||||
"F c #AFAFAF",
|
||||
"G c #A6A7A5",
|
||||
"H c #8C8E89",
|
||||
"I c #898D88",
|
||||
"J c #C1C2C0",
|
||||
"K c #F8F8F8",
|
||||
"L c #BBBBBB",
|
||||
"M c #9E9F9D",
|
||||
"N c #8B8C88",
|
||||
"O c #1E1E1E",
|
||||
"P c #3E3E3D",
|
||||
"Q c #595958",
|
||||
"R c #A2A2A2",
|
||||
"S c #999A98",
|
||||
"T c #161616",
|
||||
"U c #757575",
|
||||
"V c #848484",
|
||||
"W c #3F3F3F",
|
||||
"X c #202020",
|
||||
"Y c #6E706B",
|
||||
"Z c #000000",
|
||||
"` c #1A1A1A",
|
||||
" . c #929292",
|
||||
".. c #484848",
|
||||
"+. c #242424",
|
||||
"@. c #101010",
|
||||
"#. c #0D0D0D",
|
||||
"$. c #2B2B2B",
|
||||
"%. c #3B3B3B",
|
||||
"&. c #303030",
|
||||
"*. c #0A0A0A",
|
||||
"=. c #141414",
|
||||
"-. c #0E0E0E",
|
||||
" ",
|
||||
" . ",
|
||||
" . + @ ",
|
||||
" # $ % ",
|
||||
" # & * = ",
|
||||
" - ; > , # ",
|
||||
" # ' ) ! ~ ",
|
||||
" # { ] ^ / ( ",
|
||||
" # _ : < [ } ",
|
||||
" # | 1 2 3 4 5 ",
|
||||
" 6 7 8 9 0 a @ ",
|
||||
" b c d e f g @ ",
|
||||
" h i j k l m n ",
|
||||
" o p q r s t u ",
|
||||
" v w x y z A B ",
|
||||
" C D E F G H ",
|
||||
" I J K L M N ",
|
||||
" O P Q R S C ",
|
||||
" T U V W X Y ",
|
||||
" Z ` .z ..+.@. ",
|
||||
" Z Z #.$.%.&.T ",
|
||||
" Z Z Z *.=.-.Z ",
|
||||
" Z Z Z Z Z Z Z ",
|
||||
" "};
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue