mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-19 18:13:55 +00:00
Merge from origin/emacs-30
2ba6387d1d
; Fix inaccuracy in ELisp Reference manual8ac6a17880
; * etc/PROBLEMS: Mention problems with XPM support in GD...624322d5f6
Add missing fontification matches for elixir-ts-mode5bafb11b40
; Fix copyright year186ea40732
Don't start docstrings with "This function" or similarcb8ce2e68b
Enable indent-tabs-mode in obj-c-mode54f3513709
Fix comment indent in 'lua-ts-mode' and old grammar8b95549e90
* admin/nt/dist-build/build-dep-zips.py: (deps src) handl...8064b2a679
Document undocumented completion commandsc29b798537
; etc/w32-feature.el (harfbuzz): improve test0e43e35f96
* 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 refcards14e791f9ba
; Update acknowledgments for Emacs 30861b7864fc
; Fix node name in emacs-lisp-intro.texi77243ba5be
; Update version tags of defcustomsfe2ac33bae
;* 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:
commit
af3bbc8360
@ -33,6 +33,7 @@
|
|||||||
(objc-mode . ((c-file-style . "GNU")
|
(objc-mode . ((c-file-style . "GNU")
|
||||||
(electric-quote-comment . nil)
|
(electric-quote-comment . nil)
|
||||||
(electric-quote-string . nil)
|
(electric-quote-string . nil)
|
||||||
|
(indent-tabs-mode . t)
|
||||||
(mode . bug-reference-prog)))
|
(mode . bug-reference-prog)))
|
||||||
(c-ts-mode . ((c-ts-mode-indent-style . gnu))) ;Inherits `c-mode' settings.
|
(c-ts-mode . ((c-ts-mode-indent-style . gnu))) ;Inherits `c-mode' settings.
|
||||||
(log-edit-mode . ((log-edit-font-lock-gnu-style . t)
|
(log-edit-mode . ((log-edit-font-lock-gnu-style . t)
|
||||||
|
@ -20,41 +20,56 @@
|
|||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
import re
|
import re
|
||||||
import functools
|
import subprocess
|
||||||
import operator
|
|
||||||
|
|
||||||
from subprocess import check_output
|
from subprocess import check_output
|
||||||
|
|
||||||
## Constants
|
## 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
|
PKG_REQ='''mingw-w64-x86_64-giflib
|
||||||
mingw-w64-x86_64-gnutls
|
mingw-w64-x86_64-gnutls
|
||||||
mingw-w64-x86_64-harfbuzz
|
mingw-w64-x86_64-harfbuzz
|
||||||
|
mingw-w64-x86_64-jansson
|
||||||
mingw-w64-x86_64-lcms2
|
mingw-w64-x86_64-lcms2
|
||||||
mingw-w64-x86_64-libjpeg-turbo
|
mingw-w64-x86_64-libjpeg-turbo
|
||||||
mingw-w64-x86_64-libpng
|
mingw-w64-x86_64-libpng
|
||||||
mingw-w64-x86_64-librsvg
|
mingw-w64-x86_64-librsvg
|
||||||
|
mingw-w64-x86_64-libwebp
|
||||||
mingw-w64-x86_64-libtiff
|
mingw-w64-x86_64-libtiff
|
||||||
mingw-w64-x86_64-libxml2
|
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
|
# Emacs style path to dependancy DLLs on build system
|
||||||
libgnutls
|
DLL_SRC="c:/msys64/mingw64/bin"
|
||||||
libharfbuzz
|
|
||||||
liblcms2
|
|
||||||
libturbojpeg
|
|
||||||
libpng
|
|
||||||
librsvg
|
|
||||||
libtiff
|
|
||||||
libxml
|
|
||||||
libXpm'''.split()
|
|
||||||
|
|
||||||
|
# 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
|
## Options
|
||||||
DRY_RUN=False
|
DRY_RUN=False
|
||||||
|
# NEW_EMACS="bin/emacs.exe"
|
||||||
|
|
||||||
def check_output_maybe(*args,**kwargs):
|
def check_output_maybe(*args,**kwargs):
|
||||||
if(DRY_RUN):
|
if(DRY_RUN):
|
||||||
@ -62,31 +77,76 @@ def check_output_maybe(*args,**kwargs):
|
|||||||
else:
|
else:
|
||||||
return check_output(*args,**kwargs)
|
return check_output(*args,**kwargs)
|
||||||
|
|
||||||
|
####################
|
||||||
## DLL Capture
|
## DLL Capture
|
||||||
|
|
||||||
|
# entry point
|
||||||
def gather_deps():
|
def gather_deps():
|
||||||
|
|
||||||
os.mkdir("x86_64")
|
os.mkdir("x86_64")
|
||||||
os.chdir("x86_64")
|
os.chdir("x86_64")
|
||||||
|
|
||||||
for dep in full_dll_dependency():
|
#full=full_dll_dependency(init_deps())
|
||||||
check_output_maybe(["cp /mingw64/bin/{}*.dll .".format(dep)],
|
#filtered=filter(lambda x: x not in DLL_SKIP, full)
|
||||||
shell=True)
|
#print("full:",full.len(), " filtered:",filtered.len())
|
||||||
|
#exit
|
||||||
|
|
||||||
print("Zipping")
|
for dep in full_dll_dependency(init_deps()):
|
||||||
check_output_maybe("zip -9r ../emacs-{}-{}deps.zip *"
|
if dep not in DLL_SKIP:
|
||||||
.format(EMACS_MAJOR_VERSION, DATE),
|
if args.l != True:
|
||||||
shell=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("../")
|
os.chdir("../")
|
||||||
|
|
||||||
## Return all Emacs dependencies
|
# Return dependancies listed in Emacs
|
||||||
def full_dll_dependency():
|
def init_deps():
|
||||||
deps = [dll_dependency(dep) for dep in DLL_REQ]
|
return '''libXpm-nox4.dll
|
||||||
return set(sum(deps, []) + DLL_REQ)
|
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):
|
def dll_dependency(dll):
|
||||||
output = check_output(["/mingw64/bin/ntldd", "--recursive",
|
output = check_output(["/mingw64/bin/ntldd", "--recursive",
|
||||||
"/mingw64/bin/{}*.dll".format(dll)]).decode("utf-8")
|
"/mingw64/bin/{}".format(dll)]
|
||||||
|
).decode("utf-8")
|
||||||
## munge output
|
## munge output
|
||||||
return ntldd_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
|
## if it's the former, we want it, if its the later we don't
|
||||||
splt = dep.split()
|
splt = dep.split()
|
||||||
if len(splt) > 2 and "msys64" in splt[2]:
|
if len(splt) > 2 and "mingw64" in splt[2]:
|
||||||
print("Adding dep", splt[0])
|
rtn.append(splt[0])
|
||||||
rtn.append(splt[0].split(".")[0])
|
|
||||||
|
|
||||||
return rtn
|
return rtn
|
||||||
|
|
||||||
@ -112,26 +171,92 @@ def ntldd_munge(out):
|
|||||||
## Packages to fiddle with
|
## Packages to fiddle with
|
||||||
## Source for gcc-libs is part of gcc
|
## Source for gcc-libs is part of gcc
|
||||||
SKIP_SRC_PKGS=["mingw-w64-gcc-libs"]
|
SKIP_SRC_PKGS=["mingw-w64-gcc-libs"]
|
||||||
SKIP_DEP_PKGS=frozenset(["mingw-w64-x86_64-glib2"])
|
SKIP_DEP_PKGS=["mingw-w64-glib2", "mingw-w64-ca-certificates-20211016-3"]
|
||||||
MUNGE_SRC_PKGS={"mingw-w64-libwinpthread-git":"mingw-w64-winpthreads-git"}
|
MUNGE_SRC_PKGS={
|
||||||
|
"mingw-w64-libwinpthread-git":"mingw-w64-winpthreads-git",
|
||||||
|
"mingw-w64-gettext-runtime":"mingw-w64-gettext"
|
||||||
|
}
|
||||||
MUNGE_DEP_PKGS={
|
MUNGE_DEP_PKGS={
|
||||||
"mingw-w64-x86_64-libwinpthread":"mingw-w64-x86_64-libwinpthread-git",
|
"mingw-w64-x86_64-libwinpthread":"mingw-w64-x86_64-libwinpthread-git",
|
||||||
"mingw-w64-x86_64-libtre": "mingw-w64-x86_64-libtre-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!
|
## Currently no packages seem to require this!
|
||||||
ARCH_PKGS=[]
|
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):
|
## Extract the "Depends On" line
|
||||||
package_info = check_output(["pacman", "-Si"] + pkgs).decode("utf-8").splitlines()
|
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.
|
## Split into dependencies
|
||||||
dependencies = [line.split(":")[1].split() for line in package_info
|
dependencies = dependencies.strip().split(" ")
|
||||||
if line.startswith("Depends On")]
|
|
||||||
## Flatten dependency lists from multiple packages into one list.
|
|
||||||
dependencies = functools.reduce(operator.iconcat, dependencies, [])
|
|
||||||
|
|
||||||
## Remove > signs TODO can we get any other punctuation here?
|
## Remove > signs TODO can we get any other punctuation here?
|
||||||
dependencies = [d.split(">")[0] for d in dependencies if d]
|
dependencies = [d.split(">")[0] for d in dependencies if d]
|
||||||
@ -147,18 +272,16 @@ def extract_deps():
|
|||||||
print( "Extracting deps" )
|
print( "Extracting deps" )
|
||||||
|
|
||||||
# Get a list of all dependencies needed for packages mentioned above.
|
# Get a list of all dependencies needed for packages mentioned above.
|
||||||
pkgs = set(PKG_REQ)
|
pkgs = PKG_REQ[:]
|
||||||
newdeps = pkgs
|
n = 0
|
||||||
print("adding...")
|
while n < len(pkgs):
|
||||||
while True:
|
subdeps = immediate_deps(pkgs[n])
|
||||||
subdeps = frozenset(immediate_deps(list(newdeps)))
|
for p in subdeps:
|
||||||
newdeps = subdeps - SKIP_DEP_PKGS - pkgs
|
if not (p in pkgs or p in SKIP_DEP_PKGS):
|
||||||
if not newdeps:
|
pkgs.append(p)
|
||||||
break
|
n = n + 1
|
||||||
print('\n'.join(newdeps))
|
|
||||||
pkgs |= newdeps
|
|
||||||
|
|
||||||
return list(pkgs)
|
return sorted(pkgs)
|
||||||
|
|
||||||
|
|
||||||
def download_source(tarball):
|
def download_source(tarball):
|
||||||
@ -206,14 +329,24 @@ def gather_source(deps):
|
|||||||
## Switch names if necessary
|
## Switch names if necessary
|
||||||
pkg_name = MUNGE_SRC_PKGS.get(pkg_name,pkg_name)
|
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)
|
download_source(tarball)
|
||||||
|
|
||||||
print("Zipping")
|
srczip="../emacs-{}-{}deps-mingw-w64-src.zip".format(EMACS_MAJOR_VERSION,DATE)
|
||||||
check_output_maybe("zip -9 ../emacs-{}-{}deps-mingw-w64-src.zip *"
|
tmpzip="{}.tmp".format(srczip)
|
||||||
.format(EMACS_MAJOR_VERSION,DATE),
|
print("Zipping Dsrc in", os.getcwd(), "as", tmpzip)
|
||||||
shell=True)
|
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("..")
|
os.chdir("..")
|
||||||
|
|
||||||
@ -231,6 +364,9 @@ def clean():
|
|||||||
|
|
||||||
|
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
|
|
||||||
|
#parser.add_argument("emacs", help="emacs executable")
|
||||||
|
|
||||||
parser.add_argument("-s", help="snapshot build",
|
parser.add_argument("-s", help="snapshot build",
|
||||||
action="store_true")
|
action="store_true")
|
||||||
|
|
||||||
@ -243,19 +379,29 @@ def clean():
|
|||||||
parser.add_argument("-d", help="dry run",
|
parser.add_argument("-d", help="dry run",
|
||||||
action="store_true")
|
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")
|
action="store_true")
|
||||||
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
do_all=not (args.c or args.r)
|
do_all=not (args.c or args.r)
|
||||||
|
|
||||||
|
#NEW_EMACS=args.emacs
|
||||||
|
|
||||||
DRY_RUN=args.d
|
DRY_RUN=args.d
|
||||||
|
|
||||||
|
if( args.e ):
|
||||||
|
print("\n".join(init_deps()))
|
||||||
|
|
||||||
if( args.l ):
|
if( args.l ):
|
||||||
print("List of dependencies")
|
print("List of dependencies:")
|
||||||
print( deps )
|
print(full_dll_dependency(init_deps()))
|
||||||
|
print("List of source packages:")
|
||||||
|
print( extract_deps() )
|
||||||
|
|
||||||
|
if( args.e or args.l ):
|
||||||
exit(0)
|
exit(0)
|
||||||
|
|
||||||
if args.s:
|
if args.s:
|
||||||
|
@ -8,7 +8,10 @@ Outfile "emacs-${OUT_VERSION}-installer.exe"
|
|||||||
SetCompressor /solid lzma
|
SetCompressor /solid lzma
|
||||||
|
|
||||||
Var StartMenuFolder
|
Var StartMenuFolder
|
||||||
|
Var UninstallerPath
|
||||||
|
|
||||||
|
!define UNINST_KEY \
|
||||||
|
"Software\Microsoft\Windows\CurrentVersion\Uninstall\emacs-${VERSION_BRANCH}"
|
||||||
|
|
||||||
!define MUI_WELCOMEPAGE_TITLE "Emacs"
|
!define MUI_WELCOMEPAGE_TITLE "Emacs"
|
||||||
!define MUI_WELCOMEPAGE_TITLE_3LINES
|
!define MUI_WELCOMEPAGE_TITLE_3LINES
|
||||||
@ -20,16 +23,27 @@ Var StartMenuFolder
|
|||||||
|
|
||||||
!insertmacro MUI_PAGE_WELCOME
|
!insertmacro MUI_PAGE_WELCOME
|
||||||
|
|
||||||
|
# licensing/about click-though page
|
||||||
!define MUI_LICENSEPAGE_TEXT_TOP "The GNU General Public License"
|
!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"
|
!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_DIRECTORY
|
||||||
!insertmacro MUI_PAGE_INSTFILES
|
|
||||||
|
|
||||||
|
# user option page: start menu shortcut
|
||||||
!insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder
|
!insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder
|
||||||
|
|
||||||
|
# user option confirm/begin install
|
||||||
|
!insertmacro MUI_PAGE_INSTFILES
|
||||||
|
|
||||||
|
# uninstaller confirmation/options (no options)
|
||||||
!insertmacro MUI_UNPAGE_CONFIRM
|
!insertmacro MUI_UNPAGE_CONFIRM
|
||||||
|
|
||||||
|
# uninstaller begin
|
||||||
!insertmacro MUI_UNPAGE_INSTFILES
|
!insertmacro MUI_UNPAGE_INSTFILES
|
||||||
|
|
||||||
!insertmacro MUI_LANGUAGE "English"
|
!insertmacro MUI_LANGUAGE "English"
|
||||||
@ -39,23 +53,35 @@ function .onInit
|
|||||||
StrCpy $INSTDIR "$PROGRAMFILES64\Emacs"
|
StrCpy $INSTDIR "$PROGRAMFILES64\Emacs"
|
||||||
functionend
|
functionend
|
||||||
|
|
||||||
|
# main section logic, run after confirming installation
|
||||||
Section
|
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}
|
File /r emacs-${VERSION_BRANCH}
|
||||||
|
|
||||||
# define uninstaller name
|
# 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
|
;Create shortcuts
|
||||||
|
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
|
||||||
CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
|
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
|
!insertmacro MUI_STARTMENU_WRITE_END
|
||||||
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Emacs.lnk" "$INSTDIR\emacs-${VERSION_BRANCH}\bin\runemacs.exe"
|
|
||||||
SectionEnd
|
SectionEnd
|
||||||
|
|
||||||
|
|
||||||
@ -63,15 +89,50 @@ SectionEnd
|
|||||||
# the section will always be named "Uninstall"
|
# the section will always be named "Uninstall"
|
||||||
Section "Uninstall"
|
Section "Uninstall"
|
||||||
|
|
||||||
# Always delete uninstaller first
|
# remove All Users shortcuts only
|
||||||
Delete "$INSTDIR\Uninstall.exe"
|
# SetShellVarContext all
|
||||||
|
|
||||||
# now delete installed directory
|
# retreive/recalculate uninstaller location
|
||||||
RMDir /r "$INSTDIR"
|
StrCpy $UninstallerPath "$INSTDIR\Uninstall-${VERSION_BRANCH}.exe"
|
||||||
RMDir "$INSTDIR"
|
|
||||||
|
|
||||||
|
# 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
|
!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
|
SectionEnd
|
||||||
|
@ -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.
|
** 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
|
** 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
|
** Manuals
|
||||||
Check for node names using problematic characters:
|
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
|
Check for major new features added since the last release (e.g. new
|
||||||
lisp files), and add the relevant authors to the Acknowledgments in
|
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
|
For major releases, rewrite the "Antinews" appendix of the User Manual
|
||||||
(doc/emacs/anti.texi) to describe features lost by downgrading to the
|
(doc/emacs/anti.texi) to describe features lost by downgrading to the
|
||||||
|
@ -119,7 +119,8 @@ NeXTstep port of Emacs.
|
|||||||
|
|
||||||
@item
|
@item
|
||||||
Stephen Berman wrote @file{todo-mode.el} (based on the original version
|
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
|
@item
|
||||||
Anna M. Bigatti wrote @file{cal-html.el}, which produces HTML calendars.
|
Anna M. Bigatti wrote @file{cal-html.el}, which produces HTML calendars.
|
||||||
@ -326,6 +327,10 @@ folders have mail waiting in them.
|
|||||||
@item
|
@item
|
||||||
Torbj@"orn Einarsson wrote @file{f90.el}, a mode for Fortran 90 files.
|
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
|
@item
|
||||||
Tsugutomo Enami co-wrote the support for international character sets.
|
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
|
is an interface to directory servers via LDAP, CCSO PH/QI, or BBDB; and
|
||||||
@file{ldap.el}, the LDAP client interface.
|
@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
|
@item
|
||||||
Fred Fish wrote the support for dumping COFF executable files.
|
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
|
Henry Guillaume wrote @file{find-file.el}, a package to visit files
|
||||||
related to the currently visited file.
|
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
|
@item
|
||||||
Doug Gwyn wrote the portable @code{alloca} implementation.
|
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
|
@file{uniquify.el}, a facility to make buffer names unique by adding
|
||||||
parts of the file's name to the buffer name.
|
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
|
@item
|
||||||
Peter Kleiweg wrote @file{ps-mode.el}, a mode for editing PostScript
|
Peter Kleiweg wrote @file{ps-mode.el}, a mode for editing PostScript
|
||||||
files and running a PostScript interpreter interactively from within
|
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,
|
matching. In Emacs 24, he integrated the lexical binding code,
|
||||||
cleaned up the CL namespace (making it acceptable to use CL
|
cleaned up the CL namespace (making it acceptable to use CL
|
||||||
functions at runtime), added generalized variables to core Emacs
|
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
|
@item
|
||||||
Morioka Tomohiko wrote several packages for MIME support in Gnus and
|
Morioka Tomohiko wrote several packages for MIME support in Gnus and
|
||||||
elsewhere.
|
elsewhere.
|
||||||
|
|
||||||
|
@item
|
||||||
|
John Muhl wrote @file{lua-ts-mode.el}, an Emacs mode for editing Lua
|
||||||
|
programs.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
Sen Nagata wrote @file{crm.el}, a package for reading multiple strings
|
Sen Nagata wrote @file{crm.el}, a package for reading multiple strings
|
||||||
with completion, and @file{rfc2368.el}, support for @code{mailto:}
|
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
|
Michael D. Prange and Steven A. Wood wrote @file{fortran.el}, a mode
|
||||||
for editing Fortran code.
|
for editing Fortran code.
|
||||||
|
|
||||||
|
@item
|
||||||
|
Vincenzo Pupillo wrote @code{php-ts-mode.el}, a major mode for editing
|
||||||
|
PHP programs.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
Ashwin Ram wrote @file{refer.el}, commands to look up references in
|
Ashwin Ram wrote @file{refer.el}, commands to look up references in
|
||||||
bibliography files by keyword.
|
bibliography files by keyword.
|
||||||
@ -1161,6 +1189,10 @@ wrote parts of the IRC client ERC (q.v.).
|
|||||||
@item
|
@item
|
||||||
Randal Schwartz wrote @file{pp.el}, a pretty-printer for lisp objects.
|
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
|
@item
|
||||||
Manuel Serrano wrote the Flyspell package, which does spell checking
|
Manuel Serrano wrote the Flyspell package, which does spell checking
|
||||||
as you type.
|
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
|
words for which it is a prefix. He also wrote the original dumping
|
||||||
support.
|
support.
|
||||||
|
|
||||||
|
@item
|
||||||
|
Theodor Thornhill wrote @file{html-ts-mode.el}, a major mode based on
|
||||||
|
the tree-sitter library for editing HTML files.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
Toru Tomabechi contributed to Tibetan support.
|
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
|
Francis J. Wright wrote @file{woman.el}, a package for browsing
|
||||||
manual pages without the @code{man} command.
|
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
|
@item
|
||||||
Masatake Yamato wrote @file{ld-script.el}, an editing mode for GNU
|
Masatake Yamato wrote @file{ld-script.el}, an editing mode for GNU
|
||||||
linker scripts, and contributed subword handling and style
|
linker scripts, and contributed subword handling and style
|
||||||
|
@ -1465,10 +1465,10 @@ Dershowitz, Dave Detlefs, Matthieu Devin, Christophe de Dinechin, Eri
|
|||||||
Ding, Jan Dj@"arv, Lawrence R. Dodd, Carsten Dominik, Scott Draves,
|
Ding, Jan Dj@"arv, Lawrence R. Dodd, Carsten Dominik, Scott Draves,
|
||||||
Benjamin Drieu, Viktor Dukhovni, Jacques Duthen, Dmitry Dzhus, John
|
Benjamin Drieu, Viktor Dukhovni, Jacques Duthen, Dmitry Dzhus, John
|
||||||
Eaton, Rolf Ebert, Carl Edman, David Edmondson, Paul Eggert, Stephen
|
Eaton, Rolf Ebert, Carl Edman, David Edmondson, Paul Eggert, Stephen
|
||||||
Eglen, Christian Egli, Torbj@"orn Einarsson, Tsugutomo Enami, David
|
Eglen, Christian Egli, Torbj@"orn Einarsson, Helmut Eller, Tsugutomo
|
||||||
Engster, Hans Henrik Eriksen, Michael Ernst, Ata Etemadi, Frederick
|
Enami, David Engster, Hans Henrik Eriksen, Michael Ernst, Ata Etemadi, Frederick
|
||||||
Farnbach, Oscar Figueiredo, Fred Fish, Steve Fisk, Thomas Fitzsimmons, Karl Fogel, Gary
|
Farnbach, Oscar Figueiredo, Jared Finder, Fred Fish, Steve Fisk, Thomas Fitzsimmons,
|
||||||
Foster, Eric S. Fraga, Romain Francoise, Noah Friedman, Andreas
|
Karl Fogel, Gary Foster, Eric S. Fraga, Romain Francoise, Noah Friedman, Andreas
|
||||||
Fuchs, Shigeru Fukaya, Xue Fuqiao, Hallvard Furuseth, Keith Gabryelski, Peter S.
|
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,
|
Galbraith, Kevin Gallagher, Fabi@'an E. Gallina, Kevin Gallo, Juan Le@'en Lahoz Garc@'ia,
|
||||||
Howard Gayle, Daniel German, Stephen Gildea, Julien Gilles, David
|
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,
|
Josefsson, Alexandre Julliard, Arne J@o{}rgensen, Tomoji Kagatani,
|
||||||
Brewster Kahle, Tokuya Kameshima, Lute Kamstra, Stefan Kangas, Ivan Kanis, David
|
Brewster Kahle, Tokuya Kameshima, Lute Kamstra, Stefan Kangas, Ivan Kanis, David
|
||||||
Kastrup, David Kaufman, Henry Kautz, Taichi Kawabata, Taro Kawagishi,
|
Kastrup, David Kaufman, Henry Kautz, Taichi Kawabata, Taro Kawagishi,
|
||||||
Howard Kaye, Michael Kifer, Richard King, Peter Kleiweg, Karel
|
Howard Kaye, Michael Kifer, Richard King, Wilhelm Kirschbaum, Peter Kleiweg,
|
||||||
Kl@'i@v{c}, Shuhei Kobayashi, Pavel Kobyakov, Larry K. Kolodney, David
|
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,
|
M. Koppelman, Koseki Yoshinori, Robert Krawitz, Sebastian Kremer,
|
||||||
Ryszard Kubiak, Tak Kunihiro, Igor Kuzmin, David K@aa{}gedal, Daniel LaLiberte, Karl
|
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
|
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
|
Megginson, Jimmy Aguilar Mena, Stefan Merten, Ben A. Mesander, Wayne Mesard, Brad
|
||||||
Miller, Lawrence Mitchell, Richard Mlynarik, Gerd M@"ollmann, Dani Moncayo, Stefan
|
Miller, Lawrence Mitchell, Richard Mlynarik, Gerd M@"ollmann, Dani Moncayo, Stefan
|
||||||
Monnier, Keith Moore, Jan Moringen, Morioka Tomohiko, Glenn Morris,
|
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,
|
Gergely Nagy, Nobuyoshi Nakada, Thomas Neumann, Mike Newton, Thien-Thi Nguyen,
|
||||||
Jurgen Nickelsen, Dan Nicolaescu, Hrvoje Nik@v{s}i@'c, Jeff Norden,
|
Jurgen Nickelsen, Dan Nicolaescu, Hrvoje Nik@v{s}i@'c, Jeff Norden,
|
||||||
Andrew Norman, Theresa O'Connor, Kentaro Ohkouchi, Christian Ohler,
|
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.
|
Persson, Jens Petersen, Nicolas Petton, Daniel Pfeiffer, Justus Piater, Richard L.
|
||||||
Pieri, Fred Pierresteguy, Fran@,{c}ois Pinard, Daniel Pittman, Christian
|
Pieri, Fred Pierresteguy, Fran@,{c}ois Pinard, Daniel Pittman, Christian
|
||||||
Plaunt, Alexander Pohoyda, David Ponce, Noam Postavsky, Francesco A. Potort@`i,
|
Plaunt, Alexander Pohoyda, David Ponce, Noam Postavsky, Francesco A. Potort@`i,
|
||||||
Michael D. Prange, Mukesh Prasad, Steve Purcell, Ken Raeburn, Marko Rahamaa, Ashwin
|
Michael D. Prange, Mukesh Prasad, Steve Purcell, Vincenzo Pupillo, Ken Raeburn,
|
||||||
Ram, Eric S. Raymond, Paul Reilly, Edward M. Reingold, David
|
Marko Rahamaa, Ashwin Ram, Eric S. Raymond, Paul Reilly, Edward M. Reingold, David
|
||||||
Reitter, Alex Rezinsky, Rob Riepel, Lara Rios, Adrian Robert, Nick
|
Reitter, Alex Rezinsky, Rob Riepel, Lara Rios, Adrian Robert, Nick
|
||||||
Roberts, Roland B. Roberts, John Robinson, Denis B. Roegel, Danny
|
Roberts, Roland B. Roberts, John Robinson, Denis B. Roegel, Danny
|
||||||
Roozendaal, Sebastian Rose, William Rosenblatt, Markus Rost, Guillermo
|
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,
|
Schleicher, Gregor Schmid, Michael Schmidt, Ronald S. Schnell,
|
||||||
Philippe Schnoebelen, Jan Schormann, Alex Schroeder, Stefan Schoef,
|
Philippe Schnoebelen, Jan Schormann, Alex Schroeder, Stefan Schoef,
|
||||||
Rainer Sch@"opf, Raymond Scholz, Eric Schulte, Andreas Schwab, Randal
|
Rainer Sch@"opf, Raymond Scholz, Eric Schulte, Andreas Schwab, Randal
|
||||||
Schwartz, Oliver Seidel, Manuel Serrano, Paul Sexton, Hovav Shacham,
|
Schwartz, Oliver Seidel, Daniel Semyonov, Manuel Serrano, Paul Sexton,
|
||||||
Stanislav Shalunov, Marc Shapiro, Richard Sharman, Olin Shivers, Tibor
|
Hovav Shacham, Stanislav Shalunov, Marc Shapiro, Richard Sharman, Olin
|
||||||
@v{S}imko, Espen Skoglund, Rick Sladkey, Lynn Slater, Chris Smith,
|
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
|
David Smith, JD Smith, Paul D. Smith, Wilson Snyder, William Sommerfeld, Simon
|
||||||
South, Andre Spiegel, Michael Staats, Thomas Steffen, Ulf Stegemann,
|
South, Andre Spiegel, Michael Staats, Thomas Steffen, Ulf Stegemann,
|
||||||
Reiner Steib, Sam Steingold, Ake Stenhoff, Philipp Stephani, Peter Stephenson, Ken
|
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
|
Storm, Steve Strassmann, Christopher Suckling, Olaf Sylvester, Naoto
|
||||||
Takahashi, Steven Tamm, Jan Tatarik, Jo@~ao T@'avora, Luc Teirlinck,
|
Takahashi, Steven Tamm, Jan Tatarik, Jo@~ao T@'avora, Luc Teirlinck,
|
||||||
Jean-Philippe Theberge, Jens T.@: Berger Thielemann, Spencer Thomas,
|
Jean-Philippe Theberge, Jens T.@: Berger Thielemann, Spencer Thomas,
|
||||||
Jim Thompson, Toru Tomabechi, David O'Toole, Markus Triska, Tom Tromey, Eli
|
Jim Thompson, Theodor Thornhill, Toru Tomabechi, David O'Toole, Markus Triska,
|
||||||
Tziperman, Daiki Ueno, Masanobu Umeda, Rajesh Vaidheeswarran, Neil
|
Tom Tromey, Eli Tziperman, Daiki Ueno, Masanobu Umeda, Rajesh Vaidheeswarran, Neil
|
||||||
W. Van Dyke, Didier Verna, Joakim Verona, Ulrik Vieth, Geoffrey
|
W. Van Dyke, Didier Verna, Joakim Verona, Ulrik Vieth, Geoffrey
|
||||||
Voelker, Johan Vromans, Inge Wallin, John Paul Wallington, Colin
|
Voelker, Johan Vromans, Inge Wallin, John Paul Wallington, Colin
|
||||||
Walters, Barry Warsaw, Christoph Wedler, Ilja Weis, Zhang Weize,
|
Walters, Barry Warsaw, Christoph Wedler, Ilja Weis, Zhang Weize,
|
||||||
Morten Welinder, Joseph Brian Wells, Rodney Whitby, John Wiegley,
|
Morten Welinder, Joseph Brian Wells, Rodney Whitby, John Wiegley,
|
||||||
Sascha Wilde, Ed Wilkinson, Mike Williams, Roland Winkler, Bill
|
Sascha Wilde, Ed Wilkinson, Mike Williams, Roland Winkler, Bill
|
||||||
Wohler, Steven A. Wood, Dale R. Worley, Francis J. Wright, Felix
|
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
|
Masatake Yamato, Jonathan Yavner, Ryan Yeske, Ilya Zakharevich, Milan
|
||||||
Zamazal, Victor Zandy, Eli Zaretskii, Jamie Zawinski, Andrew Zhilin,
|
Zamazal, Victor Zandy, Eli Zaretskii, Jamie Zawinski, Andrew Zhilin,
|
||||||
Shenghuo Zhu, Piotr Zieli@'nski, Ian T. Zimmermann, Reto Zimmermann,
|
Shenghuo Zhu, Piotr Zieli@'nski, Ian T. Zimmermann, Reto Zimmermann,
|
||||||
|
@ -342,18 +342,44 @@ when completion is allowed.
|
|||||||
@table @kbd
|
@table @kbd
|
||||||
@item @key{TAB}
|
@item @key{TAB}
|
||||||
Complete the text in the minibuffer as much as possible; if unable to
|
Complete the text in the minibuffer as much as possible; if unable to
|
||||||
complete, display a list of possible completions
|
complete, display a list of possible completions.
|
||||||
(@code{minibuffer-complete}).
|
|
||||||
@item @key{SPC}
|
@item @key{SPC}
|
||||||
Complete up to one word from the minibuffer text before point
|
Complete up to one word from the minibuffer text before point.
|
||||||
(@code{minibuffer-complete-word}). This command is not available for
|
@item C-x @key{UP}
|
||||||
arguments that often include spaces, such as file names.
|
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}
|
@item @key{RET}
|
||||||
Submit the text in the minibuffer as the argument, possibly completing
|
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 ?
|
@item ?
|
||||||
Display a list of completions and a few useful key bindings
|
Display a list of completions and a few useful key bindings
|
||||||
(@code{minibuffer-completion-help}).
|
(@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
|
@end table
|
||||||
|
|
||||||
@kindex TAB @r{(completion)}
|
@kindex TAB @r{(completion)}
|
||||||
@ -371,7 +397,8 @@ are chosen.
|
|||||||
@samp{auto-f} in the minibuffer and type @key{SPC}, it finds that the
|
@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-},
|
completion is @samp{auto-fill-mode}, but it only inserts @samp{ill-},
|
||||||
giving @samp{auto-fill-}. Another @key{SPC} at this point completes
|
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)}
|
@kindex ? @r{(completion)}
|
||||||
@cindex completion list
|
@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
|
(@code{minibuffer-completion-help}). The following commands can be used
|
||||||
with the completion list:
|
with the completion list:
|
||||||
|
|
||||||
@table @kbd
|
|
||||||
@vindex minibuffer-completion-auto-choose
|
@vindex minibuffer-completion-auto-choose
|
||||||
@kindex M-DOWN
|
@kindex M-DOWN
|
||||||
@kindex M-UP
|
@kindex M-UP
|
||||||
@ -390,12 +416,10 @@ with the completion list:
|
|||||||
@findex minibuffer-next-completion
|
@findex minibuffer-next-completion
|
||||||
@findex minibuffer-previous-completion
|
@findex minibuffer-previous-completion
|
||||||
@findex minibuffer-choose-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}}
|
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-next-completion} and @kbd{M-@key{UP}}
|
||||||
(@code{minibuffer-previous-completion}) navigate through the
|
(@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
|
@code{minibuffer-completion-auto-choose} is non-@code{nil} (which is
|
||||||
the default), using these commands also inserts the current completion
|
the default), using these commands also inserts the current completion
|
||||||
candidate into the minibuffer. If
|
candidate into the minibuffer. If
|
||||||
@ -407,9 +431,6 @@ M-@key{RET}} inserts the currently active candidate without exiting
|
|||||||
the minibuffer.
|
the minibuffer.
|
||||||
|
|
||||||
@findex switch-to-completions
|
@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
|
Typing @kbd{M-v}, while in the minibuffer, selects the window showing
|
||||||
the completion list (@code{switch-to-completions}). This paves the
|
the completion list (@code{switch-to-completions}). This paves the
|
||||||
way for using the commands below. @key{PageUp}, @key{prior} and
|
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}).
|
ways (@pxref{Windows}).
|
||||||
|
|
||||||
@findex choose-completion
|
@findex choose-completion
|
||||||
@item @key{RET}
|
While in the completion list buffer, @kbd{@key{RET}} chooses the completion
|
||||||
@itemx mouse-1
|
candidate at point (@code{choose-completion}) and @kbd{mouse-1} and
|
||||||
@itemx mouse-2
|
@kbd{mouse-2} choose the completion at mouse click. With a prefix
|
||||||
While in the completion list buffer, this chooses the completion at
|
argument, @kbd{C-u @key{RET}} inserts the completion at point into the
|
||||||
point (@code{choose-completion}). With a prefix argument, @kbd{C-u
|
minibuffer, but doesn't exit the minibuffer---thus, you can change your
|
||||||
@key{RET}} inserts the completion at point into the minibuffer, but
|
mind and choose another candidate.
|
||||||
doesn't exit the minibuffer---thus, you can change your mind and
|
|
||||||
choose another candidate.
|
|
||||||
|
|
||||||
@findex next-completion
|
@findex next-completion
|
||||||
@item @key{TAB}
|
While in the completion list buffer, you can use @kbd{@key{TAB}},
|
||||||
@item @key{RIGHT}
|
@kbd{@key{RIGHT}}, or @kbd{n} to move point to the following completion
|
||||||
@item @key{n}
|
candidate (@code{next-completion}). You can also use @kbd{@key{S-TAB}},
|
||||||
While in the completion list buffer, these keys move point to the
|
@kbd{@key{LEFT}}, and @kbd{p} to move point to the previous completion
|
||||||
following completion alternative (@code{next-completion}).
|
alternative (@code{previous-completion}).
|
||||||
|
|
||||||
@findex previous-completion
|
@findex minibuffer-complete-history
|
||||||
@item @key{S-TAB}
|
@findex minibuffer-complete-defaults
|
||||||
@item @key{LEFT}
|
@kindex C-x UP @r{(completion)}
|
||||||
@item @key{p}
|
@kindex C-x DOWN @r{(completion)}
|
||||||
While in the completion list buffer, these keys move point to the
|
You can also complete using the history of minibuffer inputs for the
|
||||||
previous completion alternative (@code{previous-completion}).
|
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
|
@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
|
@findex kill-current-buffer
|
||||||
@item @kbd{z}
|
Finally, @kbd{q} quits the window showing it and selects the window
|
||||||
While in the completion list buffer, kill it and delete the window
|
showing the minibuffer (@code{quit-window}), and @kbd{z} kills the
|
||||||
showing it (@code{kill-current-buffer}).
|
completion buffer and delete the window showing it
|
||||||
@end table
|
(@code{kill-current-buffer}).
|
||||||
|
|
||||||
@vindex minibuffer-visible-completions
|
@vindex minibuffer-visible-completions
|
||||||
If the variable @code{minibuffer-visible-completions} is customized to
|
If the variable @code{minibuffer-visible-completions} is customized to
|
||||||
|
@ -3774,7 +3774,7 @@ elisp, The Emacs Lisp Reference Manual}.
|
|||||||
|
|
||||||
@menu
|
@menu
|
||||||
* Lexical & Dynamic Binding Differences::
|
* Lexical & Dynamic Binding Differences::
|
||||||
* Lexical vs. Dynamic Binding Example::
|
* Lexical vs Dynamic Binding Example::
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
@node Lexical & Dynamic Binding Differences
|
@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,
|
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.
|
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
|
@unnumberedsubsubsec Example of Lexical vs. Dynamic Binding
|
||||||
In some cases, both lexical and dynamic binding behave identically.
|
In some cases, both lexical and dynamic binding behave identically.
|
||||||
However, in other cases, they can change the meaning of your program.
|
However, in other cases, they can change the meaning of your program.
|
||||||
|
@ -445,7 +445,7 @@ characters which resemble the previously mentioned @acronym{ASCII}
|
|||||||
ones, to avoid confusing people reading your code. Emacs will
|
ones, to avoid confusing people reading your code. Emacs will
|
||||||
highlight some non-escaped commonly confused characters such as
|
highlight some non-escaped commonly confused characters such as
|
||||||
@samp{‘} to encourage this. You can also add a backslash before whitespace
|
@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
|
cleaner to use one of the easily readable escape sequences, such as
|
||||||
@samp{\t} or @samp{\s}, instead of an actual whitespace character such
|
@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,
|
as a tab or a space. (If you do write backslash followed by a space,
|
||||||
|
@ -75,9 +75,12 @@ another. An overview of D-Bus can be found at
|
|||||||
@cindex overview
|
@cindex overview
|
||||||
|
|
||||||
D-Bus is an inter-process communication mechanism for applications
|
D-Bus is an inter-process communication mechanism for applications
|
||||||
residing on the same host. The communication is based on
|
residing on the same host. Emacs uses it when it is compiled with the
|
||||||
@dfn{messages}. Data in the messages is carried in a structured way,
|
respective library, see configuration option @option{--with-dbus}. At
|
||||||
it is not just a byte stream.
|
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
|
The communication is connection oriented to two kinds of message
|
||||||
buses: a so called @dfn{system bus}, and a @dfn{session bus}. On a
|
buses: a so called @dfn{system bus}, and a @dfn{session bus}. On a
|
||||||
|
@ -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
|
@file{java/INSTALL} in the Emacs source distribution for details on how
|
||||||
to build it.
|
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
|
@item
|
||||||
Numerous performance improvements, for example in parsing JSON, reading
|
Numerous performance improvements, for example in parsing JSON, reading
|
||||||
data from subprocesses, handling output from Eshell and in Shell mode, X
|
data from subprocesses, handling output from Eshell and in Shell mode, X
|
||||||
|
@ -1407,9 +1407,12 @@ Desktop, @uref{https://en.wikipedia.org/wiki/GVFS}. Remote files on
|
|||||||
@acronym{GVFS} are mounted locally through @acronym{FUSE} and
|
@acronym{GVFS} are mounted locally through @acronym{FUSE} and
|
||||||
@value{tramp} uses this locally mounted directory internally.
|
@value{tramp} uses this locally mounted directory internally.
|
||||||
|
|
||||||
Emacs uses the D-Bus mechanism to communicate with @acronym{GVFS}@.
|
Emacs uses the D-Bus mechanism to communicate with @acronym{GVFS}@. It
|
||||||
Emacs must have the message bus system, D-Bus integration active,
|
must have been compiled with D-Bus support, @pxref{Top, , D-Bus, dbus}.
|
||||||
@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
|
@table @asis
|
||||||
@cindex method @option{afp}
|
@cindex method @option{afp}
|
||||||
|
@ -201,7 +201,7 @@ see the variable 'url-request-extra-headers'.
|
|||||||
|
|
||||||
+++
|
+++
|
||||||
** New user option 'trusted-content' to allow potentially dangerous features.
|
** 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
|
consider as sufficiently trusted to run any part of the code contained
|
||||||
therein even without any explicit user request.
|
therein even without any explicit user request.
|
||||||
For example, Flymake's backend for Emacs Lisp consults this option
|
For example, Flymake's backend for Emacs Lisp consults this option
|
||||||
|
10
etc/PROBLEMS
10
etc/PROBLEMS
@ -485,6 +485,16 @@ running the just-built Emacs.
|
|||||||
|
|
||||||
* General runtime problems
|
* 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
|
** Lisp problems
|
||||||
|
|
||||||
*** Changes made to .el files do not take effect.
|
*** Changes made to .el files do not take effect.
|
||||||
|
3205
etc/publicsuffix.txt
3205
etc/publicsuffix.txt
File diff suppressed because it is too large
Load Diff
@ -498,7 +498,6 @@ \section{Tagy}
|
|||||||
|
|
||||||
\metax{vyhledat reg.\ výraz v~souborech s~tagy}{M-x tags-search}
|
\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}
|
\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}
|
\section{Příkazový interpret}
|
||||||
|
|
||||||
|
@ -255,10 +255,9 @@ \section{Značky (tags)}
|
|||||||
příkaz `{\tt etags} {\it vstupní\_soubory}' v příkazovém interpretu.
|
příkaz `{\tt etags} {\it vstupní\_soubory}' v příkazovém interpretu.
|
||||||
\askip
|
\askip
|
||||||
\key{M-.} najdi definici
|
\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
|
\mkey{M-x tags-query-replace} spusť query-replace na všech souborech
|
||||||
zaznamenaných v tabulce značek.
|
zaznamenaných v tabulce značek.
|
||||||
\key{M-,} pokračuj v posledním hledání značky nebo query-replace
|
|
||||||
|
|
||||||
\section{Překlady}
|
\section{Překlady}
|
||||||
|
|
||||||
|
@ -499,7 +499,6 @@ \section{Tags}
|
|||||||
|
|
||||||
\metax{regul\"aren Ausdruck in Dateien suchen}{M-x tags-search}
|
\metax{regul\"aren Ausdruck in Dateien suchen}{M-x tags-search}
|
||||||
\metax{interakt. Ersetzen in allen Dateien}{M-x tags-query-replace}
|
\metax{interakt. Ersetzen in allen Dateien}{M-x tags-query-replace}
|
||||||
\key{letztes Suchen oder Ersetzen fortsetzen}{M-,}
|
|
||||||
|
|
||||||
\section{Shells}
|
\section{Shells}
|
||||||
|
|
||||||
|
@ -503,7 +503,6 @@ \section{Tags}
|
|||||||
\metax{Rechercher dans tous les fichiers des tags}{M-x tags-search}
|
\metax{Rechercher dans tous les fichiers des tags}{M-x tags-search}
|
||||||
|
|
||||||
\metax{Remplacer dans tous les fichiers}{M-x tags-query-replace}
|
\metax{Remplacer dans tous les fichiers}{M-x tags-query-replace}
|
||||||
\key{Continuer la recherche ou le remplacement}{M-,}
|
|
||||||
|
|
||||||
\section{Shell}
|
\section{Shell}
|
||||||
|
|
||||||
|
@ -251,11 +251,9 @@ \section{Marqueurs}
|
|||||||
tel fichier, tapez `{\tt etags} {\it fichier\_entr\'ee}' \`a l'invite du shell.
|
tel fichier, tapez `{\tt etags} {\it fichier\_entr\'ee}' \`a l'invite du shell.
|
||||||
\askip
|
\askip
|
||||||
\key{M-.} trouve une d\'efinition
|
\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
|
\mkey{M-x tags-query-replace} lance query-replace sur tous les
|
||||||
fichiers enregistr\'es dans le tableau des marqueurs
|
fichiers enregistr\'es dans le tableau des marqueurs
|
||||||
\key{M-,} continue la derni\`ere recherche de marqueurs ou le dernier
|
|
||||||
query-replace
|
|
||||||
|
|
||||||
\section{Compilation}
|
\section{Compilation}
|
||||||
|
|
||||||
|
@ -701,8 +701,6 @@ \section{Tags}
|
|||||||
we wszystkich plikach wymienionych w~TAGS}{M-x tags-search}
|
we wszystkich plikach wymienionych w~TAGS}{M-x tags-search}
|
||||||
\metax{zamiana z zapytaniem we wszystkich\newline
|
\metax{zamiana z zapytaniem we wszystkich\newline
|
||||||
plikach wymienionych w~TAGS}{M-x tags-query-replace}
|
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{Shells}
|
||||||
\section{Pow/loki}
|
\section{Pow/loki}
|
||||||
|
@ -508,7 +508,6 @@ \section{Tags}
|
|||||||
|
|
||||||
\metax{busca por regexp em todos arquivos}{M-x tags-search}
|
\metax{busca por regexp em todos arquivos}{M-x tags-search}
|
||||||
\metax{busca e subst. em todos arquivos}{M-x tags-query-replace}
|
\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}
|
\section{Shells}
|
||||||
|
|
||||||
|
@ -515,7 +515,6 @@ \section{Tags}
|
|||||||
|
|
||||||
\metax{regexp search on all files in tags table}{M-x tags-search}
|
\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}
|
\metax{run query-replace on all the files}{M-x tags-query-replace}
|
||||||
\key{continue last tags search or query-replace}{M-,}
|
|
||||||
|
|
||||||
\section{Shells}
|
\section{Shells}
|
||||||
|
|
||||||
|
@ -344,7 +344,6 @@ \section{Теги}
|
|||||||
|
|
||||||
поиск по шаблону по всей таблице тегов & \kbd{M-x tags-search} \\
|
поиск по шаблону по всей таблице тегов & \kbd{M-x tags-search} \\
|
||||||
выполнить query-replace над всеми файлами & \kbd{M-x tags-query-replace} \\
|
выполнить query-replace над всеми файлами & \kbd{M-x tags-query-replace} \\
|
||||||
продолжить поиск или поиск-замену тега & \kbd{M-,} \\
|
|
||||||
\end{tabular}
|
\end{tabular}
|
||||||
|
|
||||||
\section{Командные процессоры}
|
\section{Командные процессоры}
|
||||||
|
@ -498,7 +498,6 @@ \section{Tagy}
|
|||||||
|
|
||||||
\metax{vyhľadať reg.\ výraz v~súboroch s~tagmi}{M-x tags-search}
|
\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}
|
\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}
|
\section{Príkazový interprét}
|
||||||
|
|
||||||
|
@ -258,10 +258,9 @@ \section{Značky (tags)}
|
|||||||
príkaz `{\tt etags} {\it vstupné\_súbory}' v príkazovom interprétereri.
|
príkaz `{\tt etags} {\it vstupné\_súbory}' v príkazovom interprétereri.
|
||||||
\askip
|
\askip
|
||||||
\key{M-.} nájdi definícu
|
\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
|
\mkey{M-x tags-query-replace} spusti query-replace na všetkých súboroch
|
||||||
zaznamenaných v tabuľke značiek.
|
zaznamenaných v tabuľke značiek.
|
||||||
\key{M-,} pokračuj v poslednom hľadaní značky alebo query-replace
|
|
||||||
|
|
||||||
\section{Preklady}
|
\section{Preklady}
|
||||||
|
|
||||||
|
@ -243,10 +243,9 @@ \section{Tags}
|
|||||||
`{\tt etags} {\it input\_files}' as a shell command.
|
`{\tt etags} {\it input\_files}' as a shell command.
|
||||||
\askip
|
\askip
|
||||||
\key{M-.} find a definition
|
\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
|
\mkey{M-x tags-query-replace} run query-replace on all files
|
||||||
recorded in tags table
|
recorded in tags table
|
||||||
\key{M-,} continue last tags search or query-replace
|
|
||||||
|
|
||||||
\section{Compiling}
|
\section{Compiling}
|
||||||
|
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
이맥스(Emacs) 지침서입니다.
|
이맥스(Emacs) 지침서입니다. 끝에는 복사 조건이 있습니다.
|
||||||
끝에는 복사 조건이
|
지금 읽고 있는 이 글은 이맥스(Emacs) 지침서입니다.
|
||||||
있습니다. 지금 읽고 있는 이 글은 이맥스(Emacs) 지침서입니다.
|
|
||||||
|
|
||||||
이맥스 명령들은 대개 제어쇠 (CTRL이나 CTL이라고도 표시) 혹은
|
이맥스 명령들은 대개 제어쇠 (CTRL이나 CTL이라고도 표시) 혹은
|
||||||
META쇠 (EDIT이나 ALT라고도 표시)를 사용합니다. 이런 글쇠를 매번 다
|
META쇠 (EDIT이나 ALT라고도 표시)를 사용합니다. 이런 글쇠를 매번 다
|
||||||
|
@ -46,9 +46,7 @@
|
|||||||
|
|
||||||
(ert-deftest feature-harfbuzz ()
|
(ert-deftest feature-harfbuzz ()
|
||||||
(should
|
(should
|
||||||
(eq
|
(eq 'harfbuzz (get 'uniscribe 'font-driver-superseded-by))))
|
||||||
'harfbuzz
|
|
||||||
(car (frame-parameter nil 'font-backend)))))
|
|
||||||
|
|
||||||
(ert-deftest feature-gnutls ()
|
(ert-deftest feature-gnutls ()
|
||||||
(should (gnutls-available-p)))
|
(should (gnutls-available-p)))
|
||||||
|
@ -274,6 +274,7 @@ a list of settings in the form (VARIABLE . VALUE)."
|
|||||||
(repeat
|
(repeat
|
||||||
(choice symbol
|
(choice symbol
|
||||||
(cons symbol integer)))))
|
(cons symbol integer)))))
|
||||||
|
:version "30.1"
|
||||||
:risky t)
|
:risky t)
|
||||||
|
|
||||||
(defcustom editorconfig-trim-whitespaces-mode nil
|
(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.
|
If set, enable that mode when `trim_trailing_whitespace` is set to true.
|
||||||
Otherwise, use `delete-trailing-whitespace'."
|
Otherwise, use `delete-trailing-whitespace'."
|
||||||
|
:version "30.1"
|
||||||
:type 'symbol)
|
:type 'symbol)
|
||||||
|
|
||||||
(defvar-local editorconfig-properties-hash nil
|
(defvar-local editorconfig-properties-hash nil
|
||||||
|
@ -571,7 +571,7 @@ If this is set to nil, never try to reconnect."
|
|||||||
(integer :tag "Seconds")))
|
(integer :tag "Seconds")))
|
||||||
|
|
||||||
(defvar-local erc-server-ping-handler nil
|
(defvar-local erc-server-ping-handler nil
|
||||||
"This variable holds the periodic ping timer.")
|
"The periodic server ping timer.")
|
||||||
|
|
||||||
;;;; Helper functions
|
;;;; Helper functions
|
||||||
|
|
||||||
|
@ -360,13 +360,13 @@ The result is converted to lowercase, as IRC is case-insensitive."
|
|||||||
erc-log-channels-directory)))))
|
erc-log-channels-directory)))))
|
||||||
|
|
||||||
(defun erc-generate-log-file-name-with-date (buffer &rest _ignore)
|
(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.
|
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'."
|
This function is a possible value for `erc-generate-log-file-name-function'."
|
||||||
(concat (buffer-name buffer) "-" (format-time-string "%Y-%m-%d") ".txt"))
|
(concat (buffer-name buffer) "-" (format-time-string "%Y-%m-%d") ".txt"))
|
||||||
|
|
||||||
(defun erc-generate-log-file-name-short (buffer &rest _ignore)
|
(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
|
In fact, it only uses the buffer name of the BUFFER argument, so
|
||||||
you can affect that using `rename-buffer' and the-like. This
|
you can affect that using `rename-buffer' and the-like. This
|
||||||
function is a possible value for
|
function is a possible value for
|
||||||
|
@ -140,7 +140,7 @@ This setting is used by `erc-track-shorten-names'."
|
|||||||
(const :tag "Max" max)))
|
(const :tag "Max" max)))
|
||||||
|
|
||||||
(defcustom erc-track-shorten-function 'erc-track-shorten-names
|
(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 takes one argument, CHANNEL-NAMES which is a list of strings.
|
||||||
It should return a list of strings of the same number of elements.
|
It should return a list of strings of the same number of elements.
|
||||||
If nil instead of a function, shortening is disabled."
|
If nil instead of a function, shortening is disabled."
|
||||||
|
@ -150,7 +150,8 @@ to writing a completion function."
|
|||||||
|
|
||||||
(defcustom eshell-cmpl-remote-file-ignore nil
|
(defcustom eshell-cmpl-remote-file-ignore nil
|
||||||
(eshell-cmpl--custom-variable-docstring 'pcomplete-remote-file-ignore)
|
(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)
|
(defcustom eshell-cmpl-ignore-case (eshell-under-windows-p)
|
||||||
(eshell-cmpl--custom-variable-docstring 'completion-ignore-case)
|
(eshell-cmpl--custom-variable-docstring 'completion-ignore-case)
|
||||||
|
@ -150,7 +150,7 @@ buffer using \\[end-of-buffer]."
|
|||||||
:group 'eshell-smart)
|
:group 'eshell-smart)
|
||||||
|
|
||||||
(defcustom eshell-where-to-jump 'begin
|
(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'."
|
The options are `begin', `after' or `end'."
|
||||||
:type '(radio (const :tag "Beginning of command" begin)
|
:type '(radio (const :tag "Beginning of command" begin)
|
||||||
(const :tag "After command word" after)
|
(const :tag "After command word" after)
|
||||||
|
@ -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
|
commands on your local host by using the \"/local:\" prefix, like
|
||||||
\"/local:whoami\"."
|
\"/local:whoami\"."
|
||||||
:type 'boolean
|
:type 'boolean
|
||||||
|
:version "30.1"
|
||||||
:group 'eshell-ext)
|
:group 'eshell-ext)
|
||||||
|
|
||||||
;;; Functions:
|
;;; Functions:
|
||||||
|
@ -537,7 +537,7 @@ Putting this function on `eshell-pre-command-hook' will mimic Plan 9's
|
|||||||
(eshell-interactive-output-filter nil string)))
|
(eshell-interactive-output-filter nil string)))
|
||||||
|
|
||||||
(defsubst eshell-begin-on-new-line ()
|
(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
|
(save-excursion
|
||||||
(goto-char eshell-last-output-end)
|
(goto-char eshell-last-output-end)
|
||||||
(or (bolp)
|
(or (bolp)
|
||||||
|
@ -512,7 +512,7 @@ might have."
|
|||||||
:type 'boolean)
|
:type 'boolean)
|
||||||
|
|
||||||
(defcustom gnus-prompt-before-saving 'always
|
(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
|
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
|
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
|
every article that is saved will be preceded by a prompt, even when
|
||||||
|
@ -64,6 +64,7 @@
|
|||||||
|
|
||||||
(defcustom nnfeed-date-format "%F %X%p"
|
(defcustom nnfeed-date-format "%F %X%p"
|
||||||
"Format of displayed dates (see function `format-time-string')."
|
"Format of displayed dates (see function `format-time-string')."
|
||||||
|
:version "30.1"
|
||||||
:type 'string)
|
:type 'string)
|
||||||
|
|
||||||
(nnoo-declare nnfeed)
|
(nnoo-declare nnfeed)
|
||||||
|
@ -236,7 +236,7 @@ See the variable `sc-cite-frame-alist' for details."
|
|||||||
:group 'supercite-frames)
|
:group 'supercite-frames)
|
||||||
|
|
||||||
(defcustom sc-cite-region-limit t
|
(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:
|
Valid values are:
|
||||||
|
|
||||||
non-nil -- cite the entire region, regardless of its size
|
non-nil -- cite the entire region, regardless of its size
|
||||||
|
@ -5039,9 +5039,9 @@ contents."
|
|||||||
(error (minibuffer-complete-and-exit))))
|
(error (minibuffer-complete-and-exit))))
|
||||||
|
|
||||||
(defun minibuffer-complete-history ()
|
(defun minibuffer-complete-history ()
|
||||||
"Complete the minibuffer history as far as possible.
|
"Complete as far as possible using the minibuffer history.
|
||||||
Like `minibuffer-complete' but completes on the history items
|
Like `minibuffer-complete' but completes using the history of minibuffer
|
||||||
instead of the default completion table."
|
inputs for the prompting command, instead of the default completion table."
|
||||||
(interactive)
|
(interactive)
|
||||||
(let* ((history (symbol-value minibuffer-history-variable))
|
(let* ((history (symbol-value minibuffer-history-variable))
|
||||||
(completions
|
(completions
|
||||||
@ -5062,9 +5062,9 @@ instead of the default completion table."
|
|||||||
(cycle-sort-function . identity)))))))
|
(cycle-sort-function . identity)))))))
|
||||||
|
|
||||||
(defun minibuffer-complete-defaults ()
|
(defun minibuffer-complete-defaults ()
|
||||||
"Complete minibuffer defaults as far as possible.
|
"Complete as far as possible using the minibuffer defaults.
|
||||||
Like `minibuffer-complete' but completes on the default items
|
Like `minibuffer-complete' but completes using the default items
|
||||||
instead of the completion table."
|
provided by the prompting command, instead of the completion table."
|
||||||
(interactive)
|
(interactive)
|
||||||
(when (and (not minibuffer-default-add-done)
|
(when (and (not minibuffer-default-add-done)
|
||||||
(functionp minibuffer-default-add-function))
|
(functionp minibuffer-default-add-function))
|
||||||
|
@ -96,6 +96,7 @@ retrieval interval (or the global `newsticker-retrieval-interval`) is
|
|||||||
recommended."
|
recommended."
|
||||||
:type 'number
|
:type 'number
|
||||||
:set #'newsticker--set-customvar-ticker
|
:set #'newsticker--set-customvar-ticker
|
||||||
|
:version "30.1"
|
||||||
:group 'newsticker-ticker)
|
:group 'newsticker-ticker)
|
||||||
|
|
||||||
(defcustom newsticker-scroll-smoothly
|
(defcustom newsticker-scroll-smoothly
|
||||||
|
@ -154,17 +154,16 @@ If WARN-UNENCRYPTED, query the user if the connection is unencrypted."
|
|||||||
(dhe-kx high)
|
(dhe-kx high)
|
||||||
(rsa-kx high)
|
(rsa-kx high)
|
||||||
(cbc-cipher high))
|
(cbc-cipher high))
|
||||||
"This variable specifies what TLS connection checks to perform.
|
"Alist of TLS connection checks to perform.
|
||||||
It's an alist where the key is the name of the check, and the
|
The key is the name of the check, and the value is the minimum security
|
||||||
value is the minimum security level the check should begin.
|
level the check should begin.
|
||||||
|
|
||||||
Each check function is called with the parameters HOST PORT
|
Each check function is called with the parameters HOST PORT STATUS
|
||||||
STATUS SETTINGS. HOST is the host domain, PORT is a TCP port
|
SETTINGS. HOST is the host domain, PORT is a TCP port number, STATUS is
|
||||||
number, STATUS is the peer status returned by
|
the peer status returned by `gnutls-peer-status', and SETTINGS is the
|
||||||
`gnutls-peer-status', and SETTINGS is the persistent and session
|
persistent and session settings for the host HOST. Please refer to the
|
||||||
settings for the host HOST. Please refer to the contents of
|
contents of `nsm-settings-file' for details. If a problem is found, the
|
||||||
`nsm-settings-file' for details. If a problem is found, the check
|
check function is required to return an error message, and nil
|
||||||
function is required to return an error message, and nil
|
|
||||||
otherwise.
|
otherwise.
|
||||||
|
|
||||||
See also: `nsm-check-tls-connection', `nsm-save-host-names',
|
See also: `nsm-check-tls-connection', `nsm-save-host-names',
|
||||||
|
@ -7259,7 +7259,7 @@ that range. See `after-change-functions' for more information."
|
|||||||
#'org-element--cache-after-change -1 t)))
|
#'org-element--cache-after-change -1 t)))
|
||||||
|
|
||||||
(defvar org-element--cache-avoid-synchronous-headline-re-parsing nil
|
(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
|
By default (when this variable is nil), cache re-parses modified
|
||||||
headlines immediately after modification preserving all the unaffected
|
headlines immediately after modification preserving all the unaffected
|
||||||
|
@ -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
|
non-nil, e.g. C, C++, Objective C. It covers languages where
|
||||||
\"$\" is permitted in ids \"informally\", but only by some compilers."
|
\"$\" is permitted in ids \"informally\", but only by some compilers."
|
||||||
:type 'boolean
|
:type 'boolean
|
||||||
|
:version "30.1"
|
||||||
:group 'c)
|
:group 'c)
|
||||||
|
|
||||||
(defcustom-c-stylevar c-basic-offset 4
|
(defcustom-c-stylevar c-basic-offset 4
|
||||||
|
@ -583,6 +583,7 @@ AutoSplit. If \"comment\", treat as comment, and do not look for
|
|||||||
imenu entries."
|
imenu entries."
|
||||||
:type '(choice (const perl-code)
|
:type '(choice (const perl-code)
|
||||||
(const comment))
|
(const comment))
|
||||||
|
:version "30.1"
|
||||||
:group 'cperl-faces)
|
:group 'cperl-faces)
|
||||||
|
|
||||||
(defcustom cperl-ps-print-face-properties
|
(defcustom cperl-ps-print-face-properties
|
||||||
|
@ -182,6 +182,13 @@
|
|||||||
:prefix "eglot-"
|
:prefix "eglot-"
|
||||||
:group 'tools)
|
: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)
|
(defun eglot-alternatives (alternatives)
|
||||||
"Compute server-choosing function for `eglot-server-programs'.
|
"Compute server-choosing function for `eglot-server-programs'.
|
||||||
Each element of ALTERNATIVES is a string PROGRAM or a list of
|
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
|
(choice
|
||||||
(const :tag "Full with original JSON" full)
|
(const :tag "Full with original JSON" full)
|
||||||
(const :tag "Shortened" short)
|
(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)
|
(defcustom eglot-confirm-server-edits '((eglot-rename . nil)
|
||||||
(t . maybe-summary))
|
(t . maybe-summary))
|
||||||
@ -506,7 +514,8 @@ ACTION is the default value for commands not in the alist."
|
|||||||
(alist :tag "Per-command alist"
|
(alist :tag "Per-command alist"
|
||||||
:key-type (choice (function :tag "Command")
|
:key-type (choice (function :tag "Command")
|
||||||
(const :tag "Default" t))
|
(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
|
(defcustom eglot-extend-to-xref nil
|
||||||
"If non-nil, activate Eglot in cross-referenced non-project files."
|
"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
|
(defcustom eglot-prefer-plaintext nil
|
||||||
"If non-nil, always request plaintext responses to hover requests."
|
"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"
|
(defcustom eglot-menu-string "eglot"
|
||||||
"String displayed in mode line when Eglot is active."
|
"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)
|
:type '(choice (const :tag "Don't show progress" nil)
|
||||||
(const :tag "Show progress in *Messages*" messages)
|
(const :tag "Show progress in *Messages*" messages)
|
||||||
(const :tag "Show progress in Eglot's mode line indicator" t))
|
(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)
|
(defcustom eglot-ignored-server-capabilities (list)
|
||||||
"LSP server capabilities that Eglot could use, but won't.
|
"LSP server capabilities that Eglot could use, but won't.
|
||||||
|
@ -475,7 +475,8 @@
|
|||||||
|
|
||||||
:language 'elixir
|
:language 'elixir
|
||||||
:feature 'elixir-data-type
|
: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))
|
(keywords (pair key: (keyword) @elixir-ts-keyword-key))
|
||||||
[(keyword) (quoted_keyword)] @elixir-ts-atom
|
[(keyword) (quoted_keyword)] @elixir-ts-atom
|
||||||
[(boolean) (nil)] @elixir-ts-atom
|
[(boolean) (nil)] @elixir-ts-atom
|
||||||
@ -540,6 +541,10 @@
|
|||||||
(unary_operator operand: (identifier) @font-lock-variable-use-face)
|
(unary_operator operand: (identifier) @font-lock-variable-use-face)
|
||||||
(interpolation (identifier) @font-lock-variable-use-face)
|
(interpolation (identifier) @font-lock-variable-use-face)
|
||||||
(do_block (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 target: (identifier) @font-lock-variable-use-face)
|
||||||
(access_call "[" key: (identifier) @font-lock-variable-use-face "]"))
|
(access_call "[" key: (identifier) @font-lock-variable-use-face "]"))
|
||||||
|
|
||||||
|
@ -128,6 +128,11 @@
|
|||||||
:link '(custom-manual "(flymake) Top")
|
:link '(custom-manual "(flymake) Top")
|
||||||
:group 'tools)
|
: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
|
(defcustom flymake-error-bitmap '(flymake-double-exclamation-mark
|
||||||
compilation-error)
|
compilation-error)
|
||||||
"Bitmap (a symbol) used in the fringe for indicating errors.
|
"Bitmap (a symbol) used in the fringe for indicating errors.
|
||||||
|
@ -281,7 +281,7 @@ values of OVERRIDE."
|
|||||||
lua-ts--multi-line-comment-start
|
lua-ts--multi-line-comment-start
|
||||||
(parent-is "comment_content")
|
(parent-is "comment_content")
|
||||||
(parent-is "string_content")
|
(parent-is "string_content")
|
||||||
(node-is "]]"))
|
(or (node-is "]]") (node-is "comment_end")))
|
||||||
no-indent 0)
|
no-indent 0)
|
||||||
((and (n-p-gp "field" "table_constructor" "arguments")
|
((and (n-p-gp "field" "table_constructor" "arguments")
|
||||||
lua-ts--multi-arg-function-call-matcher
|
lua-ts--multi-arg-function-call-matcher
|
||||||
|
@ -97,7 +97,7 @@
|
|||||||
"C-c C-c" #'m2-compile)
|
"C-c C-c" #'m2-compile)
|
||||||
|
|
||||||
(defcustom m2-indent 5
|
(defcustom m2-indent 5
|
||||||
"This variable gives the indentation in Modula-2 mode."
|
"Indentation in Modula-2 mode."
|
||||||
:type 'integer
|
:type 'integer
|
||||||
:safe (lambda (v) (or (null v) (integerp v))))
|
:safe (lambda (v) (or (null v) (integerp v))))
|
||||||
|
|
||||||
|
@ -2584,6 +2584,7 @@ the gem \"rubocop\". When t, it is used unconditionally."
|
|||||||
:type '(choice (const :tag "Always" t)
|
:type '(choice (const :tag "Always" t)
|
||||||
(const :tag "No" nil)
|
(const :tag "No" nil)
|
||||||
(const :tag "If rubocop is in Gemfile" check))
|
(const :tag "If rubocop is in Gemfile" check))
|
||||||
|
:version "30.1"
|
||||||
:safe 'booleanp)
|
:safe 'booleanp)
|
||||||
|
|
||||||
(defun ruby-flymake-rubocop (report-fn &rest _args)
|
(defun ruby-flymake-rubocop (report-fn &rest _args)
|
||||||
|
@ -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
|
(defcustom verilog-indent-ignore-multiline-defines t
|
||||||
"Non-nil means ignore indentation on lines that are part of a multiline define."
|
"Non-nil means ignore indentation on lines that are part of a multiline define."
|
||||||
:group 'verilog-mode-indent
|
:group 'verilog-mode-indent
|
||||||
|
:version "30.1"
|
||||||
:type 'boolean)
|
:type 'boolean)
|
||||||
(put 'verilog-indent-ignore-multiline-defines 'safe-local-variable #'verilog-booleanp)
|
(put 'verilog-indent-ignore-multiline-defines 'safe-local-variable #'verilog-booleanp)
|
||||||
|
|
||||||
(defcustom verilog-indent-ignore-regexp nil
|
(defcustom verilog-indent-ignore-regexp nil
|
||||||
"Regexp that matches lines that should be ignored for indentation."
|
"Regexp that matches lines that should be ignored for indentation."
|
||||||
:group 'verilog-mode-indent
|
:group 'verilog-mode-indent
|
||||||
|
:version "30.1"
|
||||||
:type 'boolean)
|
:type 'boolean)
|
||||||
(put 'verilog-indent-ignore-regexp 'safe-local-variable #'stringp)
|
(put 'verilog-indent-ignore-regexp 'safe-local-variable #'stringp)
|
||||||
|
|
||||||
@ -748,6 +750,7 @@ Otherwise, line them up."
|
|||||||
"Non-nil means indent classes inside packages.
|
"Non-nil means indent classes inside packages.
|
||||||
Otherwise, classes have zero indentation."
|
Otherwise, classes have zero indentation."
|
||||||
:group 'verilog-mode-indent
|
:group 'verilog-mode-indent
|
||||||
|
:version "30.1"
|
||||||
:type 'boolean)
|
:type 'boolean)
|
||||||
(put 'verilog-indent-class-inside-pkg 'safe-local-variable #'verilog-booleanp)
|
(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
|
(defcustom verilog-align-decl-expr-comments t
|
||||||
"Non-nil means align declaration and expressions comments."
|
"Non-nil means align declaration and expressions comments."
|
||||||
:group 'verilog-mode-indent
|
:group 'verilog-mode-indent
|
||||||
|
:version "30.1"
|
||||||
:type 'boolean)
|
:type 'boolean)
|
||||||
(put 'verilog-align-decl-expr-comments 'safe-local-variable #'verilog-booleanp)
|
(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.
|
"Distance (in spaces) between longest declaration/expression and comments.
|
||||||
Only works if `verilog-align-decl-expr-comments' is non-nil."
|
Only works if `verilog-align-decl-expr-comments' is non-nil."
|
||||||
:group 'verilog-mode-indent
|
:group 'verilog-mode-indent
|
||||||
|
:version "30.1"
|
||||||
:type 'integer)
|
:type 'integer)
|
||||||
(put 'verilog-align-comment-distance 'safe-local-variable #'integerp)
|
(put 'verilog-align-comment-distance 'safe-local-variable #'integerp)
|
||||||
|
|
||||||
(defcustom verilog-align-assign-expr nil
|
(defcustom verilog-align-assign-expr nil
|
||||||
"Non-nil means align expressions of continuous assignments."
|
"Non-nil means align expressions of continuous assignments."
|
||||||
:group 'verilog-mode-indent
|
:group 'verilog-mode-indent
|
||||||
|
:version "30.1"
|
||||||
:type 'boolean)
|
:type 'boolean)
|
||||||
(put 'verilog-align-assign-expr 'safe-local-variable #'verilog-booleanp)
|
(put 'verilog-align-assign-expr 'safe-local-variable #'verilog-booleanp)
|
||||||
|
|
||||||
(defcustom verilog-align-typedef-regexp nil
|
(defcustom verilog-align-typedef-regexp nil
|
||||||
"Regexp that matches user typedefs for declaration alignment."
|
"Regexp that matches user typedefs for declaration alignment."
|
||||||
:group 'verilog-mode-indent
|
:group 'verilog-mode-indent
|
||||||
|
:version "30.1"
|
||||||
:type '(choice (regexp :tag "Regexp")
|
:type '(choice (regexp :tag "Regexp")
|
||||||
(const :tag "None" nil)))
|
(const :tag "None" nil)))
|
||||||
(put 'verilog-align-typedef-regexp 'safe-local-variable #'stringp)
|
(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
|
(defcustom verilog-align-typedef-words nil
|
||||||
"List of words that match user typedefs for declaration alignment."
|
"List of words that match user typedefs for declaration alignment."
|
||||||
:group 'verilog-mode-indent
|
:group 'verilog-mode-indent
|
||||||
|
:version "30.1"
|
||||||
:type '(repeat string))
|
:type '(repeat string))
|
||||||
(put 'verilog-align-typedef-words 'safe-local-variable #'listp)
|
(put 'verilog-align-typedef-words 'safe-local-variable #'listp)
|
||||||
|
|
||||||
@ -939,6 +947,7 @@ always be saved."
|
|||||||
(defcustom verilog-fontify-variables t
|
(defcustom verilog-fontify-variables t
|
||||||
"Non-nil means fontify declaration variables."
|
"Non-nil means fontify declaration variables."
|
||||||
:group 'verilog-mode-actions
|
:group 'verilog-mode-actions
|
||||||
|
:version "30.1"
|
||||||
:type 'boolean)
|
:type 'boolean)
|
||||||
(put 'verilog-fontify-variables 'safe-local-variable #'verilog-booleanp)
|
(put 'verilog-fontify-variables 'safe-local-variable #'verilog-booleanp)
|
||||||
|
|
||||||
|
@ -55,8 +55,8 @@
|
|||||||
"The tail of the Scheme expressions ring whose car is the last thing yanked.")
|
"The tail of the Scheme expressions ring whose car is the last thing yanked.")
|
||||||
|
|
||||||
(defvar-local xscheme-running-p nil
|
(defvar-local xscheme-running-p nil
|
||||||
"This variable, if nil, indicates that the scheme process is
|
"If nil, the scheme process is waiting for input.
|
||||||
waiting for input. Otherwise, it is busy evaluating something.")
|
Otherwise, it is busy evaluating something.")
|
||||||
|
|
||||||
(defconst xscheme-control-g-synchronization-p t
|
(defconst xscheme-control-g-synchronization-p t
|
||||||
"If non-nil, insert markers in the scheme input stream to indicate when
|
"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.")
|
signaled until the scheme process acknowledges receipt.")
|
||||||
|
|
||||||
(defvar-local xscheme-control-g-disabled-p nil
|
(defvar-local xscheme-control-g-disabled-p nil
|
||||||
"This variable, if non-nil, indicates that a control-g is being processed
|
"If non-nil, a control-g is being processed by the scheme process, so
|
||||||
by the scheme process, so additional control-g's are to be ignored.")
|
additional control-g's are to be ignored.")
|
||||||
|
|
||||||
(defvar xscheme-string-receiver nil
|
(defvar xscheme-string-receiver nil
|
||||||
"Procedure to send the string argument from the scheme process.")
|
"Procedure to send the string argument from the scheme process.")
|
||||||
|
@ -422,7 +422,8 @@ Format of each entry is controlled by the variable `register-preview-function'."
|
|||||||
(window-height . fit-window-to-buffer)
|
(window-height . fit-window-to-buffer)
|
||||||
(preserve-size . (nil . t)))
|
(preserve-size . (nil . t)))
|
||||||
"Window configuration for the register preview buffer."
|
"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)
|
(defun register-preview-1 (buffer &optional show-empty types)
|
||||||
"Pop up a window showing the preview of registers in BUFFER.
|
"Pop up a window showing the preview of registers in BUFFER.
|
||||||
|
@ -165,6 +165,7 @@ List of factors, used to expand/compress the time scale. See `vc-annotate'."
|
|||||||
(defcustom vc-annotate-use-short-revision t
|
(defcustom vc-annotate-use-short-revision t
|
||||||
"If non-nil, \\[vc-annotate] will use short revisions in its buffer name."
|
"If non-nil, \\[vc-annotate] will use short revisions in its buffer name."
|
||||||
:type 'boolean
|
:type 'boolean
|
||||||
|
:version "30.1"
|
||||||
:group 'vc)
|
:group 'vc)
|
||||||
|
|
||||||
(defvar-keymap vc-annotate-mode-map
|
(defvar-keymap vc-annotate-mode-map
|
||||||
|
@ -1220,7 +1220,7 @@ total height."
|
|||||||
;;; Show/hide which-key buffer
|
;;; Show/hide which-key buffer
|
||||||
|
|
||||||
(defun which-key--hide-popup ()
|
(defun which-key--hide-popup ()
|
||||||
"Hide the `which-key' buffer."
|
"Hide the which-key buffer."
|
||||||
(unless (or which-key-persistent-popup
|
(unless (or which-key-persistent-popup
|
||||||
(member real-this-command which-key--paging-functions))
|
(member real-this-command which-key--paging-functions))
|
||||||
(setq which-key--last-try-2-loc nil)
|
(setq which-key--last-try-2-loc nil)
|
||||||
|
@ -1297,6 +1297,11 @@ barf_if_interaction_inhibited (void)
|
|||||||
DEFUN ("read-from-minibuffer", Fread_from_minibuffer,
|
DEFUN ("read-from-minibuffer", Fread_from_minibuffer,
|
||||||
Sread_from_minibuffer, 1, 7, 0,
|
Sread_from_minibuffer, 1, 7, 0,
|
||||||
doc: /* Read a string from the minibuffer, prompting with string PROMPT.
|
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
|
The optional second arg INITIAL-CONTENTS is an obsolete alternative to
|
||||||
DEFAULT-VALUE. It normally should be nil in new code, except when
|
DEFAULT-VALUE. It normally should be nil in new code, except when
|
||||||
HIST is a cons. It is discussed in more detail below.
|
HIST is a cons. It is discussed in more detail below.
|
||||||
|
Loading…
Reference in New Issue
Block a user