Compare commits
4 commits
master
...
scratch/el
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c2ff96c52a | ||
|
|
269980dbbc | ||
|
|
f223ca0318 | ||
|
|
b8357df072 |
|
|
@ -21,9 +21,6 @@
|
|||
(electric-quote-comment . nil)
|
||||
(electric-quote-string . nil)
|
||||
(mode . bug-reference-prog)))
|
||||
(c-ts-mode . ((c-ts-mode-indent-style . gnu)
|
||||
(indent-tabs-mode . t)
|
||||
(mode . bug-reference-prog)))
|
||||
(log-edit-mode . ((log-edit-font-lock-gnu-style . t)
|
||||
(log-edit-setup-add-author . t)
|
||||
(vc-git-log-edit-summary-target-len . 50)))
|
||||
|
|
|
|||
12
CONTRIBUTE
|
|
@ -110,7 +110,7 @@ admin/notes/bug-triage.
|
|||
|
||||
Any change that matters to end-users should have an entry in etc/NEWS.
|
||||
Try to start each NEWS entry with a sentence that summarizes the entry
|
||||
and takes just one line -- this will allow reading NEWS in Outline
|
||||
and takes just one line -- this will allow to read NEWS in Outline
|
||||
mode after hiding the body of each entry.
|
||||
|
||||
Doc-strings should be updated together with the code.
|
||||
|
|
@ -123,7 +123,7 @@ Think about whether your change requires updating the manuals. If you
|
|||
know it does not, mark the NEWS entry with "---". If you know
|
||||
that *all* the necessary documentation updates have been made as part
|
||||
of your changes or those by others, mark the entry with "+++".
|
||||
Otherwise, do not mark it.
|
||||
Otherwise do not mark it.
|
||||
|
||||
If your change requires updating the manuals to document new
|
||||
functions/commands/variables/faces, then use the proper Texinfo
|
||||
|
|
@ -321,7 +321,7 @@ them right the first time, so here are guidelines for formatting them:
|
|||
** Committing your changes.
|
||||
|
||||
When you commit changes, Git invokes several scripts that test the
|
||||
commit for validity, and may abort the commit if some of the tests
|
||||
commit for validity, and may abort the commit of some of the tests
|
||||
fail. These scripts live in the '.git/hooks/' subdirectory of the
|
||||
top-level directory of the repository, and they perform the following
|
||||
tests:
|
||||
|
|
@ -400,7 +400,7 @@ the commit to master, by starting the commit message with "Backport:".
|
|||
The gitmerge function excludes these commits from the merge to the master.
|
||||
|
||||
Some changes should not be merged to master at all, for whatever
|
||||
reason. These should be marked by including something like "Do not
|
||||
reasons. These should be marked by including something like "Do not
|
||||
merge to master" or anything that matches gitmerge-skip-regexp (see
|
||||
admin/gitmerge.el) in the commit message.
|
||||
|
||||
|
|
@ -449,8 +449,8 @@ files intended for use only with Emacs version 24.5 and later.
|
|||
|
||||
*** Useful files in the admin/ directory
|
||||
|
||||
See all the files in 'admin/notes/*'. In particular, see
|
||||
'admin/notes/newfile' and 'admin/notes/repo'.
|
||||
See all the files in admin/notes/* . In particular, see
|
||||
admin/notes/newfile, see admin/notes/repo.
|
||||
|
||||
The file admin/MAINTAINERS records the areas of interest of frequent
|
||||
Emacs contributors. If you are making changes in one of the files
|
||||
|
|
|
|||
114348
ChangeLog.4
|
|
@ -417,9 +417,9 @@ advice-on-failure:
|
|||
|
||||
sanity-check:
|
||||
@[ -f .no-advice-on-failure ] && exit 0; true
|
||||
@v=`src/emacs${EXEEXT} --batch --eval \
|
||||
@v=$$(src/emacs${EXEEXT} --batch --eval \
|
||||
'(progn (defun f (n) (if (= 0 n) 1 (* n (f (- n 1))))) (princ (f 10)))' \
|
||||
2> /dev/null`; \
|
||||
2> /dev/null); \
|
||||
[ "X$$v" = "X3628800" ] && exit 0; \
|
||||
echo >&2 '***'; \
|
||||
echo >&2 '*** '"\"make ${make-target}\" succeeded, but Emacs is not functional."; \
|
||||
|
|
@ -1030,9 +1030,6 @@ $(foreach dir,$(distclean_dirs),$(eval $(call submake_template,$(dir),distclean)
|
|||
|
||||
distclean: $(distclean_dirs:=_distclean) clean-gsettings-schemas
|
||||
${top_distclean}
|
||||
ifeq ($(HAVE_NATIVE_COMP),yes)
|
||||
rm -rf native-lisp
|
||||
endif
|
||||
|
||||
### 'bootstrap-clean'
|
||||
### Delete everything that can be reconstructed by 'make' and that
|
||||
|
|
@ -1287,7 +1284,7 @@ PREFERRED_BRANCH = emacs-28
|
|||
preferred-branch-is-current:
|
||||
git branch | grep -q '^\* $(PREFERRED_BRANCH)$$'
|
||||
unchanged-history-files:
|
||||
x=`git diff-files --name-only $(CHANGELOG_N) $(emacslog)` && \
|
||||
x=$$(git diff-files --name-only $(CHANGELOG_N) $(emacslog)) && \
|
||||
test -z "$$x"
|
||||
|
||||
# Regular expression that matches the newest commit covered by a ChangeLog.
|
||||
|
|
|
|||
|
|
@ -182,7 +182,7 @@ files.")
|
|||
("Philip Kaludercic" "Philip K\\." "Philip K")
|
||||
("Philipp Stephani" "Philipp .*phst@google")
|
||||
("Piotr Zieliński" "Piotr Zielinski")
|
||||
("Po Lu" "Po Lu Via" "Your Name") ; looks like a mistake
|
||||
("Po Lu" "Po Lu Via") ; looks like a mistake
|
||||
("Przemysław Wojnowski" "Przemyslaw Wojnowski")
|
||||
("R. Bernstein" "rb@dustyfeet.com")
|
||||
("Rainer Schöpf" "Rainer Schoepf")
|
||||
|
|
|
|||
|
|
@ -181,7 +181,7 @@ ${charsetdir}/GB180304.map: ${charsetdir}/GB180302.map ${gb180304}
|
|||
${AM_V_GEN}$(AWK) -f ${gb180304} < $< > $@
|
||||
|
||||
${charsetdir}/JISX0201.map: ${GLIBC_CHARMAPS}/JIS_X0201.gz ${mapconv} ${compact}
|
||||
${AM_V_GEN}(${run_mapconv} $< '/^<.*[ ]\/x[0-9]/' GLIBC-1 ${compact} && \
|
||||
${AM_V_GEN}(${mapconv} $< '/^<.*[ ]\/x[0-9]/' GLIBC-1 ${compact} && \
|
||||
echo "# Generated by hand" && \
|
||||
echo "0xA1-0xDF 0xFF61" ) > $@
|
||||
|
||||
|
|
|
|||
|
|
@ -38,8 +38,7 @@
|
|||
## So that eg [A-F] as used by KANJI-DATABASE branch below works as expected.
|
||||
## Otherwise with LANG=en_US.utf8, CNS-6.map was generated with a
|
||||
## bogus entry. By experiment, LC_COLLATE=C was not enough.
|
||||
LC_ALL=C
|
||||
export LC_ALL
|
||||
export LC_ALL=C
|
||||
|
||||
BASE=`expr "$1" : '.*/\(.*\)' '|' "$1"` # basename
|
||||
FILE="admin/charsets/mapfiles/$BASE"
|
||||
|
|
|
|||
|
|
@ -68,25 +68,16 @@ General steps (for each step, check for possible errors):
|
|||
PREFERRED_BRANCH = emacs-NN
|
||||
|
||||
where NN is the version on the release branch from which you are
|
||||
producing the tarball. If NN is incorrect (which it usually is
|
||||
when starting a pretest of a new major release), update
|
||||
Makefile.in and re-run 'configure' to update Makefile.
|
||||
producing the tarball. If NN is incorrect, update Makefile.in and
|
||||
re-run 'configure' to update Makefile.
|
||||
|
||||
For the first pretest of a new major release, consider starting a
|
||||
new top-level ChangeLog.N file if the last versioned ChangeLog.N
|
||||
file is too large. A good point to start a new ChangeLog.N file
|
||||
is when the last one gets larger than 1.5 MiB. If so, start a new
|
||||
one by bumping N, and also update the line in top-level
|
||||
Makefile.in which says
|
||||
If the versioned ChangeLog.N file is too large, start a new one
|
||||
by bumping N, and also update the line in top-level Makefile.in
|
||||
which says
|
||||
|
||||
CHANGELOG_HISTORY_INDEX_MAX = N
|
||||
|
||||
by incrementing the value of N by 1; then regenerate Makefile.
|
||||
After bumping N, you need to actually create and commit
|
||||
ChangeLog.N with the updated N, otherwise "M-x authors" below will
|
||||
fail. The easiest way of creating the new ChangeLog.N is to
|
||||
rename the file ChangeLog (without the .N suffix) left over from
|
||||
the last major release (it is usually unversioned) and commit it.
|
||||
|
||||
Now:
|
||||
|
||||
|
|
@ -108,12 +99,11 @@ General steps (for each step, check for possible errors):
|
|||
the relevant entry. If a file was deleted or renamed, consider
|
||||
adding an appropriate entry to variables authors-ignored-files,
|
||||
authors-valid-file-names, or authors-renamed-files-alist in
|
||||
authors.el. If some authors are "ignored", consider adding
|
||||
entries to the author-aliases variable.
|
||||
authors.el.
|
||||
|
||||
If necessary, repeat 'C-u M-x authors' after making those changes.
|
||||
Save the "*Authors*" buffer as etc/AUTHORS.
|
||||
Check the diff looks reasonable. Maybe add more entries to
|
||||
Check the diff looks reasonable. Maybe add entries to
|
||||
authors-ambiguous-files or authors-aliases, and repeat.
|
||||
Commit any fixes to authors.el.
|
||||
|
||||
|
|
@ -179,13 +169,7 @@ General steps (for each step, check for possible errors):
|
|||
messages from TeX, but those seem to be harmless, as the result
|
||||
looks just fine.)
|
||||
|
||||
5. Copy lisp/loaddefs.el to lisp/ldefs-boot.el. After copying, edit
|
||||
ldefs-boot.el to add
|
||||
|
||||
;; no-byte-compile: t
|
||||
|
||||
to its file-local variables section, otherwise make-dist will
|
||||
complain.
|
||||
5. Copy lisp/loaddefs.el to lisp/ldefs-boot.el.
|
||||
|
||||
Commit ChangeLog.N, etc/AUTHORS, lisp/ldefs-boot.el, and the files
|
||||
changed by M-x set-version. Note that the set-version changes
|
||||
|
|
|
|||
|
|
@ -83,46 +83,6 @@ Lisp packages, Makefiles, scripts, and other software could determine
|
|||
whether they run on emba by checking for the environment variable
|
||||
EMACS_EMBA_CI.
|
||||
|
||||
* Running Emba tests locally
|
||||
|
||||
As usual in GitLab, the tests run in containers, which could be
|
||||
applied also locally. Unfortunately, the Emba container registry,
|
||||
emba.gnu.org:5050, is not accessible publicly. Instead, the container
|
||||
images must be build locally. Change the current directory to a
|
||||
recent Emacs branch, and apply the command
|
||||
|
||||
docker build --target emacs-inotify --tag emacs-inotify \
|
||||
-f test/infra/Dockerfile.emba .
|
||||
|
||||
This creates the Debian-based image emacs-inotify, based on the
|
||||
instructions in the file Dockerfile.emba. This image is good for the
|
||||
majority of tests. However, there are also other image build
|
||||
instructions like emacs-filenotify-gio, emacs-eglot, emacs-gnustep and
|
||||
emacs-native-comp-speed{0,1,2}. Use the appropriate one.
|
||||
|
||||
The image contains a directory "/checkout", which is a copy of your
|
||||
local Emacs git repository. Emacs has been built in this directory
|
||||
via "make bootstrap". In order to use the image, start a container
|
||||
like
|
||||
|
||||
docker run --interactive --env EMACS_EMBA_CI=1 --name emacs-inotify \
|
||||
emacs-inotify /bin/sh -i
|
||||
|
||||
In this container, change the current directory to "/checkout". Now
|
||||
you can apply all commands known for Emacs, like
|
||||
|
||||
cd /checkout
|
||||
make -C test files-tests.log
|
||||
|
||||
While this container runs, you can also access its filesystem from
|
||||
your local Emacs via Tramp. For example, in order to see the result
|
||||
of the above test run, open the log file in your local Emacs with
|
||||
|
||||
C-x C-f /docker:emacs-inotify:/checkout/test/lisp/files-tests.log
|
||||
|
||||
Note: On local Red Hat-based systems, use "podman" instead of "docker"
|
||||
in the shell commands and Tramp file names.
|
||||
|
||||
|
||||
This file is part of GNU Emacs.
|
||||
|
||||
|
|
|
|||
|
|
@ -340,8 +340,7 @@ git_config diff.texinfo.xfuncname \
|
|||
tailored_hooks=
|
||||
sample_hooks=
|
||||
|
||||
for hook in commit-msg pre-commit prepare-commit-msg post-commit \
|
||||
pre-push commit-msg-files.awk; do
|
||||
for hook in commit-msg pre-commit prepare-commit-msg; do
|
||||
cmp -- build-aux/git-hooks/$hook "$hooks/$hook" >/dev/null 2>&1 ||
|
||||
tailored_hooks="$tailored_hooks $hook"
|
||||
done
|
||||
|
|
|
|||
|
|
@ -1,128 +0,0 @@
|
|||
# Check the file list of GNU Emacs change log entries for each commit SHA.
|
||||
|
||||
# Copyright 2023 Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of GNU Emacs.
|
||||
|
||||
# GNU Emacs is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
# GNU Emacs is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
### Commentary:
|
||||
|
||||
# This script accepts a list of (unabbreviated) Git commit SHAs, and
|
||||
# will then iterate over them to check that any files mentioned in the
|
||||
# commit message are actually present in the commit's diff. If not,
|
||||
# it will print out the incorrect file names and return 1.
|
||||
|
||||
# You can also pass "-v reason=pre-push", which will add more-verbose
|
||||
# output, indicating the abbreviated commit SHA and first line of the
|
||||
# commit message for any improper commits.
|
||||
|
||||
### Code:
|
||||
|
||||
function get_commit_changes(commit_sha, changes, cmd, i, j, len, \
|
||||
bits, filename) {
|
||||
# Collect all the files touched in the specified commit.
|
||||
cmd = ("git show --name-status --first-parent --format= " commit_sha)
|
||||
while ((cmd | getline) > 0) {
|
||||
for (i = 2; i <= NF; i++) {
|
||||
len = split($i, bits, "/")
|
||||
for (j = 1; j <= len; j++) {
|
||||
if (j == 1)
|
||||
filename = bits[j]
|
||||
else
|
||||
filename = filename "/" bits[j]
|
||||
changes[filename] = 1
|
||||
}
|
||||
}
|
||||
}
|
||||
close(cmd)
|
||||
}
|
||||
|
||||
function check_commit_msg_files(commit_sha, verbose, changes, good, \
|
||||
cmd, msg, filenames_str, filenames, i) {
|
||||
get_commit_changes(commit_sha, changes)
|
||||
good = 1
|
||||
|
||||
cmd = ("git log -1 --format=%B " commit_sha)
|
||||
while ((cmd | getline) > 0) {
|
||||
if (verbose && ! msg)
|
||||
msg = $0
|
||||
|
||||
# Find file entries in the commit message. We look at any line
|
||||
# starting with "*" (possibly prefixed by "; ") followed by a ":",
|
||||
# possibly on a different line. If we encounter a blank line
|
||||
# without seeing a ":", then we don't treat that as a file entry.
|
||||
|
||||
# Accumulate the contents of a (possible) file entry.
|
||||
if (/^[ \t]*$/)
|
||||
filenames_str = ""
|
||||
else if (/^(; )?\*[ \t]+[[:alnum:]]/)
|
||||
filenames_str = $0
|
||||
else if (filenames_str)
|
||||
filenames_str = (filenames_str $0)
|
||||
|
||||
# We have a file entry; analyze it.
|
||||
if (filenames_str && /:/) {
|
||||
# Delete the leading "*" and any trailing information.
|
||||
sub(/^(; )?\*[ \t]+/, "", filenames_str)
|
||||
sub(/[ \t]*[[(<:].*$/, "", filenames_str)
|
||||
|
||||
# There might be multiple files listed in this entry, separated
|
||||
# by spaces (and possibly a comma). Iterate over each of them.
|
||||
split(filenames_str, filenames, ",[ \t]+")
|
||||
for (i in filenames) {
|
||||
# Remove trailing slashes from any directory entries.
|
||||
sub(/\/$/, "", filenames[i])
|
||||
|
||||
if (length(filenames[i]) && ! (filenames[i] in changes)) {
|
||||
if (good) {
|
||||
# Print a header describing the error.
|
||||
if (verbose)
|
||||
printf("In commit %s \"%s\"...\n", substr(commit_sha, 1, 10), msg)
|
||||
printf("Files listed in commit message, but not in diff:\n")
|
||||
}
|
||||
printf(" %s\n", filenames[i])
|
||||
good = 0
|
||||
}
|
||||
}
|
||||
|
||||
filenames_str = ""
|
||||
}
|
||||
}
|
||||
close(cmd)
|
||||
|
||||
return good
|
||||
}
|
||||
|
||||
BEGIN {
|
||||
if (reason == "pre-push")
|
||||
verbose = 1
|
||||
}
|
||||
|
||||
/^[a-z0-9]{40}$/ {
|
||||
if (! check_commit_msg_files($0, verbose)) {
|
||||
status = 1
|
||||
}
|
||||
}
|
||||
|
||||
END {
|
||||
if (status != 0) {
|
||||
if (reason == "pre-push")
|
||||
error_msg = "Push aborted"
|
||||
else
|
||||
error_msg = "Bad commit message"
|
||||
printf("%s; please see the file 'CONTRIBUTE'\n", error_msg)
|
||||
}
|
||||
exit status
|
||||
}
|
||||
|
|
@ -1,47 +0,0 @@
|
|||
#!/bin/sh
|
||||
# Check the file list of GNU Emacs change log entries after committing.
|
||||
|
||||
# Copyright 2023 Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of GNU Emacs.
|
||||
|
||||
# GNU Emacs is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
# GNU Emacs is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
### Commentary:
|
||||
|
||||
# This hook runs after a commit is finalized and checks that the files
|
||||
# mentioned in the commit message match the diff. We perform this in
|
||||
# the post-commit phase so that we can be sure we properly detect all
|
||||
# the files in the diff (this is difficult during the commit-msg hook,
|
||||
# since there's no cross-platform way to detect when a commit is being
|
||||
# amended).
|
||||
|
||||
# However, since this is a post-commit hook, it's too late to error
|
||||
# out and abort the commit: it's already done! As a result, this hook
|
||||
# is purely advisory, and instead we error out when trying to push
|
||||
# (see "pre-push" in this directory).
|
||||
|
||||
### Code:
|
||||
|
||||
HOOKS_DIR=`dirname "$0"`
|
||||
|
||||
# Prefer gawk if available, as it handles NUL bytes properly.
|
||||
if type gawk >/dev/null 2>&1; then
|
||||
awk="gawk"
|
||||
else
|
||||
awk="awk"
|
||||
fi
|
||||
|
||||
git rev-parse HEAD | $awk -v reason=post-commit \
|
||||
-f "$HOOKS_DIR"/commit-msg-files.awk
|
||||
|
|
@ -1,88 +0,0 @@
|
|||
#!/bin/sh
|
||||
# Check the file list of GNU Emacs change log entries before pushing.
|
||||
|
||||
# Copyright 2023 Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of GNU Emacs.
|
||||
|
||||
# GNU Emacs is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
# GNU Emacs is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
### Commentary:
|
||||
|
||||
# This hook runs before pushing a series of commits and checks that
|
||||
# the files mentioned in each commit message match the diffs. This
|
||||
# helps ensure that the resulting change logs are correct, which
|
||||
# should prevent errors when generating etc/AUTHORS.
|
||||
|
||||
# These checks also happen in the "post-commit" hook (which see), but
|
||||
# that hook can't abort a commit; it just advises the committer to fix
|
||||
# the commit so that this hook runs without errors.
|
||||
|
||||
### Code:
|
||||
|
||||
HOOKS_DIR=`dirname "$0"`
|
||||
|
||||
# Prefer gawk if available, as it handles NUL bytes properly.
|
||||
if type gawk >/dev/null 2>&1; then
|
||||
awk="gawk"
|
||||
else
|
||||
awk="awk"
|
||||
fi
|
||||
|
||||
# Standard input receives lines of the form:
|
||||
# <local ref> SP <local sha> SP <remote ref> SP <remote sha> LF
|
||||
$awk -v origin_name="$1" '
|
||||
# If the local SHA is all zeroes, ignore it.
|
||||
$2 ~ /^0{40}$/ {
|
||||
next
|
||||
}
|
||||
|
||||
# Check any lines with a valid local SHA and whose remote ref is
|
||||
# master or an emacs-NN release branch. (We want to avoid checking
|
||||
# feature or scratch branches here.)
|
||||
$2 ~ /^[a-z0-9]{40}$/ && $3 ~ /^refs\/heads\/(master|emacs-[0-9]+)$/ {
|
||||
newref = $2
|
||||
# If the remote SHA is all zeroes, this is a new object to be
|
||||
# pushed (likely a branch)...
|
||||
if ($4 ~ /^0{40}$/) {
|
||||
back = 0
|
||||
# ... Go backwards until we find a SHA on an origin branch.
|
||||
# Stop trying after 1000 commits, just in case...
|
||||
for (back = 0; back < 1000; back++) {
|
||||
cmd = ("git branch -r -l '\''" origin_name "/*'\''" \
|
||||
" --contains " newref "~" back)
|
||||
rv = (cmd | getline)
|
||||
close(cmd)
|
||||
if (rv > 0)
|
||||
break;
|
||||
}
|
||||
|
||||
cmd = ("git rev-parse " newref "~" back)
|
||||
cmd | getline oldref
|
||||
if (!(oldref ~ /^[a-z0-9]{40}$/)) {
|
||||
# The SHA is misformatted! Skip this line.
|
||||
next
|
||||
}
|
||||
close(cmd)
|
||||
} else if ($4 ~ /^[a-z0-9]{40}$/) {
|
||||
oldref = $4
|
||||
} else {
|
||||
# The SHA is misformatted! Skip this line.
|
||||
next
|
||||
}
|
||||
|
||||
# Print every SHA after oldref, up to (and including) newref.
|
||||
system("git rev-list --first-parent --reverse " oldref ".." newref)
|
||||
}
|
||||
' | $awk -v reason=pre-push -f "$HOOKS_DIR"/commit-msg-files.awk
|
||||
59
configure.ac
|
|
@ -1001,7 +1001,7 @@ AC_ARG_ENABLE([gcc-warnings],
|
|||
# however, if there is also a .tarball-version file it is probably
|
||||
# just a release imported into Git for patch management.
|
||||
gl_gcc_warnings=no
|
||||
if test -d "$srcdir"/.git && test ! -f "$srcdir"/.tarball-version; then
|
||||
if test -e "$srcdir"/.git && test ! -f "$srcdir"/.tarball-version; then
|
||||
# Clang typically identifies itself as GCC 4.2 or something similar
|
||||
# even if it is recent enough to accept the warnings we enable.
|
||||
AS_IF([test "$emacs_cv_clang" = yes],
|
||||
|
|
@ -1643,8 +1643,7 @@ case "$opsys" in
|
|||
## Motif needs -lgen.
|
||||
unixware) LIBS_SYSTEM="-lsocket -lnsl -lelf -lgen" ;;
|
||||
|
||||
# Haiku needs -lbsd for cfsetspeed.
|
||||
haiku) LIBS_SYSTEM="-lnetwork -lbsd" ;;
|
||||
haiku) LIBS_SYSTEM="-lnetwork" ;;
|
||||
esac
|
||||
|
||||
AC_SUBST([LIBS_SYSTEM])
|
||||
|
|
@ -2034,29 +2033,37 @@ if test "${with_ns}" != no; then
|
|||
ns_appresdir=${ns_appdir}/Contents/Resources
|
||||
ns_appsrc=Cocoa/Emacs.base
|
||||
ns_fontfile=macfont.o
|
||||
elif flags=`(gnustep-config --objc-flags) 2>/dev/null`; then
|
||||
elif flags=$( (gnustep-config --objc-flags) 2>/dev/null); then
|
||||
NS_IMPL_GNUSTEP=yes
|
||||
NS_GNUSTEP_CONFIG=yes
|
||||
GNU_OBJC_CFLAGS="$flags"
|
||||
LIBS_GNUSTEP=`gnustep-config --gui-libs || exit`
|
||||
LIBS_GNUSTEP=$(gnustep-config --gui-libs) || exit
|
||||
elif test -f $GNUSTEP_CONFIG_FILE; then
|
||||
NS_IMPL_GNUSTEP=yes
|
||||
dnl FIXME sourcing this several times in subshells seems inefficient.
|
||||
GNUSTEP_SYSTEM_HEADERS=`. $GNUSTEP_CONFIG_FILE \
|
||||
&& AS_ECHO(["$GNUSTEP_SYSTEM_HEADERS"])`
|
||||
GNUSTEP_SYSTEM_LIBRARIES=` . $GNUSTEP_CONFIG_FILE \
|
||||
&& AS_ECHO(["$GNUSTEP_SYSTEM_LIBRARIES"])`
|
||||
GNUSTEP_SYSTEM_HEADERS=$(
|
||||
. $GNUSTEP_CONFIG_FILE
|
||||
AS_ECHO(["$GNUSTEP_SYSTEM_HEADERS"])
|
||||
)
|
||||
GNUSTEP_SYSTEM_LIBRARIES=$(
|
||||
. $GNUSTEP_CONFIG_FILE
|
||||
AS_ECHO(["$GNUSTEP_SYSTEM_LIBRARIES"])
|
||||
)
|
||||
dnl I seemed to need these as well with GNUstep-startup 0.25.
|
||||
GNUSTEP_LOCAL_HEADERS=`. $GNUSTEP_CONFIG_FILE \
|
||||
&& AS_ECHO(["$GNUSTEP_LOCAL_HEADERS"])`
|
||||
GNUSTEP_LOCAL_LIBRARIES=`. $GNUSTEP_CONFIG_FILE \
|
||||
&& AS_ECHO(["$GNUSTEP_LOCAL_LIBRARIES"])`
|
||||
GNUSTEP_LOCAL_HEADERS=$(
|
||||
. $GNUSTEP_CONFIG_FILE
|
||||
AS_ECHO(["$GNUSTEP_LOCAL_HEADERS"])
|
||||
)
|
||||
GNUSTEP_LOCAL_LIBRARIES=$(
|
||||
. $GNUSTEP_CONFIG_FILE
|
||||
AS_ECHO(["$GNUSTEP_LOCAL_LIBRARIES"])
|
||||
)
|
||||
test "x${GNUSTEP_LOCAL_HEADERS}" != "x" && \
|
||||
GNUSTEP_LOCAL_HEADERS="-I${GNUSTEP_LOCAL_HEADERS}"
|
||||
test "x${GNUSTEP_LOCAL_LIBRARIES}" != "x" && \
|
||||
GNUSTEP_LOCAL_LIBRARIES="-L${GNUSTEP_LOCAL_LIBRARIES}"
|
||||
CPPFLAGS="$CPPFLAGS -isystem ${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
|
||||
CFLAGS="$CFLAGS -isystem ${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
|
||||
CPPFLAGS="$CPPFLAGS -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
|
||||
CFLAGS="$CFLAGS -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
|
||||
LDFLAGS="$LDFLAGS -L${GNUSTEP_SYSTEM_LIBRARIES} ${GNUSTEP_LOCAL_LIBRARIES}"
|
||||
LIBS_GNUSTEP="-lgnustep-gui -lgnustep-base -lobjc -lpthread"
|
||||
dnl GNUstep defines BASE_NATIVE_OBJC_EXCEPTIONS to 0 or 1.
|
||||
|
|
@ -3773,7 +3780,7 @@ if test "${HAVE_X11}" = "yes"; then
|
|||
AC_DEFINE([HAVE_OTF_GET_VARIATION_GLYPHS], [1],
|
||||
[Define to 1 if libotf has OTF_get_variation_glyphs.])
|
||||
fi
|
||||
if $PKG_CONFIG --atleast-version=0.9.16 libotf; then :; else
|
||||
if ! $PKG_CONFIG --atleast-version=0.9.16 libotf; then
|
||||
AC_DEFINE([HAVE_OTF_KANNADA_BUG], [1],
|
||||
[Define to 1 if libotf is affected by https://debbugs.gnu.org/28110.])
|
||||
fi
|
||||
|
|
@ -3881,7 +3888,7 @@ if test "${HAVE_BE_APP}" = "yes"; then
|
|||
AC_DEFINE([HAVE_OTF_GET_VARIATION_GLYPHS], [1],
|
||||
[Define to 1 if libotf has OTF_get_variation_glyphs.])
|
||||
fi
|
||||
if $PKG_CONFIG --atleast-version=0.9.16 libotf; then :; else
|
||||
if ! $PKG_CONFIG --atleast-version=0.9.16 libotf; then
|
||||
AC_DEFINE([HAVE_OTF_KANNADA_BUG], [1],
|
||||
[Define to 1 if libotf is affected by https://debbugs.gnu.org/28110.])
|
||||
fi
|
||||
|
|
@ -4199,7 +4206,7 @@ module_env_snippet_27="$srcdir/src/module-env-27.h"
|
|||
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"
|
||||
emacs_major_version=`AS_ECHO([$PACKAGE_VERSION]) | sed 's/[[.]].*//'`
|
||||
emacs_major_version="${PACKAGE_VERSION%%.*}"
|
||||
AC_SUBST([emacs_major_version])
|
||||
|
||||
### Emacs Lisp native compiler support
|
||||
|
|
@ -4309,16 +4316,14 @@ if test "${with_native_compilation}" != "no"; then
|
|||
# available. (We filter out the gcc4 packages, because they
|
||||
# don't support jit, and they have names like "gcc49" that
|
||||
# sort later than "gcc11".)
|
||||
PORT_PACKAGE=`port installed active | grep '^ *gcc@<:@0-9@:>@* ' | \
|
||||
PORT_PACKAGE=$(port installed active | grep '^ *gcc@<:@0-9@:>@* ' | \
|
||||
awk '{ print $1; }' | grep -v 'gcc4@<:@0-9@:>@' | \
|
||||
sort -V | tail -n 1`
|
||||
sort -V | tail -n 1)
|
||||
if test -n "$PORT_PACKAGE"; then
|
||||
emacs_val=`port contents $PORT_PACKAGE | grep libgccjit.h`
|
||||
emacs_val=`dirname $emacs_val`
|
||||
MAC_CFLAGS="-I$emacs_val"
|
||||
emacs_val=`port contents $PORT_PACKAGE | grep libgccjit.dylib`
|
||||
emacs_val=`dirname $emacs_val`
|
||||
MAC_LIBS="-L$emacs_val"
|
||||
MAC_CFLAGS="-I$(dirname $(port contents $PORT_PACKAGE | \
|
||||
grep libgccjit.h))"
|
||||
MAC_LIBS="-L$(dirname $(port contents $PORT_PACKAGE | \
|
||||
grep libgccjit.dylib))"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
|
@ -5616,7 +5621,7 @@ case $opsys in
|
|||
esac
|
||||
|
||||
case $opsys in
|
||||
gnu-* | solaris | cygwin )
|
||||
gnu-* | solaris )
|
||||
dnl FIXME Can't we test if this exists (eg /proc/$$)?
|
||||
AC_DEFINE([HAVE_PROCFS], [1], [Define if you have the /proc filesystem.])
|
||||
;;
|
||||
|
|
|
|||
|
|
@ -1245,7 +1245,6 @@ Manual}.
|
|||
These four keywords are not really variables; setting them in any
|
||||
other context has no special meaning.
|
||||
|
||||
@cindex fallback modes
|
||||
If you're editing a file across Emacs versions, and a new mode has
|
||||
been introduced to handle a file in a newer Emacs version, you can use
|
||||
several @code{mode} entries to use the new mode (called
|
||||
|
|
|
|||
|
|
@ -154,7 +154,7 @@ the buffer will be momentarily unfontified.
|
|||
@vindex redisplay-skip-fontification-on-input
|
||||
Finally, a third alternative to these variables is
|
||||
@code{redisplay-skip-fontification-on-input}. If this variable is
|
||||
non-@code{nil}, skip some fontifications if there's input pending.
|
||||
non-@code{nil}, skip some fontifications is there's input pending.
|
||||
This usually does not affect the display because redisplay is
|
||||
completely skipped anyway if input was pending, but it can make
|
||||
scrolling smoother by avoiding unnecessary fontification.
|
||||
|
|
|
|||
|
|
@ -2289,15 +2289,10 @@ behavior by using the options @code{image-auto-resize} and
|
|||
@code{image-auto-resize-on-window-resize}.
|
||||
|
||||
@findex image-transform-fit-to-window
|
||||
@kindex s w (Image mode)
|
||||
@findex image-transform-set-percent
|
||||
@kindex s p (Image mode)
|
||||
@findex image-transform-set-scale
|
||||
@kindex s s (Image mode)
|
||||
@findex image-transform-reset-to-initial
|
||||
@kindex s 0 (Image mode)
|
||||
@findex image-transform-reset-to-original
|
||||
@kindex s o (Image mode)
|
||||
To resize the image manually you can use the command
|
||||
@code{image-transform-fit-to-window} bound to @kbd{s w} that fits the
|
||||
image to both the window height and width. To scale the image to a
|
||||
|
|
@ -2358,94 +2353,6 @@ frames at once. You can go to a specific frame with @kbd{F}
|
|||
(@code{image-reverse-speed}) reverses it. The command @kbd{a 0}
|
||||
(@code{image-reset-speed}) resets the speed to the original value.
|
||||
|
||||
In addition to the above key bindings, which are specific to Image
|
||||
mode, images shown in any Emacs buffer have special key bindings when
|
||||
point is at or inside the image:
|
||||
|
||||
@table @kbd
|
||||
@cindex resize images
|
||||
@cindex image resize
|
||||
@findex image-increase-size
|
||||
@kindex i + (Image mode)
|
||||
@item i +
|
||||
Increase the image size (@code{image-increase-size}) by 20%. Prefix
|
||||
numeric argument controls the increment; the value of @var{n} means to
|
||||
multiply the size by the factor of @w{@code{1 + @var{n} / 10}}, so
|
||||
@w{@kbd{C-u 5 i +}} means to increase the size by 50%.
|
||||
|
||||
@findex image-decrease-size
|
||||
@kindex i - (Image mode)
|
||||
@item i -
|
||||
Decrease the image size (@code{image-increase-size}) by 20%. Prefix
|
||||
numeric argument controls the decrement; the value of @var{n} means to
|
||||
multiply the size by the factor of @w{@code{1 - @var{n} / 10}}, so
|
||||
@w{@kbd{C-u 3 i -}} means to decrease the size by 30%.
|
||||
|
||||
@cindex rotating images
|
||||
@cindex image rotation
|
||||
@findex image-rotate
|
||||
@kindex i r (Image mode)
|
||||
@item i r
|
||||
Rotate the image by 90 degrees clockwise (@code{image-rotate}).
|
||||
With the prefix argument, rotate by 90 degrees counter-clockwise instead.
|
||||
Note that this command is not available for sliced images.
|
||||
|
||||
@findex image-flip-horizontally
|
||||
@kindex i h (Image mode)
|
||||
@item i h
|
||||
Flip the image horizontally (@code{image-flip-horizontally}). This
|
||||
presents the image as if reflected in a vertical mirror.
|
||||
Note that this command is not available for sliced images.
|
||||
|
||||
@findex image-flip-vertically
|
||||
@kindex i v (Image mode)
|
||||
@item i v
|
||||
Flip the image vertically (@code{image-flip-vertically}). This
|
||||
presents the image as if reflected in a horizontal mirror.
|
||||
Note that this command is not available for sliced images.
|
||||
|
||||
@findex image-save
|
||||
@kindex i o (Image mode)
|
||||
@item i o
|
||||
Save the image to a file (@code{image-save}). This command prompts
|
||||
you for the name of the file to save the image.
|
||||
|
||||
@cindex cropping images
|
||||
@vindex image-crop-crop-command
|
||||
@findex image-crop
|
||||
@kindex i c (Image mode)
|
||||
@item i c
|
||||
Crop the image (@code{image-crop}). This command is available only if
|
||||
your system has an external program installed that can be used for
|
||||
cropping and cutting of images; the user option
|
||||
@code{image-crop-crop-command} determines what program to use, and
|
||||
defaults to the ImageMagick's @command{convert} program. The command
|
||||
displays the image with a rectangular frame superimposed on it, and
|
||||
lets you use the mouse to move and resize the frame. Type @kbd{m} to
|
||||
cause mouse movements to move the frame instead of resizing it; type
|
||||
@kbd{s} to move a square frame instead. When you are satisfied with
|
||||
the position and size of the cropping frame, type @kbd{@key{RET}} to
|
||||
actually crop the part under the frame; or type @kbd{q} to exit
|
||||
without cropping. You can then save the cropped image using @w{@kbd{i
|
||||
o}} or @w{@kbd{M-x image-save}}.
|
||||
|
||||
@findex image-cut
|
||||
@kindex i x (Image mode)
|
||||
@vindex image-cut-color
|
||||
@vindex image-crop-cut-command
|
||||
@item i x
|
||||
Cut a rectangle from the image (@code{image-cut}). This works the
|
||||
same as @code{image-crop} (and also requires an external program,
|
||||
defined by the variable @code{image-crop-cut-command}, to perform the
|
||||
image cut), but instead of cropping the image, it removes the part
|
||||
inside the frame and fills that part with the color specified by
|
||||
@code{image-cut-color}. With prefix argument, the command prompts for
|
||||
the color to use.
|
||||
@end table
|
||||
|
||||
The size and rotation commands are ``repeating'', which means that you
|
||||
can continue adjusting the image without using the @kbd{i} prefix.
|
||||
|
||||
@cindex ImageMagick support
|
||||
@vindex imagemagick-enabled-types
|
||||
@vindex imagemagick-types-inhibit
|
||||
|
|
|
|||
|
|
@ -313,27 +313,19 @@ may be defined in your Emacs session. For example, if a command
|
|||
called @code{authorize-me} was defined, Emacs could only complete
|
||||
as far as @samp{aut}.)
|
||||
|
||||
If you type @kbd{@key{TAB}} again immediately, it cannot determine
|
||||
the next character; it could be @samp{-}, @samp{a}, or @samp{c}. So
|
||||
it does not add any characters; instead, @key{TAB} displays a list of
|
||||
all possible completions in another window.
|
||||
If you type @key{TAB} again immediately, it cannot determine the
|
||||
next character; it could be @samp{-}, @samp{a}, or @samp{c}. So it
|
||||
does not add any characters; instead, @key{TAB} displays a list of all
|
||||
possible completions in another window.
|
||||
|
||||
Next, type @kbd{-f}. The minibuffer now contains @samp{auto-f}, and
|
||||
the only command name that starts with this is @code{auto-fill-mode}.
|
||||
If you now type @kbd{@key{TAB}}, completion fills in the rest of the
|
||||
If you now type @key{TAB}, completion fills in the rest of the
|
||||
argument @samp{auto-fill-mode} into the minibuffer.
|
||||
|
||||
Hence, typing just @kbd{a u @key{TAB} - f @key{TAB}} allows you to
|
||||
enter @samp{auto-fill-mode}.
|
||||
|
||||
@key{TAB} also works while point is not at the end of the
|
||||
minibuffer. In that case, it will fill in text both at point and at
|
||||
the end of the minibuffer. If you type @kbd{M-x autocm}, then press
|
||||
@kbd{C-b} to move point before the @samp{m}, you can type
|
||||
@kbd{@key{TAB}} to insert the text @samp{onf-} at point and @samp{ode}
|
||||
at the end of the minibuffer, so that the minibuffer contains
|
||||
@samp{autoconf-mode}.
|
||||
|
||||
@node Completion Commands
|
||||
@subsection Completion Commands
|
||||
|
||||
|
|
|
|||
|
|
@ -329,15 +329,15 @@ version of the package, a newer version is also installed.
|
|||
@section Package Installation
|
||||
|
||||
@findex package-install
|
||||
@findex package-upgrade
|
||||
@findex package-upgrade-all
|
||||
@findex package-update
|
||||
@findex package-update-all
|
||||
Packages are most conveniently installed using the package menu
|
||||
(@pxref{Package Menu}), but you can also use the command @kbd{M-x
|
||||
package-install}. This prompts for the name of a package with the
|
||||
@samp{available} status, then downloads and installs it. Similarly,
|
||||
if you want to upgrade a package, you can use the @kbd{M-x
|
||||
package-upgrade} command, and if you want to upgrade all the packages,
|
||||
you can use the @kbd{M-x package-upgrade-all} command.
|
||||
if you want to update a package, you can use the @kbd{M-x
|
||||
package-update} command, and if you just want to update all the
|
||||
packages, you can use the @kbd{M-x package-update-all} command.
|
||||
|
||||
@cindex package requirements
|
||||
A package may @dfn{require} certain other packages to be installed,
|
||||
|
|
@ -551,8 +551,8 @@ bugs.
|
|||
source code for a package directly from source. The command will also
|
||||
automatically ensure that all files are byte-compiled and auto-loaded,
|
||||
just like with a regular package. Packages installed this way behave
|
||||
just like any other package. You can upgrade them using
|
||||
@code{package-upgrade} or @code{package-upgrade-all} and delete them
|
||||
just like any other package. You can update them using
|
||||
@code{package-update} or @code{package-update-all} and delete them
|
||||
again using @code{package-delete}. They are even displayed in the
|
||||
regular package listing. If you just wish to clone the source of a
|
||||
package, without adding it to the package list, use
|
||||
|
|
@ -578,80 +578,3 @@ from the package directory (@pxref{Package Files}) to your checkout
|
|||
and initializes the code. Note that you might have to use
|
||||
@code{package-vc-refresh} to repeat the initialization and update the
|
||||
autoloads.
|
||||
|
||||
@subsection Specifying Package Sources
|
||||
@cindex package specification
|
||||
@cindex specification, for source packages
|
||||
|
||||
To install a package from source, Emacs must know where to get the
|
||||
package's source code (such as a code repository) and basic
|
||||
information about the structure of the code (such as the main file in
|
||||
a multi-file package). A @dfn{package specification} describes these
|
||||
properties.
|
||||
|
||||
When supported by a package archive (@pxref{Package
|
||||
Archives,,,elisp, The Emacs Lisp Reference Manual}), Emacs can
|
||||
automatically download a package's specification from said archive.
|
||||
If the first argument passed to @code{package-vc-install} is a symbol
|
||||
naming a package, then Emacs will use the specification provided by
|
||||
the archive for that package.
|
||||
|
||||
@example
|
||||
@group
|
||||
;; Emacs will download BBDB's specification from GNU ELPA:
|
||||
(package-vc-install 'bbdb)
|
||||
@end group
|
||||
@end example
|
||||
|
||||
The first argument to @code{package-vc-install} may also be a
|
||||
package specification. This allows you to install source packages
|
||||
from locations other than the known archives listed in the user option
|
||||
@code{package-archives}. A package specification is a list of the
|
||||
form @code{(@var{name} . @var{spec})}, in which @var{spec} should be a
|
||||
property list using any of the keys in the table below.
|
||||
|
||||
For definitions of basic terms for working with code repositories and
|
||||
version control systems, see @ref{VCS Concepts,,,emacs, The GNU Emacs
|
||||
Manual}.
|
||||
|
||||
@table @code
|
||||
@item :url
|
||||
A string providing the URL that specifies the repository from which to
|
||||
fetch the package's source code.
|
||||
|
||||
@item :branch
|
||||
A string providing the revision of the code to install. Do not
|
||||
confuse this with a package's version number.
|
||||
|
||||
@item :lisp-dir
|
||||
A string providing the repository-relative name of the directory to
|
||||
use for loading the Lisp sources, which defaults to the root directory
|
||||
of the repository.
|
||||
|
||||
@item :main-file
|
||||
A string providing the main file of the project, from which to gather
|
||||
package metadata. If not given, the default is the package name with
|
||||
".el" appended to it.
|
||||
|
||||
@item :doc
|
||||
A string providing the repository-relative name of the documentation
|
||||
file from which to build an Info file. This can be a Texinfo file or
|
||||
an Org file.
|
||||
|
||||
@item :vc-backend
|
||||
A symbol naming the VC backend to use for downloading a copy of the
|
||||
package's repository (@pxref{Version Control Systems,,,emacs, The GNU
|
||||
Emacs Manual}). If omitted, Emacs will attempt to make a guess based
|
||||
on the provided URL, or, failing that, the process will fall back onto
|
||||
the value of @code{package-vc-default-backend}.
|
||||
@end table
|
||||
|
||||
@example
|
||||
@group
|
||||
;; Specifying information manually:
|
||||
(package-vc-install
|
||||
'(bbdb :url "https://git.savannah.nongnu.org/git/bbdb.git"
|
||||
:lisp-dir "lisp"
|
||||
:doc "doc/bbdb.texi"))
|
||||
@end group
|
||||
@end example
|
||||
|
|
|
|||
|
|
@ -496,43 +496,8 @@ Customization}.
|
|||
If you think you have found a bug in Emacs, please report it. We
|
||||
cannot promise to fix it, or always to agree that it is a bug, but we
|
||||
certainly want to hear about it. The same applies for new features
|
||||
you would like to see added. This section will help you to determine
|
||||
whether you found a bug, and if so, construct an effective bug report.
|
||||
|
||||
The general procedure when you find something that could be a bug is
|
||||
as follows:
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
See if what you found is a known problem or a bug that was already
|
||||
reported and/or fixed. @xref{Known Problems}, where you will find how
|
||||
to look for known problems and bugs.
|
||||
|
||||
@item
|
||||
If you are unsure whether the behavior you see is a bug, see @ref{Bug
|
||||
Criteria}, which tells what we consider as clear bugs in Emacs.
|
||||
|
||||
@item
|
||||
Once you decide you found a bug, see @ref{Understanding Bug
|
||||
Reporting}, which helps you in describing what you see in the most
|
||||
efficient manner, making our job of reproducing the issue and
|
||||
investigating it easier.
|
||||
|
||||
@item
|
||||
Next, see @ref{Checklist, Checklist for Bug Reports}, where we
|
||||
describe in detail how to submit a bug report and what information to
|
||||
include in it. In a nutshell, you submit a bug report via electronic
|
||||
mail using the Emacs command @code{report-emacs-bug}, which assists
|
||||
you in doing so. Submitting a bug report starts the process of
|
||||
investigating and fixing the bug, where you will receive copies of
|
||||
email messages discussing the bug, in which we might ask you to
|
||||
provide more information, test possible fixes, etc.
|
||||
|
||||
@item
|
||||
Finally, if you want to propose specific changes to Emacs, whether to
|
||||
fix a bug, add a new feature, or improve our documentation, please see
|
||||
@ref{Sending Patches}, for details about submitting such changes.
|
||||
@end itemize
|
||||
you would like to see added. The following sections will help you to
|
||||
construct an effective bug report.
|
||||
|
||||
@menu
|
||||
* Known Problems:: How to read about known problems and bugs.
|
||||
|
|
@ -544,10 +509,9 @@ fix a bug, add a new feature, or improve our documentation, please see
|
|||
|
||||
@node Known Problems
|
||||
@subsection Reading Existing Bug Reports and Known Problems
|
||||
@cindex known bugs and problems
|
||||
|
||||
Before reporting a bug, if at all possible, please check to see if
|
||||
we already know about it. Indeed, it may already have been fixed in a
|
||||
Before reporting a bug, if at all possible please check to see if it
|
||||
is already known about. Indeed, it may already have been fixed in a
|
||||
later release of Emacs, or in the development version. Here is a list
|
||||
of the main places you can read about known issues:
|
||||
|
||||
|
|
@ -555,26 +519,20 @@ of the main places you can read about known issues:
|
|||
@item
|
||||
The @file{etc/PROBLEMS} file; type @kbd{C-h C-p} to read it. This
|
||||
file contains a list of particularly well-known issues that have been
|
||||
encountered in compiling, installing and running Emacs, with special
|
||||
emphasis on issues caused by other software that cannot be easily
|
||||
solved in Emacs. Often, you will find there suggestions for
|
||||
workarounds and solutions.
|
||||
encountered in compiling, installing and running Emacs. Often, there
|
||||
are suggestions for workarounds and solutions.
|
||||
|
||||
@cindex bug tracker
|
||||
@cindex issue tracker
|
||||
@cindex search known bugs
|
||||
@item
|
||||
The GNU Bug Tracker at @url{https://debbugs.gnu.org}. Emacs bugs and
|
||||
issues are filed in the tracker under the @samp{emacs} package. The
|
||||
tracker records information about the status of each bug, the initial
|
||||
bug report, and the follow-up messages by the bug reporter and Emacs
|
||||
developers who participate in discussing and fixing the bug. You can
|
||||
search for bugs by subject, severity, and other criteria. For more
|
||||
complex search criteria, use
|
||||
@url{https://debbugs.gnu.org/cgi/search.cgi}.
|
||||
The GNU Bug Tracker at @url{https://debbugs.gnu.org}. Emacs bugs are
|
||||
filed in the tracker under the @samp{emacs} package. The tracker
|
||||
records information about the status of each bug, the initial bug
|
||||
report, and the follow-up messages by the bug reporter and Emacs
|
||||
developers. You can search for bugs by subject, severity, and other
|
||||
criteria.
|
||||
|
||||
@cindex debbugs package
|
||||
Instead of browsing the bug tracker as a web page, you can browse it
|
||||
Instead of browsing the bug tracker as a webpage, you can browse it
|
||||
from Emacs using the @code{debbugs} package, which can be downloaded
|
||||
via the Package Menu (@pxref{Packages}). This package provides the
|
||||
command @kbd{M-x debbugs-gnu} to list bugs, and @kbd{M-x
|
||||
|
|
@ -600,14 +558,14 @@ used, and is mainly of historical interest. At one time, it was used
|
|||
for bug reports in development (i.e., not yet released) versions of
|
||||
Emacs. You can read the archives for 2003 to mid 2007 at
|
||||
@url{https://lists.gnu.org/r/emacs-pretest-bug/}. Nowadays,
|
||||
email messages sent to this list are redirected to
|
||||
@samp{bug-gnu-emacs}.
|
||||
it is an alias for @samp{bug-gnu-emacs}.
|
||||
|
||||
@item
|
||||
The @samp{emacs-devel} mailing list. Sometimes people report bugs to
|
||||
this mailing list. This is not the main purpose of the list, however,
|
||||
and it is much better to send bug reports to the bug list. You should
|
||||
not feel obliged to read this list before reporting a bug.
|
||||
|
||||
@end itemize
|
||||
|
||||
|
||||
|
|
@ -670,21 +628,20 @@ to begin by reporting them to the package developers.
|
|||
|
||||
@node Understanding Bug Reporting
|
||||
@subsection Understanding Bug Reporting
|
||||
@cindex bug reporting, principles
|
||||
@cindex bug reporting
|
||||
@cindex report an Emacs bug, how to
|
||||
|
||||
When you decide that there is a bug, it is important to report it,
|
||||
When you decide that there is a bug, it is important to report it
|
||||
and to report it in a way which is useful. What is most useful is an
|
||||
exact description of what commands you type, starting with the shell
|
||||
command to run Emacs, until the problem happens, and the effects
|
||||
produced by typing those commands.
|
||||
command to run Emacs, until the problem happens.
|
||||
|
||||
The most important principle in reporting a bug is to report
|
||||
@emph{facts}. Hypotheses and verbal descriptions are no substitute
|
||||
for the detailed raw data. Reporting the facts is straightforward,
|
||||
but many people strain to posit explanations and report them instead
|
||||
of the facts. If the explanations are based on guesses about how
|
||||
Emacs is implemented, they night not be useful; meanwhile, lacking the
|
||||
Emacs is implemented, they will be useless; meanwhile, lacking the
|
||||
facts, we will have no real information about the bug. If you want to
|
||||
actually @emph{debug} the problem, and report explanations that are
|
||||
more than guesses, that is useful---but please include the raw facts
|
||||
|
|
@ -704,23 +661,19 @@ problem. There is no way we could guess that we should try visiting a
|
|||
file with a @samp{z} in its name.
|
||||
|
||||
You should not even say ``visit a file'' instead of @kbd{C-x C-f}.
|
||||
That's because a file can be visited in more than one way, and there's
|
||||
no certainty that all of them reproduce the problem. Similarly,
|
||||
rather than saying ``if I have three characters on the line'', say
|
||||
``after I type @kbd{@key{RET} A B C @key{RET} C-p}'', if that is the
|
||||
way you entered the text---that is, tell us about the text which in
|
||||
your case produced the problem.
|
||||
Similarly, rather than saying ``if I have three characters on the
|
||||
line'', say ``after I type @kbd{@key{RET} A B C @key{RET} C-p}'', if
|
||||
that is the way you entered the text.
|
||||
|
||||
If possible, try quickly to reproduce the bug by invoking Emacs with
|
||||
@command{emacs -Q} (so that Emacs starts with no initial
|
||||
customizations; @pxref{Initial Options}), and repeating the steps that
|
||||
you took to trigger the bug. If you can reproduce the bug this way,
|
||||
that rules out bugs in your personal customizations and makes the bug
|
||||
much easier to reproduce. Then your bug report should begin by
|
||||
stating that you started Emacs with @command{emacs -Q}, followed by
|
||||
the exact sequence of steps for reproducing the bug. If possible,
|
||||
inform us of the exact contents of any file that is needed to
|
||||
reproduce the bug.
|
||||
that rules out bugs in your personal customizations. Then your bug
|
||||
report should begin by stating that you started Emacs with
|
||||
@command{emacs -Q}, followed by the exact sequence of steps for
|
||||
reproducing the bug. If possible, inform us of the exact contents of
|
||||
any file that is needed to reproduce the bug.
|
||||
|
||||
Some bugs are not reproducible from @command{emacs -Q}; some are not
|
||||
easily reproducible at all. In that case, you should report what you
|
||||
|
|
@ -734,7 +687,6 @@ separate bug report for each.
|
|||
@subsection Checklist for Bug Reports
|
||||
@cindex checklist before reporting a bug
|
||||
@cindex bug reporting, checklist
|
||||
@cindex report bugs in Emacs
|
||||
|
||||
Before reporting a bug, first try to see if the problem has already
|
||||
been reported (@pxref{Known Problems}).
|
||||
|
|
@ -754,7 +706,7 @@ information; you should still read and follow the guidelines below, so
|
|||
you can enter the other crucial information by hand before you send
|
||||
the message. You may feel that some of the information inserted by
|
||||
@kbd{M-x report-emacs-bug} is not relevant, but unless you are
|
||||
absolutely sure, it is best to leave it, so that the developers can
|
||||
absolutely sure it is best to leave it, so that the developers can
|
||||
decide for themselves.
|
||||
|
||||
When you have finished writing your report, type @kbd{C-c C-c} and it
|
||||
|
|
@ -769,26 +721,24 @@ If you cannot send mail from inside Emacs, you can copy the
|
|||
text of your report to your normal mail client (if your system
|
||||
supports it, you can type @kbd{C-c M-i} to have Emacs do this for you)
|
||||
and send it to that address. Or you can simply send an email to that
|
||||
address describing the problem, including the necessary information
|
||||
mentioned below.
|
||||
address describing the problem.
|
||||
|
||||
If you want to submit code to Emacs (to fix a problem or implement a
|
||||
new feature), the easiest way to do this is to send a patch to the
|
||||
Emacs issue tracker. Use the @kbd{M-x submit-emacs-patch} command for
|
||||
that, which works much the same as when reporting bugs; @pxref{Sending
|
||||
Patches}.
|
||||
Emacs issue tracker. This is done with the @kbd{M-x
|
||||
submit-emacs-patch} command, and works much the same as when reporting
|
||||
bugs.
|
||||
|
||||
In any case, your report will be sent to the @samp{bug-gnu-emacs}
|
||||
mailing list, and stored in the GNU Bug Tracker at
|
||||
@url{https://debbugs.gnu.org}. Please include a valid reply email
|
||||
address, in case we need to ask you for more information about your
|
||||
report. Submissions are moderated, so there may be a delay before
|
||||
your report actually appears on the tracker.
|
||||
your report appears.
|
||||
|
||||
You do not need to know how the GNU Bug Tracker works in order to
|
||||
report a bug, but if you want to, you can read the tracker's
|
||||
@uref{https://debbugs.gnu.org/Advanced.html, online documentation} to
|
||||
see the various features you can use.
|
||||
report a bug, but if you want to, you can read the tracker's online
|
||||
documentation to see the various features you can use.
|
||||
|
||||
All mail sent to the @samp{bug-gnu-emacs} mailing list is also
|
||||
gatewayed to the @samp{gnu.emacs.bug} newsgroup. The reverse is also
|
||||
|
|
@ -799,43 +749,55 @@ tracker.
|
|||
|
||||
If your data is more than 500,000 bytes, please don't include it
|
||||
directly in the bug report; instead, offer to send it on request, or
|
||||
make it available online and say where. Large attachments are best
|
||||
sent compressed.
|
||||
make it available online and say where.
|
||||
|
||||
The GNU Bug Tracker will assign a bug number to your report; please
|
||||
use it in the following discussions, keeping the bug address in the
|
||||
list of recipients, so that the bug discussion is recorded by the
|
||||
tracker. The bug address will look like
|
||||
@samp{@var{nnnnn}@@debbugs.gnu.org}, where @var{nnnnn} is the bug
|
||||
number.
|
||||
use it in the following discussions.
|
||||
|
||||
To enable maintainers to investigate a bug, your report
|
||||
should include all these things:
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
A description of what behavior you observe that you believe is
|
||||
incorrect. For example, ``The Emacs process gets a fatal signal'', or,
|
||||
``The resulting text is as follows, which I think is wrong.''
|
||||
The version number of Emacs. Without this, we won't know whether there is any
|
||||
point in looking for the bug in the current version of GNU Emacs.
|
||||
|
||||
Of course, if the bug is that Emacs gets a fatal signal, then one can't
|
||||
miss it. But if the bug is incorrect text, the maintainer might fail to
|
||||
notice what is wrong. Why leave it to chance?
|
||||
@findex emacs-version
|
||||
@kbd{M-x report-emacs-bug} includes this information automatically,
|
||||
but if you are not using that command for your report you can get the
|
||||
version number by typing @kbd{M-x emacs-version @key{RET}}. If that
|
||||
command does not work, you probably have something other than GNU
|
||||
Emacs, so you will have to report the bug somewhere else.
|
||||
|
||||
Even if the problem you experience is a fatal signal, you should still
|
||||
say so explicitly. Suppose something strange is going on, such as, your
|
||||
copy of the source is out of sync, or you have encountered a bug in the
|
||||
C library on your system. (This has happened!) Your copy might crash
|
||||
and the copy here might not. If you @emph{said} to expect a crash, then
|
||||
when Emacs here fails to crash, we would know that the bug was not
|
||||
happening. If you don't say to expect a crash, then we would not know
|
||||
whether the bug was happening---we would not be able to draw any
|
||||
conclusion from our observations.
|
||||
@item
|
||||
The type of machine you are using, and the operating system name and
|
||||
version number (again, automatically included by @w{@kbd{M-x
|
||||
report-emacs-bug}}). @w{@kbd{M-x emacs-version @key{RET}}} provides
|
||||
this information too. Copy its output from the @file{*Messages*}
|
||||
buffer, so that you get it all and get it accurately, or use
|
||||
@w{@kbd{C-u M-x emacs-version @key{RET}}} to insert the version
|
||||
information into the current buffer.
|
||||
|
||||
Usually, description of the behavior and of the way to reproduce the
|
||||
problem needs to specify one or more of the following aspects:
|
||||
@item
|
||||
The operands given to the @code{configure} command when Emacs was
|
||||
installed (automatically included by @kbd{M-x report-emacs-bug}).
|
||||
|
||||
@item
|
||||
A complete list of any modifications you have made to the Emacs source.
|
||||
(We may not have time to investigate the bug unless it happens in an
|
||||
unmodified Emacs. But if you've made modifications and you don't tell
|
||||
us, you are sending us on a wild goose chase.)
|
||||
|
||||
Be precise about these changes. A description in English is not
|
||||
enough---send a unified context diff for them.
|
||||
|
||||
Adding files of your own, or porting to another machine, is a
|
||||
modification of the source.
|
||||
|
||||
@item
|
||||
Details of any other deviations from the standard procedure for installing
|
||||
GNU Emacs.
|
||||
|
||||
@itemize @minus
|
||||
@item
|
||||
The complete text of any files needed to reproduce the bug.
|
||||
|
||||
|
|
@ -856,12 +818,79 @@ customizations.
|
|||
@cindex dribble file
|
||||
@cindex logging keystrokes
|
||||
One way to record the input to Emacs precisely is to write a dribble
|
||||
file. To start the file, use the command @w{@kbd{M-x open-dribble-file}}.
|
||||
file. To start the file, use the @kbd{M-x open-dribble-file} command.
|
||||
From then on, Emacs copies all your input to the specified dribble
|
||||
file until the Emacs process is killed. Be aware that sensitive
|
||||
information (such as passwords) may end up recorded in the dribble
|
||||
file.
|
||||
|
||||
@item
|
||||
@findex open-termscript
|
||||
@cindex termscript file
|
||||
@vindex TERM@r{, environment variable, and display bugs}
|
||||
For possible display bugs on text-mode terminals, the terminal type
|
||||
(the value of environment variable @env{TERM}), the complete termcap
|
||||
entry for the terminal from @file{/etc/termcap} (since that file is
|
||||
not identical on all machines), and the output that Emacs actually
|
||||
sent to the terminal.
|
||||
|
||||
The way to collect the terminal output is to execute the Lisp expression
|
||||
|
||||
@example
|
||||
(open-termscript "~/termscript")
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
using @kbd{M-:} or from the @file{*scratch*} buffer just after
|
||||
starting Emacs. From then on, Emacs copies all terminal output to the
|
||||
specified termscript file as well, until the Emacs process is killed.
|
||||
If the problem happens when Emacs starts up, put this expression into
|
||||
your Emacs initialization file so that the termscript file will be
|
||||
open when Emacs displays the screen for the first time.
|
||||
|
||||
Be warned: it is often difficult, and sometimes impossible, to fix a
|
||||
terminal-dependent bug without access to a terminal of the type that
|
||||
stimulates the bug.
|
||||
|
||||
@item
|
||||
If non-@acronym{ASCII} text or internationalization is relevant, the locale that
|
||||
was current when you started Emacs. On GNU/Linux and Unix systems, or
|
||||
if you use a POSIX-style shell such as Bash, you can use this shell
|
||||
command to view the relevant values:
|
||||
|
||||
@smallexample
|
||||
echo LC_ALL=$LC_ALL LC_COLLATE=$LC_COLLATE LC_CTYPE=$LC_CTYPE \
|
||||
LC_MESSAGES=$LC_MESSAGES LC_TIME=$LC_TIME LANG=$LANG
|
||||
@end smallexample
|
||||
|
||||
Alternatively, use the @command{locale} command, if your system has it,
|
||||
to display your locale settings.
|
||||
|
||||
You can use the @kbd{M-!} command to execute these commands from
|
||||
Emacs, and then copy the output from the @file{*Messages*} buffer into
|
||||
the bug report. Alternatively, @kbd{M-x getenv @key{RET} LC_ALL
|
||||
@key{RET}} will display the value of @code{LC_ALL} in the echo area, and
|
||||
you can copy its output from the @file{*Messages*} buffer.
|
||||
|
||||
@item
|
||||
A description of what behavior you observe that you believe is
|
||||
incorrect. For example, ``The Emacs process gets a fatal signal'', or,
|
||||
``The resulting text is as follows, which I think is wrong.''
|
||||
|
||||
Of course, if the bug is that Emacs gets a fatal signal, then one can't
|
||||
miss it. But if the bug is incorrect text, the maintainer might fail to
|
||||
notice what is wrong. Why leave it to chance?
|
||||
|
||||
Even if the problem you experience is a fatal signal, you should still
|
||||
say so explicitly. Suppose something strange is going on, such as, your
|
||||
copy of the source is out of sync, or you have encountered a bug in the
|
||||
C library on your system. (This has happened!) Your copy might crash
|
||||
and the copy here might not. If you @emph{said} to expect a crash, then
|
||||
when Emacs here fails to crash, we would know that the bug was not
|
||||
happening. If you don't say to expect a crash, then we would not know
|
||||
whether the bug was happening---we would not be able to draw any
|
||||
conclusion from our observations.
|
||||
|
||||
@item
|
||||
If the bug is that the Emacs Manual or the Emacs Lisp Reference Manual
|
||||
fails to describe the actual behavior of Emacs, or that the text is
|
||||
|
|
@ -877,6 +906,33 @@ To get the error message text accurately, copy it from the
|
|||
@file{*Messages*} buffer into the bug report. Copy all of it, not just
|
||||
part.
|
||||
|
||||
@findex toggle-debug-on-error
|
||||
@pindex Edebug
|
||||
To make a backtrace for the error, use @kbd{M-x toggle-debug-on-error}
|
||||
before the error happens (that is to say, you must give that command
|
||||
and then make the bug happen). This causes the error to start the Lisp
|
||||
debugger, which shows you a backtrace. Copy the text of the
|
||||
debugger's backtrace into the bug report. @xref{Edebug,, Edebug,
|
||||
elisp, the Emacs Lisp Reference Manual}, for information on debugging
|
||||
Emacs Lisp programs with the Edebug package.
|
||||
|
||||
This use of the debugger is possible only if you know how to make the
|
||||
bug happen again. If you can't make it happen again, at least copy
|
||||
the whole error message.
|
||||
|
||||
@vindex debug-on-quit
|
||||
If Emacs appears to be stuck in an infinite loop or in a very long
|
||||
operation, typing @kbd{C-g} with the variable @code{debug-on-quit}
|
||||
non-@code{nil} will start the Lisp debugger and show a backtrace.
|
||||
This backtrace is useful for debugging such long loops, so if you can
|
||||
produce it, copy it into the bug report.
|
||||
|
||||
@vindex debug-on-event
|
||||
If you cannot get Emacs to respond to @kbd{C-g} (e.g., because
|
||||
@code{inhibit-quit} is set), then you can try sending the signal
|
||||
specified by @code{debug-on-event} (default SIGUSR2) from outside
|
||||
Emacs to cause it to enter the debugger.
|
||||
|
||||
@item
|
||||
Check whether any programs you have loaded into the Lisp world,
|
||||
including your initialization file, set any variables that may affect
|
||||
|
|
@ -904,89 +960,65 @@ code is in your version at a given line number, and we could not be
|
|||
certain.
|
||||
|
||||
@item
|
||||
@findex open-termscript
|
||||
@cindex termscript file
|
||||
@vindex TERM@r{, environment variable, and display bugs}
|
||||
For possible display bugs on text-mode terminals, the terminal type
|
||||
(the value of environment variable @env{TERM}), the complete termcap
|
||||
entry for the terminal from @file{/etc/termcap} (since that file is
|
||||
not identical on all machines), and the output that Emacs actually
|
||||
sent to the terminal.
|
||||
Additional information from a C debugger such as GDB might enable
|
||||
someone to find a problem on a machine which he does not have available.
|
||||
If you don't know how to use GDB, please read the GDB manual---it is not
|
||||
very long, and using GDB is easy. You can find the GDB distribution,
|
||||
including the GDB manual in online form, in most of the same places you
|
||||
can find the Emacs distribution. To run Emacs under GDB, you should
|
||||
switch to the @file{src} subdirectory in which Emacs was compiled, then
|
||||
do @samp{gdb emacs}. It is important for the directory @file{src} to be
|
||||
current so that GDB will read the @file{.gdbinit} file in this
|
||||
directory.
|
||||
|
||||
The way to collect the terminal output is to invoke the command
|
||||
@kbd{M-x open-termscript} just after starting Emacs; it will prompt
|
||||
you for the name of the file where to record all terminal output until
|
||||
the Emacs process is killed. If the problem happens when Emacs starts
|
||||
up, put the Lisp expression
|
||||
However, you need to think when you collect the additional information
|
||||
if you want it to show what causes the bug.
|
||||
|
||||
@example
|
||||
(open-termscript "~/termscript")
|
||||
@end example
|
||||
@cindex backtrace for bug reports
|
||||
For example, many people send just a C-level backtrace, but that is
|
||||
not very useful by itself. A simple backtrace with arguments often
|
||||
conveys little about what is happening inside GNU Emacs, because most
|
||||
of the arguments listed in the backtrace are pointers to Lisp objects.
|
||||
The numeric values of these pointers have no significance whatever;
|
||||
all that matters is the contents of the objects they point to (and
|
||||
most of the contents are themselves pointers).
|
||||
|
||||
@noindent
|
||||
into your Emacs initialization file so that the termscript file will
|
||||
be open when Emacs displays the screen for the first time.
|
||||
@findex debug_print
|
||||
To provide useful information, you need to show the values of Lisp
|
||||
objects in Lisp notation. Do this for each variable which is a Lisp
|
||||
object, in several stack frames near the bottom of the stack. Look at
|
||||
the source to see which variables are Lisp objects, because the debugger
|
||||
thinks of them as integers.
|
||||
|
||||
Be warned: it is often difficult, and sometimes impossible, to fix a
|
||||
terminal-dependent bug without access to a terminal of the type that
|
||||
stimulates the bug.
|
||||
@end itemize
|
||||
To show a variable's value in Lisp syntax, first print its value, then
|
||||
use the user-defined GDB command @code{pr} to print the Lisp object in
|
||||
Lisp syntax. (If you must use another debugger, call the function
|
||||
@code{debug_print} with the object as an argument.) The @code{pr}
|
||||
command is defined by the file @file{.gdbinit}, and it works only if you
|
||||
are debugging a running process (not with a core dump).
|
||||
|
||||
@item
|
||||
The version number of Emacs. Without this, we won't know whether there is any
|
||||
point in looking for the bug in the current version of GNU Emacs.
|
||||
To make Lisp errors stop Emacs and return to GDB, put a breakpoint at
|
||||
@code{Fsignal}.
|
||||
|
||||
@findex emacs-version
|
||||
@kbd{M-x report-emacs-bug} includes this information automatically,
|
||||
but if you are not using that command for your report you can get the
|
||||
version number by typing @kbd{M-x emacs-version @key{RET}}. If that
|
||||
command does not work, you probably have something other than GNU
|
||||
Emacs, so you will have to report the bug somewhere else.
|
||||
For a short listing of Lisp functions running, type the GDB
|
||||
command @code{xbacktrace}.
|
||||
|
||||
@item
|
||||
The type of machine you are using, and the operating system name and
|
||||
version number (again, automatically included by @w{@kbd{M-x
|
||||
report-emacs-bug}}). @w{@kbd{M-x emacs-version @key{RET}}} provides
|
||||
this information too. Copy its output from the @file{*Messages*}
|
||||
buffer, so that you get it all and get it accurately, or use
|
||||
@w{@kbd{C-u M-x emacs-version @key{RET}}} to insert the version
|
||||
information into the current buffer.
|
||||
The file @file{.gdbinit} defines several other commands that are useful
|
||||
for examining the data types and contents of Lisp objects. Their names
|
||||
begin with @samp{x}. These commands work at a lower level than
|
||||
@code{pr}, and are less convenient, but they may work even when
|
||||
@code{pr} does not, such as when debugging a core dump or when Emacs has
|
||||
had a fatal signal.
|
||||
|
||||
@item
|
||||
The command-line arguments given to the @code{configure} command when
|
||||
Emacs was built (automatically included by @kbd{M-x
|
||||
report-emacs-bug}).
|
||||
@cindex debugging Emacs, tricks and techniques
|
||||
More detailed advice and other useful techniques for debugging Emacs
|
||||
are available in the file @file{etc/DEBUG} in the Emacs distribution.
|
||||
That file also includes instructions for investigating problems
|
||||
whereby Emacs stops responding (many people assume that Emacs is
|
||||
``hung'', whereas in fact it might be in an infinite loop).
|
||||
|
||||
@item
|
||||
A complete list of any modifications you have made to the Emacs source.
|
||||
(We may not have time to investigate the bug unless it happens in an
|
||||
unmodified Emacs. But if you've made modifications and you don't tell
|
||||
us, you are sending us on a wild goose chase.)
|
||||
|
||||
Be precise about these changes. A description in English is not
|
||||
enough---send a unified context diff for them.
|
||||
|
||||
Adding files of your own, or porting to another machine, is a
|
||||
modification of the source.
|
||||
|
||||
@item
|
||||
Details of any other deviations from the standard procedure for installing
|
||||
GNU Emacs.
|
||||
|
||||
@item
|
||||
If non-@acronym{ASCII} text or internationalization is relevant, the locale that
|
||||
was current when you started Emacs. This is automatically included by @kbd{M-x
|
||||
report-emacs-bug}; alternatively, on GNU/Linux and Unix systems, or
|
||||
if you use a POSIX-style shell such as Bash, you can use this shell
|
||||
command to view the relevant values:
|
||||
|
||||
@smallexample
|
||||
echo LC_ALL=$LC_ALL LC_COLLATE=$LC_COLLATE LC_CTYPE=$LC_CTYPE \
|
||||
LC_MESSAGES=$LC_MESSAGES LC_TIME=$LC_TIME LANG=$LANG
|
||||
@end smallexample
|
||||
|
||||
You can also use the @command{locale} command, if your system has it,
|
||||
to display your locale settings.
|
||||
To find the file @file{etc/DEBUG} in your Emacs installation, use the
|
||||
directory name stored in the variable @code{data-directory}.
|
||||
@end itemize
|
||||
|
||||
Here are some things that are not necessary in a bug report:
|
||||
|
|
@ -1043,13 +1075,17 @@ objects with @code{pr} (see above).
|
|||
A patch for the bug.
|
||||
|
||||
A patch for the bug is useful if it is a good one. But don't omit the
|
||||
other information that a bug report needs, such as the test case, on
|
||||
the assumption that a patch is sufficient. We might see problems with
|
||||
your patch and decide to fix the problem another way, or we might not
|
||||
other information that a bug report needs, such as the test case, on the
|
||||
assumption that a patch is sufficient. We might see problems with your
|
||||
patch and decide to fix the problem another way, or we might not
|
||||
understand it at all. And if we can't understand what bug you are
|
||||
trying to fix, or why your patch should be an improvement, we mustn't
|
||||
install it. @xref{Sending Patches}, for guidelines on how to make it
|
||||
easy for us to understand and install your patches.
|
||||
install it.
|
||||
|
||||
@ifnottex
|
||||
@xref{Sending Patches}, for guidelines on how to make it easy for us to
|
||||
understand and install your patches.
|
||||
@end ifnottex
|
||||
|
||||
@item
|
||||
A guess about what the bug is or what it depends on.
|
||||
|
|
@ -1058,108 +1094,6 @@ Such guesses are usually wrong. Even experts can't guess right about
|
|||
such things without first using the debugger to find the facts.
|
||||
@end itemize
|
||||
|
||||
If you are willing to debug Emacs and provide additional information
|
||||
about the bug, here is some useful advice:
|
||||
|
||||
@findex toggle-debug-on-error
|
||||
@pindex Edebug
|
||||
@itemize
|
||||
@item
|
||||
If the bug manifests itself as an error message, try providing a Lisp
|
||||
backtrace for the error. To make a backtrace for the error, use
|
||||
@kbd{M-x toggle-debug-on-error} before the error happens (that is to
|
||||
say, you must give that command and then make the bug happen). This
|
||||
causes the error to start the Lisp debugger, which shows you a
|
||||
backtrace. Copy the text of the debugger's backtrace into the bug
|
||||
report. (The backtrace is more detailed if you load the relevant Lisp
|
||||
@file{*.el} source files before triggering the error, so do that if
|
||||
you know how to find and load those files.)
|
||||
|
||||
To debug the error, we suggest using Edebug. @xref{Edebug,, Edebug,
|
||||
elisp, the Emacs Lisp Reference Manual}, for information on debugging
|
||||
Emacs Lisp programs with the Edebug package.
|
||||
|
||||
This use of the debugger is possible only if you know how to make the
|
||||
bug happen again. If you can't make it happen again, at least copy
|
||||
the whole error message.
|
||||
|
||||
@vindex debug-on-quit
|
||||
@item
|
||||
If Emacs appears to be stuck in an infinite loop or in a very long
|
||||
operation, typing @kbd{C-g} with the variable @code{debug-on-quit}
|
||||
non-@code{nil} will start the Lisp debugger and show a backtrace.
|
||||
This backtrace is useful for debugging such long loops, so if you can
|
||||
produce it, copy it into the bug report.
|
||||
|
||||
@vindex debug-on-event
|
||||
If you cannot get Emacs to respond to @kbd{C-g} (e.g., because
|
||||
@code{inhibit-quit} is set), then you can try sending the signal
|
||||
specified by @code{debug-on-event} (default SIGUSR2) from outside
|
||||
Emacs to cause it to enter the debugger.
|
||||
|
||||
@item
|
||||
Additional information from a C debugger such as GDB might enable
|
||||
someone to find a problem on a machine which he does not have available.
|
||||
If you don't know how to use GDB, please read the GDB manual---it is not
|
||||
very long, and using GDB is easy. You can find the GDB distribution,
|
||||
including the GDB manual in online form, in most of the same places you
|
||||
can find the Emacs distribution. To run Emacs under GDB, you should
|
||||
switch to the @file{src} subdirectory in which Emacs was compiled, then
|
||||
type @kbd{gdb ./emacs}. It is important for the directory @file{src} to be
|
||||
current so that GDB will read the @file{.gdbinit} file in this
|
||||
directory. (You can also tell GDB to read that file from inside GDB,
|
||||
by typing @kbd{source ./.gdbinit}.)
|
||||
|
||||
However, you need to think when you collect the additional information
|
||||
if you want it to show what causes the bug.
|
||||
|
||||
@cindex backtrace for bug reports
|
||||
For example, many people send just a C-level backtrace, but that is
|
||||
not very useful by itself. A simple backtrace with arguments often
|
||||
conveys little about what is happening inside GNU Emacs, because most
|
||||
of the arguments listed in the backtrace are pointers to Lisp objects.
|
||||
The numeric values of these pointers have no significance whatever;
|
||||
all that matters is the contents of the objects they point to (and
|
||||
most of the contents are themselves pointers).
|
||||
|
||||
@findex debug_print
|
||||
To provide useful information, you need to show the values of Lisp
|
||||
objects in Lisp notation. Do this for each variable which is a Lisp
|
||||
object, in several stack frames near the bottom of the stack. Look at
|
||||
the source to see which variables are Lisp objects, because the debugger
|
||||
thinks of them as integers.
|
||||
|
||||
To show a variable's value in Lisp syntax, first print its value, then
|
||||
use the user-defined GDB command @code{pr} to print the Lisp object in
|
||||
Lisp syntax. (If you must use another debugger, call the function
|
||||
@code{debug_print} with the object as an argument.) The @code{pr}
|
||||
command is defined by the file @file{.gdbinit}, and it works only if you
|
||||
are debugging a running process (not with a core dump).
|
||||
|
||||
To make Lisp errors stop Emacs and return to GDB, put a breakpoint at
|
||||
@code{Fsignal}.
|
||||
|
||||
For a backtrace of Lisp functions running, type the GDB command
|
||||
@code{xbacktrace}.
|
||||
|
||||
The file @file{.gdbinit} defines several other commands that are useful
|
||||
for examining the data types and contents of Lisp objects. Their names
|
||||
begin with @samp{x}. These commands work at a lower level than
|
||||
@code{pr}, and are less convenient, but they may work even when
|
||||
@code{pr} does not, such as when debugging a core dump or when Emacs has
|
||||
had a fatal signal.
|
||||
|
||||
@cindex debugging Emacs, tricks and techniques
|
||||
More detailed advice and other useful techniques for debugging Emacs
|
||||
are available in the file @file{etc/DEBUG} in the Emacs distribution.
|
||||
That file also includes instructions for investigating problems
|
||||
whereby Emacs stops responding (many people assume that Emacs is
|
||||
``hung'', whereas in fact it might be in an infinite loop).
|
||||
|
||||
To find the file @file{etc/DEBUG} in your Emacs installation, use the
|
||||
directory name stored in the variable @code{data-directory}.
|
||||
@end itemize
|
||||
|
||||
@node Sending Patches
|
||||
@subsection Sending Patches for GNU Emacs
|
||||
|
||||
|
|
@ -1174,29 +1108,26 @@ work in the best of circumstances, and we can't keep up unless you do
|
|||
your best to help.
|
||||
|
||||
Every patch must have several pieces of information before we
|
||||
can properly evaluate it. They are described below.
|
||||
can properly evaluate it.
|
||||
|
||||
When you have all these pieces, use the @kbd{M-x submit-emacs-patch}
|
||||
command to send the patch. The command will prompt you for the
|
||||
Subject of the patch and a patch file. It will then create and
|
||||
display a Message mode buffer with the patch file as an attachment,
|
||||
display the buffer, and let you explain more about the patch and add
|
||||
any other information as requested below. When you are done, type
|
||||
@kbd{C-c C-c} to send the patch via email to the developers. It will
|
||||
be sent to the GNU Bug Tracker at @url{https://debbugs.gnu.org}. The
|
||||
tracker will assign a number to your submission, just like it does
|
||||
with bug reports. The developers will usually respond, perhaps asking
|
||||
you for more details or any additional information, so be sure to
|
||||
include a valid reply email address.
|
||||
When you have all these pieces, bundle them up in a mail message and
|
||||
send it to the developers. Sending it to
|
||||
@email{bug-gnu-emacs@@gnu.org} (which is the bug/feature list) is
|
||||
recommended, because that list is coupled to a tracking system that
|
||||
makes it easier to locate patches. If your patch is not complete and
|
||||
you think it needs more discussion, you might want to send it to
|
||||
@email{emacs-devel@@gnu.org} instead. If you revise your patch,
|
||||
send it as a followup to the initial topic.
|
||||
|
||||
Here's what we ask you to provide as part of your patch submissions:
|
||||
We prefer to get the patches as plain text, either inline (be careful
|
||||
your mail client does not change line breaks) or as MIME attachments.
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
An explanation of what problem you are fixing or what improvement will
|
||||
the patches bring about:
|
||||
Include an explanation with your changes of what problem they fix or what
|
||||
improvement they bring about.
|
||||
|
||||
@itemize @minus
|
||||
@itemize
|
||||
@item
|
||||
For a fix for an existing bug, it is
|
||||
best to reply to the relevant discussion on the @samp{bug-gnu-emacs}
|
||||
|
|
@ -1209,28 +1140,26 @@ implementation.
|
|||
|
||||
@item
|
||||
For a new bug, include a proper bug report for the problem you think
|
||||
you have fixed; @pxref{Checklist, Checklist for Bug Reports}. We need
|
||||
to convince ourselves that the change is right before installing it.
|
||||
Even if it is correct, we might have trouble understanding it if we
|
||||
don't have a way to reproduce the problem it tries to fix.
|
||||
you have fixed. We need to convince ourselves that the change is
|
||||
right before installing it. Even if it is correct, we might have
|
||||
trouble understanding it if we don't have a way to reproduce the
|
||||
problem.
|
||||
@end itemize
|
||||
|
||||
@item
|
||||
Include in your code changes all the comments that are appropriate to
|
||||
help people reading the source in the future understand why this
|
||||
change was needed.
|
||||
Include all the comments that are appropriate to help people reading the
|
||||
source in the future understand why this change was needed.
|
||||
|
||||
@item
|
||||
Don't mix together changes made for different reasons.
|
||||
Send them @emph{individually}.
|
||||
|
||||
If you make two changes for separate reasons, then we might not want
|
||||
to install them both. We might want to install just one, or install
|
||||
each one in a different versions of Emacs. If you send them all
|
||||
jumbled together in a single set of diffs, we have to do extra work to
|
||||
disentangle them---to figure out which parts of the change serve which
|
||||
purpose. If we don't have time for this, we might have to postpone
|
||||
inclusion of your patches for a long time.
|
||||
If you make two changes for separate reasons, then we might not want to
|
||||
install them both. We might want to install just one. If you send them
|
||||
all jumbled together in a single set of diffs, we have to do extra work
|
||||
to disentangle them---to figure out which parts of the change serve
|
||||
which purpose. If we don't have time for this, we might have to ignore
|
||||
your changes entirely.
|
||||
|
||||
If you send each change as soon as you have written it, with its own
|
||||
explanation, then two changes never get tangled up, and we can consider
|
||||
|
|
@ -1247,46 +1176,52 @@ right away. That gives us the option of installing it immediately if it
|
|||
is important.
|
||||
|
||||
@item
|
||||
The patch itself. This can be produced in one of the following ways:
|
||||
The patch itself.
|
||||
|
||||
Use @samp{diff -u} to make your diffs. Diffs without context are hard
|
||||
to install reliably. More than that, they are hard to study; we must
|
||||
always study a patch to decide whether we want to install it. Context
|
||||
format is better than contextless diffs, but we prefer the unified
|
||||
format.
|
||||
|
||||
If you have GNU diff, use @samp{diff -u -F'^[_a-zA-Z0-9$]\+ *('} when
|
||||
making diffs of C code. This shows the name of the function that each
|
||||
change occurs in.
|
||||
|
||||
@itemize @minus
|
||||
@item
|
||||
If you are using the Emacs repository, make sure your copy is
|
||||
up-to-date (e.g., with @code{git pull}). You can commit your changes
|
||||
to a private branch and generate a patch from the master version by
|
||||
using @code{git format-patch master}. (This is the preferred method,
|
||||
as it makes our job of applying the patch easier.) Or you can leave
|
||||
your changes uncommitted and use @code{git diff}, as described below.
|
||||
using @code{git format-patch master}. Or you can leave your changes
|
||||
uncommitted and use @code{git diff}.
|
||||
|
||||
@item
|
||||
Use @kbd{diff -u} to make your diffs. If you have GNU diff, use
|
||||
@w{@kbd{diff -u -F'^[_a-zA-Z0-9$]\+ *('}} when making diffs of C code.
|
||||
This shows the name of the function that each change occurs in.
|
||||
|
||||
When producing the diffs, avoid any ambiguity as to which is the old
|
||||
version and which is the new. Please make the old version the first
|
||||
argument to diff, and the new version the second argument. And please
|
||||
give one version or the other a name that indicates whether it is the
|
||||
old version or your new changed one.
|
||||
@end itemize
|
||||
Avoid any ambiguity as to which is the old version and which is the new.
|
||||
Please make the old version the first argument to diff, and the new
|
||||
version the second argument. And please give one version or the other a
|
||||
name that indicates whether it is the old version or your new changed
|
||||
one.
|
||||
|
||||
@item
|
||||
Write the commit log entries for your changes. This is both to save us
|
||||
the extra work of writing them, and to help explain your changes so we
|
||||
can understand them.
|
||||
|
||||
The purpose of the commit log is to explain the rationale of the
|
||||
changes, the way the modified code solves whatever problems your patch
|
||||
is trying to fix, and also show people where to find what was changed.
|
||||
So you need to be specific about what functions you changed and why.
|
||||
For the details about our style and requirements for good commit log
|
||||
messages, please see the ``Commit messages'' section of the file
|
||||
@file{CONTRIBUTE} in the Emacs source tree.
|
||||
The purpose of the commit log is to show people where to find what was
|
||||
changed. So you need to be specific about what functions you changed;
|
||||
in large functions, it's often helpful to indicate where within the
|
||||
function the change was.
|
||||
|
||||
Please also look at the commit log entries of recent commits to see
|
||||
what sorts of information to put in, and to learn the style that we
|
||||
use. Note that, unlike some other projects, we do require commit logs
|
||||
for documentation, i.e., Texinfo files. @xref{Change Log},
|
||||
On the other hand, once you have shown people where to find the change,
|
||||
you need not explain its purpose in the change log. Thus, if you add a
|
||||
new function, all you need to say about it is that it is new. If you
|
||||
feel that the purpose needs explaining, it probably does---but put the
|
||||
explanation in comments in the code. It will be more useful there.
|
||||
|
||||
Please look at the commit log entries of recent commits to see what
|
||||
sorts of information to put in, and to learn the style that we use.
|
||||
Note that, unlike some other projects, we do require commit logs for
|
||||
documentation, i.e., Texinfo files.
|
||||
@xref{Change Log},
|
||||
@ifset WWW_GNU_ORG
|
||||
see
|
||||
@url{https://www.gnu.org/prep/standards/html_node/Change-Log-Concepts.html},
|
||||
|
|
@ -1297,7 +1232,7 @@ Change Log Concepts, standards, GNU Coding Standards}.
|
|||
@item
|
||||
When you write the fix, keep in mind that we can't install a change that
|
||||
would break other systems. Please think about what effect your change
|
||||
will have if compiled and/or used on another type of system.
|
||||
will have if compiled on another type of system.
|
||||
|
||||
Sometimes people send fixes that @emph{might} be an improvement in
|
||||
general---but it is hard to be sure of this. It's hard to install
|
||||
|
|
@ -1305,10 +1240,9 @@ such changes because we have to study them very carefully. Of course,
|
|||
a good explanation of the reasoning by which you concluded the change
|
||||
was correct can help convince us.
|
||||
|
||||
The safest changes are changes to the files or portions of files that
|
||||
are only used for a particular machine or a particular system. These
|
||||
are safe because they can't create new bugs on other machines or
|
||||
systems.
|
||||
The safest changes are changes to the configuration files for a
|
||||
particular machine. These are safe because they can't create new bugs
|
||||
on other machines.
|
||||
|
||||
Please help us keep up with the workload by designing the patch in a
|
||||
form that is clearly safe to install.
|
||||
|
|
@ -1325,7 +1259,7 @@ There are many ways to contribute to Emacs:
|
|||
|
||||
@itemize
|
||||
@item
|
||||
find and report bugs; @pxref{Bugs}.
|
||||
find and report bugs; @xref{Bugs}.
|
||||
|
||||
@item
|
||||
answer questions on the Emacs user mailing list
|
||||
|
|
@ -1392,15 +1326,15 @@ before you start; it might be possible to suggest ways to make your
|
|||
extension fit in better with the rest of Emacs.
|
||||
|
||||
When implementing a feature, please follow the Emacs coding standards;
|
||||
@pxref{Coding Standards}. In addition, substantial contributions
|
||||
require a copyright assignment to the FSF; @pxref{Copyright Assignment}.
|
||||
@xref{Coding Standards}. In addition, non-trivial contributions
|
||||
require a copyright assignment to the FSF; @xref{Copyright Assignment}.
|
||||
|
||||
The development version of Emacs can be downloaded from the
|
||||
repository where it is actively maintained by a group of developers.
|
||||
See the Emacs project page
|
||||
@url{https://savannah.gnu.org/projects/emacs/} for access details.
|
||||
|
||||
It is important to write your patches based on the current working
|
||||
It is important to write your patch based on the current working
|
||||
version. If you start from an older version, your patch may be
|
||||
outdated (so that maintainers will have a hard time applying it), or
|
||||
changes in Emacs may have made your patch unnecessary. After you have
|
||||
|
|
@ -1463,7 +1397,7 @@ the Emacs Lisp Reference Manual
|
|||
|
||||
@node Coding Standards
|
||||
@subsection Coding Standards
|
||||
@cindex coding standards for Emacs submissions
|
||||
@cindex coding standards
|
||||
|
||||
Contributed code should follow the GNU Coding Standards
|
||||
@url{https://www.gnu.org/prep/standards/}. This may also be available
|
||||
|
|
@ -1498,6 +1432,10 @@ to be included in Emacs.
|
|||
@item
|
||||
Remove all trailing whitespace in all source and text files.
|
||||
|
||||
@item
|
||||
Emacs has no convention on whether to use tabs in source code; please
|
||||
don't change whitespace in the files you edit.
|
||||
|
||||
@item
|
||||
Use @code{?\s} instead of @code{? } in Lisp code for a space character.
|
||||
|
||||
|
|
@ -1517,7 +1455,7 @@ packages stored in GNU ELPA, we require that the copyright be assigned
|
|||
to the FSF@. For the reasons behind this, see
|
||||
@url{https://www.gnu.org/licenses/why-assign.html}.
|
||||
|
||||
Copyright assignment is a simple process. Residents of many countries
|
||||
Copyright assignment is a simple process. Residents of some countries
|
||||
can do it entirely electronically. We can help you get started,
|
||||
including sending you the forms you should fill, and answer any
|
||||
questions you may have (or point you to the people with the answers),
|
||||
|
|
|
|||
|
|
@ -6604,11 +6604,10 @@ works. You will probably need to use @kbd{C-h f}
|
|||
(@code{describe-function}). The newer version uses a conditional to
|
||||
determine whether the buffer has been narrowed.
|
||||
|
||||
Also, the modern version of @code{what-line} uses
|
||||
@code{line-number-at-pos}, which among other simple expressions, such
|
||||
as @code{(goto-char (point-min))}, moves point to the beginning of the
|
||||
current line with @code{(forward-line 0)} rather than
|
||||
@code{beginning-of-line}.)
|
||||
(Also, it uses @code{line-number-at-pos}, which among other simple
|
||||
expressions, such as @code{(goto-char (point-min))}, moves point to
|
||||
the beginning of the current line with @code{(forward-line 0)} rather
|
||||
than @code{beginning-of-line}.)
|
||||
|
||||
The @code{what-line} function as shown here has a documentation line
|
||||
and is interactive, as you would expect. The next two lines use the
|
||||
|
|
|
|||
|
|
@ -959,9 +959,9 @@ infinite recursion.
|
|||
|
||||
@defun buffer-match-p condition buffer-or-name &optional arg
|
||||
This function checks if a buffer designated by @code{buffer-or-name}
|
||||
satisfies the specified @code{condition}. Optional third argument
|
||||
@var{arg} is passed to the predicate function in @var{condition}. A
|
||||
valid @var{condition} can be one of the following:
|
||||
satisfies a @code{condition}. Optional third argument @var{arg} is
|
||||
passed to the predicate function in @var{condition}. A condition can
|
||||
be one of the following:
|
||||
@itemize @bullet{}
|
||||
@item
|
||||
A string, interpreted as a regular expression. The buffer
|
||||
|
|
@ -990,23 +990,21 @@ Satisfied if @emph{all} the conditions in @var{conds} satisfy
|
|||
Satisfied if the buffer's major mode derives from @var{expr}.
|
||||
@item major-mode
|
||||
Satisfied if the buffer's major mode is equal to @var{expr}. Prefer
|
||||
using @code{derived-mode} instead, when both can work.
|
||||
using @code{derived-mode} instead when both can work.
|
||||
@end table
|
||||
@item t
|
||||
Satisfied by any buffer. A convenient alternative to @code{""} (empty
|
||||
string) or @code{(and)} (empty conjunction).
|
||||
string), @code{(and)} (empty conjunction) or @code{always}.
|
||||
@end itemize
|
||||
@end defun
|
||||
|
||||
@defun match-buffers condition &optional buffer-list arg
|
||||
This function returns a list of all buffers that satisfy the
|
||||
@code{condition}. If no buffers match, the function returns
|
||||
@code{nil}. The argument @var{condition} is as defined in
|
||||
@code{buffer-match-p} above. By default, all the buffers are
|
||||
considered, but this can be restricted via the optional argument
|
||||
@code{buffer-list}, which should be a list of buffers to consider.
|
||||
Optional third argument @var{arg} will be passed to @var{condition} in
|
||||
the same way as @code{buffer-match-p} does.
|
||||
This function returns a list of all buffers that satisfy a
|
||||
@code{condition}, as defined for @code{buffer-match-p}. By default
|
||||
all buffers are considered, but this can be restricted via the second
|
||||
optional @code{buffer-list} argument. Optional third argument
|
||||
@var{arg} will be used by @var{condition} in the same way as
|
||||
@code{buffer-match-p} does.
|
||||
@end defun
|
||||
|
||||
@node Creating Buffers
|
||||
|
|
|
|||
|
|
@ -1960,8 +1960,8 @@ end-position of a drag event, this position list may represent a
|
|||
location outside the boundaries of the initially selected frame, in
|
||||
which case the list contains that frame in place of a window.
|
||||
|
||||
The @code{track-mouse} macro enables generation of motion
|
||||
events within its body. Outside of @code{track-mouse} body, Emacs
|
||||
The special form @code{track-mouse} enables generation of motion
|
||||
events within its body. Outside of @code{track-mouse} forms, Emacs
|
||||
does not generate events for mere motion of the mouse, and these
|
||||
events do not appear. @xref{Mouse Tracking}.
|
||||
|
||||
|
|
@ -2395,17 +2395,6 @@ as @code{set-language-environment}), use the
|
|||
;; Get the full localized name of the language
|
||||
(w32-get-locale-info language-id t)
|
||||
@end smallexample
|
||||
|
||||
@cindex @code{end-session} event
|
||||
@item end-session
|
||||
This event is generated on MS-Windows when the operating system
|
||||
informs Emacs that the user terminated the interactive session, or
|
||||
that the system is shutting down. The standard definition of this
|
||||
event is to invoke the @code{kill-emacs} command (@pxref{Killing
|
||||
Emacs}) so as to shut down Emacs in an orderly fashion; if there are
|
||||
unsaved changes, this will produce auto-save files
|
||||
(@pxref{Auto-Saving}) that the user can use after restarting the
|
||||
session to restore the unsaved edits.
|
||||
@end table
|
||||
|
||||
If one of these events arrives in the middle of a key sequence---that
|
||||
|
|
@ -2454,7 +2443,7 @@ into another window. That produces a pair of events like these:
|
|||
|
||||
The frame with input focus might not take up the entire screen, and
|
||||
the user might move the mouse outside the scope of the frame. Inside
|
||||
the @code{track-mouse} macro, that produces an event like this:
|
||||
the @code{track-mouse} special form, that produces an event like this:
|
||||
|
||||
@smallexample
|
||||
(mouse-movement (#<frame *ielm* 0x102849a30> nil (563 . 205) 532301936))
|
||||
|
|
@ -3226,24 +3215,15 @@ unspecified, the only fallback disabled is downcasing of the last
|
|||
event.
|
||||
@end defun
|
||||
|
||||
@vindex read-char-choice-use-read-key
|
||||
@defun read-char-choice prompt chars &optional inhibit-quit
|
||||
This function uses @code{read-from-minibuffer} to read and return a
|
||||
single character that is a member of @var{chars}, which should be a
|
||||
list of single characters. It discards any input characters that are
|
||||
not members of @var{chars}, and shows a message to that effect.
|
||||
|
||||
The optional argument @var{inhibit-quit} is by default ignored, but if
|
||||
the variable @code{read-char-choice-use-read-key} is non-@code{nil},
|
||||
this function uses @code{read-key} instead of
|
||||
@code{read-from-minibuffer}, and in that case @var{inhibit-quit}
|
||||
non-@code{nil} means ignore keyboard-quit events while waiting for
|
||||
valid input. In addition, if @code{read-char-choice-use-read-key} is
|
||||
non-@code{nil}, binding @code{help-form} (@pxref{Help Functions}) to a
|
||||
non-@code{nil} value while calling this function causes it to evaluate
|
||||
@code{help-form} and display the result when the user presses
|
||||
@code{help-char}; it then continues to wait for a valid input
|
||||
character, or for keyboard-quit.
|
||||
This function uses @code{read-key} to read and return a single
|
||||
character. It ignores any input that is not a member of @var{chars},
|
||||
a list of accepted characters. Optionally, it will also ignore
|
||||
keyboard-quit events while it is waiting for valid input. If you bind
|
||||
@code{help-form} (@pxref{Help Functions}) to a non-@code{nil} value
|
||||
while calling @code{read-char-choice}, then pressing @code{help-char}
|
||||
causes it to evaluate @code{help-form} and display the result. It
|
||||
then continues to wait for a valid input character, or keyboard-quit.
|
||||
@end defun
|
||||
|
||||
@defun read-multiple-choice prompt choices &optional help-string show-help long-form
|
||||
|
|
|
|||
|
|
@ -1809,9 +1809,6 @@ wish the program to continue execution despite an error in a subroutine.
|
|||
In these cases, you would use @code{condition-case} to establish
|
||||
@dfn{error handlers} to recover control in case of error.
|
||||
|
||||
For reporting problems without terminating the execution of the
|
||||
current command, consider issuing a warning instead. @xref{Warnings}.
|
||||
|
||||
Resist the temptation to use error handling to transfer control from
|
||||
one part of the program to another; use @code{catch} and @code{throw}
|
||||
instead. @xref{Catch and Throw}.
|
||||
|
|
|
|||
|
|
@ -264,12 +264,11 @@ have any number of prefixes.
|
|||
@end table
|
||||
|
||||
@cindex @code{custom-group} property
|
||||
The variables, faces, and subgroups of a group are stored in the
|
||||
The variables and subgroups of a group are stored in the
|
||||
@code{custom-group} property of the group's symbol. @xref{Symbol
|
||||
Plists}. The value of that property is a list of pairs whose
|
||||
@code{car} is the symbol of the variable or the face or the subgroup,
|
||||
and the @code{cdr} is one of the corresponding symbols
|
||||
@code{custom-variable}, @code{custom-face}, or @code{custom-group}.
|
||||
@code{car} is the variable or subgroup symbol and the @code{cdr} is
|
||||
either @code{custom-variable} or @code{custom-group}.
|
||||
@end defmac
|
||||
|
||||
@defopt custom-unlispify-remove-prefixes
|
||||
|
|
@ -379,15 +378,8 @@ the option as a Lisp variable); preferably, though, it should not
|
|||
modify its value argument destructively. The default for
|
||||
@var{setfunction} is @code{set-default-toplevel-value}.
|
||||
|
||||
If defined, @var{setfunction} will also be called when evaluating a
|
||||
@code{defcustom} form with @kbd{C-M-x} in Emacs Lisp mode and when the
|
||||
@var{option}'s value is changed via the @code{setopt} macro
|
||||
(@pxref{Setting Variables, setopt}).
|
||||
|
||||
If you specify this keyword, the variable's documentation string
|
||||
should describe how to do the same job in hand-written Lisp code,
|
||||
either by invoking @var{setfunction} directly or by using
|
||||
@code{setopt}.
|
||||
should describe how to do the same job in hand-written Lisp code.
|
||||
|
||||
@item :get @var{getfunction}
|
||||
@kindex get@r{, @code{defcustom} keyword}
|
||||
|
|
|
|||
|
|
@ -310,29 +310,29 @@ reformatted, with undesirable results. Instead, use @code{(message
|
|||
"%s" @var{string})}.
|
||||
@end defun
|
||||
|
||||
The following facilities allow users and Lisp programs to control how
|
||||
echo-area messages are displayed.
|
||||
|
||||
@defvar set-message-function
|
||||
If this variable is non-@code{nil}, it should be a function of one
|
||||
argument, the text of a message to display in the echo area. That
|
||||
argument, the text of a message to display in the echo area. This
|
||||
function will be called by @code{message} and related functions. If
|
||||
the function returns @code{nil}, the message is displayed in the echo
|
||||
area as usual. If the function returns a string, that string is
|
||||
displayed in the echo area @emph{instead} of the original message. If
|
||||
the function returns any other non-@code{nil} value, that means the
|
||||
message was already handled, so @code{message} will not display
|
||||
anything in the echo area.
|
||||
area as usual. If this function returns a string, that string is
|
||||
displayed in the echo area instead of the original one. If this
|
||||
function returns other non-@code{nil} values, that means the message
|
||||
was already handled, so @code{message} will not display anything in
|
||||
the echo area. See also @code{clear-message-function} that can be
|
||||
used to clear the message displayed by this function.
|
||||
|
||||
The default value calls @code{set-minibuffer-message}, described
|
||||
below.
|
||||
The default value is the function that displays the message at the end
|
||||
of the minibuffer when the minibuffer is active. However, if the text
|
||||
shown in the active minibuffer has the @code{minibuffer-message} text
|
||||
property (@pxref{Special Properties}) on some character, the message
|
||||
will be displayed before the first character having that property.
|
||||
@end defvar
|
||||
|
||||
@defvar clear-message-function
|
||||
If this variable is non-@code{nil}, it should be a function of no
|
||||
arguments; @code{message} and related functions call it when their
|
||||
argument message is @code{nil} or the empty string, to clear the echo
|
||||
area.
|
||||
If this variable is non-@code{nil}, @code{message} and related
|
||||
functions call it with no arguments when their argument message is
|
||||
@code{nil} or the empty string.
|
||||
|
||||
Usually this function is called when the next input event arrives
|
||||
after displaying an echo-area message. The function is expected to
|
||||
|
|
@ -358,51 +358,11 @@ with the same text; if the last function in the list returns
|
|||
function returns a non-@code{nil} value that is not a string, the
|
||||
message is considered to be handled, and no further functions in the
|
||||
list are called.
|
||||
|
||||
The three useful functions to be put in the list that is the value of
|
||||
this option are described below.
|
||||
@end defopt
|
||||
|
||||
@defun set-minibuffer-message message
|
||||
This function displays @var{message} in the echo-area when the
|
||||
minibuffer is not active, and at the end of the minibuffer when the
|
||||
minibuffer is active. However, if the text shown in the active
|
||||
minibuffer has the @code{minibuffer-message} text property
|
||||
(@pxref{Special Properties}) on some character, the message will be
|
||||
displayed before the first character having that property.
|
||||
|
||||
This function is by default the only member of the list in
|
||||
@code{set-message-functions}.
|
||||
@end defun
|
||||
|
||||
@vindex inhibit-message-regexps
|
||||
@defun inhibit-message message
|
||||
If an echo-area @var{message} matches any regexp in the list that is
|
||||
the value of the user option @code{inhibit-message-regexps}, this
|
||||
function suppresses the display of that message and returns a
|
||||
non-@code{nil} value that is not a string. Thus, if this function is
|
||||
in the list @code{set-message-functions}, the rest of the functions in
|
||||
the list will not be called when @var{message} matches the regexps in
|
||||
@code{inhibit-message-regexps}. To ensure a matching @var{message}
|
||||
will never be displayed, make this function be the first element of
|
||||
the list in @code{set-message-functions}.
|
||||
@end defun
|
||||
|
||||
@vindex multi-message-max
|
||||
@vindex multi-message-timeout
|
||||
@defun set-multi-message message
|
||||
This function accumulates several echo-area messages emitted one after
|
||||
another, and returns them as a single string in which individual
|
||||
messages are separated by newlines. Up to @code{multi-message-max}
|
||||
recent messages can be accumulated. The accumulated messages are
|
||||
discarded when more than @code{multi-message-timeout} seconds have
|
||||
elapsed since the time the first message was emitted.
|
||||
@end defun
|
||||
|
||||
@defvar inhibit-message
|
||||
When this variable is non-@code{nil}, @code{message} and related functions
|
||||
will not display any messages in the Echo Area. Echo-area messages
|
||||
are still logged in the @file{*Messages*} buffer, though.
|
||||
will not use the Echo Area to display messages.
|
||||
@end defvar
|
||||
|
||||
@defmac with-temp-message message &rest body
|
||||
|
|
@ -752,8 +712,7 @@ echo area (which is really a special use of the minibuffer window;
|
|||
@cindex warnings
|
||||
|
||||
@dfn{Warnings} are a facility for a program to inform the user of a
|
||||
possible problem, but continue running (as opposed to signaling an
|
||||
error, @pxref{Errors}).
|
||||
possible problem, but continue running.
|
||||
|
||||
@menu
|
||||
* Warning Basics:: Warnings concepts and functions to report them.
|
||||
|
|
@ -766,74 +725,69 @@ error, @pxref{Errors}).
|
|||
@subsection Warning Basics
|
||||
@cindex severity level
|
||||
|
||||
Every warning is a textual message, which explains the problem for
|
||||
the user, with the associated @dfn{severity level} which is a symbol.
|
||||
Here are the supported severity levels, in order of decreasing
|
||||
severity, and their meanings:
|
||||
Every warning has a textual message, which explains the problem for
|
||||
the user, and a @dfn{severity level} which is a symbol. Here are the
|
||||
possible severity levels, in order of decreasing severity, and their
|
||||
meanings:
|
||||
|
||||
@table @code
|
||||
@item :emergency
|
||||
A problem that will seriously impair Emacs operation soon
|
||||
if the user does not attend to it promptly.
|
||||
if you do not attend to it promptly.
|
||||
@item :error
|
||||
A report about data or circumstances that are inherently wrong.
|
||||
A report of data or circumstances that are inherently wrong.
|
||||
@item :warning
|
||||
A report about data or circumstances that are not inherently wrong,
|
||||
but raise suspicion of a possible problem.
|
||||
A report of data or circumstances that are not inherently wrong, but
|
||||
raise suspicion of a possible problem.
|
||||
@item :debug
|
||||
A report of information that may be useful if the user is currently
|
||||
debugging the Lisp program which issues the warning.
|
||||
A report of information that may be useful if you are debugging.
|
||||
@end table
|
||||
|
||||
When your program encounters invalid input data, it can either
|
||||
signal a Lisp error by calling @code{error} or @code{signal}
|
||||
(@pxref{Signaling Errors}) or report a warning with severity
|
||||
@code{:error}. Signaling a Lisp error is the easiest thing to do, but
|
||||
it means the signaling program cannot continue execution. If you want
|
||||
to take the trouble of implementing a way to continue processing
|
||||
despite the invalid data, then reporting a warning of severity
|
||||
@code{:error} is the right way of informing the user of the problem.
|
||||
For instance, the Emacs Lisp byte compiler can report an error that
|
||||
way and continue compiling other functions. (If the program signals a
|
||||
Lisp error and then handles it with @code{condition-case}, the user
|
||||
won't see the error message; reporting that as a warning instead
|
||||
avoids that problem.)
|
||||
signal a Lisp error by calling @code{error} or @code{signal} or report
|
||||
a warning with severity @code{:error}. Signaling a Lisp error is the
|
||||
easiest thing to do, but it means the program cannot continue
|
||||
processing. If you want to take the trouble to implement a way to
|
||||
continue processing despite the bad data, then reporting a warning of
|
||||
severity @code{:error} is the right way to inform the user of the
|
||||
problem. For instance, the Emacs Lisp byte compiler can report an
|
||||
error that way and continue compiling other functions. (If the
|
||||
program signals a Lisp error and then handles it with
|
||||
@code{condition-case}, the user won't see the error message; it could
|
||||
show the message to the user by reporting it as a warning.)
|
||||
|
||||
@c FIXME: Why use "(bytecomp)" instead of "'bytecomp" or simply
|
||||
@c "bytecomp" here? The parens are part of warning-type-format but
|
||||
@c not part of the warning type. --xfq
|
||||
@cindex warning type
|
||||
In addition to severity level, each warning has a @dfn{warning type}
|
||||
to classify it. The warning type is either a symbol or a list of
|
||||
symbols. If it is a symbol, it should be the custom group that you
|
||||
use for the program's user options; if it is a list, the first element
|
||||
of the list should be that custom group. For example, byte compiler
|
||||
warnings use the warning type @code{(bytecomp)}. If the warning type
|
||||
is a list, the elements of the list after the first one, which should
|
||||
be arbitrary symbols, represent subcategories of the warning: they
|
||||
will be displayed to the user to better explain the nature of the
|
||||
warning.
|
||||
Each warning has a @dfn{warning type} to classify it. The type is a
|
||||
list of symbols. The first symbol should be the custom group that you
|
||||
use for the program's user options. For example, byte compiler
|
||||
warnings use the warning type @code{(bytecomp)}. You can also
|
||||
subcategorize the warnings, if you wish, by using more symbols in the
|
||||
list.
|
||||
|
||||
@defun display-warning type message &optional level buffer-name
|
||||
This function reports a warning, using the string @var{message} as the
|
||||
warning text and @var{type} as the warning type. @var{level} should
|
||||
be the severity level, and defaults to @code{:warning} if omitted or
|
||||
@code{nil}.
|
||||
This function reports a warning, using @var{message} as the message
|
||||
and @var{type} as the warning type. @var{level} should be the
|
||||
severity level, with @code{:warning} being the default.
|
||||
|
||||
@var{buffer-name}, if non-@code{nil}, specifies the name of the buffer
|
||||
for logging the warning message. By default, it is @file{*Warnings*}.
|
||||
for logging the warning. By default, it is @file{*Warnings*}.
|
||||
@end defun
|
||||
|
||||
@defun lwarn type level message &rest args
|
||||
This function reports a warning using the value returned by
|
||||
@w{@code{(format-message @var{message} @var{args}@dots{})}} as the
|
||||
message text in the @file{*Warnings*} buffer. In other respects it is
|
||||
equivalent to @code{display-warning}.
|
||||
This function reports a warning using the value of @code{(format-message
|
||||
@var{message} @var{args}...)} as the message in the @file{*Warnings*}
|
||||
buffer. In other respects it is equivalent to @code{display-warning}.
|
||||
@end defun
|
||||
|
||||
@defun warn message &rest args
|
||||
This function reports a warning using the value returned by
|
||||
@w{@code{(format-message @var{message} @var{args}@dots{})}} as the
|
||||
message text, @code{emacs} as the warning type, and @code{:warning} as
|
||||
the severity level. It exists for compatibility only; we recommend
|
||||
not using it, because you should specify a specific warning type.
|
||||
This function reports a warning using the value of @code{(format-message
|
||||
@var{message} @var{args}...)} as the message, @code{(emacs)} as the
|
||||
type, and @code{:warning} as the severity level. It exists for
|
||||
compatibility only; we recommend not using it, because you should
|
||||
specify a specific warning type.
|
||||
@end defun
|
||||
|
||||
@node Warning Variables
|
||||
|
|
@ -848,16 +802,15 @@ This list defines the meaning and severity order of the warning
|
|||
severity levels. Each element defines one severity level,
|
||||
and they are arranged in order of decreasing severity.
|
||||
|
||||
Each element has the form @w{@code{(@var{level} @var{string}
|
||||
[@var{function}])}}, where @var{level} is the severity level it
|
||||
defines. @var{string} specifies the textual description of this
|
||||
level. @var{string} should use @samp{%s} to specify where to put the
|
||||
warning type information, or it can omit the @samp{%s} so as not to
|
||||
include that information.
|
||||
Each element has the form @code{(@var{level} @var{string}
|
||||
@var{function})}, where @var{level} is the severity level it defines.
|
||||
@var{string} specifies the textual description of this level.
|
||||
@var{string} should use @samp{%s} to specify where to put the warning
|
||||
type information, or it can omit the @samp{%s} so as not to include
|
||||
that information.
|
||||
|
||||
The optional @var{function}, if non-@code{nil}, is a function to call
|
||||
with no arguments, to get the user's attention. A notable example is
|
||||
@code{ding} (@pxref{Beeping}).
|
||||
with no arguments, to get the user's attention.
|
||||
|
||||
Normally you should not change the value of this variable.
|
||||
@end defvar
|
||||
|
|
@ -866,19 +819,18 @@ Normally you should not change the value of this variable.
|
|||
If non-@code{nil}, the value is a function to generate prefix text for
|
||||
warnings. Programs can bind the variable to a suitable function.
|
||||
@code{display-warning} calls this function with the warnings buffer
|
||||
the current buffer, and the function can insert text into it. That
|
||||
text becomes the beginning of the warning message.
|
||||
current, and the function can insert text in it. That text becomes
|
||||
the beginning of the warning message.
|
||||
|
||||
The function is called with two arguments, the severity level and its
|
||||
entry in @code{warning-levels}. It should return a list to use
|
||||
@emph{instead} of that entry (the value need not be an actual member
|
||||
of @code{warning-levels}, but it must have the same structure). By
|
||||
constructing this value, the function can change the severity of the
|
||||
warning, or specify different handling for a given severity level.
|
||||
entry in @code{warning-levels}. It should return a list to use as the
|
||||
entry (this value need not be an actual member of
|
||||
@code{warning-levels}). By constructing this value, the function can
|
||||
change the severity of the warning, or specify different handling for
|
||||
a given severity level.
|
||||
|
||||
If the variable's value is @code{nil}, there's no prefix text, before
|
||||
the warning is displayed, starting with the @var{string} part of the
|
||||
entry in @code{warning-levels} corresponding to the warning's level.
|
||||
If the variable's value is @code{nil} then there is no function
|
||||
to call.
|
||||
@end defvar
|
||||
|
||||
@defvar warning-series
|
||||
|
|
@ -886,18 +838,17 @@ Programs can bind this variable to @code{t} to say that the next
|
|||
warning should begin a series. When several warnings form a series,
|
||||
that means to leave point on the first warning of the series, rather
|
||||
than keep moving it for each warning so that it appears on the last one.
|
||||
The series ends when the local binding of this variable is unbound and
|
||||
The series ends when the local binding is unbound and
|
||||
@code{warning-series} becomes @code{nil} again.
|
||||
|
||||
The value can also be a symbol with a function definition. That is
|
||||
equivalent to @code{t}, except that the next warning will also call
|
||||
the function with no arguments with the warnings buffer the current
|
||||
buffer. The function can, for example, insert text which will serve
|
||||
as a header for the series of warnings.
|
||||
the function with no arguments with the warnings buffer current. The
|
||||
function can insert text which will serve as a header for the series
|
||||
of warnings.
|
||||
|
||||
Once a series has begun, the value of this variable is a marker which
|
||||
points to the buffer position in the warnings buffer of the start of
|
||||
the series.
|
||||
Once a series has begun, the value is a marker which points to the
|
||||
buffer position in the warnings buffer of the start of the series.
|
||||
|
||||
The variable's normal value is @code{nil}, which means to handle
|
||||
each warning separately.
|
||||
|
|
@ -905,7 +856,7 @@ each warning separately.
|
|||
|
||||
@defvar warning-fill-prefix
|
||||
When this variable is non-@code{nil}, it specifies a fill prefix to
|
||||
use for filling the text of each warning.
|
||||
use for filling each warning's text.
|
||||
@end defvar
|
||||
|
||||
@defvar warning-fill-column
|
||||
|
|
@ -914,11 +865,11 @@ The column at which to fill warnings.
|
|||
|
||||
@defvar warning-type-format
|
||||
This variable specifies the format for displaying the warning type
|
||||
in the warning text. The result of formatting the type this way
|
||||
in the warning message. The result of formatting the type this way
|
||||
gets included in the message under the control of the string in the
|
||||
entry in @code{warning-levels}. The default value is @code{" (%s)"}.
|
||||
If you bind it to the empty string @code{""} then the warning type
|
||||
won't appear at all.
|
||||
If you bind it to @code{""} then the warning type won't appear at
|
||||
all.
|
||||
@end defvar
|
||||
|
||||
@node Warning Options
|
||||
|
|
@ -930,71 +881,38 @@ when a Lisp program reports a warning.
|
|||
|
||||
@defopt warning-minimum-level
|
||||
This user option specifies the minimum severity level that should be
|
||||
shown immediately to the user, by popping the warnings buffer in some
|
||||
window. The default is @code{:warning}, which means to show the
|
||||
warning buffer for any warning severity except @code{:debug}. The
|
||||
warnings of lower severity levels will still be written into the
|
||||
warnings buffer, but the buffer will not be forced onto display.
|
||||
shown immediately to the user. The default is @code{:warning}, which
|
||||
means to immediately display all warnings except @code{:debug}
|
||||
warnings.
|
||||
@end defopt
|
||||
|
||||
@defopt warning-minimum-log-level
|
||||
This user option specifies the minimum severity level that should be
|
||||
logged in the warnings buffer. Warnings of lower severity will be
|
||||
completely ignored: not written to the warnings buffer and not
|
||||
displayed. The default is @code{:warning}, which means to log
|
||||
warnings of any severity except @code{:debug}.
|
||||
logged in the warnings buffer. The default is @code{:warning}, which
|
||||
means to log all warnings except @code{:debug} warnings.
|
||||
@end defopt
|
||||
|
||||
@defopt warning-suppress-types
|
||||
This list specifies which warning types should not be displayed
|
||||
immediately when they occur. Each element of the list should be a
|
||||
list of symbols. If an element of this list has the same elements as
|
||||
the first elements in a warning type, then the warning of that type
|
||||
will not be shown on display by popping the warnings buffer in some
|
||||
window (the warning will still be logged in the warnings buffer).
|
||||
|
||||
For example, if the value of this variable is a list like this:
|
||||
|
||||
@lisp
|
||||
((foo) (bar subtype))
|
||||
@end lisp
|
||||
|
||||
@noindent
|
||||
then warnings whose types are @code{foo} or @code{(foo)} or
|
||||
@w{@code{(foo something)}} or @w{@code{(bar subtype other)}} will not
|
||||
be shown to the user.
|
||||
immediately for the user. Each element of the list should be a list
|
||||
of symbols. If its elements match the first elements in a warning
|
||||
type, then that warning is not displayed immediately.
|
||||
@end defopt
|
||||
|
||||
@defopt warning-suppress-log-types
|
||||
This list specifies which warning types should be ignored: not logged
|
||||
in the warnings buffer and not shown to the user. The structure and
|
||||
the matching of warning types are the same as for
|
||||
@code{warning-suppress-types} above.
|
||||
This list specifies which warning types should not be logged in the
|
||||
warnings buffer. Each element of the list should be a list of
|
||||
symbols. If it matches the first few elements in a warning type, then
|
||||
that warning is not logged.
|
||||
@end defopt
|
||||
|
||||
@cindex warnings, suppressing during startup
|
||||
@cindex prevent warnings in init files
|
||||
During startup, Emacs delays showing any warnings until after it
|
||||
loads and processes the site-wide and user's init files
|
||||
(@pxref{Startup Summary}). Let-binding (@pxref{Local Variables}) the
|
||||
values of these options around some code in your init files which
|
||||
might emit a warning will therefore not work, because it will not be
|
||||
in effect by the time the warning is actually processed. Thus, if you
|
||||
want to suppress some warnings during startup, change the values of
|
||||
the above options in your init file early enough, or put those
|
||||
let-binding forms in your @code{after-init-hook} or
|
||||
@code{emacs-startup-hook} functions. @xref{Init File}.
|
||||
|
||||
@node Delayed Warnings
|
||||
@subsection Delayed Warnings
|
||||
@cindex delayed warnings
|
||||
@cindex warnings, delayed
|
||||
|
||||
Sometimes, you may wish to avoid showing a warning while a command is
|
||||
running, and only show it only after the end of the command. You can
|
||||
use the function @code{delay-warning} for this. Emacs automatically
|
||||
delays any warnings emitted during the early stages of startup, and
|
||||
shows them only after the init files are processed.
|
||||
use the function @code{delay-warning} for this.
|
||||
|
||||
@defun delay-warning type message &optional level buffer-name
|
||||
This function is the delayed counterpart to @code{display-warning}
|
||||
|
|
@ -1015,7 +933,7 @@ with the same form, and the same meanings, as the argument list of
|
|||
@code{display-warning}. Immediately after running
|
||||
@code{post-command-hook} (@pxref{Command Overview}), the Emacs
|
||||
command loop displays all the warnings specified by this variable,
|
||||
then resets the variable to @code{nil}.
|
||||
then resets it to @code{nil}.
|
||||
@end defvar
|
||||
|
||||
Programs which need to further customize the delayed warnings
|
||||
|
|
@ -1024,9 +942,7 @@ mechanism can change the variable @code{delayed-warnings-hook}:
|
|||
@defvar delayed-warnings-hook
|
||||
This is a normal hook which is run by the Emacs command loop, after
|
||||
@code{post-command-hook}, in order to process and display delayed
|
||||
warnings. Emacs also runs this hook during startup, after loading the
|
||||
site-start and user init files (@pxref{Startup Summary}), because
|
||||
warnings emitted before that are automatically delayed.
|
||||
warnings.
|
||||
|
||||
Its default value is a list of two functions:
|
||||
|
||||
|
|
@ -6920,7 +6836,7 @@ This function puts image @var{image} in front of @var{pos} in the
|
|||
current buffer. The argument @var{pos} should be an integer or a
|
||||
marker. It specifies the buffer position where the image should appear.
|
||||
The argument @var{string} specifies the text that should hold the image
|
||||
as an alternative to the default @samp{x}.
|
||||
as an alternative to the default.
|
||||
|
||||
The argument @var{image} must be an image descriptor, perhaps returned
|
||||
by @code{create-image} or stored by @code{defimage}.
|
||||
|
|
@ -6933,7 +6849,7 @@ buffer's text.
|
|||
|
||||
Internally, this function creates an overlay, and gives it a
|
||||
@code{before-string} property containing text that has a @code{display}
|
||||
property whose value is the image. (Whew! that was a mouthful@dots{})
|
||||
property whose value is the image. (Whew!)
|
||||
@end defun
|
||||
|
||||
@defun remove-images start end &optional buffer
|
||||
|
|
@ -6980,47 +6896,41 @@ This function returns @code{t} if point is on an image, and @code{nil}
|
|||
otherwise.
|
||||
@end defun
|
||||
|
||||
@cindex operations on images
|
||||
Images inserted with the insertion functions above also get a local
|
||||
keymap installed in the text properties (or overlays) that span the
|
||||
displayed image. This keymap defines the following commands:
|
||||
|
||||
@table @kbd
|
||||
@findex image-increase-size
|
||||
@item i +
|
||||
Increase the image size (@code{image-increase-size})
|
||||
Increase the image size (@code{image-increase-size}). A prefix value
|
||||
of @samp{4} means to increase the size by 40%. The default is 20%.
|
||||
|
||||
@findex image-decrease-size
|
||||
@item i -
|
||||
Decrease the image size (@code{image-decrease-size}).
|
||||
Decrease the image size (@code{image-increase-size}). A prefix value
|
||||
of @samp{4} means to decrease the size by 40%. The default is 20%.
|
||||
|
||||
@findex image-rotate
|
||||
@item i r
|
||||
Rotate the image (@code{image-rotate}).
|
||||
Rotate the image by 90 degrees clockwise (@code{image-rotate}).
|
||||
A prefix means to rotate by 90 degrees counter-clockwise instead.
|
||||
|
||||
@findex image-flip-horizontally
|
||||
@item i h
|
||||
Flip the image horizontally (@code{image-flip-horizontally}).
|
||||
|
||||
@findex image-flip-vertically
|
||||
@item i v
|
||||
Flip the image vertically (@code{image-flip-vertically}).
|
||||
|
||||
@findex image-save
|
||||
@item i o
|
||||
Save the image to a file (@code{image-save}).
|
||||
|
||||
@findex image-crop
|
||||
@item i c
|
||||
Interactively crop the image (@code{image-crop}).
|
||||
Crop the image interactively (@code{image-crop}).
|
||||
|
||||
@findex image-cut
|
||||
@item i x
|
||||
Interactively cut a rectangle from the image (@code{image-cut}).
|
||||
Cut a rectangle from the image interactively (@code{image-cut}).
|
||||
@end table
|
||||
|
||||
@xref{Image Mode,,, emacs, The GNU Emacs Manual}, for more details
|
||||
about these image-specific key bindings.
|
||||
The size and rotation commands are ``repeating'', which means that you
|
||||
can continue adjusting the image without using the @kbd{i} prefix.
|
||||
|
||||
@node Multi-Frame Images
|
||||
@subsection Multi-Frame Images
|
||||
|
|
|
|||
|
|
@ -3390,7 +3390,7 @@ first, before handlers for jobs such as remote file access.
|
|||
@code{file-directory-p},
|
||||
@code{file-equal-p},
|
||||
@code{file-executable-p}, @code{file-exists-p},
|
||||
@code{file-group-gid}, @code{file-in-directory-p},
|
||||
@code{file-in-directory-p},
|
||||
@code{file-local-copy}, @code{file-locked-p},
|
||||
@code{file-modes}, @code{file-name-all-completions},
|
||||
@code{file-name-as-directory},
|
||||
|
|
@ -3452,7 +3452,7 @@ first, before handlers for jobs such as remote file access.
|
|||
@code{file-direc@discretionary{}{}{}tory-p},
|
||||
@code{file-equal-p},
|
||||
@code{file-executable-p}, @code{file-exists-p},
|
||||
@code{file-group-gid}, @code{file-in-directory-p},
|
||||
@code{file-in-directory-p},
|
||||
@code{file-local-copy}, @code{file-locked-p},
|
||||
@code{file-modes}, @code{file-name-all-completions},
|
||||
@code{file-name-as-directory},
|
||||
|
|
|
|||
|
|
@ -3577,7 +3577,7 @@ the mouse position list will be @code{nil} if the value is
|
|||
@code{drag-source}. This is useful to determine if a frame is not
|
||||
directly visible underneath the mouse pointer.
|
||||
|
||||
The @code{track-mouse} macro causes Emacs to generate mouse motion
|
||||
The @code{track-mouse} form causes Emacs to generate mouse motion
|
||||
events by binding the variable @code{track-mouse} to a
|
||||
non-@code{nil} value. If that variable has the special value
|
||||
@code{dragging}, it additionally instructs the display engine to
|
||||
|
|
@ -4112,7 +4112,7 @@ has the same meaning as the @var{action} argument to
|
|||
Emacs implements receiving text and URLs individually for each
|
||||
window system, and does not by default support receiving other kinds
|
||||
of data as drops. To support receiving other kinds of data, use the
|
||||
X-specific interface described below.
|
||||
X-specific interface described below:
|
||||
|
||||
@vindex x-dnd-test-function
|
||||
@vindex x-dnd-known-types
|
||||
|
|
@ -4141,71 +4141,29 @@ depending on the specific drag-and-drop protocol being used. For
|
|||
example, the data type used for plain text may be either
|
||||
@code{"STRING"} or @code{"text/plain"}.
|
||||
|
||||
@cindex XDS
|
||||
@cindex direct save protocol
|
||||
@vindex x-dnd-direct-save-function
|
||||
When Emacs runs on X window system, it supports the X Direct Save
|
||||
(@acronym{XDS}) protocol, which allows users to save a file by
|
||||
dragging and dropping it onto an Emacs window, such as a Dired window.
|
||||
To comply with the unique requirements of @acronym{XDS}, these
|
||||
drag-and-drop requests are processed specially: instead of being
|
||||
handled according to @code{x-dnd-types-alist}, they are handled by the
|
||||
@dfn{direct-save function} that is the value of the variable
|
||||
@code{x-dnd-direct-save-function}. The value should be a function of
|
||||
two arguments, @var{need-name} and @var{filename}. The @acronym{XDS}
|
||||
protocol uses a two-step procedure for dragging files:
|
||||
|
||||
@enumerate 1
|
||||
@item
|
||||
The application from which the file is dragged asks Emacs to provide
|
||||
the full file name under which to save the file. For this purpose,
|
||||
the direct-save function is called with its first argument
|
||||
@var{need-name} non-@code{nil}, and the second argument @var{filename}
|
||||
set to the basename of the file to be saved. It should return the
|
||||
fully-expanded absolute file name under which to save the file. For
|
||||
example, if a file is dragged to a Dired window, the natural directory
|
||||
for the file is the directory of the file shown at location of the
|
||||
drop. If saving the file is not possible for some reason, the
|
||||
function should return @code{nil}, which will cancel the drag-and-drop
|
||||
operation.
|
||||
|
||||
@item
|
||||
The application from which the file is dragged saves the file under
|
||||
the name returned by the first call to the direct-save function. If
|
||||
it succeeds in saving the file, the direct-save function is called
|
||||
again, this time with the first argument @var{need-name} set to
|
||||
@code{nil} and the second argument @var{filename} set to the full
|
||||
absolute name of the saved file. The function is then expected to do
|
||||
whatever is needed given the fact that file was saved. For example,
|
||||
Dired should update the directory on display by showing the new file
|
||||
there.
|
||||
@end enumerate
|
||||
|
||||
The default value of @code{x-dnd-direct-save-function} is
|
||||
@code{x-dnd-save-direct}.
|
||||
|
||||
@defun x-dnd-save-direct need-name filename
|
||||
When called with the @var{need-name} argument non-@code{nil}, this
|
||||
function prompts the user for the absolute file name under which it
|
||||
should be saved. If the specified file already exists, it
|
||||
additionally asks the user whether to overwrite it, and returns the
|
||||
absolute file name only if the user confirms the overwriting.
|
||||
|
||||
When called with the @var{need-name} argument @code{nil}, it reverts
|
||||
the Dired listing if the current buffer is in Dired mode or one of its
|
||||
descendants, and otherwise visits the file by calling @code{find-file}
|
||||
(@pxref{Visiting Functions}).
|
||||
@end defun
|
||||
|
||||
@defun x-dnd-save-direct-immediately need-name filename
|
||||
This function works like @code{x-dnd-save-direct}, but when called
|
||||
with its @var{need-name} argument non-@code{nil}, it doesn't prompt
|
||||
the user for the full name of the file to be saved; instead, it
|
||||
returns its argument @var{filename} expanded against the current
|
||||
buffer's default directory (@pxref{File Name Expansion}). (It still
|
||||
asks for confirmation if a file by that name already exists in the
|
||||
default directory.)
|
||||
@end defun
|
||||
@c FIXME: This description is overly-complicated and confusing. In
|
||||
@c particular, the two calls to the function basically sound
|
||||
@c identical, so it is unclear how should the function distinguish
|
||||
@c between the first and the second one. The description of who asks
|
||||
@c whom to do what is also very hard to understand. Needs rewording,
|
||||
@c and needs shorter sentences. Perhaps examples could help.
|
||||
However, @code{x-dnd-types-alist} does not handle a special kind of
|
||||
drop sent by a program that wants Emacs to tell it where to save a
|
||||
file in a specific location determined by the user. These drops are
|
||||
instead handled by a function that is the value of the variable
|
||||
@code{x-dnd-direct-save-function}. This function should accept two arguments.
|
||||
If the first argument is non-@code{nil}, then the second argument is a
|
||||
file name to save (with leading directories) that the other
|
||||
program recommends, and the
|
||||
function should return the full file name under which it should be
|
||||
saved. After the function completes, Emacs will ask the other program
|
||||
to save the file under the name that was returned, and if the file was
|
||||
successfully saved, call the function again with the first argument
|
||||
set to a non-@code{nil} value and the second argument set to the file
|
||||
name that was returned. The function should then perform whatever
|
||||
action is appropriate (i.e., opening the file or refreshing a
|
||||
directory listing.)
|
||||
|
||||
@cindex initiating drag-and-drop
|
||||
On capable window systems, Emacs also supports dragging contents
|
||||
|
|
|
|||
|
|
@ -593,8 +593,8 @@ symbol a function definition, its function cell is said to be
|
|||
In practice, nearly all functions have names, and are referred to by
|
||||
their names. You can create a named Lisp function by defining a
|
||||
lambda expression and putting it in a function cell (@pxref{Function
|
||||
Cells}). However, it is more common to use the @code{defun} macro,
|
||||
described in the next section.
|
||||
Cells}). However, it is more common to use the @code{defun} special
|
||||
form, described in the next section.
|
||||
@ifnottex
|
||||
@xref{Defining Functions}.
|
||||
@end ifnottex
|
||||
|
|
@ -2631,12 +2631,6 @@ so the byte compiler can ignore calls whose value is ignored. This is
|
|||
the same as the @code{side-effect-free} property of the function's
|
||||
symbol, @pxref{Standard Properties}.
|
||||
|
||||
@item (important-return-value @var{val})
|
||||
If @var{val} is non-@code{nil}, the byte compiler will warn about
|
||||
calls to this function that do not use the returned value. This is the
|
||||
same as the @code{important-return-value} property of the function's
|
||||
symbol, @pxref{Standard Properties}.
|
||||
|
||||
@item (speed @var{n})
|
||||
Specify the value of @code{native-comp-speed} in effect for native
|
||||
compilation of this function (@pxref{Native-Compilation Variables}).
|
||||
|
|
@ -2699,14 +2693,13 @@ byte compiler can check that the calls match the declaration.
|
|||
Tell the byte compiler to assume that @var{function} is defined in the
|
||||
file @var{file}. The optional third argument @var{arglist} is either
|
||||
@code{t}, meaning the argument list is unspecified, or a list of
|
||||
formal parameters in the same style as @code{defun} (including the
|
||||
parentheses). An omitted @var{arglist} defaults to @code{t}, not
|
||||
@code{nil}; this is atypical behavior for omitted arguments, and it
|
||||
means that to supply a fourth but not third argument one must specify
|
||||
@code{t} for the third-argument placeholder instead of the usual
|
||||
@code{nil}. The optional fourth argument @var{fileonly}
|
||||
non-@code{nil} means check only that @var{file} exists, not that it
|
||||
actually defines @var{function}.
|
||||
formal parameters in the same style as @code{defun}. An omitted
|
||||
@var{arglist} defaults to @code{t}, not @code{nil}; this is atypical
|
||||
behavior for omitted arguments, and it means that to supply a fourth
|
||||
but not third argument one must specify @code{t} for the third-argument
|
||||
placeholder instead of the usual @code{nil}. The optional fourth
|
||||
argument @var{fileonly} non-@code{nil} means check only that
|
||||
@var{file} exists, not that it actually defines @var{function}.
|
||||
@end defmac
|
||||
|
||||
@findex check-declare-file
|
||||
|
|
|
|||
|
|
@ -768,8 +768,8 @@ prefix definition, and then by those from the global map.
|
|||
In the following example, we make @kbd{C-p} a prefix key in the local
|
||||
keymap, in such a way that @kbd{C-p} is identical to @kbd{C-x}. Then
|
||||
the binding for @kbd{C-p C-f} is the function @code{find-file}, just
|
||||
like @kbd{C-x C-f}. By contrast, the key sequence @kbd{C-p 9} is not
|
||||
found in any active keymap.
|
||||
like @kbd{C-x C-f}. The key sequence @kbd{C-p 6} is not found in any
|
||||
active keymap.
|
||||
|
||||
@example
|
||||
@group
|
||||
|
|
@ -778,14 +778,15 @@ found in any active keymap.
|
|||
@end group
|
||||
@group
|
||||
(keymap-local-set "C-p" ctl-x-map)
|
||||
@result{} (keymap #^[nil nil keymap @dots{}
|
||||
@result{} nil
|
||||
@end group
|
||||
@group
|
||||
(keymap-lookup nil "C-p C-f")
|
||||
(keymap-binding "C-p C-f")
|
||||
@result{} find-file
|
||||
@end group
|
||||
|
||||
@group
|
||||
(keymap-lookup nil "C-p 9")
|
||||
(keymap-binding "C-p 6")
|
||||
@result{} nil
|
||||
@end group
|
||||
@end example
|
||||
|
|
@ -882,7 +883,7 @@ Normally it ignores @code{overriding-local-map} and
|
|||
then it pays attention to them. @var{position} can optionally be either
|
||||
an event position as returned by @code{event-start} or a buffer
|
||||
position, and may change the keymaps as described for
|
||||
@code{keymap-lookup} (@pxref{Functions for Key Lookup, keymap-lookup}).
|
||||
@code{keymap-binding}.
|
||||
@end defun
|
||||
|
||||
@node Searching Keymaps
|
||||
|
|
@ -1307,11 +1308,7 @@ the second example.
|
|||
@end group
|
||||
@end example
|
||||
|
||||
The @var{keymap} argument can be @code{nil}, meaning to look up
|
||||
@var{key} in the current keymaps (as returned by
|
||||
@code{current-active-maps}, @pxref{Active Keymaps}); or it can be a
|
||||
keymap or a list of keymaps, meaning to look up @var{key} only in the
|
||||
specified keymaps.
|
||||
The @var{keymap} argument can also be a list of keymaps.
|
||||
|
||||
Unlike @code{read-key-sequence}, this function does not modify the
|
||||
specified events in ways that discard information (@pxref{Key Sequence
|
||||
|
|
|
|||
|
|
@ -1224,15 +1224,7 @@ x
|
|||
@end example
|
||||
|
||||
However, the other arguments (all but the last) should be mutable
|
||||
lists. They can be dotted lists, whose last @sc{cdr}s are then
|
||||
replaced with the next argument:
|
||||
|
||||
@example
|
||||
@group
|
||||
(nconc (cons 1 2) (cons 3 (cons 4 5)) 'z)
|
||||
@result{} (1 3 4 . z)
|
||||
@end group
|
||||
@end example
|
||||
lists.
|
||||
|
||||
A common pitfall is to use a constant list as a non-last argument to
|
||||
@code{nconc}. If you do this, the resulting behavior is undefined
|
||||
|
|
|
|||
|
|
@ -1338,7 +1338,7 @@ specified @var{file} and perform the necessary initialization of the
|
|||
module. This is the primitive which makes sure the module exports the
|
||||
@code{plugin_is_GPL_compatible} symbol, calls the module's
|
||||
@code{emacs_module_init} function, and signals an error if that
|
||||
function returns an error indication, or if the user typed @kbd{C-g}
|
||||
function returns an error indication, or if the use typed @kbd{C-g}
|
||||
during the initialization. If the initialization succeeds,
|
||||
@code{module-load} returns @code{t}. Note that @var{file} must
|
||||
already have the proper file-name extension, as this function doesn't
|
||||
|
|
|
|||
|
|
@ -1775,8 +1775,6 @@ it's used to say which major modes this minor mode is useful in.
|
|||
|
||||
Any other keyword arguments are passed directly to the
|
||||
@code{defcustom} generated for the variable @var{mode}.
|
||||
@xref{Variable Definitions}, for the description of those keywords and
|
||||
their values.
|
||||
|
||||
The command named @var{mode} first performs the standard actions such as
|
||||
setting the variable named @var{mode} and then executes the @var{body}
|
||||
|
|
@ -1862,10 +1860,9 @@ by visiting files, and buffers that use a major mode other than
|
|||
Fundamental mode; but it does not detect the creation of a new buffer
|
||||
in Fundamental mode.
|
||||
|
||||
This macro defines the customization option @var{global-mode}
|
||||
(@pxref{Customization}), which can be toggled via the Customize
|
||||
interface to turn the minor mode on and off. As with
|
||||
@code{define-minor-mode}, you should ensure that the
|
||||
This defines the customization option @var{global-mode} (@pxref{Customization}),
|
||||
which can be toggled in the Customize interface to turn the minor mode on
|
||||
and off. As with @code{define-minor-mode}, you should ensure that the
|
||||
@code{define-globalized-minor-mode} form is evaluated each time Emacs
|
||||
starts, for example by providing a @code{:require} keyword.
|
||||
|
||||
|
|
@ -1878,27 +1875,24 @@ Use @code{:variable @var{variable}} if that's not the case--some minor
|
|||
modes use a different variable to store this state information.
|
||||
|
||||
Generally speaking, when you define a globalized minor mode, you should
|
||||
also define a non-globalized version, so that people could use it (or
|
||||
disable it) in individual buffers. This also allows them to disable a
|
||||
also define a non-globalized version, so that people can use (or
|
||||
disable) it in individual buffers. This also allows them to disable a
|
||||
globally enabled minor mode in a specific major mode, by using that
|
||||
mode's hook.
|
||||
|
||||
If the macro is given a @code{:predicate} keyword, it will create a
|
||||
user option called the same as the global mode variable, but with
|
||||
@code{-modes} instead of @code{-mode} at the end, i.e.@:
|
||||
@code{@var{global-mode}s}. This variable will be used in a predicate
|
||||
function that determines whether the minor mode should be activated in
|
||||
a particular major mode. Valid values of @code{:predicate} include
|
||||
@code{t} (use in all major modes), @code{nil} (don't use in any major
|
||||
modes), or a list of mode names, optionally preceded with @code{not}
|
||||
(as in @w{@code{(not @var{mode-name} @dots{})}}). These elements can
|
||||
be mixed, as shown in the following examples.
|
||||
If given a @code{:predicate} keyword, a user option called the same as
|
||||
the global mode variable, but with @code{-modes} instead of
|
||||
@code{-mode} at the end will be created. The variable is used as a
|
||||
predicate that specifies which major modes the minor mode should be
|
||||
activated in. Valid values include @code{t} (use in all major modes,
|
||||
@code{nil} (use in no major modes), or a list of mode names (or
|
||||
@code{(not mode-name ...)}) elements (as well as @code{t} and
|
||||
@code{nil}).
|
||||
|
||||
@example
|
||||
(c-mode (not mail-mode message-mode) text-mode)
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
This means ``use in modes derived from @code{c-mode}, and not in
|
||||
modes derived from @code{message-mode} or @code{mail-mode}, but do use
|
||||
in modes derived from @code{text-mode}, and otherwise no other
|
||||
|
|
@ -1908,15 +1902,13 @@ modes''.
|
|||
((not c-mode) t)
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
This means ``don't use in modes derived from @code{c-mode}, but do use
|
||||
This means ``don't use modes derived from @code{c-mode}, but use
|
||||
everywhere else''.
|
||||
|
||||
@example
|
||||
(text-mode)
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
This means ``use in modes derived from @code{text-mode}, but nowhere
|
||||
else''. (There's an implicit @code{nil} element at the end.)
|
||||
@end defmac
|
||||
|
|
@ -2357,19 +2349,18 @@ enabled separately in each buffer.
|
|||
|
||||
@defvar global-mode-string
|
||||
This variable holds a mode line construct that, by default, appears in
|
||||
the mode line as part of @code{mode-line-misc-info}, just after the
|
||||
@code{which-function-mode} information if that minor mode is enabled,
|
||||
else after @code{mode-line-modes}. Elements that are added to this
|
||||
construct should normally end in a space (to ensure that consecutive
|
||||
@code{global-mode-string} elements display properly). For instance,
|
||||
the command @code{display-time} sets @code{global-mode-string} to
|
||||
refer to the variable @code{display-time-string}, which holds a string
|
||||
containing the time and load information.
|
||||
the mode line just after the @code{which-function-mode} minor mode if
|
||||
set, else after @code{mode-line-modes}. Elements that are added to
|
||||
this construct should normally end in a space (to ensure that
|
||||
consecutive @code{global-mode-string} elements display properly). For
|
||||
instance, the command @code{display-time} sets
|
||||
@code{global-mode-string} to refer to the variable
|
||||
@code{display-time-string}, which holds a string containing the time
|
||||
and load information.
|
||||
|
||||
The @samp{%M} construct substitutes the value of
|
||||
@code{global-mode-string}. This construct is not used by the default
|
||||
mode line, as the variable itself is used in
|
||||
@code{mode-line-misc-info}.
|
||||
@code{global-mode-string}, but that is obsolete, since the variable is
|
||||
included in the mode line from @code{mode-line-format}.
|
||||
@end defvar
|
||||
|
||||
Here is a simplified version of the default value of
|
||||
|
|
@ -2398,7 +2389,6 @@ specifies addition of text properties.
|
|||
|
||||
@node %-Constructs
|
||||
@subsection @code{%}-Constructs in the Mode Line
|
||||
@cindex @code{%}-constructs in the mode line
|
||||
|
||||
Strings used as mode line constructs can use certain
|
||||
@code{%}-constructs to substitute various kinds of data. The
|
||||
|
|
@ -2450,10 +2440,6 @@ abbreviate.
|
|||
The current line number of point, counting within the accessible portion
|
||||
of the buffer.
|
||||
|
||||
@item %M
|
||||
The value of @code{global-mode-string} (which is part of
|
||||
@code{mode-line-misc-info} by default).
|
||||
|
||||
@item %n
|
||||
@samp{Narrow} when narrowing is in effect; nothing otherwise (see
|
||||
@code{narrow-to-region} in @ref{Narrowing}).
|
||||
|
|
@ -2489,9 +2475,6 @@ The mnemonics of keyboard, terminal, and buffer coding systems.
|
|||
@item %Z
|
||||
Like @samp{%z}, but including the end-of-line format.
|
||||
|
||||
@item %&
|
||||
@samp{*} if the buffer is modified, and @samp{-} otherwise.
|
||||
|
||||
@item %*
|
||||
@samp{%} if the buffer is read only (see @code{buffer-read-only}); @*
|
||||
@samp{*} if the buffer is modified (see @code{buffer-modified-p}); @*
|
||||
|
|
@ -2503,6 +2486,9 @@ Like @samp{%z}, but including the end-of-line format.
|
|||
@samp{-} otherwise. This differs from @samp{%*} only for a modified
|
||||
read-only buffer. @xref{Buffer Modification}.
|
||||
|
||||
@item %&
|
||||
@samp{*} if the buffer is modified, and @samp{-} otherwise.
|
||||
|
||||
@item %@@
|
||||
@samp{@@} if the buffer's @code{default-directory} (@pxref{File Name
|
||||
Expansion}) is on a remote machine, and @samp{-} otherwise.
|
||||
|
|
@ -2524,16 +2510,13 @@ The character @samp{%}---this is how to include a literal @samp{%} in a
|
|||
string in which @code{%}-constructs are allowed.
|
||||
@end table
|
||||
|
||||
@subsubheading Obsolete @code{%}-Constructs
|
||||
|
||||
The following constructs should no longer be used.
|
||||
The following @code{%}-construct is still supported, but it is
|
||||
obsolete, since you can get the same result using the variable
|
||||
@code{mode-name}.
|
||||
|
||||
@table @code
|
||||
@item %m
|
||||
Obsolete; use the @code{mode-name} variable instead. The @code{%m}
|
||||
construct is inadequate, as it produces an empty string if the value
|
||||
of @code{mode-name} is a non-string mode-line construct (as in
|
||||
@code{emacs-lisp-mode}, for example).
|
||||
The value of @code{mode-name}.
|
||||
@end table
|
||||
|
||||
@node Properties in Mode
|
||||
|
|
@ -4155,7 +4138,7 @@ Other keywords are optional:
|
|||
@end multitable
|
||||
|
||||
Lisp programs mark patterns in @var{query} with capture names (names
|
||||
that start with @code{@@}), and tree-sitter will return matched nodes
|
||||
that starts with @code{@@}), and tree-sitter will return matched nodes
|
||||
tagged with those same capture names. For the purpose of
|
||||
fontification, capture names in @var{query} should be face names like
|
||||
@code{font-lock-keyword-face}. The captured node will be fontified
|
||||
|
|
|
|||
|
|
@ -219,25 +219,17 @@ creates huge integers.
|
|||
|
||||
@cindex @acronym{IEEE} floating point
|
||||
Floating-point numbers are useful for representing numbers that are
|
||||
not integral. The range of floating-point numbers is the same as the
|
||||
range of the C data type @code{double} on the machine you are using.
|
||||
On almost all computers supported by Emacs, this is @acronym{IEEE}
|
||||
binary64 floating point format, which is standardized by
|
||||
@url{https://standards.ieee.org/standard/754-2019.html,,IEEE Std
|
||||
754-2019} and is discussed further in David Goldberg's paper
|
||||
not integral. The range of floating-point numbers is
|
||||
the same as the range of the C data type @code{double} on the machine
|
||||
you are using. On all computers supported by Emacs, this is
|
||||
@acronym{IEEE} binary64 floating point format, which is standardized by
|
||||
@url{https://standards.ieee.org/standard/754-2019.html,,IEEE Std 754-2019}
|
||||
and is discussed further in David Goldberg's paper
|
||||
``@url{https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html,
|
||||
What Every Computer Scientist Should Know About Floating-Point
|
||||
Arithmetic}''. On modern platforms, floating-point operations follow
|
||||
the IEEE-754 standard closely; however, results are not always rounded
|
||||
correctly on some systems, notably 32-bit x86.
|
||||
|
||||
On some old computer systems, Emacs may not use IEEE floating-point.
|
||||
We know of one such system on which Emacs runs correctly, but does not
|
||||
follow IEEE-754: the VAX running NetBSD using GCC 10.4.0, where the
|
||||
VAX @samp{D_Floating} format is used instead. IBM System/370-derived
|
||||
mainframes and their XL/C compiler are also capable of utilizing a
|
||||
hexadecimal floating point format, but Emacs has not yet been built in
|
||||
such a configuration.
|
||||
What Every Computer Scientist Should Know About Floating-Point Arithmetic}''.
|
||||
On modern platforms, floating-point operations follow the IEEE-754
|
||||
standard closely; however, results are not always rounded correctly on
|
||||
some obsolescent platforms, notably 32-bit x86.
|
||||
|
||||
The read syntax for floating-point numbers requires either a decimal
|
||||
point, an exponent, or both. Optional signs (@samp{+} or @samp{-})
|
||||
|
|
@ -270,10 +262,6 @@ two NaNs as equal when their
|
|||
signs and significands agree. Significands of NaNs are
|
||||
machine-dependent, as are the digits in their string representation.
|
||||
|
||||
NaNs are not available on systems which do not use IEEE
|
||||
floating-point arithmetic; if the read syntax for a NaN is used on a
|
||||
VAX, for example, the reader signals an error.
|
||||
|
||||
When NaNs and signed zeros are involved, non-numeric functions like
|
||||
@code{eql}, @code{equal}, @code{sxhash-eql}, @code{sxhash-equal} and
|
||||
@code{gethash} determine whether values are indistinguishable, not
|
||||
|
|
@ -754,10 +742,9 @@ by rounding the quotient towards zero after each division.
|
|||
|
||||
@cindex @code{arith-error} in division
|
||||
If you divide an integer by the integer 0, Emacs signals an
|
||||
@code{arith-error} error (@pxref{Errors}). On systems using IEEE-754
|
||||
floating-point, floating-point division of a nonzero number by zero
|
||||
yields either positive or negative infinity (@pxref{Float Basics});
|
||||
otherwise, an @code{arith-error} is signaled as usual.
|
||||
@code{arith-error} error (@pxref{Errors}). Floating-point division of
|
||||
a nonzero number by zero yields either positive or negative infinity
|
||||
(@pxref{Float Basics}).
|
||||
@end defun
|
||||
|
||||
@defun % dividend divisor
|
||||
|
|
|
|||
|
|
@ -182,9 +182,7 @@ is over, and, together with @code{before-init-time}, provides the
|
|||
measurement of how long it took.
|
||||
|
||||
@item
|
||||
It runs the normal hooks @code{after-init-hook} and
|
||||
@code{delayed-warnings-hook}. The latter shows any warnings emitted
|
||||
during previous stages of startup, which are automatically delayed.
|
||||
It runs the normal hook @code{after-init-hook}.
|
||||
|
||||
@item
|
||||
If the buffer @file{*scratch*} exists and is still in Fundamental mode
|
||||
|
|
@ -1290,22 +1288,12 @@ the remote connection has no associated user, it will instead return
|
|||
@end defun
|
||||
|
||||
@cindex GID
|
||||
@defun group-real-gid
|
||||
This function returns the real @acronym{GID} of the Emacs process.
|
||||
@end defun
|
||||
|
||||
@defun group-gid
|
||||
This function returns the effective @acronym{GID} of the Emacs process.
|
||||
@end defun
|
||||
|
||||
@defun file-group-gid
|
||||
This function returns the connection-local value for the user's
|
||||
effective @acronym{GID}. Similar to @code{file-user-uid}, if
|
||||
@code{default-directory} is local, this is equivalent to
|
||||
@code{group-gid}, but for remote files (@pxref{Remote Files, , ,
|
||||
emacs, The GNU Emacs Manual}), it will return the @acronym{GID} for
|
||||
the user associated with that remote connection; if the remote
|
||||
connection has no associated user, it will instead return -1.
|
||||
@defun group-real-gid
|
||||
This function returns the real @acronym{GID} of the Emacs process.
|
||||
@end defun
|
||||
|
||||
@defun system-users
|
||||
|
|
|
|||
|
|
@ -849,53 +849,6 @@ Each node in the returned tree looks like
|
|||
|
||||
@heading More convenience functions
|
||||
|
||||
@defun treesit-node-get node instructions
|
||||
This is a convenience function that chains together multiple node
|
||||
accessor functions together. For example, to get @var{node}'s
|
||||
parent's next sibling's second child's text:
|
||||
|
||||
@example
|
||||
@group
|
||||
(treesit-node-get node
|
||||
'((parent 1)
|
||||
(sibling 1 nil)
|
||||
(child 1 nil)
|
||||
(text nil)))
|
||||
@end group
|
||||
@end example
|
||||
|
||||
@var{instruction} is a list of INSTRUCTIONs of the form
|
||||
@w{@code{(@var{fn} @var{arg}...)}}. The following @var{fn}'s are
|
||||
supported:
|
||||
|
||||
@table @code
|
||||
@item (child @var{idx} @var{named})
|
||||
Get the @var{idx}'th child.
|
||||
|
||||
@item (parent @var{n})
|
||||
Go to parent @var{n} times.
|
||||
|
||||
@item (field-name)
|
||||
Get the field name of the current node.
|
||||
|
||||
@item (type)
|
||||
Get the type of the current node.
|
||||
|
||||
@item (text @var{no-property})
|
||||
Get the text of the current node.
|
||||
|
||||
@item (children @var{named})
|
||||
Get a list of children.
|
||||
|
||||
@item (sibling @var{step} @var{named})
|
||||
Get the nth prev/next sibling, negative @var{step} means prev sibling,
|
||||
positive means next sibling.
|
||||
@end table
|
||||
|
||||
Note that arguments like @var{named} and @var{no-property} can't be
|
||||
omitted, unlike in their original functions.
|
||||
@end defun
|
||||
|
||||
@defun treesit-filter-child node predicate &optional named
|
||||
This function finds immediate children of @var{node} that satisfy
|
||||
@var{predicate}.
|
||||
|
|
@ -1358,8 +1311,7 @@ matches regular expression @var{regexp}. Matching is case-sensitive.
|
|||
|
||||
@deffn Predicate pred fn &rest nodes
|
||||
Matches if function @var{fn} returns non-@code{nil} when passed each
|
||||
node in @var{nodes} as arguments. The function runs with the current
|
||||
buffer set to the buffer of node being queried.
|
||||
node in @var{nodes} as arguments.
|
||||
@end deffn
|
||||
|
||||
Note that a predicate can only refer to capture names that appear in
|
||||
|
|
|
|||
|
|
@ -1755,9 +1755,7 @@ caught automatically, so that it doesn't stop the execution of whatever
|
|||
program was running when the filter function was started. However, if
|
||||
@code{debug-on-error} is non-@code{nil}, errors are not caught.
|
||||
This makes it possible to use the Lisp debugger to debug filter
|
||||
functions. @xref{Debugger}. If an error is caught, Emacs pauses for
|
||||
@code{process-error-pause-time} seconds so that the user sees the
|
||||
error. @xref{Asynchronous Processes}
|
||||
functions. @xref{Debugger}.
|
||||
|
||||
Many filter functions sometimes (or always) insert the output in the
|
||||
process's buffer, mimicking the actions of the default filter.
|
||||
|
|
@ -2161,9 +2159,7 @@ automatically, so that it doesn't stop the execution of whatever
|
|||
programs was running when the sentinel was started. However, if
|
||||
@code{debug-on-error} is non-@code{nil}, errors are not caught.
|
||||
This makes it possible to use the Lisp debugger to debug the
|
||||
sentinel. @xref{Debugger}. If an error is caught, Emacs pauses for
|
||||
@code{process-error-pause-time} seconds so that the user sees the
|
||||
error. @xref{Asynchronous Processes}
|
||||
sentinel. @xref{Debugger}.
|
||||
|
||||
While a sentinel is running, the process sentinel is temporarily
|
||||
set to @code{nil} so that the sentinel won't run recursively.
|
||||
|
|
|
|||
|
|
@ -376,43 +376,45 @@ is less than @var{c}, then @var{a} must be less than @var{c}. If you
|
|||
use a comparison function which does not meet these requirements, the
|
||||
result of @code{sort} is unpredictable.
|
||||
|
||||
The destructive aspect of @code{sort} for lists is that it reuses the
|
||||
cons cells forming @var{sequence} by changing their contents, possibly
|
||||
rearranging them in a different order. This means that the value of
|
||||
the input list is undefined after sorting; only the list returned by
|
||||
@code{sort} has a well-defined value. Example:
|
||||
The destructive aspect of @code{sort} for lists is that it rearranges the
|
||||
cons cells forming @var{sequence} by changing @sc{cdr}s. A nondestructive
|
||||
sort function would create new cons cells to store the elements in their
|
||||
sorted order. If you wish to make a sorted copy without destroying the
|
||||
original, copy it first with @code{copy-sequence} and then sort.
|
||||
|
||||
Sorting does not change the @sc{car}s of the cons cells in @var{sequence};
|
||||
the cons cell that originally contained the element @code{a} in
|
||||
@var{sequence} still has @code{a} in its @sc{car} after sorting, but it now
|
||||
appears in a different position in the list due to the change of
|
||||
@sc{cdr}s. For example:
|
||||
|
||||
@example
|
||||
@group
|
||||
(setq nums (list 2 1 4 3 0))
|
||||
(sort nums #'<)
|
||||
@result{} (0 1 2 3 4)
|
||||
; nums is unpredictable at this point
|
||||
(setq nums (list 1 3 2 6 5 4 0))
|
||||
@result{} (1 3 2 6 5 4 0)
|
||||
@end group
|
||||
@end example
|
||||
|
||||
Most often we store the result back into the variable that held the
|
||||
original list:
|
||||
|
||||
@example
|
||||
(setq nums (sort nums #'<))
|
||||
@end example
|
||||
|
||||
If you wish to make a sorted copy without destroying the original,
|
||||
copy it first and then sort:
|
||||
|
||||
@example
|
||||
@group
|
||||
(setq nums (list 2 1 4 3 0))
|
||||
(sort (copy-sequence nums) #'<)
|
||||
@result{} (0 1 2 3 4)
|
||||
(sort nums #'<)
|
||||
@result{} (0 1 2 3 4 5 6)
|
||||
@end group
|
||||
@group
|
||||
nums
|
||||
@result{} (2 1 4 3 0)
|
||||
@result{} (1 2 3 4 5 6)
|
||||
@end group
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
@strong{Warning}: Note that the list in @code{nums} no longer contains
|
||||
0; this is the same cons cell that it was before, but it is no longer
|
||||
the first one in the list. Don't assume a variable that formerly held
|
||||
the argument now holds the entire sorted list! Instead, save the result
|
||||
of @code{sort} and use that. Most often we store the result back into
|
||||
the variable that held the original list:
|
||||
|
||||
@example
|
||||
(setq nums (sort nums #'<))
|
||||
@end example
|
||||
|
||||
For the better understanding of what stable sort is, consider the following
|
||||
vector example. After sorting, all items whose @code{car} is 8 are grouped
|
||||
at the beginning of @code{vector}, but their relative order is preserved.
|
||||
|
|
|
|||
|
|
@ -643,12 +643,6 @@ ignore a call whose value is unused. If the property's value is
|
|||
calls. In addition to byte compiler optimizations, this property is
|
||||
also used for determining function safety (@pxref{Function Safety}).
|
||||
|
||||
@item important-return-value
|
||||
@cindex @code{important-return-value} property
|
||||
A non-@code{nil} value makes the byte compiler warn about code that
|
||||
calls the named function without using its returned value. This is
|
||||
useful for functions where doing so is likely to be a mistake.
|
||||
|
||||
@item undo-inhibit-region
|
||||
If non-@code{nil}, the named function prevents the @code{undo} operation
|
||||
from being restricted to the active region, if @code{undo} is invoked
|
||||
|
|
|
|||
|
|
@ -3765,19 +3765,18 @@ Consecutive characters with the same @code{field} property constitute a
|
|||
@item cursor
|
||||
@kindex cursor @r{(text property)}
|
||||
Normally, the cursor is displayed at the beginning or the end of any
|
||||
overlay and text property strings that ``hide'' (i.e., are displayed
|
||||
instead of) the current buffer position. You can instead tell Emacs
|
||||
to place the cursor on any desired character of these strings by
|
||||
giving that character a non-@code{nil} @code{cursor} text property.
|
||||
In addition, if the value of the @code{cursor} property is an integer,
|
||||
it specifies the number of buffer's character positions, starting with
|
||||
the position where the overlay or the @code{display} property begins,
|
||||
for which the cursor should be displayed on that character.
|
||||
Specifically, if the value of the @code{cursor} property of a
|
||||
character is the number @var{n}, the cursor will be displayed on this
|
||||
character for any buffer position in the range
|
||||
@code{[@var{ovpos}..@var{ovpos}+@var{n})}, where @var{ovpos} is the
|
||||
overlay's starting position given by @code{overlay-start}
|
||||
overlay and text property strings present at the current buffer
|
||||
position. You can instead tell Emacs to place the cursor on any
|
||||
desired character of these strings by giving that character a
|
||||
non-@code{nil} @code{cursor} text property. In addition, if the value
|
||||
of the @code{cursor} property is an integer, it specifies the number
|
||||
of buffer's character positions, starting with the position where the
|
||||
overlay or the @code{display} property begins, for which the cursor
|
||||
should be displayed on that character. Specifically, if the value of
|
||||
the @code{cursor} property of a character is the number @var{n}, the
|
||||
cursor will be displayed on this character for any buffer position in
|
||||
the range @code{[@var{ovpos}..@var{ovpos}+@var{n})}, where @var{ovpos}
|
||||
is the overlay's starting position given by @code{overlay-start}
|
||||
(@pxref{Managing Overlays}), or the position where the @code{display}
|
||||
text property begins in the buffer.
|
||||
|
||||
|
|
@ -5510,7 +5509,7 @@ contents of an SQLite database.
|
|||
@section Parsing HTML and XML
|
||||
@cindex parsing html
|
||||
|
||||
Emacs can be compiled with built-in @file{libxml2} support.
|
||||
Emacs can be compiled with built-in libxml2 support.
|
||||
|
||||
@defun libxml-available-p
|
||||
This function returns non-@code{nil} if built-in libxml2 support is
|
||||
|
|
@ -5529,10 +5528,8 @@ mistakes.
|
|||
If @var{start} or @var{end} are @code{nil}, they default to the values
|
||||
from @code{point-min} and @code{point-max}, respectively.
|
||||
|
||||
The optional argument @var{base-url}, if non-@code{nil}, should be
|
||||
used for warnings and errors reported by the @file{libxml2} library,
|
||||
but Emacs currently calls the library with errors and warnings
|
||||
disabled, so this argument is not used.
|
||||
The optional argument @var{base-url}, if non-@code{nil}, should be a
|
||||
string specifying the base URL for relative URLs occurring in links.
|
||||
|
||||
If the optional argument @var{discard-comments} is non-@code{nil},
|
||||
any top-level comment is discarded. (This argument is obsolete and
|
||||
|
|
|
|||
|
|
@ -1183,16 +1183,13 @@ wants the current value of a variable, it looks first in the lexical
|
|||
environment; if the variable is not specified in there, it looks in
|
||||
the symbol's value cell, where the dynamic value is stored.
|
||||
|
||||
(Internally, the lexical environment is a list whose members are
|
||||
usually cons cells that are symbol-value pairs, but some of its
|
||||
members can be symbols rather than cons cells. A symbol in the list
|
||||
means the lexical environment declared that symbol's variable as
|
||||
locally considered to be dynamically bound. This list can be passed
|
||||
as the second argument to the @code{eval} function, in order to
|
||||
specify a lexical environment in which to evaluate a form.
|
||||
@xref{Eval}. Most Emacs Lisp programs, however, should not interact
|
||||
directly with lexical environments in this way; only specialized
|
||||
programs like debuggers.)
|
||||
(Internally, the lexical environment is an alist of symbol-value
|
||||
pairs, with the final element in the alist being the symbol @code{t}
|
||||
rather than a cons cell. Such an alist can be passed as the second
|
||||
argument to the @code{eval} function, in order to specify a lexical
|
||||
environment in which to evaluate a form. @xref{Eval}. Most Emacs
|
||||
Lisp programs, however, should not interact directly with lexical
|
||||
environments in this way; only specialized programs like debuggers.)
|
||||
|
||||
@cindex closures, example of using
|
||||
Lexical bindings have indefinite extent. Even after a binding
|
||||
|
|
@ -2561,9 +2558,6 @@ documentation as @var{base-variable} has, if any, unless
|
|||
the documentation of the variable at the end of the chain of aliases.
|
||||
|
||||
This function returns @var{base-variable}.
|
||||
|
||||
If the resulting variable definition chain would be circular, then
|
||||
Emacs will signal a @code{cyclic-variable-indirection} error.
|
||||
@end defun
|
||||
|
||||
Variable aliases are convenient for replacing an old name for a
|
||||
|
|
@ -2612,6 +2606,9 @@ look like:
|
|||
This function returns the variable at the end of the chain of aliases
|
||||
of @var{variable}. If @var{variable} is not a symbol, or if @var{variable} is
|
||||
not defined as an alias, the function returns @var{variable}.
|
||||
|
||||
This function signals a @code{cyclic-variable-indirection} error if
|
||||
there is a loop in the chain of symbols.
|
||||
@end defun
|
||||
|
||||
@example
|
||||
|
|
|
|||
|
|
@ -3216,7 +3216,7 @@ any window it creates as dedicated to its buffer (@pxref{Dedicated
|
|||
Windows}). It does that by calling @code{set-window-dedicated-p} with
|
||||
the chosen window as first argument and the entry's value as second.
|
||||
Side windows are by default dedicated with the value @code{side}
|
||||
(@pxref{Side Window Options and Functions}).
|
||||
((@pxref{Side Window Options and Functions}).
|
||||
|
||||
@vindex preserve-size@r{, a buffer display action alist entry}
|
||||
@item preserve-size
|
||||
|
|
|
|||
|
|
@ -5394,7 +5394,7 @@ a variable containing a vector of rules.
|
|||
1: [merge, secsqr] 1: [a/x + b/x := (a + b)/x, ... ]
|
||||
. .
|
||||
|
||||
' [merge,secsqr] @key{RET} =
|
||||
' [merge,sinsqr] @key{RET} =
|
||||
|
||||
@end group
|
||||
@end smallexample
|
||||
|
|
|
|||
|
|
@ -330,7 +330,6 @@ Syntactic Symbols
|
|||
* Multiline Macro Symbols::
|
||||
* Objective-C Method Symbols::
|
||||
* Java Symbols::
|
||||
* Constraint Symbols::
|
||||
* Statement Block Symbols::
|
||||
* K&R Symbols::
|
||||
|
||||
|
|
@ -4235,9 +4234,6 @@ The first line in a ``topmost'' definition. @ref{Function Symbols}.
|
|||
Topmost definition continuation lines. This is only used in the parts
|
||||
that aren't covered by other symbols such as @code{func-decl-cont} and
|
||||
@code{knr-argdecl}. @ref{Function Symbols}.
|
||||
@item constraint-cont
|
||||
Continuation line of a topmost C++20 concept or requires clause.
|
||||
@ref{Constraint Symbols}.
|
||||
@item annotation-top-cont
|
||||
Topmost definition continuation lines where all previous items are
|
||||
annotations. @ref{Java Symbols}.
|
||||
|
|
@ -4401,7 +4397,6 @@ Java. @ref{Java Symbols}.
|
|||
* Multiline Macro Symbols::
|
||||
* Objective-C Method Symbols::
|
||||
* Java Symbols::
|
||||
* Constraint Symbols::
|
||||
* Statement Block Symbols::
|
||||
* K&R Symbols::
|
||||
@end menu
|
||||
|
|
@ -5075,39 +5070,6 @@ the current line. Similarly, line 4 is assigned the @code{annotation-var-cont}
|
|||
syntax due to it being a continuation of a variable declaration where preceding
|
||||
the declaration is an annotation.
|
||||
|
||||
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
@node Constraint Symbols
|
||||
@subsection C++ Constraint Symbols
|
||||
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
|
||||
The C++20 standard introduced the notion of @dfn{concepts} and
|
||||
@dfn{requirements}, a typical instance of which looks something like
|
||||
this:
|
||||
|
||||
@example
|
||||
1: template <typename T>
|
||||
2: requires
|
||||
3: requires (T t) @{
|
||||
4: @{ ++t; @}
|
||||
5: @}
|
||||
6: && std::is_integral<T>
|
||||
7: int foo();
|
||||
@end example
|
||||
|
||||
@ssindex constraint-cont
|
||||
Line 1 is assigned the familiar @code{topmost-intro}. Line 2 gets
|
||||
@code{topmost-intro-cont}, being the keyword which introduces a
|
||||
@dfn{requires clause}. Lines 3, 6, and 7 are assigned the syntax
|
||||
@code{constraint-cont}, being continuations of the requires clause
|
||||
started on line 2. Lines 4 and 5 get the syntaxes
|
||||
@code{defun-block-intro} and @code{defun-close}, being analyzed as
|
||||
though part of a function.
|
||||
|
||||
Note that the @code{requires} on Line 3 begins a @dfn{requires
|
||||
expression}, not a a requires clause, hence its components are not
|
||||
assigned @code{constraint-cont}. See
|
||||
@url{https://en.cppreference.com/w/cpp/language/requires}.
|
||||
|
||||
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
@node Statement Block Symbols
|
||||
@subsection Statement Block Symbols
|
||||
|
|
|
|||
|
|
@ -3133,23 +3133,13 @@ example, you can put the following in your init file:
|
|||
|
||||
To avoid the slightly distracting visual effect of Emacs starting with
|
||||
its default frame size and then growing to fullscreen, you can add an
|
||||
@samp{Emacs.Geometry} entry to the Windows Registry settings. @xref{X
|
||||
Resources,,, emacs, The GNU Emacs Manual}. To compute the correct
|
||||
values for width and height you use in the Registry settings, first
|
||||
maximize the Emacs frame and then evaluate @code{(frame-height)} and
|
||||
@samp{Emacs.Geometry} entry to the Windows registry settings.
|
||||
@xref{X Resources,,, emacs, The GNU Emacs Manual}.
|
||||
|
||||
To compute the correct values for width and height, first maximize the
|
||||
Emacs frame and then evaluate @code{(frame-height)} and
|
||||
@code{(frame-width)} with @kbd{M-:}.
|
||||
|
||||
Alternatively, you can avoid the visual effect of Emacs changing its
|
||||
frame size entirely in your init file (i.e., without using the
|
||||
Registry), like this:
|
||||
|
||||
@lisp
|
||||
(setq frame-resize-pixelwise t)
|
||||
(set-frame-position nil 0 0)
|
||||
(set-frame-size nil (display-pixel-width) (display-pixel-height) t)
|
||||
@end lisp
|
||||
|
||||
|
||||
@node Emacs in a Linux console
|
||||
@section How can I alleviate the limitations of the Linux console?
|
||||
@cindex Console, Linux console, TTY, fbterm
|
||||
|
|
|
|||
|
|
@ -1265,7 +1265,7 @@ is serialized by Eglot to the following JSON text:
|
|||
@chapter Troubleshooting Eglot
|
||||
@cindex troubleshooting Eglot
|
||||
|
||||
This chapter documents commands and variables that can be used to
|
||||
This section documents commands and variables that can be used to
|
||||
troubleshoot Eglot problems. It also provides guidelines for
|
||||
reporting Eglot bugs in a way that facilitates their resolution.
|
||||
|
||||
|
|
@ -1275,15 +1275,7 @@ pop up special buffers that can be used to inspect the communications
|
|||
between the Eglot and language server. In many cases, this will
|
||||
indicate the problems or at least provide a hint.
|
||||
|
||||
@menu
|
||||
* Performance::
|
||||
* Getting the latest version::
|
||||
* Reporting bugs::
|
||||
@end menu
|
||||
|
||||
@node Performance
|
||||
@section Performance
|
||||
@cindex performance problems, with Eglot
|
||||
@cindex performance
|
||||
A common and easy-to-fix cause of performance problems is the length
|
||||
of the Eglot events buffer because it represent additional work that
|
||||
Eglot must do. After verifying Eglot is operating correctly but
|
||||
|
|
@ -1297,33 +1289,6 @@ techniques to improve their performance. Often, this can be tweaked
|
|||
by changing the server configuration (@pxref{Advanced server
|
||||
configuration}).
|
||||
|
||||
@node Getting the latest version
|
||||
@section Getting the latest version
|
||||
@cindex upgrading Eglot
|
||||
|
||||
To install the latest Eglot in an Emacs version that does not bundle
|
||||
Eglot, use @kbd{M-x package-install}.
|
||||
|
||||
Often, a newer Eglot version exists that has fixed a longstanding bug,
|
||||
has more LSP features, or just better supports a particular language
|
||||
server. Recent Eglot versions can self-update via the command
|
||||
@kbd{M-x eglot-upgrade-eglot}. This will replace any currently
|
||||
installed version with the newest one available from the ELPA archives
|
||||
configured in @code{package-archives}.
|
||||
|
||||
You can also update Eglot through other methods, such as
|
||||
@code{use-package} (@pxref{Installing packages,,, use-package,
|
||||
use-package User Manual}), @code{package-install},
|
||||
@code{list-packages} or the newer @code{package-upgrade}
|
||||
(@pxref{Packages,,, emacs, GNU Emacs Manual}). However, do read the
|
||||
docstrings of the command you intend to use before you use it, as some
|
||||
of them may not work in exactly the same way across Emacs versions,
|
||||
meaning your configuration may be not portable.
|
||||
|
||||
@node Reporting bugs
|
||||
@section Reporting bugs
|
||||
@cindex bug reports
|
||||
|
||||
If you think you have found a bug, we want to hear about it. Before
|
||||
reporting a bug, keep in mind that interaction with language servers
|
||||
represents a large quantity of unknown variables. Therefore, it is
|
||||
|
|
@ -1333,9 +1298,9 @@ user.
|
|||
|
||||
To report an Eglot bug, send e-mail to @email{bug-gnu-emacs@@gnu.org}.
|
||||
|
||||
To understand how to write this email, get acquainted with Emacs's bug
|
||||
reporting guidelines (@pxref{Bugs,,, emacs, GNU Emacs Manual}). Then,
|
||||
follow this Eglot-specific checklist:
|
||||
Get acquainted with Emacs's bug reporting guidelines (@pxref{Bugs,,,
|
||||
emacs, GNU Emacs Manual}). Then, follow this checklist specific to
|
||||
Eglot bug rerpots.
|
||||
|
||||
@enumerate
|
||||
@item
|
||||
|
|
@ -1367,10 +1332,6 @@ public Git repository.
|
|||
Include versions of the software used. The Emacs version can be
|
||||
obtained with @kbd{M-x emacs-version}.
|
||||
|
||||
We welcome bug reports about all Eglot versions, but it is helpful to
|
||||
first check if the problem isn't already fixed in the latest version
|
||||
(@pxref{Getting the latest version}).
|
||||
|
||||
It's also essential to include the version of ELPA packages that are
|
||||
explicitly or implicitly loaded. The optional but popular Company or
|
||||
Markdown packages are distributed as GNU ELPA packages, not to mention
|
||||
|
|
@ -1380,18 +1341,18 @@ since they are usually implicitly loaded when visiting a file in that
|
|||
language.
|
||||
|
||||
ELPA packages usually live in @code{~/.emacs.d/elpa} (or what is in
|
||||
@code{package-user-dir}). Including a listing of files in that
|
||||
directory is a way to tell the maintainers about ELPA package
|
||||
versions.
|
||||
@code{package-user-dir}). Please show the listing of files in that
|
||||
directory as well.
|
||||
|
||||
@item
|
||||
Include a recipe to replicate the problem with @emph{a clean Emacs
|
||||
run}. The invocation @code{emacs -Q -f package-initialize} starts
|
||||
Emacs with no configuration and initializes the ELPA packages. A very
|
||||
minimal @file{.emacs} initialization file (10 lines or less) is also
|
||||
acceptable and good means to describe changes to variables.
|
||||
run}. This means @kbd{emacs -Q -f package-initialize} invocation
|
||||
which starts Emacs with no configuration and initializes the ELPA
|
||||
packages. A very minimal (no more that 10 lines) @file{.emacs}
|
||||
initialization file is also acceptable and good means to describe
|
||||
changes to variables.
|
||||
|
||||
There is usually no need to include @code{require} statements in the
|
||||
There is usually no need to include @kbd{require} statements in the
|
||||
recipe, as Eglot's functionality uses autoloads.
|
||||
|
||||
Likewise, there is rarely the need to use things like
|
||||
|
|
@ -1403,9 +1364,9 @@ adding to hooks with @code{add-hook}. Prefer starting Eglot with
|
|||
@item
|
||||
Make sure to double check all the above elements and re-run the recipe
|
||||
to see that the problem is reproducible. Following the recipe should
|
||||
produce event transcript and error backtraces that are very similar to
|
||||
the ones you included. If the problem only happens sometimes, mention
|
||||
this in your report.
|
||||
produce event transcript and error backtraces that are exactly the
|
||||
same or very similar to the ones you included. If the problem only
|
||||
happens sometimes, include this information in your bug report.
|
||||
@end enumerate
|
||||
|
||||
Please keep in mind that some problems reported against Eglot may
|
||||
|
|
|
|||
|
|
@ -952,7 +952,7 @@ Here, ``password'' refers to your account password, which is usually
|
|||
your @samp{NickServ} password. To make this work, customize
|
||||
@code{erc-sasl-user} and @code{erc-sasl-password} or specify the
|
||||
@code{:user} and @code{:password} keyword arguments when invoking
|
||||
@code{erc-tls}.
|
||||
@code{erc-tls}. Note that @code{:user} cannot be given interactively.
|
||||
|
||||
@item @code{external} (via Client TLS Certificate)
|
||||
This works in conjunction with the @code{:client-certificate} keyword
|
||||
|
|
@ -1477,30 +1477,10 @@ questions. You can also try the relatively quiet @samp{#erc}, on the
|
|||
same network, for more involved questions.
|
||||
|
||||
@item
|
||||
@anchor{Upgrading}
|
||||
You can check GNU ELPA between Emacs releases to see if a newer
|
||||
version is available that might contain a fix for your issue:
|
||||
@uref{https://elpa.gnu.org/packages/erc.html}.
|
||||
|
||||
To upgrade, run @kbd{M-x list-packages @key{RET}}. In the
|
||||
@file{*Packages*} (@code{package-menu-mode}) buffer, click the
|
||||
@samp{erc} package link for the desired version. If unsure, or if the
|
||||
version column is too narrow to tell, try the bottom-most candidate.
|
||||
In the resulting @code{help-mode} buffer, confirm the version and
|
||||
click @samp{Install}. Make sure to restart Emacs before reconnecting
|
||||
to IRC, and don't forget that you can roll back to the previous
|
||||
version by running @kbd{M-x package-delete @key{RET}}.
|
||||
@xref{Packages,,,emacs, the Emacs manual} for more information.
|
||||
|
||||
In the rare instance you need an emergency fix or have volunteered to
|
||||
test an edge feature between ERC releases, you can try adding
|
||||
@samp{("devel" . "https://elpa.gnu.org/devel/")} to
|
||||
@code{package-archives} prior to performing the steps above. For
|
||||
this, you'll want to instead select a ``snapshot'' version from the
|
||||
menu. Please be aware that when going this route, the latest changes
|
||||
may not yet be available and you run the risk of incurring other bugs
|
||||
and encountering unstable features.
|
||||
|
||||
@item
|
||||
To report a bug in ERC, use @kbd{M-x erc-bug}.
|
||||
|
||||
|
|
|
|||
|
|
@ -602,8 +602,6 @@ disabled by default.
|
|||
@cmindex egrep
|
||||
@itemx fgrep
|
||||
@cmindex fgrep
|
||||
@itemx rgrep
|
||||
@cmindex rgrep
|
||||
@itemx glimpse
|
||||
@cmindex glimpse
|
||||
The @command{grep} commands are compatible with GNU @command{grep},
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
\input texinfo @c -*- mode: texinfo; coding: utf-8 -*-
|
||||
@comment %**start of header
|
||||
@setfilename ../../info/flymake.info
|
||||
@set VERSION 1.3.4
|
||||
@set UPDATED April 2023
|
||||
@set VERSION 1.2.2
|
||||
@set UPDATED November 2021
|
||||
@settitle GNU Flymake @value{VERSION}
|
||||
@include docstyle.texi
|
||||
@syncodeindex pg cp
|
||||
|
|
@ -142,12 +142,6 @@ highlighted regions to learn what the specific problem
|
|||
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-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,
|
||||
@code{flymake-goto-next-error} and @code{flymake-goto-prev-error} are
|
||||
|
|
@ -320,22 +314,6 @@ Which fringe (if any) should show the warning/error bitmaps.
|
|||
@item flymake-wrap-around
|
||||
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-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.
|
||||
|
||||
@item flymake-error-eol
|
||||
A custom face for summarizing diagnostic error messages.
|
||||
|
||||
@item flymake-warning-eol
|
||||
A custom face for summarizing diagnostic warning messages.
|
||||
|
||||
@item flymake-note-eol
|
||||
A custom face for summarizing diagnostic notes.
|
||||
@end vtable
|
||||
|
||||
@node Extending Flymake
|
||||
|
|
@ -416,7 +394,7 @@ its @code{flymake-overlay-control} property:
|
|||
|
||||
@item
|
||||
@cindex severity of diagnostic
|
||||
@code{severity} is a non-negative integer specifying the
|
||||
@code{flymake-severity} is a non-negative integer specifying the
|
||||
diagnostic's severity. The higher the value, the more serious is the
|
||||
error. If the overlay property @code{priority} is not specified in
|
||||
@code{flymake-overlay-control}, @code{flymake-severity} is used to set
|
||||
|
|
@ -431,17 +409,6 @@ type, in case the name of the symbol associated with it is very long.
|
|||
@vindex flymake-category
|
||||
@code{flymake-category} is a symbol whose property list is considered
|
||||
the default for missing values of any other properties.
|
||||
|
||||
@item
|
||||
@cindex mode-line appearance of a diagnostic
|
||||
@code{mode-line-face} is a face specifier controlling the appearance
|
||||
of the indicator of this type of diagnostic in the mode line.
|
||||
|
||||
@item
|
||||
@cindex summarized appearance of a diagnostic
|
||||
@code{echo-face} is a face specifier controlling the appearance of the
|
||||
summarized description of this diagnostic when reading diagnostic
|
||||
messages (@pxref{Finding diagnostics}).
|
||||
@end itemize
|
||||
|
||||
@cindex predefined diagnostic types
|
||||
|
|
|
|||
|
|
@ -10528,9 +10528,9 @@ article (@code{gnus-summary-refer-references}).
|
|||
@kindex A T @r{(Summary)}
|
||||
Display the full thread where the current article appears
|
||||
(@code{gnus-summary-refer-thread}). By default this command looks for
|
||||
articles only in the current group. If the group belongs to a backend
|
||||
that has an associated search engine, articles are found by searching.
|
||||
In other cases each header in the current group must be fetched and
|
||||
articles only in the current group. Some backends (currently only
|
||||
@code{nnimap}) know how to find articles in the thread directly. In
|
||||
other cases each header in the current group must be fetched and
|
||||
examined, so it usually takes a while. If you do it often, you may
|
||||
consider setting @code{gnus-fetch-old-headers} to @code{invisible}
|
||||
(@pxref{Filling In Threads}). This won't have any visible effects
|
||||
|
|
@ -10538,22 +10538,19 @@ normally, but it'll make this command work a whole lot faster. Of
|
|||
course, it'll make group entry somewhat slow.
|
||||
|
||||
@vindex gnus-refer-thread-use-search
|
||||
If @code{gnus-refer-thread-use-search} is @code{nil} (the default)
|
||||
then thread-referral only looks for articles in the current group. If
|
||||
this variable is @code{t} the server to which the current group
|
||||
belongs is searched (provided that searching is available for the
|
||||
server's backend). If this variable is a list of servers, each server
|
||||
in the list is searched.
|
||||
If @code{gnus-refer-thread-use-search} is non-@code{nil} then those backends
|
||||
that know how to find threads directly will search not just in the
|
||||
current group but all groups on the same server.
|
||||
|
||||
@vindex gnus-refer-thread-limit
|
||||
The @code{gnus-refer-thread-limit} variable says how many old (i.e.,
|
||||
articles before the first displayed in the current group) headers to
|
||||
fetch when referring a thread. The default is 500. If @code{t}, all
|
||||
the available headers will be fetched. This variable can be
|
||||
overridden by giving the @kbd{A T} command a numerical prefix.
|
||||
fetch when doing this command. The default is 200. If @code{t}, all
|
||||
the available headers will be fetched. This variable can be overridden
|
||||
by giving the @kbd{A T} command a numerical prefix.
|
||||
|
||||
@vindex gnus-refer-thread-limit-to-thread
|
||||
@code{gnus-summary-refer-thread} tries to add any articles it finds to
|
||||
In most cases @code{gnus-refer-thread} adds any articles it finds to
|
||||
the current summary buffer. (When @code{gnus-refer-thread-use-search}
|
||||
is true and the initial referral starts from a summary buffer for a
|
||||
non-virtual group this may not be possible. In this case a new
|
||||
|
|
|
|||
|
|
@ -1948,9 +1948,11 @@ requires the @acronym{POP}-before-@acronym{SMTP} authentication.
|
|||
@cindex X-Message-SMTP-Method
|
||||
If you have a complex @acronym{SMTP} setup, and want some messages to
|
||||
go via one mail server, and other messages to go through another, you
|
||||
can use the @samp{X-Message-SMTP-Method} header to override the
|
||||
default by using the keyword @samp{smtp} followed by the server
|
||||
information:
|
||||
can use the @samp{X-Message-SMTP-Method} header. These are the
|
||||
supported values:
|
||||
|
||||
@table @samp
|
||||
@item smtpmail
|
||||
|
||||
@example
|
||||
X-Message-SMTP-Method: smtp smtp.fsf.org 587
|
||||
|
|
@ -1966,19 +1968,16 @@ This is the same as the above, but uses @samp{other-user} as the user
|
|||
name when authenticating. This is handy if you have several
|
||||
@acronym{SMTP} accounts on the same server.
|
||||
|
||||
This header may also be used to specify an alternative MTA by using a
|
||||
@samp{mailer} keyword, where @samp{mailer} is the name of an MTA with
|
||||
a corresponding @code{message-send-mail-with-'mailer'} function. For
|
||||
example:
|
||||
@item sendmail
|
||||
|
||||
@example
|
||||
X-Message-SMTP-Method: sendmail
|
||||
@end example
|
||||
|
||||
will send the message via the locally installed sendmail program. The
|
||||
recognized values of @samp{mailer} are sendmail, qmail, mh, and
|
||||
mailclient.
|
||||
This will send the message via the locally installed sendmail/exim/etc
|
||||
installation.
|
||||
|
||||
@end table
|
||||
|
||||
@item message-mh-deletable-headers
|
||||
@vindex message-mh-deletable-headers
|
||||
|
|
|
|||
|
|
@ -5958,9 +5958,8 @@ the agenda (see [[*Weekly/daily agenda]]). We distinguish:
|
|||
#+findex: org-block
|
||||
|
||||
For more complex date specifications, Org mode supports using the
|
||||
special expression diary entries implemented in the
|
||||
[[info:emacs#Special Diary Entries][Emacs Calendar package]][fn:20].
|
||||
For example, with optional time:
|
||||
special expression diary entries implemented in the Emacs Calendar
|
||||
package[fn:20]. For example, with optional time:
|
||||
|
||||
#+begin_example
|
||||
,* 22:00-23:00 The nerd meeting on every 2nd Thursday of the month
|
||||
|
|
|
|||
|
|
@ -938,16 +938,6 @@ be used.
|
|||
|
||||
This method does not support user names.
|
||||
|
||||
@item @option{flatpak}
|
||||
@cindex method @option{flatpak}
|
||||
@cindex @option{flatpak} method
|
||||
|
||||
Integration of Flatpak sandboxes. The host name may be either an
|
||||
application ID, a sandbox instance ID, or a PID, as returned by
|
||||
@samp{flatpak ps}.
|
||||
|
||||
This method does not support user names.
|
||||
|
||||
@end table
|
||||
|
||||
|
||||
|
|
@ -1514,10 +1504,8 @@ access and it has the most reasonable security protocols, use
|
|||
@end example
|
||||
|
||||
If @option{ssh} is unavailable for whatever reason, look for other
|
||||
obvious options. For MS Windows, try the @option{plink}
|
||||
method@footnote{This shouldn't be needed with recent @code{OpenSSH}
|
||||
versions for MS Windows. Use method @option{sshx}.}. For Kerberos,
|
||||
try @option{krlogin}.
|
||||
obvious options. For MS Windows, try the @option{plink} method. For
|
||||
Kerberos, try @option{krlogin}.
|
||||
|
||||
For editing local files as @option{su} or @option{sudo} methods, try
|
||||
the shortened syntax of @samp{root}:
|
||||
|
|
@ -2393,11 +2381,10 @@ This uses also the settings in @code{tramp-sh-extra-args}.
|
|||
@vindex RemoteCommand@r{, ssh option}
|
||||
@strong{Note}: If you use an @option{ssh}-based method for connection,
|
||||
do @emph{not} set the @option{RemoteCommand} option in your
|
||||
@command{ssh} configuration to something like @command{screen}. If
|
||||
used, @option{RemoteCommand} must open an interactive shell on the
|
||||
remote host. On the other hand, some @option{ssh}-based methods, like
|
||||
@option{sshx} or @option{scpx}, silently overwrite a
|
||||
@option{RemoteCommand} option of the configuration file.
|
||||
@command{ssh} configuration, for example to @command{screen}. On the
|
||||
other hand, some @option{ssh}-based methods, like @option{sshx} or
|
||||
@option{scpx}, silently overwrite a @option{RemoteCommand} option of
|
||||
the configuration file.
|
||||
|
||||
|
||||
@subsection Other remote shell setup hints
|
||||
|
|
@ -2879,19 +2866,11 @@ When @value{tramp} uses direct remote copying, password caches are not
|
|||
consulted.
|
||||
|
||||
|
||||
@subsection Issues with Cygwin and MS Windows ssh
|
||||
@subsection Issues with Cygwin ssh
|
||||
@cindex cygwin, issues
|
||||
@cindex ms Windows, issues
|
||||
|
||||
This section is incomplete. Please share your solutions.
|
||||
|
||||
@cindex ms windows and @command{ssh}
|
||||
@cindex ms windows and @command{ssh-agent}
|
||||
|
||||
MS Windows' @command{ssh} does not open a remote TTY@. Use the method
|
||||
@option{sshx} or @option{scpx} instead. Furthermore, it cannot read a
|
||||
passphrase for ssh private keys. Use the MS @code{ssh-agent}.
|
||||
|
||||
@cindex method @option{sshx} with cygwin
|
||||
@cindex @option{sshx} method with cygwin
|
||||
|
||||
|
|
@ -2931,15 +2910,13 @@ Windows file names to Cygwin file names.
|
|||
@cindex @env{SSH_AUTH_SOCK} and emacs on ms windows
|
||||
@vindex SSH_AUTH_SOCK@r{, environment variable}
|
||||
|
||||
When using the cygwin @command{ssh-agent} on MS Windows for
|
||||
password-less interaction, @option{ssh} methods depend on the
|
||||
environment variable @env{SSH_AUTH_SOCK}. But this variable is not
|
||||
set when Emacs is started from a Desktop shortcut and authentication
|
||||
fails.
|
||||
When using the @command{ssh-agent} on MS Windows for password-less
|
||||
interaction, @option{ssh} methods depend on the environment variable
|
||||
@env{SSH_AUTH_SOCK}. But this variable is not set when Emacs is
|
||||
started from a Desktop shortcut and authentication fails.
|
||||
|
||||
One workaround is to use an MS Windows based SSH Agent, such as the
|
||||
native MS @command{ssh-agent} or @command{Pageant}. The latter is
|
||||
part of the PuTTY Suite of tools.
|
||||
One workaround is to use an MS Windows based SSH Agent, such as
|
||||
@command{Pageant}. It is part of the PuTTY Suite of tools.
|
||||
|
||||
The fallback is to start Emacs from a shell.
|
||||
|
||||
|
|
@ -3213,11 +3190,6 @@ auto-saved files to the same directory as the original file.
|
|||
Alternatively, set the user option @code{tramp-auto-save-directory}
|
||||
to direct all auto saves to that location.
|
||||
|
||||
@c Since Emacs 30.
|
||||
@vindex remote-file-name-inhibit-auto-save
|
||||
If you want to suppress auto-saving of remote files at all, set user
|
||||
option @code{remote-file-name-inhibit-auto-save} to non-@code{nil}.
|
||||
|
||||
@c Since Emacs 29.
|
||||
@vindex remote-file-name-inhibit-auto-save-visited
|
||||
An alternative to @code{auto-save-mode} is
|
||||
|
|
@ -4377,6 +4349,7 @@ Flushes the current buffer's remote connection objects, the same as in
|
|||
Flushes all active remote connection objects, the same as in
|
||||
@code{tramp-cleanup-connection}. This command removes also ad-hoc
|
||||
proxy definitions (@pxref{Ad-hoc multi-hops}).
|
||||
|
||||
@end deffn
|
||||
|
||||
@deffn Command tramp-cleanup-all-buffers
|
||||
|
|
@ -4385,20 +4358,6 @@ connections and ad-hoc proxy definition are cleaned up in addition to
|
|||
killing all buffers related to remote connections.
|
||||
@end deffn
|
||||
|
||||
@deffn Command tramp-cleanup-some-buffers
|
||||
Similar to @code{tramp-cleanup-all-buffers}, where all remote
|
||||
connections and ad-hoc proxy definition are cleaned up. However,
|
||||
additional buffers are killed only if one of the functions in
|
||||
@code{tramp-cleanup-some-buffers-hook} returns @code{t}.
|
||||
@end deffn
|
||||
|
||||
@defopt tramp-cleanup-some-buffers-hook
|
||||
The functions in this hook determine, whether a remote buffer is
|
||||
killed when @code{tramp-cleanup-some-buffers} is called. Per default,
|
||||
remote buffers which are linked to a remote file, remote @code{dired}
|
||||
buffers, and buffers related to a remote process are cleaned up.
|
||||
@end defopt
|
||||
|
||||
|
||||
@node Renaming remote files
|
||||
@section Renaming remote files
|
||||
|
|
@ -4947,36 +4906,6 @@ Disable file locks. Set @code{remote-file-name-inhibit-locks} to
|
|||
@code{t} if you know that different Emacs sessions are not modifying
|
||||
the same remote file.
|
||||
|
||||
@item
|
||||
@vindex remote-file-name-inhibit-auto-save
|
||||
Keep auto-save files local. This is already the default configuration
|
||||
in Emacs, don't change it. If you want to disable auto-saving for
|
||||
remote files at all, set @code{remote-file-name-inhibit-auto-save} to
|
||||
@code{t}, but think about the consequences!
|
||||
|
||||
If you want to disable auto-saving just for selected connections, for
|
||||
example due to security considerations, use connection-local variables
|
||||
in order to set @code{buffer-auto-save-file-name}. If you, for
|
||||
example, want to disable auto-saving for all @option{sudo}
|
||||
connections, apply the following code.
|
||||
@ifinfo
|
||||
@xref{Connection Variables, , , emacs}.
|
||||
@end ifinfo
|
||||
|
||||
@lisp
|
||||
@group
|
||||
(connection-local-set-profile-variables
|
||||
'my-auto-save-profile
|
||||
'((buffer-auto-save-file-name . nil)))
|
||||
@end group
|
||||
|
||||
@group
|
||||
(connection-local-set-profiles
|
||||
'(:application tramp :protocol "sudo")
|
||||
'my-auto-save-profile)
|
||||
@end group
|
||||
@end lisp
|
||||
|
||||
@item
|
||||
Disable excessive traces. Set @code{tramp-verbose} to 3 or lower,
|
||||
default being 3. Increase trace levels temporarily when hunting for
|
||||
|
|
@ -5291,7 +5220,6 @@ HISTFILE=/dev/null
|
|||
@item
|
||||
Where are remote files trashed to?
|
||||
|
||||
@vindex remote-file-name-inhibit-delete-by-moving-to-trash
|
||||
Emacs can trash file instead of deleting
|
||||
@ifinfo
|
||||
them, @ref{Misc File Ops, Trashing , , emacs}.
|
||||
|
|
|
|||
|
|
@ -2566,20 +2566,6 @@ currently exist.
|
|||
|
||||
Yes, see @code{transient-display-buffer-action} in @ref{Configuration}.
|
||||
|
||||
@anchor{How can I copy text from the popup buffer?}
|
||||
@appendixsec How can I copy text from the popup buffer?
|
||||
|
||||
To be able to mark text in any transient popup buffer using the mouse,
|
||||
you have to add the following binding. Note that the region won't be
|
||||
visualized, while doing so. After you have quit the transient popup,
|
||||
you will be able to yank it another buffer.
|
||||
|
||||
@lisp
|
||||
(keymap-set transient-predicate-map
|
||||
"<mouse-set-region>"
|
||||
#'transient--do-stay)
|
||||
@end lisp
|
||||
|
||||
@anchor{Why did some of the key bindings change?}
|
||||
@appendixsec Why did some of the key bindings change?
|
||||
|
||||
|
|
|
|||
|
|
@ -17,95 +17,11 @@ This refers to https://github.com/joaotavora/eglot/issues/. That is,
|
|||
to look up issue github#1234, go to
|
||||
https://github.com/joaotavora/eglot/issues/1234.
|
||||
|
||||
|
||||
* Changes in Eglot 1.15 (29/4/2023)
|
||||
|
||||
** Fix LSP "languageId" detection
|
||||
|
||||
Many servers today support multiple languages, meaning they can handle
|
||||
more than one file type in the same connection. This relies on the
|
||||
client supplying a ':languageId' string. Previously, Eglot calculated
|
||||
this string based on an imperfect heuristic and was often wrong. See
|
||||
github#1206.
|
||||
|
||||
** Fix problems with missing signature documentation (bug#62687)
|
||||
|
||||
** Reworked 'eglot-imenu'
|
||||
|
||||
Eglot's Imenu backend (used for M-x imenu among other extensions), has
|
||||
been reworked. Most newer servers respond to
|
||||
'textDocument/documentSymbol' with a vector of 'DocumentSymbol', not
|
||||
'SymbolInformation'. It's not worth it trying to make the two formats
|
||||
resemble each other. This also lays groundwork supporting a
|
||||
forthcoming "breadcrumb" feature of bug#58431.
|
||||
|
||||
** New command 'eglot-update'
|
||||
|
||||
This allows users to easily update to the latest version of Eglot.
|
||||
|
||||
|
||||
* Changes in Eglot 1.14 (3/4/2023)
|
||||
|
||||
** Faster, more responsive completion
|
||||
|
||||
Eglot takes advantage of LSP's "isIncomplete" flag in responses to
|
||||
completion requests to drive new completion-caching mechanism for the
|
||||
duration of each completion session. Once a full set of completions
|
||||
is obtained for a given position, the server needn't be contacted in
|
||||
many scenarios, resulting in significantly less communication
|
||||
overhead. This works with the popular Company package and stock
|
||||
completion-at-point interfaces.
|
||||
|
||||
A variable 'eglot-cache-session-completions', t by default, controls
|
||||
this. The mechanism was tested with ccls, jdtls, pylsp, golsp and
|
||||
clangd. Notably, the C/C++ language server Clangd version 15 has a
|
||||
bug in its "isIcomplete" flag (it is fixed in later versions). If you
|
||||
run into problems, disable this mechanism like so:
|
||||
|
||||
(add-hook 'c-common-mode-hook
|
||||
(lambda () (setq-local eglot-cache-session-completions nil)))
|
||||
|
||||
** At-point documentation less obtrusive in echo area
|
||||
|
||||
Eglot takes advantage of new features of ElDoc to separate short
|
||||
documentation strings from large ones, sending the former to be shown in
|
||||
the ElDoc's echo area and the latter to be shown in other outlets,
|
||||
such as the *eldoc* buffer obtainable with 'C-h .'.
|
||||
|
||||
** New variable 'eglot-prefer-plaintext'
|
||||
|
||||
Customize this to t to opt-in to docstrings in plain text instead of
|
||||
Markdown.
|
||||
|
||||
(bug#61373)
|
||||
|
||||
** Progress indicators inhabit the mode-line by default
|
||||
|
||||
To switch to the echo area, customize 'eglot-report-progress' to
|
||||
'messages'. To switch off progress reporting completely, set to nil.
|
||||
|
||||
** Snippet support is easier to enable
|
||||
|
||||
The user needn't manually activate 'yas-minor-mode' or
|
||||
'yas-global-mode'. If YASnippet is installed and the server supports
|
||||
snippets, it is used automatically, unless the symbol 'yasnippet' has
|
||||
been added to 'eglot-stay-out-of'.
|
||||
|
||||
|
||||
* Changes in Eglot 1.13 (15/03/2023)
|
||||
|
||||
** ELPA installations on Emacs 26.3 are supported again.
|
||||
|
||||
|
||||
* Changes in Eglot 1.12.29 (Eglot bundled with Emacs 29.1)
|
||||
|
||||
** Eglot can upgrade itself to the latest version.
|
||||
|
||||
The new command 'eglot-upgrade-eglot' works around behaviour in the
|
||||
existing 'package-install' command and the new 'package-upgrade'
|
||||
command which would prevent the user from easily grabbing the latest
|
||||
version as usual.
|
||||
|
||||
|
||||
* Changes in Eglot 1.12 (13/03/2023)
|
||||
|
||||
|
|
@ -129,7 +45,7 @@ The position-encoding scheme (UTF-8, UTF-16 or UTF-32) can now
|
|||
be negotiated with the server.
|
||||
|
||||
** More of the user's Eldoc configuration is respected.
|
||||
This change addresses the problems reported in many Eglot reports
|
||||
This change addresses the problems reported in many Elglot reports
|
||||
dating back to early 2021 at least.
|
||||
|
||||
(github#646, github#894, github#920, github#1031, github#1171).
|
||||
|
|
@ -175,7 +91,7 @@ systems (bug#58790).
|
|||
These modes are usually handled by the same server that handles the
|
||||
"classical mode".
|
||||
|
||||
** New servers csharp-ls and texlab added to 'eglot-server-programs'.
|
||||
** New servers chsharp-ls and texlab added to 'eglot-server-programs'.
|
||||
|
||||
** Assorted bugfixes.
|
||||
(bug#59824, bug#59338)
|
||||
|
|
|
|||
208
etc/ERC-NEWS
|
|
@ -11,210 +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.6
|
||||
|
||||
** Module 'keep-place' now offers a visual indicator.
|
||||
Remember your place in ERC buffers a bit more easily while retaining
|
||||
the freedom to look around. Optionally sync the indicator to any
|
||||
progress made when you haven't yet caught up to the live stream. See
|
||||
options 'erc-keep-place-indicator-style' and friends and new module
|
||||
'keep-place-indicator', which for now must be added manually to
|
||||
'erc-modules'.
|
||||
|
||||
** Module 'fill' now offers a style based on 'visual-line-mode'.
|
||||
This fill style mimics the "hanging indent" look of 'erc-fill-static'
|
||||
and provides some movement and editing commands to optionally tame the
|
||||
less familiar aspects of 'visual-line' behavior. An interactive
|
||||
helper called 'erc-fill-wrap-nudge' allows for dynamic "refilling" of
|
||||
buffers on the fly. Set 'erc-fill-function' to 'erc-fill-wrap' to get
|
||||
started.
|
||||
|
||||
** A unified interactive entry point.
|
||||
New users are often dismayed to discover that M-x ERC doesn't connect
|
||||
to its default network, Libera.Chat, over TLS. Though perhaps a
|
||||
decade overdue, this is no longer the case. Other UX improvements in
|
||||
this area aim to make the process of connecting interactively slightly
|
||||
more streamlined and less repetitive, even for veteran users.
|
||||
|
||||
** Revised buffer-display handling for interactive commands.
|
||||
A point of friction for new users and one only just introduced with
|
||||
ERC 5.5 has been the lack of visual feedback when first connecting via
|
||||
M-x erc or when issuing a "/JOIN" command at the prompt. As explained
|
||||
below, in the news for 5.5, the discovery of a security issue led to
|
||||
most new ERC buffers being "buried" on creation. On further
|
||||
reflection, this was judged to have been an overcorrection in the case
|
||||
of interactive invocations, hence the borrowing of an old option,
|
||||
'erc-query-display', and the bestowing of a new alias,
|
||||
'erc-interactive-display', which better describes its expanded role as
|
||||
a more general buffer-display knob for interactive commands ("/QUERY"
|
||||
still among them).
|
||||
|
||||
Accompanying this addition are "display"-suffixed aliases for related
|
||||
options 'erc-join-buffer' and 'erc-auto-query', which users have
|
||||
reported as being difficult to discover and remember. When the latter
|
||||
option (now known as 'erc-receive-query-display') is nil, ERC uses
|
||||
'erc-join-buffer' in its place, much like it does for
|
||||
'erc-interactive-display'. The old nil behavior can still be gotten
|
||||
via the new compatibility flag 'erc-receive-query-display-defer'.
|
||||
|
||||
** Setting a module's mode variable via Customize earns a warning.
|
||||
Trying and failing to activate a module via its minor mode's Custom
|
||||
widget has been an age-old annoyance for new users. Previously
|
||||
ineffective, this method now actually works, but it also admonishes
|
||||
users to edit the 'erc-modules' widget instead.
|
||||
|
||||
** The option 'erc-timestamp-use-align-to' is more versatile.
|
||||
While this option has always offered to right-align stamps via the
|
||||
'display' text property, it's now more effective at doing so when set
|
||||
to a number indicating an offset from the right edge. And when set to
|
||||
the symbol 'margin', it displays stamps in the right margin, although,
|
||||
at the moment, this is mostly intended for use by other modules, such
|
||||
as 'fill-wrap', described above. For both these variants, users of
|
||||
the 'log' module may want to customize 'erc-log-filter-function' to
|
||||
'erc-stamp-prefix-log-filter' to avoid ragged right-hand stamps
|
||||
appearing in their saved logs.
|
||||
|
||||
** Smarter reconnect handling for users on the move.
|
||||
ERC now offers a new, experimental reconnect strategy in the function
|
||||
'erc-server-delayed-check-reconnect', which tests for underlying
|
||||
connectivity before attempting to reconnect in earnest. See options
|
||||
'erc-server-reconnect-function' and 'erc-nickname-in-use-functions' to
|
||||
get started.
|
||||
|
||||
** Easily constrain all ERC-related business to a dedicated frame.
|
||||
The option 'erc-reuse-frames' can now be set to 'displayed', which
|
||||
tells ERC to show new buffers in frames already occupied by buffers
|
||||
from the same connection. This customization depends on the option
|
||||
'erc-buffer-display' (formerly 'erc-join-buffer') being set to
|
||||
'frame'. If you find the name 'displayed' unhelpful, please suggest
|
||||
an alternative by writing to the mailing list.
|
||||
|
||||
** Some keybindings are now set by modules rather than their libraries.
|
||||
To put it another way, simply loading a built-in module's library no
|
||||
longer modifies 'erc-mode-map'. Instead, modifications occur during
|
||||
module setup. This should not impact most user configs since ERC
|
||||
doesn't bother with keys already taken and only removes bindings it's
|
||||
previously created. Note that while all affected bindings still
|
||||
reside in 'erc-mode-map', future built-in modules will use their own
|
||||
minor-mode maps, and new third-party modules should do the same.
|
||||
|
||||
** The option 'erc-timestamp-format-right' has been deprecated.
|
||||
Having to account for this option prevented other ERC modules from
|
||||
easily determining what right-hand stamps would look like before
|
||||
insertion, which is knowledge needed for certain UI decisions. The
|
||||
way ERC has chosen to address this is imperfect and boils down to
|
||||
asking users who've customized this option to switch to
|
||||
'erc-timestamp-format' instead. If you're affected by this and feel
|
||||
that some other solution, like automatic migration, is justified,
|
||||
please make that known on the bug list.
|
||||
|
||||
** The 'nicknames' entry in 'erc-button-alist' is officially exceptional.
|
||||
It's no secret that the 'buttons' module treats potential nicknames
|
||||
specially. To simplify ERC's move to next-gen "rich UI" extensions,
|
||||
this special treatment is being canonized. From now on, all values
|
||||
other than the symbol 'erc-button-buttonize-nicks' appearing in the
|
||||
"FORM" field (third element) of this entry are considered deprecated
|
||||
and will incur a warning.
|
||||
|
||||
** Option 'erc-query-on-unjoined-chan-privmsg' restored and renamed.
|
||||
This option was accidentally removed from the default client in ERC
|
||||
5.5 and was thus prevented from influencing PRIVMSG routing. It's now
|
||||
been restored with a slightly revised role contingent on a few
|
||||
assumptions explained in its doc string. For clarity, it has been
|
||||
renamed 'erc-ensure-target-buffer-on-privmsg'.
|
||||
|
||||
** Miscellaneous UX changes.
|
||||
Some minor quality-of-life niceties have finally made their way to
|
||||
ERC. For example, the function 'erc-echo-timestamp' is now
|
||||
interactive and can be invoked on any message to view its timestamp in
|
||||
the echo area. The command 'erc-button-previous' now moves to the
|
||||
beginning instead of the end of buttons. And the 'irccontrols' module
|
||||
now supports additional colors and special handling for "spoilers"
|
||||
(hidden text).
|
||||
|
||||
** Changes in the library API.
|
||||
|
||||
*** Some top-level dependencies have been removed.
|
||||
The library 'erc-goodies' is no longer loaded by ERC's main library.
|
||||
This was done to further cement the move toward a unidirectional
|
||||
dependency flow begun in 5.5. Additionally, a few barely used and
|
||||
newly introduced dependencies are now lazily loaded, which may upset
|
||||
some third-party code. The first of these is 'pp' because its
|
||||
'pp-to-string' is autoloaded in all supported ERC versions. Also gone
|
||||
are 'thingatpt', 'time-date', and 'iso8601'. All were used ultra
|
||||
sparingly, and the latter two have only been around for one minor
|
||||
release cycle, so their removal hopefully won't cause much churn.
|
||||
|
||||
*** Some ERC-applied text properties have changed.
|
||||
Chiefly, 'rear-sticky' has been replaced by 'erc-command', which
|
||||
records the IRC command (or numeric) associated with a message. Less
|
||||
impactfully, the value of the 'field' property for ERC's prompt has
|
||||
changed from 't' to the more useful 'erc-prompt', although the
|
||||
property of the same name has been retained.
|
||||
|
||||
*** ERC now manages timestamp-related properties a bit differently.
|
||||
For starters, the 'cursor-sensor-functions' property no longer
|
||||
contains unique closures and thus no longer proves effective for
|
||||
traversing messages. To compensate, a new property, 'erc-timestamp',
|
||||
now spans message bodies but not the newlines delimiting them.
|
||||
Somewhat relatedly, the function 'erc-insert-aligned' has been
|
||||
deprecated and removed from the primary client code path.
|
||||
|
||||
*** The role of a module's Custom group is now more clearly defined.
|
||||
Associating built-in modules with Custom groups and provided library
|
||||
features has improved. More specifically, a module's group now enjoys
|
||||
the singular purpose of determining where the module's minor mode
|
||||
variable lives in the Customize interface. And although ERC is now
|
||||
slightly more adept at linking these entities, third-parties are still
|
||||
encouraged to keep a module's name aligned with its group's as well as
|
||||
the provided feature of its containing library, if only for the usual
|
||||
reasons of namespace hygiene and discoverability.
|
||||
|
||||
*** ERC now supports arbitrary CHANTYPES.
|
||||
Specifically, channels can be prefixed with any predesignated
|
||||
character, mainly to afford more flexibility to specialty services,
|
||||
like bridges to other protocols.
|
||||
|
||||
*** 'erc-cmd-HELP' recognizes subcommands.
|
||||
Some IRC "slash" commands are hierarchical and require users to
|
||||
specify a subcommand to actually carry out anything of consequence.
|
||||
Built-in modules can now provide more detailed help for a particular
|
||||
subcommand by telling ERC to defer to a specialized handler.
|
||||
|
||||
*** Longtime quasi modules have been made proper.
|
||||
The 'fill' module is now defined by 'define-erc-module'. The same
|
||||
goes for ERC's imenu integration, which has 'imenu' now appearing in
|
||||
the default value of 'erc-modules'.
|
||||
|
||||
*** Prompt input is split before 'erc-pre-send-functions' has a say.
|
||||
Hook members are now treated to input whose lines have already been
|
||||
adjusted to fall within the allowed length limit. For convenience,
|
||||
third-party code can request that the final input be "re-filled" prior
|
||||
to being sent. See doc string for details.
|
||||
|
||||
*** ERC's prompt survives the insertion of user input and messages.
|
||||
Previously, ERC's prompt and its input marker disappeared while
|
||||
running hooks during message insertion, and the position of its
|
||||
"insert marker" (ERC's per-buffer process mark) was inconsistent
|
||||
during these spells. To make insertion handling more predictable in
|
||||
preparation for incorporating various protocol extensions, the prompt
|
||||
and its bounding markers have become perennial fixtures. In rare
|
||||
cases, these changes may mean third-party code needs tweaking, for
|
||||
example, requiring the use of 'insert-before-markers' instead of
|
||||
'insert'. As always, users feeling unduly inconvenienced by these
|
||||
changes are encouraged to voice their concerns on the bug list.
|
||||
|
||||
*** Miscellaneous changes
|
||||
Two helper macros from GNU ELPA's Compat library are now available to
|
||||
third-party modules as 'erc-compat-call' and 'erc-compat-function'.
|
||||
In the area of buttons, 'Info-goto-node' has been supplanted by plain
|
||||
old 'info' in 'erc-button-alist', and the bracketed "<URL:...>"
|
||||
pattern entry has been removed because it was more or less redundant.
|
||||
And the "TAB" key is now bound to a new command, 'erc-tab', that only
|
||||
calls 'completion-at-point' when point is in the input area and
|
||||
module-specific commands, like 'erc-button-next', otherwise.
|
||||
|
||||
|
||||
* Changes in ERC 5.5
|
||||
|
||||
|
|
@ -359,8 +155,8 @@ In an effort to help further tame ERC's complexity, the variable
|
|||
'erc-default-recipients' is now expected to hold but a single target.
|
||||
As a consequence, functions like 'erc-add-default-channel' that
|
||||
imagine an alternate, aspirational model of buffer-target relations
|
||||
have been deprecated. Grep for their names in ChangeLog.4 for
|
||||
details.
|
||||
have been deprecated. See Emacs change-log entries from around July
|
||||
of 2022 for specifics.
|
||||
|
||||
A number of less consequential deprecations also debut in this
|
||||
release. For example, the function 'erc-auto-query' was deemed too
|
||||
|
|
|
|||
|
|
@ -89,9 +89,7 @@ Mathematics ∀ p ∈ world • hello p □
|
|||
Meetei Mayek (ꯃꯤꯇꯩ ꯃꯌꯦꯛ) ꯈꯨꯔꯨꯝꯖꯔꯤ
|
||||
Mende Kikakui (𞠀𞠁𞠂) 𞠛𞠉
|
||||
Modi (𑘦𑘻𑘚𑘲) 𑘡𑘦𑘭𑘿𑘎𑘰𑘨
|
||||
Mongolian Cyrillic (монгол хэл) Сайн байна уу?
|
||||
Mongolian Traditional (ᠮᠣᠩᠭᠣᠯ ᠪᠢᠴᠢᠭ᠋) ᠰᠠᠶᠢᠨ ᠪᠠᠶᠢᠨᠠ ᠤᠤ?
|
||||
|
||||
Mongolian (монгол хэл) Сайн байна уу?
|
||||
Northern Thai (ᨣᩣᩴᨾᩮᩬᩥᨦ / ᨽᩣᩈᩣᩃ᩶ᩣ᩠ᨶᨶᩣ) ᩈ᩠ᩅᩢᩔ᩠ᨯᩦᨣᩕᩢ᩠ᨸ
|
||||
Norwegian (norsk) Hei / God dag
|
||||
Odia (ଓଡ଼ିଆ) ନମସ୍କାର
|
||||
|
|
|
|||
177
etc/NEWS
|
|
@ -30,11 +30,6 @@ applies, and please also update docstrings as needed.
|
|||
|
||||
* Changes in Emacs 30.1
|
||||
|
||||
---
|
||||
** New user option 'describe-bindings-outline-rules'.
|
||||
This user option controls outline visibility in the output buffer of
|
||||
'describe-bindings' when 'describe-bindings-outline' in non-nil.
|
||||
|
||||
** X selection requests are now handled much faster and asynchronously.
|
||||
This means it should be less necessary to disable the likes of
|
||||
'select-active-regions' when Emacs is running over a slow network
|
||||
|
|
@ -55,11 +50,6 @@ as it has in batch mode since Emacs 24.
|
|||
When non-nil, this option suppresses moving remote files to the local
|
||||
trash when deleting. Default is nil.
|
||||
|
||||
---
|
||||
** New user option 'remote-file-name-inhibit-auto-save'.
|
||||
If this user option is non-nil, 'auto-save-mode' will not auto-save
|
||||
remote buffers. The default is nil.
|
||||
|
||||
+++
|
||||
** New user option 'yes-or-no-prompt'.
|
||||
This allows the user to customize the prompt that is appended by
|
||||
|
|
@ -71,11 +61,6 @@ This allows the user to customize the prompt that is appended by
|
|||
This is used for displaying the time and date components of
|
||||
'display-time-mode'.
|
||||
|
||||
---
|
||||
** New icon images for general use.
|
||||
Several symbolic icons are added to "etc/images/symbols", including
|
||||
plus, minus, check-mark, start, etc.
|
||||
|
||||
|
||||
* Editing Changes in Emacs 30.1
|
||||
|
||||
|
|
@ -110,7 +95,7 @@ If you want to get back the old behavior, set the user option to the value
|
|||
(setopt gdb-locals-table-row-config
|
||||
`((type . 0) (name . 0) (value . ,gdb-locals-value-limit)))
|
||||
|
||||
** Grep
|
||||
** Compile
|
||||
|
||||
*** New user option 'grep-use-headings'.
|
||||
When non-nil, the output of Grep is split into sections, one for each
|
||||
|
|
@ -184,19 +169,6 @@ correctly unloads Eshell and all of its modules.
|
|||
After manually editing 'eshell-aliases-file', you can use this command
|
||||
to load the edited aliases.
|
||||
|
||||
+++
|
||||
*** 'rgrep' is now a builtin command.
|
||||
Running 'rgrep' in Eshell now uses the Emacs grep facility instead of
|
||||
calling external rgrep.
|
||||
|
||||
** Shell Mode
|
||||
|
||||
+++
|
||||
*** New user option 'shell-get-old-input-include-continuation-lines'.
|
||||
When this user option is non-nil, 'shell-get-old-input' ('C-RET')
|
||||
includes multiple shell "\" continuation lines from command output.
|
||||
Default is nil.
|
||||
|
||||
** Prog Mode
|
||||
|
||||
+++
|
||||
|
|
@ -209,23 +181,16 @@ point is not in a comment or a string. It is by default bound to
|
|||
** Tramp
|
||||
|
||||
+++
|
||||
*** New connection methods "toolbox" and "flatpak".
|
||||
They allow accessing system containers provided by Toolbox or
|
||||
sandboxes provided by Flatpak.
|
||||
*** New connection method "toolbox".
|
||||
This allows accessing system containers provided by Toolbox.
|
||||
|
||||
+++
|
||||
*** Rename 'tramp-use-ssh-controlmaster-options' to 'tramp-use-connection-share'.
|
||||
The old name still exists as obsolete variable alias. This user
|
||||
option controls now connection sharing for both ssh-based and
|
||||
plink-based methods. It allows the values t, nil, and 'suppress'.
|
||||
The latter suppresses also "ControlMaster" settings in the user's
|
||||
"~/.ssh/config" file, or connection share configuration in PuTTY
|
||||
sessions, respectively.
|
||||
|
||||
+++
|
||||
*** New command 'tramp-cleanup-some-buffers'.
|
||||
It allows to kill only selected remote buffers, controlled by user
|
||||
option 'tramp-cleanup-some-buffers-hook'.
|
||||
*** Rename 'tramp-use-ssh-controlmaster-options' to 'tramp-use-connection-share.
|
||||
The old name still exists as defvaralias. This user option controls
|
||||
now connection sharing for both ssh-based and plink-based methods. It
|
||||
allows the values t, nil, and 'suppress'. The latter suppresses
|
||||
also "ControlMaster" settings in the user's "~/.ssh/config" file,
|
||||
or connection share configuration in PuTTY sessions, respectively.
|
||||
|
||||
** EWW
|
||||
|
||||
|
|
@ -236,17 +201,6 @@ the new argument NEW-BUFFER non-nil, it will use a new buffer instead.
|
|||
Interactively, invoke 'eww-open-file' with a prefix argument to
|
||||
activate this behavior.
|
||||
|
||||
---
|
||||
*** 'eww' URL or keyword prompt now has tab completion.
|
||||
The interactive minibuffer prompt when invoking 'eww' now has support
|
||||
for tab completion.
|
||||
|
||||
+++
|
||||
*** 'eww' URL and keyword prompt now completes suggested URIs and bookmarks.
|
||||
The interactive minibuffer prompt when invoking 'eww' now provides
|
||||
completions from 'eww-suggest-uris'. 'eww-suggest-uris' now includes
|
||||
bookmark URIs.
|
||||
|
||||
** go-ts-mode
|
||||
|
||||
+++
|
||||
|
|
@ -286,42 +240,6 @@ following to your init file:
|
|||
(add-hook 'help-fns-describe-function-functions
|
||||
#'shortdoc-help-fns-examples-function)
|
||||
|
||||
** Package
|
||||
|
||||
---
|
||||
*** New user option 'package-vc-register-as-project'.
|
||||
When non-nil, it will automatically register every package as a
|
||||
project, that you can quickly select using 'project-switch-project'
|
||||
('C-x p p').
|
||||
|
||||
** Flymake
|
||||
|
||||
+++
|
||||
*** New user option 'flymake-show-diagnostics-at-end-of-line'.
|
||||
When non-nil, Flymake shows 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 the buffer or reaching for the
|
||||
mouse to consult an error message.
|
||||
|
||||
** Python Mode
|
||||
|
||||
---
|
||||
*** New user option 'python-indent-block-paren-deeper'.
|
||||
If non-nil, increase the indentation of the lines inside parens in a
|
||||
header of a block when they are indented to the same level as the body
|
||||
of the block:
|
||||
|
||||
if (some_expression
|
||||
and another_expression):
|
||||
do_something()
|
||||
|
||||
instead of:
|
||||
|
||||
if (some_expression
|
||||
and another_expression):
|
||||
do_something()
|
||||
|
||||
|
||||
* New Modes and Packages in Emacs 30.1
|
||||
|
||||
|
|
@ -355,18 +273,6 @@ their customization options.
|
|||
|
||||
* Incompatible Lisp Changes in Emacs 30.1
|
||||
|
||||
---
|
||||
** The escape sequence '\x' not followed by hex digits is now an error.
|
||||
Previously, '\x' without at least one hex digit denoted character code
|
||||
zero (NUL) but as this was neither intended nor documented or even
|
||||
known by anyone, it is now treated as an error by the Lisp reader.
|
||||
|
||||
---
|
||||
** Connection-local variables are applied in buffers visiting a remote file.
|
||||
This overrides possible directory-local or file-local variables with
|
||||
the same name.
|
||||
|
||||
---
|
||||
** User option 'tramp-completion-reread-directory-timeout' has been removed.
|
||||
This user option has been obsoleted in Emacs 27, use
|
||||
'remote-file-name-inhibit-cache' instead.
|
||||
|
|
@ -380,8 +286,6 @@ hooks named after the feature name, like 'esh-mode-unload-hook'.
|
|||
|
||||
* Lisp Changes in Emacs 30.1
|
||||
|
||||
** New variable 'inhibit-auto-fill' to temporarily prevent auto-fill.
|
||||
|
||||
** Functions and variables to transpose sexps
|
||||
|
||||
+++
|
||||
|
|
@ -489,65 +393,26 @@ was to catch all errors, add an explicit handler for 'error', or use
|
|||
This warning can be suppressed using 'with-suppressed-warnings' with
|
||||
the warning name 'suspicious'.
|
||||
|
||||
---
|
||||
*** Warn about 'unwind-protect' without unwind forms.
|
||||
The compiler now warns when the 'unwind-protect' form is used without
|
||||
any unwind forms, as in
|
||||
|
||||
(unwind-protect (read buffer))
|
||||
|
||||
because the behavior is identical to that of the argument; there is
|
||||
no protection of any kind. Perhaps the intended unwind forms have
|
||||
been misplaced or forgotten, or the use of 'unwind-protect' could be
|
||||
simplified away.
|
||||
|
||||
This warning can be suppressed using 'with-suppressed-warnings' with
|
||||
the warning name 'suspicious'.
|
||||
|
||||
---
|
||||
*** Warn about more ignored function return values.
|
||||
The compiler now warns when the return value from certain functions is
|
||||
implicitly ignored. Example:
|
||||
|
||||
(progn (nreverse my-list) my-list)
|
||||
|
||||
will elicit a warning because it is usually pointless to call
|
||||
'nreverse' on a list without using the returned value.
|
||||
|
||||
To silence the warning, make use of the value in some way, such as
|
||||
assigning it to a variable. You can also wrap the function call in
|
||||
'(ignore ...)', or use 'with-suppressed-warnings' with the warning
|
||||
name 'ignored-return-value'.
|
||||
|
||||
The warning will only be issued for calls to functions declared
|
||||
'important-return-value' or 'side-effect-free' (but not 'error-free').
|
||||
+++
|
||||
** New function 'file-user-uid'.
|
||||
This function is like 'user-uid', but is aware of file name handlers,
|
||||
so it will return the remote UID for remote files (or -1 if the
|
||||
connection has no associated user).
|
||||
|
||||
+++
|
||||
** New function declaration and property 'important-return-value'.
|
||||
The declaration '(important-return-value t)' sets the
|
||||
'important-return-value' property which indicates that the function
|
||||
return value should probably not be thrown away implicitly.
|
||||
|
||||
+++
|
||||
** New functions 'file-user-uid' and 'file-group-gid'.
|
||||
These functions are like 'user-uid' and 'group-gid', respectively, but
|
||||
are aware of file name handlers, so they will return the remote UID or
|
||||
GID for remote files (or -1 if the connection has no associated user).
|
||||
|
||||
+++
|
||||
** 'fset', 'defalias' and 'defvaralias' now signal an error for cyclic aliases.
|
||||
Previously, 'fset', 'defalias' and 'defvaralias' could be made to
|
||||
build circular function and variable indirection chains as in
|
||||
** 'fset' and 'defalias' now signal an error for circular alias chains.
|
||||
Previously, 'fset' and 'defalias' could be made to build circular
|
||||
function indirection chains as in
|
||||
|
||||
(defalias 'able 'baker)
|
||||
(defalias 'baker 'able)
|
||||
|
||||
but trying to use them would sometimes make Emacs hang. Now, an attempt
|
||||
but trying to call them would often make Emacs hang. Now, an attempt
|
||||
to create such a loop results in an error.
|
||||
|
||||
Since circular alias chains now cannot occur, 'function-alias-p',
|
||||
'indirect-function' and 'indirect-variable' will never signal an error.
|
||||
Their 'noerror' arguments have no effect and are therefore obsolete.
|
||||
Since circular alias chains now cannot occur, 'function-alias-p' and
|
||||
'indirect-function' will never signal an error. Their second
|
||||
'noerror' arguments have no effect and are therefore obsolete.
|
||||
|
||||
|
||||
* Changes in Emacs 30.1 on Non-Free Operating Systems
|
||||
|
|
|
|||
228
etc/NEWS.29
|
|
@ -218,13 +218,13 @@ of 'user-emacs-directory'.
|
|||
|
||||
+++
|
||||
** The image commands have changed key bindings.
|
||||
In previous Emacs versions, the '+', '-' and 'r' keys were bound when
|
||||
point was over an image. In Emacs 29.1, additional commands have been
|
||||
added, and this made it more likely that users would trigger the image
|
||||
commands by mistake. To avoid this, all image commands have been
|
||||
moved to the 'i' prefix keymap, so '+' is now 'i +', '-' is now 'i -',
|
||||
and 'r' is now 'i r'. In addition, these commands are now repeating,
|
||||
so you can rotate an image twice by saying 'i r r', for instance.
|
||||
In previous Emacs versions, images have had the '+', '-' and 'r' keys
|
||||
bound when point is over an image. In Emacs 29.1, additional commands
|
||||
were added, and this made it more likely that users would trigger the
|
||||
image commands by mistake. To avoid this, all image commands have
|
||||
moved to the 'i' keymap, so '+' is now 'i +', '-' is now 'i -', and
|
||||
'r' is now 'i r'. In addition, these commands are now repeating, so
|
||||
you can rotate an image twice by saying 'i r r', for instance.
|
||||
|
||||
+++
|
||||
** Emacs now picks the correct coding-system for X input methods.
|
||||
|
|
@ -380,7 +380,7 @@ this user option to nil to revert back to the old behavior.
|
|||
---
|
||||
** Support for old EIEIO functions is not autoloaded any more.
|
||||
You need an explicit '(require 'eieio-compat)' to use 'defmethod'
|
||||
and 'defgeneric' (which were made obsolete in Emacs 25.1 by
|
||||
and 'defgeneric' (which have been made obsolete in Emacs 25.1 with
|
||||
'cl-defmethod' and 'cl-defgeneric').
|
||||
Similarly you might need to '(require 'eieio-compat)' before loading
|
||||
files that were compiled with an old EIEIO (Emacs<25).
|
||||
|
|
@ -497,7 +497,7 @@ the 'nlinum' package from GNU ELPA instead. The former has better
|
|||
performance, but the latter is closer to a drop-in replacement.
|
||||
|
||||
1. To use 'display-line-numbers-mode', add something like this to your
|
||||
init file:
|
||||
Init file:
|
||||
|
||||
(global-display-line-numbers-mode 1)
|
||||
;; Alternatively, to use it only in programming modes:
|
||||
|
|
@ -517,7 +517,7 @@ performance, but the latter is closer to a drop-in replacement.
|
|||
|
||||
---
|
||||
** The thumbs.el library is now obsolete.
|
||||
We recommend using the 'image-dired' command instead.
|
||||
We recommend using command 'image-dired' instead.
|
||||
|
||||
---
|
||||
** The autoarg.el library is now marked obsolete.
|
||||
|
|
@ -577,7 +577,7 @@ encoding, only for decoding.
|
|||
** New user option 'major-mode-remap-alist' to specify favorite major modes.
|
||||
This user option lets you remap the default modes (e.g. 'perl-mode' or
|
||||
'latex-mode') to your favorite ones (e.g. 'cperl-mode' or
|
||||
'LaTeX-mode') instead of having to use 'defalias', which can have
|
||||
'LaTeX-mode') without having to use 'defalias', which can have
|
||||
undesirable side effects.
|
||||
This applies to all modes specified via 'auto-mode-alist', file-local
|
||||
variables, etc.
|
||||
|
|
@ -587,8 +587,6 @@ variables, etc.
|
|||
|
||||
---
|
||||
** New user option 'electric-quote-replace-consecutive'.
|
||||
This allows you to disable the default behavior of consecutive single
|
||||
quotes being replaced with a double quote.
|
||||
|
||||
---
|
||||
** Emacs is now capable of editing files with very long lines.
|
||||
|
|
@ -797,14 +795,13 @@ part of the buffer.
|
|||
|
||||
+++
|
||||
** New user option 'set-message-functions'.
|
||||
It allows more flexible control of how echo-area messages are displayed
|
||||
by adding functions to this list. The default value is a list of one
|
||||
element: 'set-minibuffer-message', which displays echo-area messages
|
||||
at the end of the minibuffer text when the minibuffer is active.
|
||||
Other useful functions include 'inhibit-message', which allows
|
||||
specifying, via 'inhibit-message-regexps', the list of messages whose
|
||||
display should be inhibited; and 'set-multi-message' that accumulates
|
||||
recent messages and displays them stacked together.
|
||||
It allows selecting more functions for 'set-message-function'
|
||||
in addition to the default function that handles messages
|
||||
in the active minibuffer. The most useful are 'inhibit-message'
|
||||
that allows specifying a list of messages to inhibit via
|
||||
'inhibit-message-regexps', and 'set-multi-message' that
|
||||
accumulates recent messages and displays them stacked
|
||||
in the echo area.
|
||||
|
||||
---
|
||||
** New user option 'find-library-include-other-files'.
|
||||
|
|
@ -857,17 +854,17 @@ This value stands for the value of the corresponding attribute of the
|
|||
inheriting from other faces.
|
||||
|
||||
+++
|
||||
** New X resource "borderThickness".
|
||||
** New X resource: "borderThickness".
|
||||
This controls the thickness of the external borders of the menu bars
|
||||
and pop-up menus.
|
||||
|
||||
+++
|
||||
** New X resource "inputStyle".
|
||||
** New X resource: "inputStyle".
|
||||
This controls the style of the pre-edit and status areas of X input
|
||||
methods.
|
||||
|
||||
+++
|
||||
** New X resources "highlightForeground" and "highlightBackground".
|
||||
** New X resources: "highlightForeground" and "highlightBackground".
|
||||
Only in the Lucid build, this controls colors used for highlighted
|
||||
menu item widgets.
|
||||
|
||||
|
|
@ -904,7 +901,7 @@ frame's contents will be hidden, leaving only the title bar on display.
|
|||
---
|
||||
** New user option 'x-gtk-use-native-input'.
|
||||
This controls whether or not GTK input methods are used by Emacs,
|
||||
instead of XIM input methods. Defaults to nil.
|
||||
instead of XIM input methods.
|
||||
|
||||
+++
|
||||
** New user option 'use-system-tooltips'.
|
||||
|
|
@ -1001,17 +998,17 @@ combinations in a graphical menu system.
|
|||
|
||||
+++
|
||||
*** New command 'emoji-search' (bound to 'C-x 8 e s').
|
||||
This command lets you search for and insert an Emoji based on names.
|
||||
This command lets you search for Emoji based on names.
|
||||
|
||||
+++
|
||||
*** New command 'emoji-list' (bound to 'C-x 8 e l').
|
||||
This command lists all Emoji (categorized by themes) in a special
|
||||
buffer and lets you choose one of them to insert.
|
||||
buffer and lets you choose one of them.
|
||||
|
||||
---
|
||||
*** New command 'emoji-recent' (bound to 'C-x 8 e r').
|
||||
This command lets you choose among the Emoji you have recently
|
||||
inserted and insert it.
|
||||
inserted.
|
||||
|
||||
+++
|
||||
*** New command 'emoji-describe' (bound to 'C-x 8 e d').
|
||||
|
|
@ -1023,11 +1020,6 @@ works for non-Emoji characters.)
|
|||
These are bound to 'C-x 8 e +' and 'C-x 8 e -', respectively. They
|
||||
can be used on any character, but are mainly useful for Emoji.
|
||||
|
||||
---
|
||||
*** New command 'emoji-zoom-reset'.
|
||||
This is bound to 'C-x 8 e 0', and undoes any size changes performed by
|
||||
'emoji-zoom-increase' and 'emoji-zoom-decrease'.
|
||||
|
||||
---
|
||||
*** New input method 'emoji'.
|
||||
This allows you to enter Emoji using short strings, eg ':face_palm:'
|
||||
|
|
@ -1045,7 +1037,7 @@ quotes removed.
|
|||
|
||||
---
|
||||
*** 'M-x apropos-variable' output now includes values of variables.
|
||||
Such an apropos buffer is more easily viewed with outlining after
|
||||
Such apropos buffer is more easily viewed with outlining after
|
||||
enabling 'outline-minor-mode' in 'apropos-mode'.
|
||||
|
||||
+++
|
||||
|
|
@ -1077,7 +1069,7 @@ This has been changed to:
|
|||
+++
|
||||
*** The 'C-h .' command now accepts a prefix argument.
|
||||
'C-u C-h .' would previously inhibit displaying a warning message if
|
||||
there was no local help at point. This has been changed to call
|
||||
there's no local help at point. This has been changed to call
|
||||
'button-describe'/'widget-describe' and display button/widget help
|
||||
instead.
|
||||
|
||||
|
|
@ -1130,7 +1122,7 @@ helpful commands for various tasks. You can toggle the display using
|
|||
'C-h C-q'.
|
||||
|
||||
** Emacs now comes with Org v9.6.
|
||||
See the file "etc/ORG-NEWS" for user-visible changes in Org.
|
||||
See the file "ORG-NEWS" for user-visible changes in Org.
|
||||
|
||||
** Outline Mode
|
||||
|
||||
|
|
@ -1193,13 +1185,12 @@ the display of several buffers in a row more amenable.
|
|||
|
||||
+++
|
||||
*** New buffer display action alist entry 'lru-frames'.
|
||||
This allows specifying which frames 'display-buffer' should consider
|
||||
when using a window that shows another buffer. It is interpreted as
|
||||
per the ALL-FRAMES argument of 'get-lru-window'.
|
||||
This allows to specify which frames 'display-buffer' should consider
|
||||
when using a window that shows another buffer.
|
||||
|
||||
+++
|
||||
*** New buffer display action alist entry 'lru-time'.
|
||||
'display-buffer' will ignore windows with a use time higher than this
|
||||
'display-buffer' will ignore windows with a use time higher than that
|
||||
when using a window that shows another buffer.
|
||||
|
||||
+++
|
||||
|
|
@ -1209,14 +1200,12 @@ making it a less likely candidate for displaying another buffer.
|
|||
|
||||
+++
|
||||
*** New buffer display action alist entry 'window-min-width'.
|
||||
This allows specifying a preferred minimum width of the window used to
|
||||
display a buffer.
|
||||
This allows to specify a minimum width of the window used to display a
|
||||
buffer.
|
||||
|
||||
---
|
||||
*** You can specify on which window 'scroll-other-window' operates.
|
||||
This is controlled by the new 'other-window-scroll-default' variable,
|
||||
which should be set to a function that returns a window. When this
|
||||
variable is nil, 'next-window' is used.
|
||||
*** You can customize on which window 'scroll-other-window' operates.
|
||||
This is controlled by the new 'other-window-scroll-default' variable.
|
||||
|
||||
** Frames
|
||||
|
||||
|
|
@ -1279,19 +1268,17 @@ respond within N seconds. The default is to wait forever.
|
|||
+++
|
||||
*** 'server-stop-automatically' can be used to automatically stop the server.
|
||||
The Emacs server will be automatically stopped when certain conditions
|
||||
are met. The conditions are determined by the argument to
|
||||
'server-stop-automatically', which can be 'empty', 'delete-frame' or
|
||||
'kill-terminal'.
|
||||
are met. The conditions are given by the argument, which can be
|
||||
'empty', 'delete-frame' or 'kill-terminal'.
|
||||
|
||||
** Rcirc
|
||||
|
||||
+++
|
||||
*** New command 'rcirc-when'.
|
||||
This shows the reception time of the message at point (if available).
|
||||
|
||||
+++
|
||||
*** New user option 'rcirc-cycle-completion-flag'.
|
||||
Rcirc now uses the default 'completion-at-point' mechanism. The
|
||||
Rcirc will use the default 'completion-at-point' mechanism. The
|
||||
conventional IRC behavior of completing by cycling through the
|
||||
available options can be restored by enabling this option.
|
||||
|
||||
|
|
@ -1546,10 +1533,6 @@ environments are:
|
|||
|
||||
Coptic script and language environment
|
||||
|
||||
Mongolian-traditional script and language environment
|
||||
|
||||
Mongolian-cyrillic language environment
|
||||
|
||||
---
|
||||
*** The "Oriya" language environment was renamed to "Odia".
|
||||
This is to follow the change in the official name of the script. The
|
||||
|
|
@ -1563,10 +1546,7 @@ Type 'C-u C-h t' to select it in case your language setup does not do
|
|||
so automatically.
|
||||
|
||||
---
|
||||
*** New Ukrainian translation of the Emacs tutorial.
|
||||
|
||||
---
|
||||
*** New Farsi/Persian translation of the Emacs tutorial.
|
||||
*** New Ukrainian translation of the Emacs Tutorial.
|
||||
|
||||
---
|
||||
*** New default phonetic input method for the Tamil language environment.
|
||||
|
|
@ -1591,12 +1571,6 @@ This input method is based on the russian-computer input method, and
|
|||
is intended for typing in the Chuvash language written in the Cyrillic
|
||||
script.
|
||||
|
||||
---
|
||||
*** New input method 'cyrillic-mongolian'.
|
||||
This input method is for typing in the Mongolian language using the
|
||||
Cyrillic script. It is the default input method for the new
|
||||
Mongolian-cyrillic language environment, see above.
|
||||
|
||||
|
||||
* Changes in Specialized Modes and Packages in Emacs 29.1
|
||||
|
||||
|
|
@ -1843,18 +1817,13 @@ this includes "binary" buffers like 'archive-mode' and 'image-mode'.
|
|||
** Package
|
||||
|
||||
+++
|
||||
*** New command 'package-upgrade'.
|
||||
*** New command 'package-update'.
|
||||
This command allows you to upgrade packages without using 'M-x
|
||||
list-packages'. A package that comes with the Emacs distribution can
|
||||
only be upgraded after you install, once, a newer version from ELPA
|
||||
via the package-menu displayed by 'list-packages'.
|
||||
list-packages'.
|
||||
|
||||
+++
|
||||
*** New command 'package-upgrade-all'.
|
||||
This command allows upgrading all packages without any queries.
|
||||
A package that comes with the Emacs distribution will only be upgraded
|
||||
by this command after you install, once, a newer version of that
|
||||
package from ELPA via the package-menu displayed by 'list-packages'.
|
||||
*** New command 'package-update-all'.
|
||||
This command allows updating all packages without any queries.
|
||||
|
||||
+++
|
||||
*** New commands 'package-recompile' and 'package-recompile-all'.
|
||||
|
|
@ -1889,26 +1858,13 @@ packages checked out using 'package-vc-install'.
|
|||
+++
|
||||
*** New command 'package-report-bug'.
|
||||
This command helps you compose an email for sending bug reports to
|
||||
package maintainers, and is bound to 'b' in the "*Packages*" buffer.
|
||||
package maintainers.
|
||||
|
||||
+++
|
||||
*** New user option 'package-vc-selected-packages'.
|
||||
By customizing this user option you can specify specific packages to
|
||||
install.
|
||||
|
||||
---
|
||||
*** New user option 'package-install-upgrade-built-in'.
|
||||
When enabled, 'package-install' will include in the list of
|
||||
upgradeable packages those built-in packages (like Eglot and
|
||||
use-package, for example) for which a newer version is available in
|
||||
package archives, and will allow installing those newer versions. By
|
||||
default, this is disabled; however, if 'package-install' is invoked
|
||||
with a prefix argument, it will act as if this new option were
|
||||
enabled.
|
||||
|
||||
If you customize this option, we recommend you place its non-default
|
||||
setting in your early-init file.
|
||||
|
||||
** Emacs Sessions (Desktop)
|
||||
|
||||
+++
|
||||
|
|
@ -1966,8 +1922,8 @@ displayed in a window.
|
|||
|
||||
+++
|
||||
*** New user option 'compilation-hidden-output'.
|
||||
This regular expression can be used to make specific parts of
|
||||
compilation output invisible.
|
||||
This can be used to make specific parts of compilation output
|
||||
invisible.
|
||||
|
||||
+++
|
||||
*** The 'compilation-auto-jump-to-first-error' user option has been extended.
|
||||
|
|
@ -2350,7 +2306,7 @@ EUDC inline expansion result formatting defaulted to
|
|||
("%s %s <%s>" firstname name email)
|
||||
|
||||
Since email address specifications need to comply with RFC 5322 in
|
||||
order to be useful in messages, there was a risk of producing syntax
|
||||
order to be useful in messages, there was a risk to produce syntax
|
||||
which was standard with RFC 822, but is marked as obsolete syntax by
|
||||
its successor RFC 5322. Also, the first and last name part was never
|
||||
enclosed in double quotes, potentially producing invalid address
|
||||
|
|
@ -2384,8 +2340,8 @@ used to select the entry type in the ecomplete database.
|
|||
+++
|
||||
*** New back-end for mailabbrev.
|
||||
A new back-end for mailabbrev allows information from that database to
|
||||
be queried by EUDC, too. Only the attributes 'email', 'name', and
|
||||
'firstname' are supported.
|
||||
be queried by EUDC, too. The attributes 'email', 'name', and 'firstname'
|
||||
are supported only.
|
||||
|
||||
** EWW/SHR
|
||||
|
||||
|
|
@ -2632,14 +2588,14 @@ as opposed to via the command-line.
|
|||
+++
|
||||
*** New command 'image-transform-fit-to-window'.
|
||||
This command fits the image to the current window by scaling down or
|
||||
up as necessary. Unlike 'image-transform-fit-both', this can scale
|
||||
the image up as well as down. It is bound to 's w' in Image Mode by
|
||||
default.
|
||||
up as necessary. Unlike 'image-transform-fit-both', this does not
|
||||
only scale the image down, but up as well. It is bound to 's w' in
|
||||
Image Mode by default.
|
||||
|
||||
---
|
||||
*** New command 'image-mode-wallpaper-set'.
|
||||
This command sets the desktop background to the current image. It is
|
||||
bound to 'W' in Image Mode by default.
|
||||
bound to 'W' by default.
|
||||
|
||||
+++
|
||||
*** 'image-transform-fit-to-{height,width}' are now obsolete.
|
||||
|
|
@ -2657,14 +2613,19 @@ much (in percent). It is nil by default, which means no limit.
|
|||
|
||||
---
|
||||
*** New user option 'image-text-based-formats'.
|
||||
This controls whether or not to show a message, when opening certain
|
||||
image formats, explaining how to edit it as text. The default is to
|
||||
show this message for SVG and XPM.
|
||||
This controls whether or not to show a message when opening certain
|
||||
image formats saying how to edit it as text. The default is to show
|
||||
this message for SVG and XPM.
|
||||
|
||||
+++
|
||||
*** New commands: 'image-flip-horizontally' and 'image-flip-vertically'.
|
||||
These commands horizontally and vertically flip the image under point,
|
||||
and are bound to 'i h' and 'i v', respectively.
|
||||
|
||||
+++
|
||||
*** New command 'image-transform-set-percent'.
|
||||
It allows resizing the image to a percentage of its original size, and
|
||||
is bound to 's p' in Image mode.
|
||||
It allows setting the image size to a percentage of its original size,
|
||||
and is bound to 's p' in Image mode.
|
||||
|
||||
+++
|
||||
*** 'image-transform-original' renamed to 'image-transform-reset-to-original'.
|
||||
|
|
@ -2676,19 +2637,6 @@ The old name was confusing, and is now an obsolete function alias.
|
|||
|
||||
** Images
|
||||
|
||||
+++
|
||||
*** New commands 'image-crop' and 'image-cut'.
|
||||
These commands allow interactively cropping/cutting the image at
|
||||
point. The commands are bound to keys 'i c' and 'i x' (respectively)
|
||||
in the local keymap over images. They rely on external programs, by
|
||||
default "convert" from ImageMagick, to do the actual cropping/eliding
|
||||
of the image file.
|
||||
|
||||
+++
|
||||
*** New commands 'image-flip-horizontally' and 'image-flip-vertically'.
|
||||
These commands horizontally and vertically flip the image under point,
|
||||
and are bound to 'i h' and 'i v', respectively.
|
||||
|
||||
+++
|
||||
*** Users can now add special image conversion functions.
|
||||
This is done via 'image-converter-add-handler'.
|
||||
|
|
@ -3277,10 +3225,6 @@ based on data provided by language servers using the Language Server
|
|||
Protocol (LSP). See the new Info manual "(eglot) Top" for more. Also
|
||||
see "etc/EGLOT-NEWS".
|
||||
|
||||
If you want to be able to use 'package-install' to upgrade Eglot to
|
||||
newer versions released on GNU ELPA, customize the new option
|
||||
'package-install-upgrade-built-in' to a non-nil value.
|
||||
|
||||
+++
|
||||
** use-package: Declarative package configuration.
|
||||
use-package is now shipped with Emacs. It provides the 'use-package'
|
||||
|
|
@ -3288,9 +3232,13 @@ macro, which allows you to isolate package configuration in your init
|
|||
file in a way that is declarative, tidy, and performance-oriented.
|
||||
See the new Info manual "(use-package) Top" for more.
|
||||
|
||||
If you want to be able to use 'package-install' to upgrade use-package
|
||||
to newer versions released on GNU ELPA, customize the new option
|
||||
'package-install-upgrade-built-in' to a non-nil value.
|
||||
+++
|
||||
** New commands 'image-crop' and 'image-cut'.
|
||||
These commands allow interactively cropping/cutting the image at
|
||||
point. The commands are bound to keys 'i c' and 'i x' (respectively)
|
||||
in the local keymap over images. They rely on external programs, by
|
||||
default "convert" from ImageMagick, to do the actual cropping/eliding
|
||||
of the image file.
|
||||
|
||||
---
|
||||
** New package 'wallpaper'.
|
||||
|
|
@ -3617,13 +3565,11 @@ font spec. In these cases, replacing ":weight 'normal" with ":weight
|
|||
'medium" should fix the issue.
|
||||
|
||||
---
|
||||
** Keymap descriptions by Help commands have changed.
|
||||
** Keymap descriptions have changed.
|
||||
'help--describe-command', 'C-h b' and associated functions that output
|
||||
keymap descriptions have changed. In particular, prefix commands are
|
||||
not output at all, and instead of "??" for closures/functions, these
|
||||
functions output "[closure]"/"[lambda]". You can get back the old
|
||||
behavior of including prefix commands by customizing the new option
|
||||
'describe-bindings-show-prefix-commands' to a non-nil value.
|
||||
not output at all, and instead of "??" for closures/functions,
|
||||
"[closure]"/"[lambda]" is output.
|
||||
|
||||
---
|
||||
** 'downcase' details have changed slightly.
|
||||
|
|
@ -3956,9 +3902,9 @@ connection-local profile.
|
|||
+++
|
||||
*** New macro 'with-connection-local-application-variables'.
|
||||
This macro works like 'with-connection-local-variables', but it allows
|
||||
using another application instead of 'tramp'. This is useful when
|
||||
running code in a buffer where Tramp has already set some
|
||||
connection-local variables.
|
||||
to use another application but 'tramp'. This is useful when running
|
||||
code in a buffer where Tramp has already set some connection-local
|
||||
variables.
|
||||
|
||||
+++
|
||||
*** New macro 'setq-connection-local'.
|
||||
|
|
@ -4037,8 +3983,8 @@ This returns a list of sub-sequences of the specified sequence.
|
|||
|
||||
+++
|
||||
*** New function 'seq-remove-at-position'.
|
||||
This function returns a copy of the specified sequence with the
|
||||
element at a given (zero-based) index removed.
|
||||
This function returns a copy of the specified sequence where the
|
||||
element at a given (zero-based) index got removed.
|
||||
|
||||
+++
|
||||
*** New function 'seq-positions'.
|
||||
|
|
@ -4106,7 +4052,7 @@ that quote character has to be escaped to avoid Emacs displaying it as
|
|||
|
||||
(setq foo '(1 2 3))
|
||||
|
||||
invalid. Emacs will now warn during byte compilation if it sees
|
||||
invalid. Emacs will now warn during byte compilation if it seems
|
||||
something like that, and also warn about when using RIGHT/LEFT SINGLE
|
||||
QUOTATION MARK directly. In both these cases, if these characters
|
||||
should really be present in the docstring, they should be quoted with
|
||||
|
|
@ -4166,7 +4112,7 @@ example for benchmarking purposes.
|
|||
** New function 'string-edit'.
|
||||
This is meant to be used when the user has to edit a (potentially)
|
||||
long string. It pops up a new buffer where you can edit the string,
|
||||
and the provided callback is called when the user types 'C-c C-c'.
|
||||
and a callback is called when the user types 'C-c C-c'.
|
||||
|
||||
+++
|
||||
** New function 'read-string-from-buffer'.
|
||||
|
|
@ -4312,7 +4258,7 @@ them towards or away from each other.
|
|||
|
||||
+++
|
||||
** New hook 'x-pre-popup-menu-hook'.
|
||||
This hook is run before 'x-popup-menu' is about to display a
|
||||
This hook, run before 'x-popup-menu', is about to display a
|
||||
deck-of-cards menu on screen.
|
||||
|
||||
---
|
||||
|
|
@ -4374,11 +4320,9 @@ that binding is ignored by 'where-is-internal'.
|
|||
|
||||
+++
|
||||
*** New functions for defining and manipulating keystrokes.
|
||||
These all take the syntax defined by 'key-valid-p', which is basically
|
||||
the same syntax as the one accepted by the 'kbd' macro. None of the
|
||||
older functions have been deprecated or altered, but they are now
|
||||
de-emphasized in the documentation, and we encourage Lisp programs to
|
||||
switch to these new functions.
|
||||
These all take the syntax defined by 'key-valid-p'. None of the older
|
||||
functions have been deprecated or altered, but they are now
|
||||
de-emphasized in the documentation.
|
||||
|
||||
+++
|
||||
*** Use 'keymap-set' instead of 'define-key'.
|
||||
|
|
@ -4413,8 +4357,8 @@ switch to these new functions.
|
|||
+++
|
||||
*** 'define-key' now takes an optional REMOVE argument.
|
||||
If non-nil, remove the definition from the keymap. This is subtly
|
||||
different from setting a definition to nil: when the keymap has a
|
||||
parent such a definition will shadow the parent's definition.
|
||||
different from setting a definition to nil (when the keymap has a
|
||||
parent).
|
||||
|
||||
+++
|
||||
*** 'read-multiple-choice' now takes an optional SHOW-HELP argument.
|
||||
|
|
|
|||
36
etc/PROBLEMS
|
|
@ -2313,33 +2313,6 @@ recommended way of turning on Font-lock is by typing "M-x
|
|||
global-font-lock-mode RET" or by customizing the variable
|
||||
'global-font-lock-mode'.
|
||||
|
||||
** Colors are not available or messed up on TTY frames inside 'screen'.
|
||||
|
||||
This can happen if you have COLORTERM=truecolor defined in the
|
||||
environment when Emacs starts, but your version of 'screen' doesn't
|
||||
actually support 24-bit true colors.
|
||||
|
||||
The COLORTERM environment variable is supposed to be set to the value
|
||||
"truecolor" only if the terminal used by Emacs actually supports true
|
||||
color. Emacs does not have any means of verifying that this support
|
||||
is available, it takes the fact that the variable is defined to this
|
||||
value as an indication that true color support is, in fact, available,
|
||||
and uses color setting commands that COLORTERM=truecolor presumes,
|
||||
bypassing the usual Terminfo capabilities related to colors.
|
||||
|
||||
Some text-mode terminals, such as GNOME Terminal, are known to set
|
||||
this environment variable, supposedly to announce their own support
|
||||
for true color; however the setting is then inherited by any other
|
||||
terminal emulators started from such a terminal, even though those
|
||||
other terminal emulators might not themselves support true color using
|
||||
the same commands as Emacs uses when it sees COLORTERM=truecolor.
|
||||
|
||||
The solution is to either upgrade to a newer version of 'screen'
|
||||
(version 5.x or later reportedly supports true color), or to unset the
|
||||
COLORTERM variable before starting 'screen', and let Emacs use the
|
||||
color support provided by the terminal emulator as defined in the
|
||||
Terminfo database.
|
||||
|
||||
** Unexpected characters inserted into the buffer when you start Emacs.
|
||||
See e.g. <URL:https://debbugs.gnu.org/11129>
|
||||
|
||||
|
|
@ -2708,15 +2681,6 @@ Emacs so that it isn't compiled with '-O5'.
|
|||
We list bugs in current versions here. See also the section on legacy
|
||||
systems.
|
||||
|
||||
*** On Solaris 10, running 'configure' with "/bin/sh" produces errors.
|
||||
The "/bin/sh" shell on Solaris is an ancient and non-POSIX shell, so
|
||||
we recommend not to use it. The Emacs 'configure' script should find
|
||||
an appropriate shell and re-exec itself with that shell, unless you
|
||||
force it to use "/bin/sh" by using "CONFIG_SHELL=/bin/sh" on the
|
||||
'configure' command line. So either don't use CONFIG_SHELL, or, if
|
||||
you'd rather pick the shell yourself, choose "/bin/bash" or "/bin/ksh"
|
||||
or "/usr/xpg4/bin/sh" instead.
|
||||
|
||||
*** On Solaris 10 sparc, Emacs crashes during the build while saving state.
|
||||
This was observed for Emacs 28.1 on Solaris 10 32-bit sparc, with
|
||||
Oracle Developer Studio 12.6 (Sun C 5.15). The failure was intermittent,
|
||||
|
|
|
|||
|
|
@ -1,43 +0,0 @@
|
|||
This directory contains icons for some inline symbols.
|
||||
|
||||
COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES
|
||||
|
||||
Files: *.svg
|
||||
Author: Yuan Fu <casouri@gmail.com>
|
||||
Copyright (C) 2023 Free Software Foundation, Inc.
|
||||
License: GNU General Public License version 3 or later (see COPYING)
|
||||
|
||||
How I made these icons: I made them with Figma, and exported them into
|
||||
SVG. I made the shapes with vectors (SVG paths) rather than strokes,
|
||||
merged all the shapes into a single shape with union operation, and
|
||||
stripped filling attributes from the SVG files. This way the icons can
|
||||
be colored like normal text! I'm not exactly sure how it works, but as
|
||||
long as the icon uses SVG path, and there is only one path in the
|
||||
file, and there is no filling attributes, the icons can be colored as
|
||||
text.
|
||||
|
||||
FWIW, this is the command I used to strip filling attributes:
|
||||
|
||||
sed -i 's/fill="none"//g' <file>
|
||||
sed -i 's/fill="black"//g' <file>
|
||||
|
||||
Naming: Use underscore to separate styles, dash are considered normal
|
||||
character so you can use it for names. End with the intended optical
|
||||
size for the icon.
|
||||
|
||||
There should also be an order for all the keywords. Right now we have
|
||||
directions (left/right), circle, fill, and optical size. Among them,
|
||||
the order should be
|
||||
|
||||
1. direction
|
||||
2. circle
|
||||
3. fill
|
||||
4. size
|
||||
|
||||
E.g., arrow_right_circle_fill_16.
|
||||
|
||||
|
||||
|
||||
Every time you modify the SVG icons, please use the ImageMagick
|
||||
`convert' utility to convert them to PBM icons, for the sake of
|
||||
Emacsen that cannot display SVG images.
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M6.58449 9.82778L3.75736 6.99807L2.3425 8.41164L6.58321 12.6562L13.6575 5.58837L12.2439 4.17351L6.58449 9.82778Z" />
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 218 B |
|
|
@ -1,3 +0,0 @@
|
|||
<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M14 4.5L14 7L8 12L2 7L2 4.5L8 9.5L14 4.5Z" />
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 147 B |
|
|
@ -1,3 +0,0 @@
|
|||
<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M11 3.05H8.5L4 8.00001L8.5 13H11L6.5 8.00001L11 3.05Z" />
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 159 B |
|
|
@ -1,3 +0,0 @@
|
|||
<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M4.95455 3H7.45455L12 8L7.45455 13H4.95455L9.5 8L4.95455 3Z" />
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 165 B |
|
|
@ -1,3 +0,0 @@
|
|||
<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M2 11.5L2 9L8 4L14 9L14 11.5L8 6.5L2 11.5Z" />
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 148 B |
|
|
@ -1,3 +0,0 @@
|
|||
<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M5.17157 3.75736L3.75736 5.17157L6.58579 8L3.75736 10.8284L5.17157 12.2426L8 9.41421L10.8284 12.2426L12.2426 10.8284L9.41421 8L12.2426 5.17157L10.8284 3.75736L8 6.58579L5.17157 3.75736Z" />
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 291 B |
|
|
@ -1,3 +0,0 @@
|
|||
<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M15 8C15 11.866 11.866 15 8 15C4.13401 15 1 11.866 1 8C1 4.13401 4.13401 1 8 1C11.866 1 15 4.13401 15 8ZM13 8C13 10.7614 10.7614 13 8 13C5.23858 13 3 10.7614 3 8C3 5.23858 5.23858 3 8 3C10.7614 3 13 5.23858 13 8ZM9.76777 4.81802L11.182 6.23223L9.41421 8L11.182 9.76777L9.76777 11.182L8 9.41421L6.23223 11.182L4.81802 9.76777L6.58579 8L4.81802 6.23223L6.23223 4.81802L8 6.58579L9.76777 4.81802Z" />
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 539 B |
|
|
@ -1,3 +0,0 @@
|
|||
<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M8 15C11.866 15 15 11.866 15 8C15 4.13401 11.866 1 8 1C4.13401 1 1 4.13401 1 8C1 11.866 4.13401 15 8 15ZM10.1213 4.46447L11.5355 5.87868L9.41421 8L11.5355 10.1213L10.1213 11.5355L8 9.41421L5.87868 11.5355L4.46447 10.1213L6.58579 8L4.46447 5.87868L5.87868 4.46447L8 6.58579L10.1213 4.46447Z" />
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 435 B |
|
|
@ -1,3 +0,0 @@
|
|||
<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M8 5.5C8 5.5 9.5 3.5 11 3.5C12.5 3.5 14 4.5 14 6.5C14 10.1005 8 13.5 8 13.5C8 13.5 2 10.1005 2 6.5C2 4.5 3.34315 3.5 5 3.5C6.5 3.5 8 5.5 8 5.5ZM8 7.5C9 6.5 10 5.5 11 5.5C11.4898 5.5 11.738 5.65071 12 6C12.3515 6.46863 12.2982 7.40369 12 8C11 10 8 11.5 8 11.5C8 11.5 5 10 4 8C3.70858 7.41714 3.64853 6.46863 4 6C4.26197 5.65071 4.55933 5.5 5 5.5C6 5.5 7 6.5 8 7.5Z" />
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 509 B |
|
|
@ -1,3 +0,0 @@
|
|||
<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M11 3.5C9.5 3.5 8 5.5 8 5.5C8 5.5 6.5 3.5 5 3.5C3.34315 3.5 2 4.5 2 6.5C2 10.1005 8 13.5 8 13.5C8 13.5 14 10.1005 14 6.5C14 4.5 12.5 3.5 11 3.5Z" />
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 250 B |
|
|
@ -1,3 +0,0 @@
|
|||
<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M8 5.5C8 5.5 9.5 3.5 11 3.5C12.5 3.5 14 4.5 14 6.5C14 10.1005 8 13.5 8 13.5C8 13.5 2 10.1005 2 6.5C2 4.5 3.34315 3.5 5 3.5C6.5 3.5 8 5.5 8 5.5ZM12 8C11 10 8 11.5 8 11.5V7.5C9 6.5 10 5.5 11 5.5C11.4898 5.5 11.738 5.65071 12 6C12.3515 6.46863 12.2982 7.40369 12 8Z" />
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 408 B |
|
|
@ -1,3 +0,0 @@
|
|||
<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M14 3H2V5H14V3ZM14 7H2V9H14V7ZM2 11H14V13H2V11Z" />
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 193 B |
|
|
@ -1,3 +0,0 @@
|
|||
<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M13 7H3V9H13V7Z" />
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 121 B |
|
|
@ -1,3 +0,0 @@
|
|||
<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M15 8C15 11.866 11.866 15 8 15C4.13401 15 1 11.866 1 8C1 4.13401 4.13401 1 8 1C11.866 1 15 4.13401 15 8ZM13 8C13 10.7614 10.7614 13 8 13C5.23858 13 3 10.7614 3 8C3 5.23858 5.23858 3 8 3C10.7614 3 13 5.23858 13 8ZM11.5 7V9H4.5V7H11.5Z" />
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 379 B |
|
|
@ -1,3 +0,0 @@
|
|||
<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M8 15C11.866 15 15 11.866 15 8C15 4.13401 11.866 1 8 1C4.13401 1 1 4.13401 1 8C1 11.866 4.13401 15 8 15ZM12 7V9H4V7H12Z" />
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 265 B |
|
|
@ -1,3 +0,0 @@
|
|||
<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M9 3H7V7H3V9H7V13H9V9H13V7H9V3Z" />
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 137 B |
|
|
@ -1,3 +0,0 @@
|
|||
<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M15 8C15 11.866 11.866 15 8 15C4.13401 15 1 11.866 1 8C1 4.13401 4.13401 1 8 1C11.866 1 15 4.13401 15 8ZM13 8C13 10.7614 10.7614 13 8 13C5.23858 13 3 10.7614 3 8C3 5.23858 5.23858 3 8 3C10.7614 3 13 5.23858 13 8ZM7 7V4.5H9V7H11.5V9H9V11.5H7V9H4.5V7H7Z" />
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 397 B |
|
|
@ -1,3 +0,0 @@
|
|||
<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M8 15C11.866 15 15 11.866 15 8C15 4.13401 11.866 1 8 1C4.13401 1 1 4.13401 1 8C1 11.866 4.13401 15 8 15ZM7 7V4H9V7H12V9H9V12H7V9H4V7H7Z" />
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 281 B |
|
|
@ -1,3 +0,0 @@
|
|||
<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.6458 5.73475L8 1L6.3542 5.73475L1.34261 5.83688L5.33704 8.86525L3.8855 13.6631L8 10.8L12.1145 13.6631L10.663 8.86525L14.6574 5.83688L9.6458 5.73475ZM8.70534 7.02918L8 5L7.29466 7.02918L5.14683 7.07295L6.85873 8.37082L6.23664 10.4271L8 9.2L9.76336 10.4271L9.14127 8.37082L10.8532 7.07295L8.70534 7.02918Z" />
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 452 B |