1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-02 11:21:42 +00:00

Merge from origin/emacs-30

2ba6387d1d ; Fix inaccuracy in ELisp Reference manual
8ac6a17880 ; * etc/PROBLEMS: Mention problems with XPM support in GD...
624322d5f6 Add missing fontification matches for elixir-ts-mode
5bafb11b40 ; Fix copyright year
186ea40732 Don't start docstrings with "This function" or similar
cb8ce2e68b Enable indent-tabs-mode in obj-c-mode
54f3513709 Fix comment indent in 'lua-ts-mode' and old grammar
8b95549e90 * admin/nt/dist-build/build-dep-zips.py: (deps src) handl...
8064b2a679 Document undocumented completion commands
c29b798537 ; etc/w32-feature.el (harfbuzz): improve test
0e43e35f96 * admin/nt/dist-build/emacs.nsi: (Uninstall) delete only ...
b83cd8a8fb ; * etc/tutorials/TUTORIAL.ko: Fix the beginning.
41caccc488 ; * etc/publicsuffix.txt: Update from upstream.
e6fb18406e ; Fix refcards
14e791f9ba ; Update acknowledgments for Emacs 30
861b7864fc ; Fix node name in emacs-lisp-intro.texi
77243ba5be ; Update version tags of defcustoms
fe2ac33bae ;* doc/misc/efaq.texi (New in Emacs 30): Mention 'trusted...
8fb884f0dc ; * etc/NEWS: Fix wording.
e281355a5e Improve D-Bus and Tramp manual

# Conflicts:
#	doc/emacs/emacs.texi
#	etc/NEWS
#	lisp/erc/erc-log.el
#	lisp/eshell/esh-mode.el
#	lisp/which-key.el
This commit is contained in:
Eli Zaretskii 2024-12-28 08:30:31 -05:00
commit af3bbc8360
58 changed files with 2092 additions and 1876 deletions

View File

@ -33,6 +33,7 @@
(objc-mode . ((c-file-style . "GNU")
(electric-quote-comment . nil)
(electric-quote-string . nil)
(indent-tabs-mode . t)
(mode . bug-reference-prog)))
(c-ts-mode . ((c-ts-mode-indent-style . gnu))) ;Inherits `c-mode' settings.
(log-edit-mode . ((log-edit-font-lock-gnu-style . t)

View File

@ -20,41 +20,56 @@
import os
import shutil
import re
import functools
import operator
import subprocess
from subprocess import check_output
## Constants
EMACS_MAJOR_VERSION="28"
EMACS_MAJOR_VERSION= os.getenv('EMACS_MAJOR_VERSION') or "30"
# This list derives from the features we want Emacs to compile with.
# Base URI for the package sources mapped in PKG_REQ
SRC_REPO="https://repo.msys2.org/mingw/sources"
# Map items in `dynamic-library-alist' to source pakages
PKG_REQ='''mingw-w64-x86_64-giflib
mingw-w64-x86_64-gnutls
mingw-w64-x86_64-harfbuzz
mingw-w64-x86_64-jansson
mingw-w64-x86_64-lcms2
mingw-w64-x86_64-libjpeg-turbo
mingw-w64-x86_64-libpng
mingw-w64-x86_64-librsvg
mingw-w64-x86_64-libwebp
mingw-w64-x86_64-libtiff
mingw-w64-x86_64-libxml2
mingw-w64-x86_64-xpm-nox'''.split()
mingw-w64-x86_64-gmp
mingw-w64-x86_64-xpm-nox
mingw-w64-x86_64-tree-sitter
mingw-w64-x86_64-sqlite3'''.split()
DLL_REQ='''libgif
libgnutls
libharfbuzz
liblcms2
libturbojpeg
libpng
librsvg
libtiff
libxml
libXpm'''.split()
# Emacs style path to dependancy DLLs on build system
DLL_SRC="c:/msys64/mingw64/bin"
# libraries we never include
DLL_SKIP=["libgccjit-0.dll"]
# Report first existing file for entries in dynamic-library-alist
# ELISP_PROG="""
# (message "%s" (mapconcat 'identity (remove nil
# (mapcar (lambda(lib)
# (seq-find
# (lambda(file)
# (file-exists-p
# (file-name-concat "{}"
# file)))
# (cdr lib)))
# dynamic-library-alist)
# ) "\\n"))
# """.format(DLL_SRC)
## Options
DRY_RUN=False
# NEW_EMACS="bin/emacs.exe"
def check_output_maybe(*args,**kwargs):
if(DRY_RUN):
@ -62,31 +77,76 @@ def check_output_maybe(*args,**kwargs):
else:
return check_output(*args,**kwargs)
####################
## DLL Capture
# entry point
def gather_deps():
os.mkdir("x86_64")
os.chdir("x86_64")
for dep in full_dll_dependency():
check_output_maybe(["cp /mingw64/bin/{}*.dll .".format(dep)],
shell=True)
#full=full_dll_dependency(init_deps())
#filtered=filter(lambda x: x not in DLL_SKIP, full)
#print("full:",full.len(), " filtered:",filtered.len())
#exit
print("Zipping")
check_output_maybe("zip -9r ../emacs-{}-{}deps.zip *"
.format(EMACS_MAJOR_VERSION, DATE),
shell=True)
for dep in full_dll_dependency(init_deps()):
if dep not in DLL_SKIP:
if args.l != True:
print("Adding dep", dep)
check_output_maybe(["cp /mingw64/bin/{} .".format(dep)], shell=True)
else:
if args.l != True:
print("Skipping dep", dep)
zipfile="../emacs-{}-{}deps.zip".format(EMACS_MAJOR_VERSION, DATE)
tmpfile="{}.tmp".format(zipfile)
print("Zipping deps in", os.getcwd(), "as", tmpfile)
check_output_maybe("zip -9vr {} *.dll".format(tmpfile), shell=True)
if os.path.isfile(zipfile):
os.remove(zipfile)
os.rename(tmpfile, zipfile)
print("Deps updated in", os.getcwd(), "as", zipfile)
os.chdir("../")
## Return all Emacs dependencies
def full_dll_dependency():
deps = [dll_dependency(dep) for dep in DLL_REQ]
return set(sum(deps, []) + DLL_REQ)
# Return dependancies listed in Emacs
def init_deps():
return '''libXpm-nox4.dll
libpng16-16.dll
libjpeg-8.dll
libgif-7.dll
librsvg-2-2.dll
libwebp-7.dll
libwebpdemux-2.dll
libsqlite3-0.dll
libgdk_pixbuf-2.0-0.dll
libglib-2.0-0.dll
libgio-2.0-0.dll
libgobject-2.0-0.dll
libgnutls-30.dll
libxml2-2.dll
zlib1.dll
liblcms2-2.dll
libgccjit-0.dll
libtree-sitter.dll'''.split()
# job_args=[NEW_EMACS, "--batch", "--eval", ELISP_PROG]
# #print("args: ", job_args)
# return subprocess.check_output(job_args, stderr=subprocess.STDOUT
# ).decode('utf-8').splitlines()
## Dependencies for a given DLL
# Return all second order dependencies
def full_dll_dependency(dlls):
deps = [dll_dependency(dep) for dep in dlls]
return set(sum(deps, []) + dlls)
#xs = filter(lambda x: x.attribute == value, xs)
# Dependencies for a given DLL
def dll_dependency(dll):
output = check_output(["/mingw64/bin/ntldd", "--recursive",
"/mingw64/bin/{}*.dll".format(dll)]).decode("utf-8")
"/mingw64/bin/{}".format(dll)]
).decode("utf-8")
## munge output
return ntldd_munge(output)
@ -101,9 +161,8 @@ def ntldd_munge(out):
## if it's the former, we want it, if its the later we don't
splt = dep.split()
if len(splt) > 2 and "msys64" in splt[2]:
print("Adding dep", splt[0])
rtn.append(splt[0].split(".")[0])
if len(splt) > 2 and "mingw64" in splt[2]:
rtn.append(splt[0])
return rtn
@ -112,26 +171,92 @@ def ntldd_munge(out):
## Packages to fiddle with
## Source for gcc-libs is part of gcc
SKIP_SRC_PKGS=["mingw-w64-gcc-libs"]
SKIP_DEP_PKGS=frozenset(["mingw-w64-x86_64-glib2"])
MUNGE_SRC_PKGS={"mingw-w64-libwinpthread-git":"mingw-w64-winpthreads-git"}
SKIP_DEP_PKGS=["mingw-w64-glib2", "mingw-w64-ca-certificates-20211016-3"]
MUNGE_SRC_PKGS={
"mingw-w64-libwinpthread-git":"mingw-w64-winpthreads-git",
"mingw-w64-gettext-runtime":"mingw-w64-gettext"
}
MUNGE_DEP_PKGS={
"mingw-w64-x86_64-libwinpthread":"mingw-w64-x86_64-libwinpthread-git",
"mingw-w64-x86_64-libtre": "mingw-w64-x86_64-libtre-git",
}
SRC_EXT={
"mingw-w64-freetype": ".src.tar.zst",
"mingw-w64-fribidi": ".src.tar.zst",
"mingw-w64-glib2": ".src.tar.zst",
"mingw-w64-harfbuzz": ".src.tar.zst",
"mingw-w64-libunistring": ".src.tar.zst",
"mingw-w64-winpthreads-git": ".src.tar.zst",
"mingw-w64-ca-certificates": ".src.tar.zst",
"mingw-w64-libxml2": ".src.tar.zst",
"mingw-w64-ncurses": ".src.tar.zst",
"mingw-w64-openssl": ".src.tar.zst",
"mingw-w64-pango": ".src.tar.zst",
"mingw-w64-python": ".src.tar.zst",
"mingw-w64-sqlite3": ".src.tar.zst",
"mingw-w64-xpm-nox": ".src.tar.zst",
"mingw-w64-xz": ".src.tar.zst",
"mingw-w64-bzip2": ".src.tar.zst",
"mingw-w64-cairo": ".src.tar.zst",
"mingw-w64-expat": ".src.tar.zst",
"mingw-w64-fontconfig": ".src.tar.zst",
"mingw-w64-gdk-pixbuf2": ".src.tar.zst",
"mingw-w64-giflib": ".src.tar.zst",
"mingw-w64-gmp": ".src.tar.zst",
"mingw-w64-gnutls": ".src.tar.zst",
"mingw-w64-graphite2": ".src.tar.zst",
"mingw-w64-jbigkit": ".src.tar.zst",
"mingw-w64-lcms2": ".src.tar.zst",
"mingw-w64-lerc": ".src.tar.zst",
"mingw-w64-libdatrie": ".src.tar.zst",
"mingw-w64-libffi": ".src.tar.zst",
"mingw-w64-libiconv": ".src.tar.zst",
"mingw-w64-libiconv": ".src.tar.zst",
"mingw-w64-libpng": ".src.tar.zst",
"mingw-w64-librsvg": ".src.tar.zst",
"mingw-w64-libsystre": ".src.tar.zst",
"mingw-w64-libtasn": ".src.tar.zst",
"mingw-w64-libthai": ".src.tar.zst",
"mingw-w64-libtiff": ".src.tar.zst",
"mingw-w64-libtre-git": ".src.tar.zst",
"mingw-w64-libwebp": ".src.tar.zst",
"mingw-w64-mpdecimal": ".src.tar.zst",
"mingw-w64-nettle": ".src.tar.zst",
"mingw-w64-p11-kit": ".src.tar.zst",
"mingw-w64-pcre": ".src.tar.zst",
"mingw-w64-pixman": ".src.tar.zst",
"mingw-w64-python-packaging": ".src.tar.zst",
"mingw-w64-readline": ".src.tar.zst",
"mingw-w64-tcl": ".src.tar.zst",
"mingw-w64-termcap": ".src.tar.zst",
"mingw-w64-tk": ".src.tar.zst",
"mingw-w64-tree-sitter": ".src.tar.zst",
"mingw-w64-tzdata": ".src.tar.zst",
"mingw-w64-wineditline": ".src.tar.zst",
"mingw-w64-zlib": ".src.tar.zst",
"mingw-w64-zstd": ".src.tar.zst",
"mingw-w64-brotli": ".src.tar.zst",
"mingw-w64-gettext": ".src.tar.zst",
"mingw-w64-libdeflate": ".src.tar.zst",
"mingw-w64-libidn2": ".src.tar.zst",
"mingw-w64-libjpeg-turbo": ".src.tar.zst",
"mingw-w64-libtasn1": ".src.tar.zst",
"mingw-w64-pcre2": ".src.tar.zst",
}
## Currently no packages seem to require this!
ARCH_PKGS=[]
SRC_REPO="https://repo.msys2.org/mingw/sources"
def immediate_deps(pkg):
package_info = check_output(["pacman", "-Si", pkg]).decode("utf-8").split("\n")
def immediate_deps(pkgs):
package_info = check_output(["pacman", "-Si"] + pkgs).decode("utf-8").splitlines()
## Extract the "Depends On" line
depends_on = [x for x in package_info if x.startswith("Depends On")][0]
## Remove "Depends On" prefix
dependencies = depends_on.split(":")[1]
## Extract the packages listed for "Depends On:" lines.
dependencies = [line.split(":")[1].split() for line in package_info
if line.startswith("Depends On")]
## Flatten dependency lists from multiple packages into one list.
dependencies = functools.reduce(operator.iconcat, dependencies, [])
## Split into dependencies
dependencies = dependencies.strip().split(" ")
## Remove > signs TODO can we get any other punctuation here?
dependencies = [d.split(">")[0] for d in dependencies if d]
@ -147,18 +272,16 @@ def extract_deps():
print( "Extracting deps" )
# Get a list of all dependencies needed for packages mentioned above.
pkgs = set(PKG_REQ)
newdeps = pkgs
print("adding...")
while True:
subdeps = frozenset(immediate_deps(list(newdeps)))
newdeps = subdeps - SKIP_DEP_PKGS - pkgs
if not newdeps:
break
print('\n'.join(newdeps))
pkgs |= newdeps
pkgs = PKG_REQ[:]
n = 0
while n < len(pkgs):
subdeps = immediate_deps(pkgs[n])
for p in subdeps:
if not (p in pkgs or p in SKIP_DEP_PKGS):
pkgs.append(p)
n = n + 1
return list(pkgs)
return sorted(pkgs)
def download_source(tarball):
@ -206,14 +329,24 @@ def gather_source(deps):
## Switch names if necessary
pkg_name = MUNGE_SRC_PKGS.get(pkg_name,pkg_name)
tarball = "{}-{}.src.tar.gz".format(pkg_name,pkg_version)
## src archive is usually a .tar.gz
if pkg_name in SRC_EXT.keys():
src_ext = SRC_EXT[pkg_name]
else:
src_ext = ".src.tar.gz"
tarball = "{}-{}{}".format(pkg_name,pkg_version,src_ext)
download_source(tarball)
print("Zipping")
check_output_maybe("zip -9 ../emacs-{}-{}deps-mingw-w64-src.zip *"
.format(EMACS_MAJOR_VERSION,DATE),
shell=True)
srczip="../emacs-{}-{}deps-mingw-w64-src.zip".format(EMACS_MAJOR_VERSION,DATE)
tmpzip="{}.tmp".format(srczip)
print("Zipping Dsrc in", os.getcwd(), "as", tmpzip)
check_output_maybe("zip -9 {} *".format(tmpzip), shell=True)
if os.path.isfile(srczip):
os.remove(srczip)
os.rename(tmpzip, srczip)
print("Dsrc updated in", os.getcwd(), "as", srczip)
os.chdir("..")
@ -231,6 +364,9 @@ def clean():
parser = argparse.ArgumentParser()
#parser.add_argument("emacs", help="emacs executable")
parser.add_argument("-s", help="snapshot build",
action="store_true")
@ -243,19 +379,29 @@ def clean():
parser.add_argument("-d", help="dry run",
action="store_true")
parser.add_argument("-l", help="list dependencies only",
parser.add_argument("-l", help="list dependencies",
action="store_true")
parser.add_argument("-e", help="extract direct dependancies",
action="store_true")
args = parser.parse_args()
do_all=not (args.c or args.r)
#NEW_EMACS=args.emacs
DRY_RUN=args.d
if( args.e ):
print("\n".join(init_deps()))
if( args.l ):
print("List of dependencies")
print( deps )
print("List of dependencies:")
print(full_dll_dependency(init_deps()))
print("List of source packages:")
print( extract_deps() )
if( args.e or args.l ):
exit(0)
if args.s:

View File

@ -8,7 +8,10 @@ Outfile "emacs-${OUT_VERSION}-installer.exe"
SetCompressor /solid lzma
Var StartMenuFolder
Var UninstallerPath
!define UNINST_KEY \
"Software\Microsoft\Windows\CurrentVersion\Uninstall\emacs-${VERSION_BRANCH}"
!define MUI_WELCOMEPAGE_TITLE "Emacs"
!define MUI_WELCOMEPAGE_TITLE_3LINES
@ -20,16 +23,27 @@ Var StartMenuFolder
!insertmacro MUI_PAGE_WELCOME
!define MUI_LICENSEPAGE_TEXT_TOP "The GNU General Public License"
# licensing/about click-though page
!define MUI_PAGE_HEADER_TEXT "Emacs is Free Software"
!define MUI_PAGE_HEADER_SUBTEXT "A component of the GNU operating system."
!define MUI_LICENSEPAGE_TEXT_TOP "This program is free software."
!define MUI_LICENSEPAGE_TEXT_BOTTOM "You can redistribute this program 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 (as above), or (at your option) any later version."
!define MUI_LICENSEPAGE_BUTTON "OK"
!insertmacro MUI_PAGE_LICENSE "emacs-${VERSION_BRANCH}\share\emacs\${EMACS_VERSION}\lisp\COPYING"
# user option page: installation path
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
# user option page: start menu shortcut
!insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder
# user option confirm/begin install
!insertmacro MUI_PAGE_INSTFILES
# uninstaller confirmation/options (no options)
!insertmacro MUI_UNPAGE_CONFIRM
# uninstaller begin
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"
@ -39,23 +53,35 @@ function .onInit
StrCpy $INSTDIR "$PROGRAMFILES64\Emacs"
functionend
# main section logic, run after confirming installation
Section
SetOutPath $INSTDIR
# insisting on installing shortcuts for "all users"
# might ensure uninstall can remove shortcuts we created
# SetShellVarContext all
# extract program files
SetOutPath $INSTDIR
File /r emacs-${VERSION_BRANCH}
# define uninstaller name
WriteUninstaller $INSTDIR\Uninstall.exe
StrCpy $UninstallerPath "$INSTDIR\Uninstall-${VERSION_BRANCH}.exe"
# create uninstaller
WriteUninstaller "$UninstallerPath"
# add registry key to enable uninstall from control panel
WriteRegStr HKLM "${UNINST_KEY}" "DisplayName" "GNU Emacs ${VERSION_BRANCH}"
WriteRegStr HKLM "${UNINST_KEY}" "UninstallString" "$\"$UninstallerPath$\""
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
;Create shortcuts
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
CreateShortcut "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" "$INSTDIR\Uninstall.exe"
CreateShortcut "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" \
"$UninstallerPath"
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Emacs.lnk" \
"$INSTDIR\emacs-${VERSION_BRANCH}\bin\runemacs.exe"
!insertmacro MUI_STARTMENU_WRITE_END
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Emacs.lnk" "$INSTDIR\emacs-${VERSION_BRANCH}\bin\runemacs.exe"
SectionEnd
@ -63,15 +89,50 @@ SectionEnd
# the section will always be named "Uninstall"
Section "Uninstall"
# Always delete uninstaller first
Delete "$INSTDIR\Uninstall.exe"
# remove All Users shortcuts only
# SetShellVarContext all
# now delete installed directory
RMDir /r "$INSTDIR"
RMDir "$INSTDIR"
# retreive/recalculate uninstaller location
StrCpy $UninstallerPath "$INSTDIR\Uninstall-${VERSION_BRANCH}.exe"
# remove registry key
DeleteRegKey HKLM "${UNINST_KEY}"
# delete uninstaller
Delete "$INSTDIR\Uninstall-${VERSION_BRANCH}.exe"
# retreive/reclculate startmenu shortcuts location
!insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder
StrCpy $StartMenuFolder "$SMPROGRAMS\$StartMenuFolder"
# remove Start Menu Program shortcuts
Delete "$StartMenuFolder\Emacs.lnk"
Delete "$StartMenuFolder\Uninstall.lnk"
# remove empty startmenu parents up to $SMPROGRAMS
startMenuDeleteLoop:
ClearErrors
RMDir $StartMenuFolder
GetFullPathName $StartMenuFolder "$StartMenuFolder\.."
IfErrors startMenuDeleteLoopDone
StrCmp $StartMenuFolder $SMPROGRAMS startMenuDeleteLoopDone startMenuDeleteLoop
# we're basically using GOTO, above, so we should get here..
startMenuDeleteLoopDone:
# next we remove stuff from program-files/instalation path
# start with recursive delete of the Emacs we installed
RMDir /r "$INSTDIR\emacs-${VERSION_BRANCH}"
# now walk parents of installation directory, deleting if empty
instDirDeleteLoop:
ClearErrors
RMDir $INSTDIR
GetFullPathName $INSTDIR "$INSTDIR\.."
IfErrors instDirDeleteLoopDone
StrCmp $INSTDIR $PROGRAMFILES64 instDirDeleteLoopDone instDirDeleteLoop
# final clean-up (after removing from startmenu and progfiles)
instDirDeleteLoopDone:
Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk"
RMDir "$SMPROGRAMS\$StartMenuFolder"
SectionEnd

View File

@ -93,7 +93,19 @@ documentation (or decide no updates are necessary) for those that aren't.
** For a major release, add a "New in Emacs XX" section to faq.texi.
** cusver-check from admin.el can help find new defcustoms missing
:version tags.
:version tags. This asks for new and old Lisp directories; use the one
in the current release branch as New and the one from the last released
Emacs version as Old.
Note that this doesn't (yet) know about :package-version and
'customize-package-emacs-version-alist', so it could produce false
positives for packages that use :package-version. Make sure the files
with defcustoms that use :package-version have the appropriate
add-to-list that determines the correspondence between package versions
and Emacs versions. Any changes you make in :version etc. should be
tested by running "M-x customize-changed" after regenerating cus-load.el
(run "make custom-deps" in the lisp/ directory) and loaddefs.el (run
"make autoloads-force").
** Manuals
Check for node names using problematic characters:
@ -102,7 +114,13 @@ Sadly makeinfo does not warn about such characters.
Check for major new features added since the last release (e.g. new
lisp files), and add the relevant authors to the Acknowledgments in
doc/emacs/ack.texi and emacs.texi.
doc/emacs/ack.texi and emacs.texi. To find new files, you could run a
command such as this:
$ diff -rq emacs-NN.MM emacs-XX.YY | grep "^Only in emacs-XX"
where NN.MM is the previous Emacs version, and XX.YY is the new version.
This assumes you have the source trees of both versions available.
For major releases, rewrite the "Antinews" appendix of the User Manual
(doc/emacs/anti.texi) to describe features lost by downgrading to the

View File

@ -119,7 +119,8 @@ NeXTstep port of Emacs.
@item
Stephen Berman wrote @file{todo-mode.el} (based on the original version
by Oliver Seidel), a package for maintaining @file{TODO} list files.
by Oliver Seidel), a package for maintaining @file{TODO} list files. He
also wrote @file{visual-wrap.el} together with Stefan Monnier.
@item
Anna M. Bigatti wrote @file{cal-html.el}, which produces HTML calendars.
@ -326,6 +327,10 @@ folders have mail waiting in them.
@item
Torbj@"orn Einarsson wrote @file{f90.el}, a mode for Fortran 90 files.
@item
Helmut Eller wrote @file{peg.el}, a Parsing Expression Grammars package
for Emacs.
@item
Tsugutomo Enami co-wrote the support for international character sets.
@ -354,6 +359,10 @@ Oscar Figueiredo wrote EUDC, the Emacs Unified Directory Client, which
is an interface to directory servers via LDAP, CCSO PH/QI, or BBDB; and
@file{ldap.el}, the LDAP client interface.
@item
Jared Finder implemented window tool bars in @file{window-tool-bar.el}
and enhanced xterm mouse support in @file{xt-mouse.el}.
@item
Fred Fish wrote the support for dumping COFF executable files.
@ -459,6 +468,10 @@ as well as helping to maintain Org mode (q.v.).
Henry Guillaume wrote @file{find-file.el}, a package to visit files
related to the currently visited file.
@item
Dmitry Gutov wrote @file{etags-regen.el}, a package for automatic
(re)generation of @file{TAGS} files.
@item
Doug Gwyn wrote the portable @code{alloca} implementation.
@ -628,6 +641,11 @@ editing the same file. He also wrote the initial version of
@file{uniquify.el}, a facility to make buffer names unique by adding
parts of the file's name to the buffer name.
@item
Wilhelm H Kirschbaum wrote @file{elixir-ts-mode.el} and
@file{heex-ts-mode.el}, Emacs major modes for editing Elixir and Heex
files.
@item
Peter Kleiweg wrote @file{ps-mode.el}, a mode for editing PostScript
files and running a PostScript interpreter interactively from within
@ -880,12 +898,18 @@ indentation engine; and @file{pcase.el}, implementing ML-style pattern
matching. In Emacs 24, he integrated the lexical binding code,
cleaned up the CL namespace (making it acceptable to use CL
functions at runtime), added generalized variables to core Emacs
Lisp, and implemented a new lightweight advice mechanism.
Lisp, and implemented a new lightweight advice mechanism. He also wrote
@file{track-changes.el}, a library which accumulates changes in a buffer
until some client Lisp program wants to consume those changes.
@item
Morioka Tomohiko wrote several packages for MIME support in Gnus and
elsewhere.
@item
John Muhl wrote @file{lua-ts-mode.el}, an Emacs mode for editing Lua
programs.
@item
Sen Nagata wrote @file{crm.el}, a package for reading multiple strings
with completion, and @file{rfc2368.el}, support for @code{mailto:}
@ -1033,6 +1057,10 @@ He also expanded and redesigned the @code{etags} program.
Michael D. Prange and Steven A. Wood wrote @file{fortran.el}, a mode
for editing Fortran code.
@item
Vincenzo Pupillo wrote @code{php-ts-mode.el}, a major mode for editing
PHP programs.
@item
Ashwin Ram wrote @file{refer.el}, commands to look up references in
bibliography files by keyword.
@ -1161,6 +1189,10 @@ wrote parts of the IRC client ERC (q.v.).
@item
Randal Schwartz wrote @file{pp.el}, a pretty-printer for lisp objects.
@item
Daniel Semyonov write @file{nnatom.el}, the Atom backend for Gnus, and
@file{nnfeed.el}, a generic feed backend for Gnus.
@item
Manuel Serrano wrote the Flyspell package, which does spell checking
as you type.
@ -1286,6 +1318,10 @@ which completes the partial word before point, based on other nearby
words for which it is a prefix. He also wrote the original dumping
support.
@item
Theodor Thornhill wrote @file{html-ts-mode.el}, a major mode based on
the tree-sitter library for editing HTML files.
@item
Toru Tomabechi contributed to Tibetan support.
@ -1419,6 +1455,12 @@ merging two versions of a file.
Francis J. Wright wrote @file{woman.el}, a package for browsing
manual pages without the @code{man} command.
@item
Po Lu ported Emacs to Android, and wrote
@code{pixel-scroll-precision-mode}. He also added XInput2 support to
Emacs, implemented touchpad commands in @file{touch-screen.el}, and
extended drag-n-drop support.
@item
Masatake Yamato wrote @file{ld-script.el}, an editing mode for GNU
linker scripts, and contributed subword handling and style

View File

@ -1465,10 +1465,10 @@ Dershowitz, Dave Detlefs, Matthieu Devin, Christophe de Dinechin, Eri
Ding, Jan Dj@"arv, Lawrence R. Dodd, Carsten Dominik, Scott Draves,
Benjamin Drieu, Viktor Dukhovni, Jacques Duthen, Dmitry Dzhus, John
Eaton, Rolf Ebert, Carl Edman, David Edmondson, Paul Eggert, Stephen
Eglen, Christian Egli, Torbj@"orn Einarsson, Tsugutomo Enami, David
Engster, Hans Henrik Eriksen, Michael Ernst, Ata Etemadi, Frederick
Farnbach, Oscar Figueiredo, Fred Fish, Steve Fisk, Thomas Fitzsimmons, Karl Fogel, Gary
Foster, Eric S. Fraga, Romain Francoise, Noah Friedman, Andreas
Eglen, Christian Egli, Torbj@"orn Einarsson, Helmut Eller, Tsugutomo
Enami, David Engster, Hans Henrik Eriksen, Michael Ernst, Ata Etemadi, Frederick
Farnbach, Oscar Figueiredo, Jared Finder, Fred Fish, Steve Fisk, Thomas Fitzsimmons,
Karl Fogel, Gary Foster, Eric S. Fraga, Romain Francoise, Noah Friedman, Andreas
Fuchs, Shigeru Fukaya, Xue Fuqiao, Hallvard Furuseth, Keith Gabryelski, Peter S.
Galbraith, Kevin Gallagher, Fabi@'an E. Gallina, Kevin Gallo, Juan Le@'en Lahoz Garc@'ia,
Howard Gayle, Daniel German, Stephen Gildea, Julien Gilles, David
@ -1486,8 +1486,9 @@ Thorsten Jolitz, Michael K. Johnson, Kyle Jones, Terry Jones, Simon
Josefsson, Alexandre Julliard, Arne J@o{}rgensen, Tomoji Kagatani,
Brewster Kahle, Tokuya Kameshima, Lute Kamstra, Stefan Kangas, Ivan Kanis, David
Kastrup, David Kaufman, Henry Kautz, Taichi Kawabata, Taro Kawagishi,
Howard Kaye, Michael Kifer, Richard King, Peter Kleiweg, Karel
Kl@'i@v{c}, Shuhei Kobayashi, Pavel Kobyakov, Larry K. Kolodney, David
Howard Kaye, Michael Kifer, Richard King, Wilhelm Kirschbaum, Peter Kleiweg,
Karel Kl@'i@v{c}, Shuhei Kobayashi, Pavel Kobyakov, Larry K. Kolodney, David
Howard Kaye, Michael Kifer, Richard King, Peter Kleiweg,
M. Koppelman, Koseki Yoshinori, Robert Krawitz, Sebastian Kremer,
Ryszard Kubiak, Tak Kunihiro, Igor Kuzmin, David K@aa{}gedal, Daniel LaLiberte, Karl
Landstrom, Mario Lang, Aaron Larson, James R. Larus, Gemini Lasswell, Vinicius Jose
@ -1502,7 +1503,7 @@ Yukihiro Matsumoto, Tomohiro Matsuyama, David Maus, Thomas May, Will Mengarini,
Megginson, Jimmy Aguilar Mena, Stefan Merten, Ben A. Mesander, Wayne Mesard, Brad
Miller, Lawrence Mitchell, Richard Mlynarik, Gerd M@"ollmann, Dani Moncayo, Stefan
Monnier, Keith Moore, Jan Moringen, Morioka Tomohiko, Glenn Morris,
Don Morrison, Diane Murray, Riccardo Murri, Sen Nagata, Erik Naggum,
Don Morrison, John Muhl, Diane Murray, Riccardo Murri, Sen Nagata, Erik Naggum,
Gergely Nagy, Nobuyoshi Nakada, Thomas Neumann, Mike Newton, Thien-Thi Nguyen,
Jurgen Nickelsen, Dan Nicolaescu, Hrvoje Nik@v{s}i@'c, Jeff Norden,
Andrew Norman, Theresa O'Connor, Kentaro Ohkouchi, Christian Ohler,
@ -1512,8 +1513,8 @@ Jeff Peck, Damon Anton Permezel, Tom Perrine, William M. Perry, Per
Persson, Jens Petersen, Nicolas Petton, Daniel Pfeiffer, Justus Piater, Richard L.
Pieri, Fred Pierresteguy, Fran@,{c}ois Pinard, Daniel Pittman, Christian
Plaunt, Alexander Pohoyda, David Ponce, Noam Postavsky, Francesco A. Potort@`i,
Michael D. Prange, Mukesh Prasad, Steve Purcell, Ken Raeburn, Marko Rahamaa, Ashwin
Ram, Eric S. Raymond, Paul Reilly, Edward M. Reingold, David
Michael D. Prange, Mukesh Prasad, Steve Purcell, Vincenzo Pupillo, Ken Raeburn,
Marko Rahamaa, Ashwin Ram, Eric S. Raymond, Paul Reilly, Edward M. Reingold, David
Reitter, Alex Rezinsky, Rob Riepel, Lara Rios, Adrian Robert, Nick
Roberts, Roland B. Roberts, John Robinson, Denis B. Roegel, Danny
Roozendaal, Sebastian Rose, William Rosenblatt, Markus Rost, Guillermo
@ -1523,9 +1524,9 @@ Timo Savola, Jorgen Sch@"afer, Holger Schauer, William Schelter, Ralph
Schleicher, Gregor Schmid, Michael Schmidt, Ronald S. Schnell,
Philippe Schnoebelen, Jan Schormann, Alex Schroeder, Stefan Schoef,
Rainer Sch@"opf, Raymond Scholz, Eric Schulte, Andreas Schwab, Randal
Schwartz, Oliver Seidel, Manuel Serrano, Paul Sexton, Hovav Shacham,
Stanislav Shalunov, Marc Shapiro, Richard Sharman, Olin Shivers, Tibor
@v{S}imko, Espen Skoglund, Rick Sladkey, Lynn Slater, Chris Smith,
Schwartz, Oliver Seidel, Daniel Semyonov, Manuel Serrano, Paul Sexton,
Hovav Shacham, Stanislav Shalunov, Marc Shapiro, Richard Sharman, Olin
Shivers, Tibor @v{S}imko, Espen Skoglund, Rick Sladkey, Lynn Slater, Chris Smith,
David Smith, JD Smith, Paul D. Smith, Wilson Snyder, William Sommerfeld, Simon
South, Andre Spiegel, Michael Staats, Thomas Steffen, Ulf Stegemann,
Reiner Steib, Sam Steingold, Ake Stenhoff, Philipp Stephani, Peter Stephenson, Ken
@ -1533,15 +1534,15 @@ Stevens, Andy Stewart, Jonathan Stigelman, Martin Stjernholm, Kim F.
Storm, Steve Strassmann, Christopher Suckling, Olaf Sylvester, Naoto
Takahashi, Steven Tamm, Jan Tatarik, Jo@~ao T@'avora, Luc Teirlinck,
Jean-Philippe Theberge, Jens T.@: Berger Thielemann, Spencer Thomas,
Jim Thompson, Toru Tomabechi, David O'Toole, Markus Triska, Tom Tromey, Eli
Tziperman, Daiki Ueno, Masanobu Umeda, Rajesh Vaidheeswarran, Neil
Jim Thompson, Theodor Thornhill, Toru Tomabechi, David O'Toole, Markus Triska,
Tom Tromey, Eli Tziperman, Daiki Ueno, Masanobu Umeda, Rajesh Vaidheeswarran, Neil
W. Van Dyke, Didier Verna, Joakim Verona, Ulrik Vieth, Geoffrey
Voelker, Johan Vromans, Inge Wallin, John Paul Wallington, Colin
Walters, Barry Warsaw, Christoph Wedler, Ilja Weis, Zhang Weize,
Morten Welinder, Joseph Brian Wells, Rodney Whitby, John Wiegley,
Sascha Wilde, Ed Wilkinson, Mike Williams, Roland Winkler, Bill
Wohler, Steven A. Wood, Dale R. Worley, Francis J. Wright, Felix
S. T. Wu, Tom Wurgler, Yamamoto Mitsuharu, Katsumi Yamaoka,
S. T. Wu, Tom Wurgler, Yamamoto Mitsuharu, Po Lu, Katsumi Yamaoka,
Masatake Yamato, Jonathan Yavner, Ryan Yeske, Ilya Zakharevich, Milan
Zamazal, Victor Zandy, Eli Zaretskii, Jamie Zawinski, Andrew Zhilin,
Shenghuo Zhu, Piotr Zieli@'nski, Ian T. Zimmermann, Reto Zimmermann,

View File

@ -342,18 +342,44 @@ when completion is allowed.
@table @kbd
@item @key{TAB}
Complete the text in the minibuffer as much as possible; if unable to
complete, display a list of possible completions
(@code{minibuffer-complete}).
complete, display a list of possible completions.
@item @key{SPC}
Complete up to one word from the minibuffer text before point
(@code{minibuffer-complete-word}). This command is not available for
arguments that often include spaces, such as file names.
Complete up to one word from the minibuffer text before point.
@item C-x @key{UP}
Complete the text in the minibuffer using minibuffer history.
@item C-x @key{DOWN}
Complete the text in the minibuffer using minibuffer defaults.
@item @key{RET}
Submit the text in the minibuffer as the argument, possibly completing
first (@code{minibuffer-complete-and-exit}). @xref{Completion Exit}.
first. @xref{Completion Exit}.
@item ?
Display a list of completions and a few useful key bindings
(@code{minibuffer-completion-help}).
@item M-@key{DOWN}
@itemx M-@key{UP}
Navigate through list of completions.
@item M-v
@itemx M-g M-c
@itemx @key{PageUp}
@itemx @key{prior}
While in the minibuffer, select the window showing the completion list.
@item @key{RET}
In the completions buffer, choose the completion at point.
@item mouse-1
@itemx mouse-2
In the completions buffer, choose the completion at mouse click.
@item @key{TAB}
@itemx @key{RIGHT}
@itemx @key{n}
In the completions buffer, move to the following completion candidate.
@item @key{S-TAB}
@itemx @key{LEFT}
@itemx @key{p}
In the completions buffer, move to the previous completion candidate.
@item q
Quit the completions window and switch to the minibuffer window.
@item z
Kill the completions buffer and delete the window showing it.
@end table
@kindex TAB @r{(completion)}
@ -371,7 +397,8 @@ are chosen.
@samp{auto-f} in the minibuffer and type @key{SPC}, it finds that the
completion is @samp{auto-fill-mode}, but it only inserts @samp{ill-},
giving @samp{auto-fill-}. Another @key{SPC} at this point completes
all the way to @samp{auto-fill-mode}.
all the way to @samp{auto-fill-mode}. This command is not available for
arguments that often include spaces, such as file names.
@kindex ? @r{(completion)}
@cindex completion list
@ -382,7 +409,6 @@ can display the same completion list and help with @kbd{?}
(@code{minibuffer-completion-help}). The following commands can be used
with the completion list:
@table @kbd
@vindex minibuffer-completion-auto-choose
@kindex M-DOWN
@kindex M-UP
@ -390,12 +416,10 @@ with the completion list:
@findex minibuffer-next-completion
@findex minibuffer-previous-completion
@findex minibuffer-choose-completion
@item M-@key{DOWN}
@itemx M-@key{UP}
While in the minibuffer or in the completion list buffer, @kbd{M-@key{DOWN}}
(@code{minibuffer-next-completion} and @kbd{M-@key{UP}}
(@code{minibuffer-previous-completion}) navigate through the
completions and displayed in the completions buffer. When
completions displayed in the completions buffer. When
@code{minibuffer-completion-auto-choose} is non-@code{nil} (which is
the default), using these commands also inserts the current completion
candidate into the minibuffer. If
@ -407,9 +431,6 @@ M-@key{RET}} inserts the currently active candidate without exiting
the minibuffer.
@findex switch-to-completions
@item M-v
@itemx @key{PageUp}
@itemx @key{prior}
Typing @kbd{M-v}, while in the minibuffer, selects the window showing
the completion list (@code{switch-to-completions}). This paves the
way for using the commands below. @key{PageUp}, @key{prior} and
@ -417,39 +438,38 @@ way for using the commands below. @key{PageUp}, @key{prior} and
ways (@pxref{Windows}).
@findex choose-completion
@item @key{RET}
@itemx mouse-1
@itemx mouse-2
While in the completion list buffer, this chooses the completion at
point (@code{choose-completion}). With a prefix argument, @kbd{C-u
@key{RET}} inserts the completion at point into the minibuffer, but
doesn't exit the minibuffer---thus, you can change your mind and
choose another candidate.
While in the completion list buffer, @kbd{@key{RET}} chooses the completion
candidate at point (@code{choose-completion}) and @kbd{mouse-1} and
@kbd{mouse-2} choose the completion at mouse click. With a prefix
argument, @kbd{C-u @key{RET}} inserts the completion at point into the
minibuffer, but doesn't exit the minibuffer---thus, you can change your
mind and choose another candidate.
@findex next-completion
@item @key{TAB}
@item @key{RIGHT}
@item @key{n}
While in the completion list buffer, these keys move point to the
following completion alternative (@code{next-completion}).
While in the completion list buffer, you can use @kbd{@key{TAB}},
@kbd{@key{RIGHT}}, or @kbd{n} to move point to the following completion
candidate (@code{next-completion}). You can also use @kbd{@key{S-TAB}},
@kbd{@key{LEFT}}, and @kbd{p} to move point to the previous completion
alternative (@code{previous-completion}).
@findex previous-completion
@item @key{S-TAB}
@item @key{LEFT}
@item @key{p}
While in the completion list buffer, these keys move point to the
previous completion alternative (@code{previous-completion}).
@findex minibuffer-complete-history
@findex minibuffer-complete-defaults
@kindex C-x UP @r{(completion)}
@kindex C-x DOWN @r{(completion)}
You can also complete using the history of minibuffer inputs for the
command which prompted you. @kbd{C-x @key{UP}}
(@code{minibuffer-complete-history}) works like @kbd{@key{TAB}}, but
completes using minibuffer history instead of the usual completion
candidates. A similar command @kbd{C-x @key{DOWN}}
(@code{minibuffer-complete-defaults}) completes using the default input
items provided by the prompting command.
@findex quit-window
@item @kbd{q}
While in the completion list buffer, this quits the window showing it
and selects the window showing the minibuffer (@code{quit-window}).
@findex kill-current-buffer
@item @kbd{z}
While in the completion list buffer, kill it and delete the window
showing it (@code{kill-current-buffer}).
@end table
Finally, @kbd{q} quits the window showing it and selects the window
showing the minibuffer (@code{quit-window}), and @kbd{z} kills the
completion buffer and delete the window showing it
(@code{kill-current-buffer}).
@vindex minibuffer-visible-completions
If the variable @code{minibuffer-visible-completions} is customized to

View File

@ -3774,7 +3774,7 @@ elisp, The Emacs Lisp Reference Manual}.
@menu
* Lexical & Dynamic Binding Differences::
* Lexical vs. Dynamic Binding Example::
* Lexical vs Dynamic Binding Example::
@end menu
@node Lexical & Dynamic Binding Differences
@ -3811,7 +3811,7 @@ on the top of the stack, and then executes the @code{let} body. Once
the @code{let} body finishes, it takes that binding off of the stack,
revealing the one it had (if any) before the @code{let} expression.
@node Lexical vs. Dynamic Binding Example
@node Lexical vs Dynamic Binding Example
@unnumberedsubsubsec Example of Lexical vs. Dynamic Binding
In some cases, both lexical and dynamic binding behave identically.
However, in other cases, they can change the meaning of your program.

View File

@ -445,7 +445,7 @@ characters which resemble the previously mentioned @acronym{ASCII}
ones, to avoid confusing people reading your code. Emacs will
highlight some non-escaped commonly confused characters such as
@samp{} to encourage this. You can also add a backslash before whitespace
characters such as space, tab, newline and formfeed. However, it is
characters such as space and tab. However, it is
cleaner to use one of the easily readable escape sequences, such as
@samp{\t} or @samp{\s}, instead of an actual whitespace character such
as a tab or a space. (If you do write backslash followed by a space,

View File

@ -75,9 +75,12 @@ another. An overview of D-Bus can be found at
@cindex overview
D-Bus is an inter-process communication mechanism for applications
residing on the same host. The communication is based on
@dfn{messages}. Data in the messages is carried in a structured way,
it is not just a byte stream.
residing on the same host. Emacs uses it when it is compiled with the
respective library, see configuration option @option{--with-dbus}. At
runtime, the form @code{(featurep 'dbusbind)} indicates D-Bus support.
D-Bus communication is based on @dfn{messages}. Data in the messages is
carried in a structured way, it is not just a byte stream.
The communication is connection oriented to two kinds of message
buses: a so called @dfn{system bus}, and a @dfn{session bus}. On a

View File

@ -942,6 +942,13 @@ Emacs has been ported to the Android operating system. See the file
@file{java/INSTALL} in the Emacs source distribution for details on how
to build it.
@item
New user option @code{trusted-contents} to allow potentially dangerous
Emacs features which could execute arbitrary Lisp code. Use this
variable to list files and directories whose contents Emacs should
trust, thus allowing those potentially dangerous features when those
files are visited.
@item
Numerous performance improvements, for example in parsing JSON, reading
data from subprocesses, handling output from Eshell and in Shell mode, X

View File

@ -1407,9 +1407,12 @@ Desktop, @uref{https://en.wikipedia.org/wiki/GVFS}. Remote files on
@acronym{GVFS} are mounted locally through @acronym{FUSE} and
@value{tramp} uses this locally mounted directory internally.
Emacs uses the D-Bus mechanism to communicate with @acronym{GVFS}@.
Emacs must have the message bus system, D-Bus integration active,
@pxref{Top, , D-Bus, dbus}.
Emacs uses the D-Bus mechanism to communicate with @acronym{GVFS}@. It
must have been compiled with D-Bus support, @pxref{Top, , D-Bus, dbus}.
@vindex tramp-gvfs-enabled
The @code{tramp-gvfs-enabled} variable, being non-@code{nil}, signals
that @value{tramp} can use @acronym{GVFS}-based methods.
@table @asis
@cindex method @option{afp}

View File

@ -201,7 +201,7 @@ see the variable 'url-request-extra-headers'.
+++
** New user option 'trusted-content' to allow potentially dangerous features.
This variable lists those files and directories whose content Emacs should
This option lists those files and directories whose content Emacs should
consider as sufficiently trusted to run any part of the code contained
therein even without any explicit user request.
For example, Flymake's backend for Emacs Lisp consults this option

View File

@ -485,6 +485,16 @@ running the just-built Emacs.
* General runtime problems
** GTK+ problems
*** Some tool-bar icons aren't displayed.
This could be caused by lack of support for XPM image format in the
installed GTK packages. Some GNU/Linux distros no longer install
support for those formats by default, so you might need to install
additional support packages. E.g., on Fedora you need to install the
'gdk-pixbuf2-modules-extra' package.
** Lisp problems
*** Changes made to .el files do not take effect.

File diff suppressed because it is too large Load Diff

View File

@ -498,7 +498,6 @@ \section{Tagy}
\metax{vyhledat reg.\ výraz v~souborech s~tagy}{M-x tags-search}
\metax{spustit nahrazování pro ony soubory}{M-x tags-query-replace}
\key{pokračovat v~prohledávání nebo nahrazování}{M-,}
\section{Příkazový interpret}

View File

@ -255,10 +255,9 @@ \section{Značky (tags)}
příkaz `{\tt etags} {\it vstupní\_soubory}' v příkazovém interpretu.
\askip
\key{M-.} najdi definici
\key{M-*} běž tam, odkud byla volána poslední \kbd{M-.}
\key{M-,} běž tam, odkud byla volána poslední \kbd{M-.}
\mkey{M-x tags-query-replace} spusť query-replace na všech souborech
zaznamenaných v tabulce značek.
\key{M-,} pokračuj v posledním hledání značky nebo query-replace
\section{Překlady}

View File

@ -499,7 +499,6 @@ \section{Tags}
\metax{regul\"aren Ausdruck in Dateien suchen}{M-x tags-search}
\metax{interakt. Ersetzen in allen Dateien}{M-x tags-query-replace}
\key{letztes Suchen oder Ersetzen fortsetzen}{M-,}
\section{Shells}

View File

@ -503,7 +503,6 @@ \section{Tags}
\metax{Rechercher dans tous les fichiers des tags}{M-x tags-search}
\metax{Remplacer dans tous les fichiers}{M-x tags-query-replace}
\key{Continuer la recherche ou le remplacement}{M-,}
\section{Shell}

View File

@ -251,11 +251,9 @@ \section{Marqueurs}
tel fichier, tapez `{\tt etags} {\it fichier\_entr\'ee}' \`a l'invite du shell.
\askip
\key{M-.} trouve une d\'efinition
\key{M-*} revient o\`u \kbd{M-.} a \'et\'e appel\'e pour la derni\`ere fois
\key{M-,} revient o\`u \kbd{M-.} a \'et\'e appel\'e pour la derni\`ere fois
\mkey{M-x tags-query-replace} lance query-replace sur tous les
fichiers enregistr\'es dans le tableau des marqueurs
\key{M-,} continue la derni\`ere recherche de marqueurs ou le dernier
query-replace
\section{Compilation}

View File

@ -701,8 +701,6 @@ \section{Tags}
we wszystkich plikach wymienionych w~TAGS}{M-x tags-search}
\metax{zamiana z zapytaniem we wszystkich\newline
plikach wymienionych w~TAGS}{M-x tags-query-replace}
\key{kontynuuj wyszukiwanie lub zamian/e z~zapytaniem
w~plikach wymienionych w~TAGS}{M-,}
%\section{Shells}
\section{Pow/loki}

View File

@ -508,7 +508,6 @@ \section{Tags}
\metax{busca por regexp em todos arquivos}{M-x tags-search}
\metax{busca e subst. em todos arquivos}{M-x tags-query-replace}
\key{continua a {\'u}ltima busca ou busca e substitui{\c{c}}{\~a}o}{M-,}
\section{Shells}

View File

@ -515,7 +515,6 @@ \section{Tags}
\metax{regexp search on all files in tags table}{M-x tags-search}
\metax{run query-replace on all the files}{M-x tags-query-replace}
\key{continue last tags search or query-replace}{M-,}
\section{Shells}

View File

@ -344,7 +344,6 @@ \section{Теги}
поиск по шаблону по всей таблице тегов & \kbd{M-x tags-search} \\
выполнить query-replace над всеми файлами & \kbd{M-x tags-query-replace} \\
продолжить поиск или поиск-замену тега & \kbd{M-,} \\
\end{tabular}
\section{Командные процессоры}

View File

@ -498,7 +498,6 @@ \section{Tagy}
\metax{vyhľadať reg.\ výraz v~súboroch s~tagmi}{M-x tags-search}
\metax{spustiť nahradzovanie pre dotyčné súbory}{M-x tags-query-replace}
\key{pokračovať v~prehľadávaní alebo nahradzovaní}{M-,}
\section{Príkazový interprét}

View File

@ -258,10 +258,9 @@ \section{Značky (tags)}
príkaz `{\tt etags} {\it vstupné\_súbory}' v príkazovom interprétereri.
\askip
\key{M-.} nájdi definícu
\key{M-*} choď tam, odkiaľ bola volaná posledná \kbd{M-.}
\key{M-,} choď tam, odkiaľ bola volaná posledná \kbd{M-.}
\mkey{M-x tags-query-replace} spusti query-replace na všetkých súboroch
zaznamenaných v tabuľke značiek.
\key{M-,} pokračuj v poslednom hľadaní značky alebo query-replace
\section{Preklady}

View File

@ -243,10 +243,9 @@ \section{Tags}
`{\tt etags} {\it input\_files}' as a shell command.
\askip
\key{M-.} find a definition
\key{M-*} pop back to where \kbd{M-.} was last invoked
\key{M-,} pop back to where \kbd{M-.} was last invoked
\mkey{M-x tags-query-replace} run query-replace on all files
recorded in tags table
\key{M-,} continue last tags search or query-replace
\section{Compiling}

View File

@ -1,6 +1,5 @@
이맥스(Emacs) 지침서입니다.
끝에는 복사 조건이
있습니다. 지금 읽고 있는 이 글은 이맥스(Emacs) 지침서입니다.
이맥스(Emacs) 지침서입니다. 끝에는 복사 조건이 있습니다.
지금 읽고 있는 이 글은 이맥스(Emacs) 지침서입니다.
이맥스 명령들은 대개 제어쇠 (CTRL이나 CTL이라고도 표시) 혹은
META쇠 (EDIT이나 ALT라고도 표시)를 사용합니다. 이런 글쇠를 매번 다

View File

@ -46,9 +46,7 @@
(ert-deftest feature-harfbuzz ()
(should
(eq
'harfbuzz
(car (frame-parameter nil 'font-backend)))))
(eq 'harfbuzz (get 'uniscribe 'font-driver-superseded-by))))
(ert-deftest feature-gnutls ()
(should (gnutls-available-p)))

View File

@ -274,6 +274,7 @@ a list of settings in the form (VARIABLE . VALUE)."
(repeat
(choice symbol
(cons symbol integer)))))
:version "30.1"
:risky t)
(defcustom editorconfig-trim-whitespaces-mode nil
@ -281,6 +282,7 @@ a list of settings in the form (VARIABLE . VALUE)."
If set, enable that mode when `trim_trailing_whitespace` is set to true.
Otherwise, use `delete-trailing-whitespace'."
:version "30.1"
:type 'symbol)
(defvar-local editorconfig-properties-hash nil

View File

@ -571,7 +571,7 @@ If this is set to nil, never try to reconnect."
(integer :tag "Seconds")))
(defvar-local erc-server-ping-handler nil
"This variable holds the periodic ping timer.")
"The periodic server ping timer.")
;;;; Helper functions

View File

@ -360,13 +360,13 @@ The result is converted to lowercase, as IRC is case-insensitive."
erc-log-channels-directory)))))
(defun erc-generate-log-file-name-with-date (buffer &rest _ignore)
"Compute a short log file name with the current date.
"Return a short log file name with the current date.
The name of the log file is composed of BUFFER and the current date.
This function is a possible value for `erc-generate-log-file-name-function'."
(concat (buffer-name buffer) "-" (format-time-string "%Y-%m-%d") ".txt"))
(defun erc-generate-log-file-name-short (buffer &rest _ignore)
"Compute a short log file name.
"Return a short log file name.
In fact, it only uses the buffer name of the BUFFER argument, so
you can affect that using `rename-buffer' and the-like. This
function is a possible value for

View File

@ -140,7 +140,7 @@ This setting is used by `erc-track-shorten-names'."
(const :tag "Max" max)))
(defcustom erc-track-shorten-function 'erc-track-shorten-names
"This function will be used to reduce the channel names before display.
"Function used to reduce the channel names before display.
It takes one argument, CHANNEL-NAMES which is a list of strings.
It should return a list of strings of the same number of elements.
If nil instead of a function, shortening is disabled."

View File

@ -150,7 +150,8 @@ to writing a completion function."
(defcustom eshell-cmpl-remote-file-ignore nil
(eshell-cmpl--custom-variable-docstring 'pcomplete-remote-file-ignore)
:type (get 'pcomplete-remote-file-ignore 'custom-type))
:type (get 'pcomplete-remote-file-ignore 'custom-type)
:version "30.1")
(defcustom eshell-cmpl-ignore-case (eshell-under-windows-p)
(eshell-cmpl--custom-variable-docstring 'completion-ignore-case)

View File

@ -150,7 +150,7 @@ buffer using \\[end-of-buffer]."
:group 'eshell-smart)
(defcustom eshell-where-to-jump 'begin
"This variable indicates where point should jump to after a command.
"The location where point should jump to after a command.
The options are `begin', `after' or `end'."
:type '(radio (const :tag "Beginning of command" begin)
(const :tag "After command word" after)

View File

@ -171,6 +171,7 @@ These are commands with a full remote file name, such as
commands on your local host by using the \"/local:\" prefix, like
\"/local:whoami\"."
:type 'boolean
:version "30.1"
:group 'eshell-ext)
;;; Functions:

View File

@ -537,7 +537,7 @@ Putting this function on `eshell-pre-command-hook' will mimic Plan 9's
(eshell-interactive-output-filter nil string)))
(defsubst eshell-begin-on-new-line ()
"Print a newline if not at beginning of line."
"Output a newline if not at beginning of line."
(save-excursion
(goto-char eshell-last-output-end)
(or (bolp)

View File

@ -512,7 +512,7 @@ might have."
:type 'boolean)
(defcustom gnus-prompt-before-saving 'always
"This variable says how much prompting is to be done when saving articles.
"How much prompting to do when saving articles.
If it is nil, no prompting will be done, and the articles will be
saved to the default files. If this variable is `always', each and
every article that is saved will be preceded by a prompt, even when

View File

@ -64,6 +64,7 @@
(defcustom nnfeed-date-format "%F %X%p"
"Format of displayed dates (see function `format-time-string')."
:version "30.1"
:type 'string)
(nnoo-declare nnfeed)

View File

@ -236,7 +236,7 @@ See the variable `sc-cite-frame-alist' for details."
:group 'supercite-frames)
(defcustom sc-cite-region-limit t
"This variable controls automatic citation of yanked text.
"Size limit for automatic citation of yanked text.
Valid values are:
non-nil -- cite the entire region, regardless of its size

View File

@ -5039,9 +5039,9 @@ contents."
(error (minibuffer-complete-and-exit))))
(defun minibuffer-complete-history ()
"Complete the minibuffer history as far as possible.
Like `minibuffer-complete' but completes on the history items
instead of the default completion table."
"Complete as far as possible using the minibuffer history.
Like `minibuffer-complete' but completes using the history of minibuffer
inputs for the prompting command, instead of the default completion table."
(interactive)
(let* ((history (symbol-value minibuffer-history-variable))
(completions
@ -5062,9 +5062,9 @@ instead of the default completion table."
(cycle-sort-function . identity)))))))
(defun minibuffer-complete-defaults ()
"Complete minibuffer defaults as far as possible.
Like `minibuffer-complete' but completes on the default items
instead of the completion table."
"Complete as far as possible using the minibuffer defaults.
Like `minibuffer-complete' but completes using the default items
provided by the prompting command, instead of the completion table."
(interactive)
(when (and (not minibuffer-default-add-done)
(functionp minibuffer-default-add-function))

View File

@ -96,6 +96,7 @@ retrieval interval (or the global `newsticker-retrieval-interval`) is
recommended."
:type 'number
:set #'newsticker--set-customvar-ticker
:version "30.1"
:group 'newsticker-ticker)
(defcustom newsticker-scroll-smoothly

View File

@ -154,17 +154,16 @@ If WARN-UNENCRYPTED, query the user if the connection is unencrypted."
(dhe-kx high)
(rsa-kx high)
(cbc-cipher high))
"This variable specifies what TLS connection checks to perform.
It's an alist where the key is the name of the check, and the
value is the minimum security level the check should begin.
"Alist of TLS connection checks to perform.
The key is the name of the check, and the value is the minimum security
level the check should begin.
Each check function is called with the parameters HOST PORT
STATUS SETTINGS. HOST is the host domain, PORT is a TCP port
number, STATUS is the peer status returned by
`gnutls-peer-status', and SETTINGS is the persistent and session
settings for the host HOST. Please refer to the contents of
`nsm-settings-file' for details. If a problem is found, the check
function is required to return an error message, and nil
Each check function is called with the parameters HOST PORT STATUS
SETTINGS. HOST is the host domain, PORT is a TCP port number, STATUS is
the peer status returned by `gnutls-peer-status', and SETTINGS is the
persistent and session settings for the host HOST. Please refer to the
contents of `nsm-settings-file' for details. If a problem is found, the
check function is required to return an error message, and nil
otherwise.
See also: `nsm-check-tls-connection', `nsm-save-host-names',

View File

@ -7259,7 +7259,7 @@ that range. See `after-change-functions' for more information."
#'org-element--cache-after-change -1 t)))
(defvar org-element--cache-avoid-synchronous-headline-re-parsing nil
"This variable controls how buffer changes are handled by the cache.
"How buffer changes are handled by the cache.
By default (when this variable is nil), cache re-parses modified
headlines immediately after modification preserving all the unaffected

View File

@ -474,6 +474,7 @@ This has effect only for languages in which `c-dollar-in-ids' is
non-nil, e.g. C, C++, Objective C. It covers languages where
\"$\" is permitted in ids \"informally\", but only by some compilers."
:type 'boolean
:version "30.1"
:group 'c)
(defcustom-c-stylevar c-basic-offset 4

View File

@ -583,6 +583,7 @@ AutoSplit. If \"comment\", treat as comment, and do not look for
imenu entries."
:type '(choice (const perl-code)
(const comment))
:version "30.1"
:group 'cperl-faces)
(defcustom cperl-ps-print-face-properties

View File

@ -182,6 +182,13 @@
:prefix "eglot-"
:group 'tools)
(add-to-list 'customize-package-emacs-version-alist
'(Eglot ("1.12" . "29.1")
("1.12" . "29.2")
("1.12" . "29.3")
("1.12.29" . "29.4")
("1.17.30" . "30.1")))
(defun eglot-alternatives (alternatives)
"Compute server-choosing function for `eglot-server-programs'.
Each element of ALTERNATIVES is a string PROGRAM or a list of
@ -475,7 +482,8 @@ the LSP connection. That can be done by `eglot-reconnect'."
(choice
(const :tag "Full with original JSON" full)
(const :tag "Shortened" short)
(const :tag "Pretty-printed lisp" lisp))))))
(const :tag "Pretty-printed lisp" lisp)))))
:package-version '(Eglot . "1.17.30"))
(defcustom eglot-confirm-server-edits '((eglot-rename . nil)
(t . maybe-summary))
@ -506,7 +514,8 @@ ACTION is the default value for commands not in the alist."
(alist :tag "Per-command alist"
:key-type (choice (function :tag "Command")
(const :tag "Default" t))
:value-type (choice . ,basic-choices)))))
:value-type (choice . ,basic-choices))))
:package-version '(Eglot . "1.17.30"))
(defcustom eglot-extend-to-xref nil
"If non-nil, activate Eglot in cross-referenced non-project files."
@ -514,7 +523,8 @@ ACTION is the default value for commands not in the alist."
(defcustom eglot-prefer-plaintext nil
"If non-nil, always request plaintext responses to hover requests."
:type 'boolean)
:type 'boolean
:package-version '(Eglot . "1.17.30"))
(defcustom eglot-menu-string "eglot"
"String displayed in mode line when Eglot is active."
@ -530,7 +540,7 @@ the LSP connection. That can be done by `eglot-reconnect'."
:type '(choice (const :tag "Don't show progress" nil)
(const :tag "Show progress in *Messages*" messages)
(const :tag "Show progress in Eglot's mode line indicator" t))
:version "1.10")
:package-version '(Eglot . "1.10"))
(defcustom eglot-ignored-server-capabilities (list)
"LSP server capabilities that Eglot could use, but won't.

View File

@ -475,7 +475,8 @@
:language 'elixir
:feature 'elixir-data-type
'([(atom) (alias)] @font-lock-type-face
'((alias) @font-lock-type-face
(atom) @elixir-ts-atom
(keywords (pair key: (keyword) @elixir-ts-keyword-key))
[(keyword) (quoted_keyword)] @elixir-ts-atom
[(boolean) (nil)] @elixir-ts-atom
@ -540,6 +541,10 @@
(unary_operator operand: (identifier) @font-lock-variable-use-face)
(interpolation (identifier) @font-lock-variable-use-face)
(do_block (identifier) @font-lock-variable-use-face)
(rescue_block (identifier) @font-lock-variable-use-face)
(catch_block (identifier) @font-lock-variable-use-face)
(else_block (identifier) @font-lock-variable-use-face)
(after_block (identifier) @font-lock-variable-use-face)
(access_call target: (identifier) @font-lock-variable-use-face)
(access_call "[" key: (identifier) @font-lock-variable-use-face "]"))

View File

@ -128,6 +128,11 @@
:link '(custom-manual "(flymake) Top")
:group 'tools)
(add-to-list 'customize-package-emacs-version-alist
'(Flymake ("1.3.4" . "30.1")
("1.3.5" . "30.1")
("1.3.6" . "30.1")))
(defcustom flymake-error-bitmap '(flymake-double-exclamation-mark
compilation-error)
"Bitmap (a symbol) used in the fringe for indicating errors.

View File

@ -281,7 +281,7 @@ values of OVERRIDE."
lua-ts--multi-line-comment-start
(parent-is "comment_content")
(parent-is "string_content")
(node-is "]]"))
(or (node-is "]]") (node-is "comment_end")))
no-indent 0)
((and (n-p-gp "field" "table_constructor" "arguments")
lua-ts--multi-arg-function-call-matcher

View File

@ -97,7 +97,7 @@
"C-c C-c" #'m2-compile)
(defcustom m2-indent 5
"This variable gives the indentation in Modula-2 mode."
"Indentation in Modula-2 mode."
:type 'integer
:safe (lambda (v) (or (null v) (integerp v))))

View File

@ -2584,6 +2584,7 @@ the gem \"rubocop\". When t, it is used unconditionally."
:type '(choice (const :tag "Always" t)
(const :tag "No" nil)
(const :tag "If rubocop is in Gemfile" check))
:version "30.1"
:safe 'booleanp)
(defun ruby-flymake-rubocop (report-fn &rest _args)

View File

@ -691,12 +691,14 @@ Set to 0 to have all directives start at the left side of the screen."
(defcustom verilog-indent-ignore-multiline-defines t
"Non-nil means ignore indentation on lines that are part of a multiline define."
:group 'verilog-mode-indent
:version "30.1"
:type 'boolean)
(put 'verilog-indent-ignore-multiline-defines 'safe-local-variable #'verilog-booleanp)
(defcustom verilog-indent-ignore-regexp nil
"Regexp that matches lines that should be ignored for indentation."
:group 'verilog-mode-indent
:version "30.1"
:type 'boolean)
(put 'verilog-indent-ignore-regexp 'safe-local-variable #'stringp)
@ -748,6 +750,7 @@ Otherwise, line them up."
"Non-nil means indent classes inside packages.
Otherwise, classes have zero indentation."
:group 'verilog-mode-indent
:version "30.1"
:type 'boolean)
(put 'verilog-indent-class-inside-pkg 'safe-local-variable #'verilog-booleanp)
@ -761,6 +764,7 @@ Otherwise else is lined up with first character on line holding matching if."
(defcustom verilog-align-decl-expr-comments t
"Non-nil means align declaration and expressions comments."
:group 'verilog-mode-indent
:version "30.1"
:type 'boolean)
(put 'verilog-align-decl-expr-comments 'safe-local-variable #'verilog-booleanp)
@ -768,18 +772,21 @@ Otherwise else is lined up with first character on line holding matching if."
"Distance (in spaces) between longest declaration/expression and comments.
Only works if `verilog-align-decl-expr-comments' is non-nil."
:group 'verilog-mode-indent
:version "30.1"
:type 'integer)
(put 'verilog-align-comment-distance 'safe-local-variable #'integerp)
(defcustom verilog-align-assign-expr nil
"Non-nil means align expressions of continuous assignments."
:group 'verilog-mode-indent
:version "30.1"
:type 'boolean)
(put 'verilog-align-assign-expr 'safe-local-variable #'verilog-booleanp)
(defcustom verilog-align-typedef-regexp nil
"Regexp that matches user typedefs for declaration alignment."
:group 'verilog-mode-indent
:version "30.1"
:type '(choice (regexp :tag "Regexp")
(const :tag "None" nil)))
(put 'verilog-align-typedef-regexp 'safe-local-variable #'stringp)
@ -787,6 +794,7 @@ Only works if `verilog-align-decl-expr-comments' is non-nil."
(defcustom verilog-align-typedef-words nil
"List of words that match user typedefs for declaration alignment."
:group 'verilog-mode-indent
:version "30.1"
:type '(repeat string))
(put 'verilog-align-typedef-words 'safe-local-variable #'listp)
@ -939,6 +947,7 @@ always be saved."
(defcustom verilog-fontify-variables t
"Non-nil means fontify declaration variables."
:group 'verilog-mode-actions
:version "30.1"
:type 'boolean)
(put 'verilog-fontify-variables 'safe-local-variable #'verilog-booleanp)

View File

@ -55,8 +55,8 @@
"The tail of the Scheme expressions ring whose car is the last thing yanked.")
(defvar-local xscheme-running-p nil
"This variable, if nil, indicates that the scheme process is
waiting for input. Otherwise, it is busy evaluating something.")
"If nil, the scheme process is waiting for input.
Otherwise, it is busy evaluating something.")
(defconst xscheme-control-g-synchronization-p t
"If non-nil, insert markers in the scheme input stream to indicate when
@ -64,8 +64,8 @@ control-g interrupts were signaled. Do not allow more control-g's to be
signaled until the scheme process acknowledges receipt.")
(defvar-local xscheme-control-g-disabled-p nil
"This variable, if non-nil, indicates that a control-g is being processed
by the scheme process, so additional control-g's are to be ignored.")
"If non-nil, a control-g is being processed by the scheme process, so
additional control-g's are to be ignored.")
(defvar xscheme-string-receiver nil
"Procedure to send the string argument from the scheme process.")

View File

@ -422,7 +422,8 @@ Format of each entry is controlled by the variable `register-preview-function'."
(window-height . fit-window-to-buffer)
(preserve-size . (nil . t)))
"Window configuration for the register preview buffer."
:type display-buffer--action-custom-type)
:type display-buffer--action-custom-type
:version "30.1")
(defun register-preview-1 (buffer &optional show-empty types)
"Pop up a window showing the preview of registers in BUFFER.

View File

@ -165,6 +165,7 @@ List of factors, used to expand/compress the time scale. See `vc-annotate'."
(defcustom vc-annotate-use-short-revision t
"If non-nil, \\[vc-annotate] will use short revisions in its buffer name."
:type 'boolean
:version "30.1"
:group 'vc)
(defvar-keymap vc-annotate-mode-map

View File

@ -1220,7 +1220,7 @@ total height."
;;; Show/hide which-key buffer
(defun which-key--hide-popup ()
"Hide the `which-key' buffer."
"Hide the which-key buffer."
(unless (or which-key-persistent-popup
(member real-this-command which-key--paging-functions))
(setq which-key--last-try-2-loc nil)

View File

@ -1297,6 +1297,11 @@ barf_if_interaction_inhibited (void)
DEFUN ("read-from-minibuffer", Fread_from_minibuffer,
Sread_from_minibuffer, 1, 7, 0,
doc: /* Read a string from the minibuffer, prompting with string PROMPT.
While in the minibuffer, you can use \\<minibuffer-local-completion-map>\\[minibuffer-complete] and \\[minibuffer-complete-word] to complete your input.
You can also use \\<minibuffer-local-map>\\[minibuffer-complete-history] to complete using history items in the
input history HIST, and you can use \\[minibuffer-complete-defaults] to complete using
the default items in DEFAULT-VALUE.
The optional second arg INITIAL-CONTENTS is an obsolete alternative to
DEFAULT-VALUE. It normally should be nil in new code, except when
HIST is a cons. It is discussed in more detail below.