mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-02 11:21:42 +00:00
Merge from origin/emacs-30
2ba6387d1d
; Fix inaccuracy in ELisp Reference 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")
|
||||
(electric-quote-comment . nil)
|
||||
(electric-quote-string . nil)
|
||||
(indent-tabs-mode . t)
|
||||
(mode . bug-reference-prog)))
|
||||
(c-ts-mode . ((c-ts-mode-indent-style . gnu))) ;Inherits `c-mode' settings.
|
||||
(log-edit-mode . ((log-edit-font-lock-gnu-style . t)
|
||||
|
@ -20,41 +20,56 @@
|
||||
import os
|
||||
import shutil
|
||||
import re
|
||||
import functools
|
||||
import operator
|
||||
import subprocess
|
||||
|
||||
from subprocess import check_output
|
||||
|
||||
## Constants
|
||||
EMACS_MAJOR_VERSION="28"
|
||||
EMACS_MAJOR_VERSION= os.getenv('EMACS_MAJOR_VERSION') or "30"
|
||||
|
||||
# This list derives from the features we want Emacs to compile with.
|
||||
# Base URI for the package sources mapped in PKG_REQ
|
||||
SRC_REPO="https://repo.msys2.org/mingw/sources"
|
||||
|
||||
# Map items in `dynamic-library-alist' to source pakages
|
||||
PKG_REQ='''mingw-w64-x86_64-giflib
|
||||
mingw-w64-x86_64-gnutls
|
||||
mingw-w64-x86_64-harfbuzz
|
||||
mingw-w64-x86_64-jansson
|
||||
mingw-w64-x86_64-lcms2
|
||||
mingw-w64-x86_64-libjpeg-turbo
|
||||
mingw-w64-x86_64-libpng
|
||||
mingw-w64-x86_64-librsvg
|
||||
mingw-w64-x86_64-libwebp
|
||||
mingw-w64-x86_64-libtiff
|
||||
mingw-w64-x86_64-libxml2
|
||||
mingw-w64-x86_64-xpm-nox'''.split()
|
||||
mingw-w64-x86_64-gmp
|
||||
mingw-w64-x86_64-xpm-nox
|
||||
mingw-w64-x86_64-tree-sitter
|
||||
mingw-w64-x86_64-sqlite3'''.split()
|
||||
|
||||
DLL_REQ='''libgif
|
||||
libgnutls
|
||||
libharfbuzz
|
||||
liblcms2
|
||||
libturbojpeg
|
||||
libpng
|
||||
librsvg
|
||||
libtiff
|
||||
libxml
|
||||
libXpm'''.split()
|
||||
# Emacs style path to dependancy DLLs on build system
|
||||
DLL_SRC="c:/msys64/mingw64/bin"
|
||||
|
||||
# libraries we never include
|
||||
DLL_SKIP=["libgccjit-0.dll"]
|
||||
|
||||
# Report first existing file for entries in dynamic-library-alist
|
||||
# ELISP_PROG="""
|
||||
# (message "%s" (mapconcat 'identity (remove nil
|
||||
# (mapcar (lambda(lib)
|
||||
# (seq-find
|
||||
# (lambda(file)
|
||||
# (file-exists-p
|
||||
# (file-name-concat "{}"
|
||||
# file)))
|
||||
# (cdr lib)))
|
||||
# dynamic-library-alist)
|
||||
# ) "\\n"))
|
||||
# """.format(DLL_SRC)
|
||||
|
||||
## Options
|
||||
DRY_RUN=False
|
||||
|
||||
# NEW_EMACS="bin/emacs.exe"
|
||||
|
||||
def check_output_maybe(*args,**kwargs):
|
||||
if(DRY_RUN):
|
||||
@ -62,31 +77,76 @@ def check_output_maybe(*args,**kwargs):
|
||||
else:
|
||||
return check_output(*args,**kwargs)
|
||||
|
||||
####################
|
||||
## DLL Capture
|
||||
|
||||
# entry point
|
||||
def gather_deps():
|
||||
|
||||
os.mkdir("x86_64")
|
||||
os.chdir("x86_64")
|
||||
|
||||
for dep in full_dll_dependency():
|
||||
check_output_maybe(["cp /mingw64/bin/{}*.dll .".format(dep)],
|
||||
shell=True)
|
||||
#full=full_dll_dependency(init_deps())
|
||||
#filtered=filter(lambda x: x not in DLL_SKIP, full)
|
||||
#print("full:",full.len(), " filtered:",filtered.len())
|
||||
#exit
|
||||
|
||||
print("Zipping")
|
||||
check_output_maybe("zip -9r ../emacs-{}-{}deps.zip *"
|
||||
.format(EMACS_MAJOR_VERSION, DATE),
|
||||
shell=True)
|
||||
for dep in full_dll_dependency(init_deps()):
|
||||
if dep not in DLL_SKIP:
|
||||
if args.l != True:
|
||||
print("Adding dep", dep)
|
||||
check_output_maybe(["cp /mingw64/bin/{} .".format(dep)], shell=True)
|
||||
else:
|
||||
if args.l != True:
|
||||
print("Skipping dep", dep)
|
||||
|
||||
zipfile="../emacs-{}-{}deps.zip".format(EMACS_MAJOR_VERSION, DATE)
|
||||
tmpfile="{}.tmp".format(zipfile)
|
||||
print("Zipping deps in", os.getcwd(), "as", tmpfile)
|
||||
check_output_maybe("zip -9vr {} *.dll".format(tmpfile), shell=True)
|
||||
if os.path.isfile(zipfile):
|
||||
os.remove(zipfile)
|
||||
os.rename(tmpfile, zipfile)
|
||||
print("Deps updated in", os.getcwd(), "as", zipfile)
|
||||
os.chdir("../")
|
||||
|
||||
## Return all Emacs dependencies
|
||||
def full_dll_dependency():
|
||||
deps = [dll_dependency(dep) for dep in DLL_REQ]
|
||||
return set(sum(deps, []) + DLL_REQ)
|
||||
# Return dependancies listed in Emacs
|
||||
def init_deps():
|
||||
return '''libXpm-nox4.dll
|
||||
libpng16-16.dll
|
||||
libjpeg-8.dll
|
||||
libgif-7.dll
|
||||
librsvg-2-2.dll
|
||||
libwebp-7.dll
|
||||
libwebpdemux-2.dll
|
||||
libsqlite3-0.dll
|
||||
libgdk_pixbuf-2.0-0.dll
|
||||
libglib-2.0-0.dll
|
||||
libgio-2.0-0.dll
|
||||
libgobject-2.0-0.dll
|
||||
libgnutls-30.dll
|
||||
libxml2-2.dll
|
||||
zlib1.dll
|
||||
liblcms2-2.dll
|
||||
libgccjit-0.dll
|
||||
libtree-sitter.dll'''.split()
|
||||
# job_args=[NEW_EMACS, "--batch", "--eval", ELISP_PROG]
|
||||
# #print("args: ", job_args)
|
||||
# return subprocess.check_output(job_args, stderr=subprocess.STDOUT
|
||||
# ).decode('utf-8').splitlines()
|
||||
|
||||
## Dependencies for a given DLL
|
||||
# Return all second order dependencies
|
||||
def full_dll_dependency(dlls):
|
||||
deps = [dll_dependency(dep) for dep in dlls]
|
||||
return set(sum(deps, []) + dlls)
|
||||
|
||||
#xs = filter(lambda x: x.attribute == value, xs)
|
||||
|
||||
# Dependencies for a given DLL
|
||||
def dll_dependency(dll):
|
||||
output = check_output(["/mingw64/bin/ntldd", "--recursive",
|
||||
"/mingw64/bin/{}*.dll".format(dll)]).decode("utf-8")
|
||||
"/mingw64/bin/{}".format(dll)]
|
||||
).decode("utf-8")
|
||||
## munge output
|
||||
return ntldd_munge(output)
|
||||
|
||||
@ -101,9 +161,8 @@ def ntldd_munge(out):
|
||||
|
||||
## if it's the former, we want it, if its the later we don't
|
||||
splt = dep.split()
|
||||
if len(splt) > 2 and "msys64" in splt[2]:
|
||||
print("Adding dep", splt[0])
|
||||
rtn.append(splt[0].split(".")[0])
|
||||
if len(splt) > 2 and "mingw64" in splt[2]:
|
||||
rtn.append(splt[0])
|
||||
|
||||
return rtn
|
||||
|
||||
@ -112,26 +171,92 @@ def ntldd_munge(out):
|
||||
## Packages to fiddle with
|
||||
## Source for gcc-libs is part of gcc
|
||||
SKIP_SRC_PKGS=["mingw-w64-gcc-libs"]
|
||||
SKIP_DEP_PKGS=frozenset(["mingw-w64-x86_64-glib2"])
|
||||
MUNGE_SRC_PKGS={"mingw-w64-libwinpthread-git":"mingw-w64-winpthreads-git"}
|
||||
SKIP_DEP_PKGS=["mingw-w64-glib2", "mingw-w64-ca-certificates-20211016-3"]
|
||||
MUNGE_SRC_PKGS={
|
||||
"mingw-w64-libwinpthread-git":"mingw-w64-winpthreads-git",
|
||||
"mingw-w64-gettext-runtime":"mingw-w64-gettext"
|
||||
}
|
||||
MUNGE_DEP_PKGS={
|
||||
"mingw-w64-x86_64-libwinpthread":"mingw-w64-x86_64-libwinpthread-git",
|
||||
"mingw-w64-x86_64-libtre": "mingw-w64-x86_64-libtre-git",
|
||||
}
|
||||
SRC_EXT={
|
||||
"mingw-w64-freetype": ".src.tar.zst",
|
||||
"mingw-w64-fribidi": ".src.tar.zst",
|
||||
"mingw-w64-glib2": ".src.tar.zst",
|
||||
"mingw-w64-harfbuzz": ".src.tar.zst",
|
||||
"mingw-w64-libunistring": ".src.tar.zst",
|
||||
"mingw-w64-winpthreads-git": ".src.tar.zst",
|
||||
"mingw-w64-ca-certificates": ".src.tar.zst",
|
||||
"mingw-w64-libxml2": ".src.tar.zst",
|
||||
"mingw-w64-ncurses": ".src.tar.zst",
|
||||
"mingw-w64-openssl": ".src.tar.zst",
|
||||
"mingw-w64-pango": ".src.tar.zst",
|
||||
"mingw-w64-python": ".src.tar.zst",
|
||||
"mingw-w64-sqlite3": ".src.tar.zst",
|
||||
"mingw-w64-xpm-nox": ".src.tar.zst",
|
||||
"mingw-w64-xz": ".src.tar.zst",
|
||||
"mingw-w64-bzip2": ".src.tar.zst",
|
||||
"mingw-w64-cairo": ".src.tar.zst",
|
||||
"mingw-w64-expat": ".src.tar.zst",
|
||||
"mingw-w64-fontconfig": ".src.tar.zst",
|
||||
"mingw-w64-gdk-pixbuf2": ".src.tar.zst",
|
||||
"mingw-w64-giflib": ".src.tar.zst",
|
||||
"mingw-w64-gmp": ".src.tar.zst",
|
||||
"mingw-w64-gnutls": ".src.tar.zst",
|
||||
"mingw-w64-graphite2": ".src.tar.zst",
|
||||
"mingw-w64-jbigkit": ".src.tar.zst",
|
||||
"mingw-w64-lcms2": ".src.tar.zst",
|
||||
"mingw-w64-lerc": ".src.tar.zst",
|
||||
"mingw-w64-libdatrie": ".src.tar.zst",
|
||||
"mingw-w64-libffi": ".src.tar.zst",
|
||||
"mingw-w64-libiconv": ".src.tar.zst",
|
||||
"mingw-w64-libiconv": ".src.tar.zst",
|
||||
"mingw-w64-libpng": ".src.tar.zst",
|
||||
"mingw-w64-librsvg": ".src.tar.zst",
|
||||
"mingw-w64-libsystre": ".src.tar.zst",
|
||||
"mingw-w64-libtasn": ".src.tar.zst",
|
||||
"mingw-w64-libthai": ".src.tar.zst",
|
||||
"mingw-w64-libtiff": ".src.tar.zst",
|
||||
"mingw-w64-libtre-git": ".src.tar.zst",
|
||||
"mingw-w64-libwebp": ".src.tar.zst",
|
||||
"mingw-w64-mpdecimal": ".src.tar.zst",
|
||||
"mingw-w64-nettle": ".src.tar.zst",
|
||||
"mingw-w64-p11-kit": ".src.tar.zst",
|
||||
"mingw-w64-pcre": ".src.tar.zst",
|
||||
"mingw-w64-pixman": ".src.tar.zst",
|
||||
"mingw-w64-python-packaging": ".src.tar.zst",
|
||||
"mingw-w64-readline": ".src.tar.zst",
|
||||
"mingw-w64-tcl": ".src.tar.zst",
|
||||
"mingw-w64-termcap": ".src.tar.zst",
|
||||
"mingw-w64-tk": ".src.tar.zst",
|
||||
"mingw-w64-tree-sitter": ".src.tar.zst",
|
||||
"mingw-w64-tzdata": ".src.tar.zst",
|
||||
"mingw-w64-wineditline": ".src.tar.zst",
|
||||
"mingw-w64-zlib": ".src.tar.zst",
|
||||
"mingw-w64-zstd": ".src.tar.zst",
|
||||
"mingw-w64-brotli": ".src.tar.zst",
|
||||
"mingw-w64-gettext": ".src.tar.zst",
|
||||
"mingw-w64-libdeflate": ".src.tar.zst",
|
||||
"mingw-w64-libidn2": ".src.tar.zst",
|
||||
"mingw-w64-libjpeg-turbo": ".src.tar.zst",
|
||||
"mingw-w64-libtasn1": ".src.tar.zst",
|
||||
"mingw-w64-pcre2": ".src.tar.zst",
|
||||
}
|
||||
|
||||
## Currently no packages seem to require this!
|
||||
ARCH_PKGS=[]
|
||||
SRC_REPO="https://repo.msys2.org/mingw/sources"
|
||||
|
||||
def immediate_deps(pkg):
|
||||
package_info = check_output(["pacman", "-Si", pkg]).decode("utf-8").split("\n")
|
||||
|
||||
def immediate_deps(pkgs):
|
||||
package_info = check_output(["pacman", "-Si"] + pkgs).decode("utf-8").splitlines()
|
||||
## Extract the "Depends On" line
|
||||
depends_on = [x for x in package_info if x.startswith("Depends On")][0]
|
||||
## Remove "Depends On" prefix
|
||||
dependencies = depends_on.split(":")[1]
|
||||
|
||||
## Extract the packages listed for "Depends On:" lines.
|
||||
dependencies = [line.split(":")[1].split() for line in package_info
|
||||
if line.startswith("Depends On")]
|
||||
## Flatten dependency lists from multiple packages into one list.
|
||||
dependencies = functools.reduce(operator.iconcat, dependencies, [])
|
||||
## Split into dependencies
|
||||
dependencies = dependencies.strip().split(" ")
|
||||
|
||||
## Remove > signs TODO can we get any other punctuation here?
|
||||
dependencies = [d.split(">")[0] for d in dependencies if d]
|
||||
@ -147,18 +272,16 @@ def extract_deps():
|
||||
print( "Extracting deps" )
|
||||
|
||||
# Get a list of all dependencies needed for packages mentioned above.
|
||||
pkgs = set(PKG_REQ)
|
||||
newdeps = pkgs
|
||||
print("adding...")
|
||||
while True:
|
||||
subdeps = frozenset(immediate_deps(list(newdeps)))
|
||||
newdeps = subdeps - SKIP_DEP_PKGS - pkgs
|
||||
if not newdeps:
|
||||
break
|
||||
print('\n'.join(newdeps))
|
||||
pkgs |= newdeps
|
||||
pkgs = PKG_REQ[:]
|
||||
n = 0
|
||||
while n < len(pkgs):
|
||||
subdeps = immediate_deps(pkgs[n])
|
||||
for p in subdeps:
|
||||
if not (p in pkgs or p in SKIP_DEP_PKGS):
|
||||
pkgs.append(p)
|
||||
n = n + 1
|
||||
|
||||
return list(pkgs)
|
||||
return sorted(pkgs)
|
||||
|
||||
|
||||
def download_source(tarball):
|
||||
@ -206,14 +329,24 @@ def gather_source(deps):
|
||||
## Switch names if necessary
|
||||
pkg_name = MUNGE_SRC_PKGS.get(pkg_name,pkg_name)
|
||||
|
||||
tarball = "{}-{}.src.tar.gz".format(pkg_name,pkg_version)
|
||||
## src archive is usually a .tar.gz
|
||||
if pkg_name in SRC_EXT.keys():
|
||||
src_ext = SRC_EXT[pkg_name]
|
||||
else:
|
||||
src_ext = ".src.tar.gz"
|
||||
|
||||
tarball = "{}-{}{}".format(pkg_name,pkg_version,src_ext)
|
||||
|
||||
download_source(tarball)
|
||||
|
||||
print("Zipping")
|
||||
check_output_maybe("zip -9 ../emacs-{}-{}deps-mingw-w64-src.zip *"
|
||||
.format(EMACS_MAJOR_VERSION,DATE),
|
||||
shell=True)
|
||||
srczip="../emacs-{}-{}deps-mingw-w64-src.zip".format(EMACS_MAJOR_VERSION,DATE)
|
||||
tmpzip="{}.tmp".format(srczip)
|
||||
print("Zipping Dsrc in", os.getcwd(), "as", tmpzip)
|
||||
check_output_maybe("zip -9 {} *".format(tmpzip), shell=True)
|
||||
if os.path.isfile(srczip):
|
||||
os.remove(srczip)
|
||||
os.rename(tmpzip, srczip)
|
||||
print("Dsrc updated in", os.getcwd(), "as", srczip)
|
||||
|
||||
os.chdir("..")
|
||||
|
||||
@ -231,6 +364,9 @@ def clean():
|
||||
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
|
||||
#parser.add_argument("emacs", help="emacs executable")
|
||||
|
||||
parser.add_argument("-s", help="snapshot build",
|
||||
action="store_true")
|
||||
|
||||
@ -243,19 +379,29 @@ def clean():
|
||||
parser.add_argument("-d", help="dry run",
|
||||
action="store_true")
|
||||
|
||||
parser.add_argument("-l", help="list dependencies only",
|
||||
parser.add_argument("-l", help="list dependencies",
|
||||
action="store_true")
|
||||
|
||||
parser.add_argument("-e", help="extract direct dependancies",
|
||||
action="store_true")
|
||||
|
||||
args = parser.parse_args()
|
||||
do_all=not (args.c or args.r)
|
||||
|
||||
|
||||
#NEW_EMACS=args.emacs
|
||||
|
||||
DRY_RUN=args.d
|
||||
|
||||
if( args.e ):
|
||||
print("\n".join(init_deps()))
|
||||
|
||||
if( args.l ):
|
||||
print("List of dependencies")
|
||||
print( deps )
|
||||
print("List of dependencies:")
|
||||
print(full_dll_dependency(init_deps()))
|
||||
print("List of source packages:")
|
||||
print( extract_deps() )
|
||||
|
||||
if( args.e or args.l ):
|
||||
exit(0)
|
||||
|
||||
if args.s:
|
||||
|
@ -8,7 +8,10 @@ Outfile "emacs-${OUT_VERSION}-installer.exe"
|
||||
SetCompressor /solid lzma
|
||||
|
||||
Var StartMenuFolder
|
||||
Var UninstallerPath
|
||||
|
||||
!define UNINST_KEY \
|
||||
"Software\Microsoft\Windows\CurrentVersion\Uninstall\emacs-${VERSION_BRANCH}"
|
||||
|
||||
!define MUI_WELCOMEPAGE_TITLE "Emacs"
|
||||
!define MUI_WELCOMEPAGE_TITLE_3LINES
|
||||
@ -20,16 +23,27 @@ Var StartMenuFolder
|
||||
|
||||
!insertmacro MUI_PAGE_WELCOME
|
||||
|
||||
|
||||
!define MUI_LICENSEPAGE_TEXT_TOP "The GNU General Public License"
|
||||
# licensing/about click-though page
|
||||
!define MUI_PAGE_HEADER_TEXT "Emacs is Free Software"
|
||||
!define MUI_PAGE_HEADER_SUBTEXT "A component of the GNU operating system."
|
||||
!define MUI_LICENSEPAGE_TEXT_TOP "This program is free software."
|
||||
!define MUI_LICENSEPAGE_TEXT_BOTTOM "You can redistribute this program and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License (as above), or (at your option) any later version."
|
||||
!define MUI_LICENSEPAGE_BUTTON "OK"
|
||||
!insertmacro MUI_PAGE_LICENSE "emacs-${VERSION_BRANCH}\share\emacs\${EMACS_VERSION}\lisp\COPYING"
|
||||
|
||||
# user option page: installation path
|
||||
!insertmacro MUI_PAGE_DIRECTORY
|
||||
!insertmacro MUI_PAGE_INSTFILES
|
||||
|
||||
# user option page: start menu shortcut
|
||||
!insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder
|
||||
|
||||
# user option confirm/begin install
|
||||
!insertmacro MUI_PAGE_INSTFILES
|
||||
|
||||
# uninstaller confirmation/options (no options)
|
||||
!insertmacro MUI_UNPAGE_CONFIRM
|
||||
|
||||
# uninstaller begin
|
||||
!insertmacro MUI_UNPAGE_INSTFILES
|
||||
|
||||
!insertmacro MUI_LANGUAGE "English"
|
||||
@ -39,23 +53,35 @@ function .onInit
|
||||
StrCpy $INSTDIR "$PROGRAMFILES64\Emacs"
|
||||
functionend
|
||||
|
||||
|
||||
# main section logic, run after confirming installation
|
||||
Section
|
||||
|
||||
SetOutPath $INSTDIR
|
||||
# insisting on installing shortcuts for "all users"
|
||||
# might ensure uninstall can remove shortcuts we created
|
||||
# SetShellVarContext all
|
||||
|
||||
# extract program files
|
||||
SetOutPath $INSTDIR
|
||||
File /r emacs-${VERSION_BRANCH}
|
||||
|
||||
# define uninstaller name
|
||||
WriteUninstaller $INSTDIR\Uninstall.exe
|
||||
StrCpy $UninstallerPath "$INSTDIR\Uninstall-${VERSION_BRANCH}.exe"
|
||||
|
||||
# create uninstaller
|
||||
WriteUninstaller "$UninstallerPath"
|
||||
|
||||
# add registry key to enable uninstall from control panel
|
||||
WriteRegStr HKLM "${UNINST_KEY}" "DisplayName" "GNU Emacs ${VERSION_BRANCH}"
|
||||
WriteRegStr HKLM "${UNINST_KEY}" "UninstallString" "$\"$UninstallerPath$\""
|
||||
|
||||
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
|
||||
;Create shortcuts
|
||||
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
|
||||
CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
|
||||
CreateShortcut "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" "$INSTDIR\Uninstall.exe"
|
||||
|
||||
CreateShortcut "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" \
|
||||
"$UninstallerPath"
|
||||
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Emacs.lnk" \
|
||||
"$INSTDIR\emacs-${VERSION_BRANCH}\bin\runemacs.exe"
|
||||
!insertmacro MUI_STARTMENU_WRITE_END
|
||||
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Emacs.lnk" "$INSTDIR\emacs-${VERSION_BRANCH}\bin\runemacs.exe"
|
||||
SectionEnd
|
||||
|
||||
|
||||
@ -63,15 +89,50 @@ SectionEnd
|
||||
# the section will always be named "Uninstall"
|
||||
Section "Uninstall"
|
||||
|
||||
# Always delete uninstaller first
|
||||
Delete "$INSTDIR\Uninstall.exe"
|
||||
# remove All Users shortcuts only
|
||||
# SetShellVarContext all
|
||||
|
||||
# now delete installed directory
|
||||
RMDir /r "$INSTDIR"
|
||||
RMDir "$INSTDIR"
|
||||
# retreive/recalculate uninstaller location
|
||||
StrCpy $UninstallerPath "$INSTDIR\Uninstall-${VERSION_BRANCH}.exe"
|
||||
|
||||
# remove registry key
|
||||
DeleteRegKey HKLM "${UNINST_KEY}"
|
||||
|
||||
# delete uninstaller
|
||||
Delete "$INSTDIR\Uninstall-${VERSION_BRANCH}.exe"
|
||||
|
||||
# retreive/reclculate startmenu shortcuts location
|
||||
!insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder
|
||||
StrCpy $StartMenuFolder "$SMPROGRAMS\$StartMenuFolder"
|
||||
|
||||
# remove Start Menu Program shortcuts
|
||||
Delete "$StartMenuFolder\Emacs.lnk"
|
||||
Delete "$StartMenuFolder\Uninstall.lnk"
|
||||
|
||||
# remove empty startmenu parents up to $SMPROGRAMS
|
||||
startMenuDeleteLoop:
|
||||
ClearErrors
|
||||
RMDir $StartMenuFolder
|
||||
GetFullPathName $StartMenuFolder "$StartMenuFolder\.."
|
||||
IfErrors startMenuDeleteLoopDone
|
||||
StrCmp $StartMenuFolder $SMPROGRAMS startMenuDeleteLoopDone startMenuDeleteLoop
|
||||
|
||||
# we're basically using GOTO, above, so we should get here..
|
||||
startMenuDeleteLoopDone:
|
||||
|
||||
# next we remove stuff from program-files/instalation path
|
||||
# start with recursive delete of the Emacs we installed
|
||||
RMDir /r "$INSTDIR\emacs-${VERSION_BRANCH}"
|
||||
|
||||
# now walk parents of installation directory, deleting if empty
|
||||
instDirDeleteLoop:
|
||||
ClearErrors
|
||||
RMDir $INSTDIR
|
||||
GetFullPathName $INSTDIR "$INSTDIR\.."
|
||||
IfErrors instDirDeleteLoopDone
|
||||
StrCmp $INSTDIR $PROGRAMFILES64 instDirDeleteLoopDone instDirDeleteLoop
|
||||
|
||||
# final clean-up (after removing from startmenu and progfiles)
|
||||
instDirDeleteLoopDone:
|
||||
|
||||
Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk"
|
||||
RMDir "$SMPROGRAMS\$StartMenuFolder"
|
||||
SectionEnd
|
||||
|
@ -93,7 +93,19 @@ documentation (or decide no updates are necessary) for those that aren't.
|
||||
** For a major release, add a "New in Emacs XX" section to faq.texi.
|
||||
|
||||
** cusver-check from admin.el can help find new defcustoms missing
|
||||
:version tags.
|
||||
:version tags. This asks for new and old Lisp directories; use the one
|
||||
in the current release branch as New and the one from the last released
|
||||
Emacs version as Old.
|
||||
|
||||
Note that this doesn't (yet) know about :package-version and
|
||||
'customize-package-emacs-version-alist', so it could produce false
|
||||
positives for packages that use :package-version. Make sure the files
|
||||
with defcustoms that use :package-version have the appropriate
|
||||
add-to-list that determines the correspondence between package versions
|
||||
and Emacs versions. Any changes you make in :version etc. should be
|
||||
tested by running "M-x customize-changed" after regenerating cus-load.el
|
||||
(run "make custom-deps" in the lisp/ directory) and loaddefs.el (run
|
||||
"make autoloads-force").
|
||||
|
||||
** Manuals
|
||||
Check for node names using problematic characters:
|
||||
@ -102,7 +114,13 @@ Sadly makeinfo does not warn about such characters.
|
||||
|
||||
Check for major new features added since the last release (e.g. new
|
||||
lisp files), and add the relevant authors to the Acknowledgments in
|
||||
doc/emacs/ack.texi and emacs.texi.
|
||||
doc/emacs/ack.texi and emacs.texi. To find new files, you could run a
|
||||
command such as this:
|
||||
|
||||
$ diff -rq emacs-NN.MM emacs-XX.YY | grep "^Only in emacs-XX"
|
||||
|
||||
where NN.MM is the previous Emacs version, and XX.YY is the new version.
|
||||
This assumes you have the source trees of both versions available.
|
||||
|
||||
For major releases, rewrite the "Antinews" appendix of the User Manual
|
||||
(doc/emacs/anti.texi) to describe features lost by downgrading to the
|
||||
|
@ -119,7 +119,8 @@ NeXTstep port of Emacs.
|
||||
|
||||
@item
|
||||
Stephen Berman wrote @file{todo-mode.el} (based on the original version
|
||||
by Oliver Seidel), a package for maintaining @file{TODO} list files.
|
||||
by Oliver Seidel), a package for maintaining @file{TODO} list files. He
|
||||
also wrote @file{visual-wrap.el} together with Stefan Monnier.
|
||||
|
||||
@item
|
||||
Anna M. Bigatti wrote @file{cal-html.el}, which produces HTML calendars.
|
||||
@ -326,6 +327,10 @@ folders have mail waiting in them.
|
||||
@item
|
||||
Torbj@"orn Einarsson wrote @file{f90.el}, a mode for Fortran 90 files.
|
||||
|
||||
@item
|
||||
Helmut Eller wrote @file{peg.el}, a Parsing Expression Grammars package
|
||||
for Emacs.
|
||||
|
||||
@item
|
||||
Tsugutomo Enami co-wrote the support for international character sets.
|
||||
|
||||
@ -354,6 +359,10 @@ Oscar Figueiredo wrote EUDC, the Emacs Unified Directory Client, which
|
||||
is an interface to directory servers via LDAP, CCSO PH/QI, or BBDB; and
|
||||
@file{ldap.el}, the LDAP client interface.
|
||||
|
||||
@item
|
||||
Jared Finder implemented window tool bars in @file{window-tool-bar.el}
|
||||
and enhanced xterm mouse support in @file{xt-mouse.el}.
|
||||
|
||||
@item
|
||||
Fred Fish wrote the support for dumping COFF executable files.
|
||||
|
||||
@ -459,6 +468,10 @@ as well as helping to maintain Org mode (q.v.).
|
||||
Henry Guillaume wrote @file{find-file.el}, a package to visit files
|
||||
related to the currently visited file.
|
||||
|
||||
@item
|
||||
Dmitry Gutov wrote @file{etags-regen.el}, a package for automatic
|
||||
(re)generation of @file{TAGS} files.
|
||||
|
||||
@item
|
||||
Doug Gwyn wrote the portable @code{alloca} implementation.
|
||||
|
||||
@ -628,6 +641,11 @@ editing the same file. He also wrote the initial version of
|
||||
@file{uniquify.el}, a facility to make buffer names unique by adding
|
||||
parts of the file's name to the buffer name.
|
||||
|
||||
@item
|
||||
Wilhelm H Kirschbaum wrote @file{elixir-ts-mode.el} and
|
||||
@file{heex-ts-mode.el}, Emacs major modes for editing Elixir and Heex
|
||||
files.
|
||||
|
||||
@item
|
||||
Peter Kleiweg wrote @file{ps-mode.el}, a mode for editing PostScript
|
||||
files and running a PostScript interpreter interactively from within
|
||||
@ -880,12 +898,18 @@ indentation engine; and @file{pcase.el}, implementing ML-style pattern
|
||||
matching. In Emacs 24, he integrated the lexical binding code,
|
||||
cleaned up the CL namespace (making it acceptable to use CL
|
||||
functions at runtime), added generalized variables to core Emacs
|
||||
Lisp, and implemented a new lightweight advice mechanism.
|
||||
Lisp, and implemented a new lightweight advice mechanism. He also wrote
|
||||
@file{track-changes.el}, a library which accumulates changes in a buffer
|
||||
until some client Lisp program wants to consume those changes.
|
||||
|
||||
@item
|
||||
Morioka Tomohiko wrote several packages for MIME support in Gnus and
|
||||
elsewhere.
|
||||
|
||||
@item
|
||||
John Muhl wrote @file{lua-ts-mode.el}, an Emacs mode for editing Lua
|
||||
programs.
|
||||
|
||||
@item
|
||||
Sen Nagata wrote @file{crm.el}, a package for reading multiple strings
|
||||
with completion, and @file{rfc2368.el}, support for @code{mailto:}
|
||||
@ -1033,6 +1057,10 @@ He also expanded and redesigned the @code{etags} program.
|
||||
Michael D. Prange and Steven A. Wood wrote @file{fortran.el}, a mode
|
||||
for editing Fortran code.
|
||||
|
||||
@item
|
||||
Vincenzo Pupillo wrote @code{php-ts-mode.el}, a major mode for editing
|
||||
PHP programs.
|
||||
|
||||
@item
|
||||
Ashwin Ram wrote @file{refer.el}, commands to look up references in
|
||||
bibliography files by keyword.
|
||||
@ -1161,6 +1189,10 @@ wrote parts of the IRC client ERC (q.v.).
|
||||
@item
|
||||
Randal Schwartz wrote @file{pp.el}, a pretty-printer for lisp objects.
|
||||
|
||||
@item
|
||||
Daniel Semyonov write @file{nnatom.el}, the Atom backend for Gnus, and
|
||||
@file{nnfeed.el}, a generic feed backend for Gnus.
|
||||
|
||||
@item
|
||||
Manuel Serrano wrote the Flyspell package, which does spell checking
|
||||
as you type.
|
||||
@ -1286,6 +1318,10 @@ which completes the partial word before point, based on other nearby
|
||||
words for which it is a prefix. He also wrote the original dumping
|
||||
support.
|
||||
|
||||
@item
|
||||
Theodor Thornhill wrote @file{html-ts-mode.el}, a major mode based on
|
||||
the tree-sitter library for editing HTML files.
|
||||
|
||||
@item
|
||||
Toru Tomabechi contributed to Tibetan support.
|
||||
|
||||
@ -1419,6 +1455,12 @@ merging two versions of a file.
|
||||
Francis J. Wright wrote @file{woman.el}, a package for browsing
|
||||
manual pages without the @code{man} command.
|
||||
|
||||
@item
|
||||
Po Lu ported Emacs to Android, and wrote
|
||||
@code{pixel-scroll-precision-mode}. He also added XInput2 support to
|
||||
Emacs, implemented touchpad commands in @file{touch-screen.el}, and
|
||||
extended drag-n-drop support.
|
||||
|
||||
@item
|
||||
Masatake Yamato wrote @file{ld-script.el}, an editing mode for GNU
|
||||
linker scripts, and contributed subword handling and style
|
||||
|
@ -1465,10 +1465,10 @@ Dershowitz, Dave Detlefs, Matthieu Devin, Christophe de Dinechin, Eri
|
||||
Ding, Jan Dj@"arv, Lawrence R. Dodd, Carsten Dominik, Scott Draves,
|
||||
Benjamin Drieu, Viktor Dukhovni, Jacques Duthen, Dmitry Dzhus, John
|
||||
Eaton, Rolf Ebert, Carl Edman, David Edmondson, Paul Eggert, Stephen
|
||||
Eglen, Christian Egli, Torbj@"orn Einarsson, Tsugutomo Enami, David
|
||||
Engster, Hans Henrik Eriksen, Michael Ernst, Ata Etemadi, Frederick
|
||||
Farnbach, Oscar Figueiredo, Fred Fish, Steve Fisk, Thomas Fitzsimmons, Karl Fogel, Gary
|
||||
Foster, Eric S. Fraga, Romain Francoise, Noah Friedman, Andreas
|
||||
Eglen, Christian Egli, Torbj@"orn Einarsson, Helmut Eller, Tsugutomo
|
||||
Enami, David Engster, Hans Henrik Eriksen, Michael Ernst, Ata Etemadi, Frederick
|
||||
Farnbach, Oscar Figueiredo, Jared Finder, Fred Fish, Steve Fisk, Thomas Fitzsimmons,
|
||||
Karl Fogel, Gary Foster, Eric S. Fraga, Romain Francoise, Noah Friedman, Andreas
|
||||
Fuchs, Shigeru Fukaya, Xue Fuqiao, Hallvard Furuseth, Keith Gabryelski, Peter S.
|
||||
Galbraith, Kevin Gallagher, Fabi@'an E. Gallina, Kevin Gallo, Juan Le@'en Lahoz Garc@'ia,
|
||||
Howard Gayle, Daniel German, Stephen Gildea, Julien Gilles, David
|
||||
@ -1486,8 +1486,9 @@ Thorsten Jolitz, Michael K. Johnson, Kyle Jones, Terry Jones, Simon
|
||||
Josefsson, Alexandre Julliard, Arne J@o{}rgensen, Tomoji Kagatani,
|
||||
Brewster Kahle, Tokuya Kameshima, Lute Kamstra, Stefan Kangas, Ivan Kanis, David
|
||||
Kastrup, David Kaufman, Henry Kautz, Taichi Kawabata, Taro Kawagishi,
|
||||
Howard Kaye, Michael Kifer, Richard King, Peter Kleiweg, Karel
|
||||
Kl@'i@v{c}, Shuhei Kobayashi, Pavel Kobyakov, Larry K. Kolodney, David
|
||||
Howard Kaye, Michael Kifer, Richard King, Wilhelm Kirschbaum, Peter Kleiweg,
|
||||
Karel Kl@'i@v{c}, Shuhei Kobayashi, Pavel Kobyakov, Larry K. Kolodney, David
|
||||
Howard Kaye, Michael Kifer, Richard King, Peter Kleiweg,
|
||||
M. Koppelman, Koseki Yoshinori, Robert Krawitz, Sebastian Kremer,
|
||||
Ryszard Kubiak, Tak Kunihiro, Igor Kuzmin, David K@aa{}gedal, Daniel LaLiberte, Karl
|
||||
Landstrom, Mario Lang, Aaron Larson, James R. Larus, Gemini Lasswell, Vinicius Jose
|
||||
@ -1502,7 +1503,7 @@ Yukihiro Matsumoto, Tomohiro Matsuyama, David Maus, Thomas May, Will Mengarini,
|
||||
Megginson, Jimmy Aguilar Mena, Stefan Merten, Ben A. Mesander, Wayne Mesard, Brad
|
||||
Miller, Lawrence Mitchell, Richard Mlynarik, Gerd M@"ollmann, Dani Moncayo, Stefan
|
||||
Monnier, Keith Moore, Jan Moringen, Morioka Tomohiko, Glenn Morris,
|
||||
Don Morrison, Diane Murray, Riccardo Murri, Sen Nagata, Erik Naggum,
|
||||
Don Morrison, John Muhl, Diane Murray, Riccardo Murri, Sen Nagata, Erik Naggum,
|
||||
Gergely Nagy, Nobuyoshi Nakada, Thomas Neumann, Mike Newton, Thien-Thi Nguyen,
|
||||
Jurgen Nickelsen, Dan Nicolaescu, Hrvoje Nik@v{s}i@'c, Jeff Norden,
|
||||
Andrew Norman, Theresa O'Connor, Kentaro Ohkouchi, Christian Ohler,
|
||||
@ -1512,8 +1513,8 @@ Jeff Peck, Damon Anton Permezel, Tom Perrine, William M. Perry, Per
|
||||
Persson, Jens Petersen, Nicolas Petton, Daniel Pfeiffer, Justus Piater, Richard L.
|
||||
Pieri, Fred Pierresteguy, Fran@,{c}ois Pinard, Daniel Pittman, Christian
|
||||
Plaunt, Alexander Pohoyda, David Ponce, Noam Postavsky, Francesco A. Potort@`i,
|
||||
Michael D. Prange, Mukesh Prasad, Steve Purcell, Ken Raeburn, Marko Rahamaa, Ashwin
|
||||
Ram, Eric S. Raymond, Paul Reilly, Edward M. Reingold, David
|
||||
Michael D. Prange, Mukesh Prasad, Steve Purcell, Vincenzo Pupillo, Ken Raeburn,
|
||||
Marko Rahamaa, Ashwin Ram, Eric S. Raymond, Paul Reilly, Edward M. Reingold, David
|
||||
Reitter, Alex Rezinsky, Rob Riepel, Lara Rios, Adrian Robert, Nick
|
||||
Roberts, Roland B. Roberts, John Robinson, Denis B. Roegel, Danny
|
||||
Roozendaal, Sebastian Rose, William Rosenblatt, Markus Rost, Guillermo
|
||||
@ -1523,9 +1524,9 @@ Timo Savola, Jorgen Sch@"afer, Holger Schauer, William Schelter, Ralph
|
||||
Schleicher, Gregor Schmid, Michael Schmidt, Ronald S. Schnell,
|
||||
Philippe Schnoebelen, Jan Schormann, Alex Schroeder, Stefan Schoef,
|
||||
Rainer Sch@"opf, Raymond Scholz, Eric Schulte, Andreas Schwab, Randal
|
||||
Schwartz, Oliver Seidel, Manuel Serrano, Paul Sexton, Hovav Shacham,
|
||||
Stanislav Shalunov, Marc Shapiro, Richard Sharman, Olin Shivers, Tibor
|
||||
@v{S}imko, Espen Skoglund, Rick Sladkey, Lynn Slater, Chris Smith,
|
||||
Schwartz, Oliver Seidel, Daniel Semyonov, Manuel Serrano, Paul Sexton,
|
||||
Hovav Shacham, Stanislav Shalunov, Marc Shapiro, Richard Sharman, Olin
|
||||
Shivers, Tibor @v{S}imko, Espen Skoglund, Rick Sladkey, Lynn Slater, Chris Smith,
|
||||
David Smith, JD Smith, Paul D. Smith, Wilson Snyder, William Sommerfeld, Simon
|
||||
South, Andre Spiegel, Michael Staats, Thomas Steffen, Ulf Stegemann,
|
||||
Reiner Steib, Sam Steingold, Ake Stenhoff, Philipp Stephani, Peter Stephenson, Ken
|
||||
@ -1533,15 +1534,15 @@ Stevens, Andy Stewart, Jonathan Stigelman, Martin Stjernholm, Kim F.
|
||||
Storm, Steve Strassmann, Christopher Suckling, Olaf Sylvester, Naoto
|
||||
Takahashi, Steven Tamm, Jan Tatarik, Jo@~ao T@'avora, Luc Teirlinck,
|
||||
Jean-Philippe Theberge, Jens T.@: Berger Thielemann, Spencer Thomas,
|
||||
Jim Thompson, Toru Tomabechi, David O'Toole, Markus Triska, Tom Tromey, Eli
|
||||
Tziperman, Daiki Ueno, Masanobu Umeda, Rajesh Vaidheeswarran, Neil
|
||||
Jim Thompson, Theodor Thornhill, Toru Tomabechi, David O'Toole, Markus Triska,
|
||||
Tom Tromey, Eli Tziperman, Daiki Ueno, Masanobu Umeda, Rajesh Vaidheeswarran, Neil
|
||||
W. Van Dyke, Didier Verna, Joakim Verona, Ulrik Vieth, Geoffrey
|
||||
Voelker, Johan Vromans, Inge Wallin, John Paul Wallington, Colin
|
||||
Walters, Barry Warsaw, Christoph Wedler, Ilja Weis, Zhang Weize,
|
||||
Morten Welinder, Joseph Brian Wells, Rodney Whitby, John Wiegley,
|
||||
Sascha Wilde, Ed Wilkinson, Mike Williams, Roland Winkler, Bill
|
||||
Wohler, Steven A. Wood, Dale R. Worley, Francis J. Wright, Felix
|
||||
S. T. Wu, Tom Wurgler, Yamamoto Mitsuharu, Katsumi Yamaoka,
|
||||
S. T. Wu, Tom Wurgler, Yamamoto Mitsuharu, Po Lu, Katsumi Yamaoka,
|
||||
Masatake Yamato, Jonathan Yavner, Ryan Yeske, Ilya Zakharevich, Milan
|
||||
Zamazal, Victor Zandy, Eli Zaretskii, Jamie Zawinski, Andrew Zhilin,
|
||||
Shenghuo Zhu, Piotr Zieli@'nski, Ian T. Zimmermann, Reto Zimmermann,
|
||||
|
@ -342,18 +342,44 @@ when completion is allowed.
|
||||
@table @kbd
|
||||
@item @key{TAB}
|
||||
Complete the text in the minibuffer as much as possible; if unable to
|
||||
complete, display a list of possible completions
|
||||
(@code{minibuffer-complete}).
|
||||
complete, display a list of possible completions.
|
||||
@item @key{SPC}
|
||||
Complete up to one word from the minibuffer text before point
|
||||
(@code{minibuffer-complete-word}). This command is not available for
|
||||
arguments that often include spaces, such as file names.
|
||||
Complete up to one word from the minibuffer text before point.
|
||||
@item C-x @key{UP}
|
||||
Complete the text in the minibuffer using minibuffer history.
|
||||
@item C-x @key{DOWN}
|
||||
Complete the text in the minibuffer using minibuffer defaults.
|
||||
@item @key{RET}
|
||||
Submit the text in the minibuffer as the argument, possibly completing
|
||||
first (@code{minibuffer-complete-and-exit}). @xref{Completion Exit}.
|
||||
first. @xref{Completion Exit}.
|
||||
@item ?
|
||||
Display a list of completions and a few useful key bindings
|
||||
(@code{minibuffer-completion-help}).
|
||||
@item M-@key{DOWN}
|
||||
@itemx M-@key{UP}
|
||||
Navigate through list of completions.
|
||||
@item M-v
|
||||
@itemx M-g M-c
|
||||
@itemx @key{PageUp}
|
||||
@itemx @key{prior}
|
||||
While in the minibuffer, select the window showing the completion list.
|
||||
@item @key{RET}
|
||||
In the completions buffer, choose the completion at point.
|
||||
@item mouse-1
|
||||
@itemx mouse-2
|
||||
In the completions buffer, choose the completion at mouse click.
|
||||
@item @key{TAB}
|
||||
@itemx @key{RIGHT}
|
||||
@itemx @key{n}
|
||||
In the completions buffer, move to the following completion candidate.
|
||||
@item @key{S-TAB}
|
||||
@itemx @key{LEFT}
|
||||
@itemx @key{p}
|
||||
In the completions buffer, move to the previous completion candidate.
|
||||
@item q
|
||||
Quit the completions window and switch to the minibuffer window.
|
||||
@item z
|
||||
Kill the completions buffer and delete the window showing it.
|
||||
@end table
|
||||
|
||||
@kindex TAB @r{(completion)}
|
||||
@ -371,7 +397,8 @@ are chosen.
|
||||
@samp{auto-f} in the minibuffer and type @key{SPC}, it finds that the
|
||||
completion is @samp{auto-fill-mode}, but it only inserts @samp{ill-},
|
||||
giving @samp{auto-fill-}. Another @key{SPC} at this point completes
|
||||
all the way to @samp{auto-fill-mode}.
|
||||
all the way to @samp{auto-fill-mode}. This command is not available for
|
||||
arguments that often include spaces, such as file names.
|
||||
|
||||
@kindex ? @r{(completion)}
|
||||
@cindex completion list
|
||||
@ -382,7 +409,6 @@ can display the same completion list and help with @kbd{?}
|
||||
(@code{minibuffer-completion-help}). The following commands can be used
|
||||
with the completion list:
|
||||
|
||||
@table @kbd
|
||||
@vindex minibuffer-completion-auto-choose
|
||||
@kindex M-DOWN
|
||||
@kindex M-UP
|
||||
@ -390,12 +416,10 @@ with the completion list:
|
||||
@findex minibuffer-next-completion
|
||||
@findex minibuffer-previous-completion
|
||||
@findex minibuffer-choose-completion
|
||||
@item M-@key{DOWN}
|
||||
@itemx M-@key{UP}
|
||||
While in the minibuffer or in the completion list buffer, @kbd{M-@key{DOWN}}
|
||||
(@code{minibuffer-next-completion} and @kbd{M-@key{UP}}
|
||||
(@code{minibuffer-previous-completion}) navigate through the
|
||||
completions and displayed in the completions buffer. When
|
||||
completions displayed in the completions buffer. When
|
||||
@code{minibuffer-completion-auto-choose} is non-@code{nil} (which is
|
||||
the default), using these commands also inserts the current completion
|
||||
candidate into the minibuffer. If
|
||||
@ -407,9 +431,6 @@ M-@key{RET}} inserts the currently active candidate without exiting
|
||||
the minibuffer.
|
||||
|
||||
@findex switch-to-completions
|
||||
@item M-v
|
||||
@itemx @key{PageUp}
|
||||
@itemx @key{prior}
|
||||
Typing @kbd{M-v}, while in the minibuffer, selects the window showing
|
||||
the completion list (@code{switch-to-completions}). This paves the
|
||||
way for using the commands below. @key{PageUp}, @key{prior} and
|
||||
@ -417,39 +438,38 @@ way for using the commands below. @key{PageUp}, @key{prior} and
|
||||
ways (@pxref{Windows}).
|
||||
|
||||
@findex choose-completion
|
||||
@item @key{RET}
|
||||
@itemx mouse-1
|
||||
@itemx mouse-2
|
||||
While in the completion list buffer, this chooses the completion at
|
||||
point (@code{choose-completion}). With a prefix argument, @kbd{C-u
|
||||
@key{RET}} inserts the completion at point into the minibuffer, but
|
||||
doesn't exit the minibuffer---thus, you can change your mind and
|
||||
choose another candidate.
|
||||
While in the completion list buffer, @kbd{@key{RET}} chooses the completion
|
||||
candidate at point (@code{choose-completion}) and @kbd{mouse-1} and
|
||||
@kbd{mouse-2} choose the completion at mouse click. With a prefix
|
||||
argument, @kbd{C-u @key{RET}} inserts the completion at point into the
|
||||
minibuffer, but doesn't exit the minibuffer---thus, you can change your
|
||||
mind and choose another candidate.
|
||||
|
||||
@findex next-completion
|
||||
@item @key{TAB}
|
||||
@item @key{RIGHT}
|
||||
@item @key{n}
|
||||
While in the completion list buffer, these keys move point to the
|
||||
following completion alternative (@code{next-completion}).
|
||||
While in the completion list buffer, you can use @kbd{@key{TAB}},
|
||||
@kbd{@key{RIGHT}}, or @kbd{n} to move point to the following completion
|
||||
candidate (@code{next-completion}). You can also use @kbd{@key{S-TAB}},
|
||||
@kbd{@key{LEFT}}, and @kbd{p} to move point to the previous completion
|
||||
alternative (@code{previous-completion}).
|
||||
|
||||
@findex previous-completion
|
||||
@item @key{S-TAB}
|
||||
@item @key{LEFT}
|
||||
@item @key{p}
|
||||
While in the completion list buffer, these keys move point to the
|
||||
previous completion alternative (@code{previous-completion}).
|
||||
@findex minibuffer-complete-history
|
||||
@findex minibuffer-complete-defaults
|
||||
@kindex C-x UP @r{(completion)}
|
||||
@kindex C-x DOWN @r{(completion)}
|
||||
You can also complete using the history of minibuffer inputs for the
|
||||
command which prompted you. @kbd{C-x @key{UP}}
|
||||
(@code{minibuffer-complete-history}) works like @kbd{@key{TAB}}, but
|
||||
completes using minibuffer history instead of the usual completion
|
||||
candidates. A similar command @kbd{C-x @key{DOWN}}
|
||||
(@code{minibuffer-complete-defaults}) completes using the default input
|
||||
items provided by the prompting command.
|
||||
|
||||
@findex quit-window
|
||||
@item @kbd{q}
|
||||
While in the completion list buffer, this quits the window showing it
|
||||
and selects the window showing the minibuffer (@code{quit-window}).
|
||||
|
||||
@findex kill-current-buffer
|
||||
@item @kbd{z}
|
||||
While in the completion list buffer, kill it and delete the window
|
||||
showing it (@code{kill-current-buffer}).
|
||||
@end table
|
||||
Finally, @kbd{q} quits the window showing it and selects the window
|
||||
showing the minibuffer (@code{quit-window}), and @kbd{z} kills the
|
||||
completion buffer and delete the window showing it
|
||||
(@code{kill-current-buffer}).
|
||||
|
||||
@vindex minibuffer-visible-completions
|
||||
If the variable @code{minibuffer-visible-completions} is customized to
|
||||
|
@ -3774,7 +3774,7 @@ elisp, The Emacs Lisp Reference Manual}.
|
||||
|
||||
@menu
|
||||
* Lexical & Dynamic Binding Differences::
|
||||
* Lexical vs. Dynamic Binding Example::
|
||||
* Lexical vs Dynamic Binding Example::
|
||||
@end menu
|
||||
|
||||
@node Lexical & Dynamic Binding Differences
|
||||
@ -3811,7 +3811,7 @@ on the top of the stack, and then executes the @code{let} body. Once
|
||||
the @code{let} body finishes, it takes that binding off of the stack,
|
||||
revealing the one it had (if any) before the @code{let} expression.
|
||||
|
||||
@node Lexical vs. Dynamic Binding Example
|
||||
@node Lexical vs Dynamic Binding Example
|
||||
@unnumberedsubsubsec Example of Lexical vs. Dynamic Binding
|
||||
In some cases, both lexical and dynamic binding behave identically.
|
||||
However, in other cases, they can change the meaning of your program.
|
||||
|
@ -445,7 +445,7 @@ characters which resemble the previously mentioned @acronym{ASCII}
|
||||
ones, to avoid confusing people reading your code. Emacs will
|
||||
highlight some non-escaped commonly confused characters such as
|
||||
@samp{‘} to encourage this. You can also add a backslash before whitespace
|
||||
characters such as space, tab, newline and formfeed. However, it is
|
||||
characters such as space and tab. However, it is
|
||||
cleaner to use one of the easily readable escape sequences, such as
|
||||
@samp{\t} or @samp{\s}, instead of an actual whitespace character such
|
||||
as a tab or a space. (If you do write backslash followed by a space,
|
||||
|
@ -75,9 +75,12 @@ another. An overview of D-Bus can be found at
|
||||
@cindex overview
|
||||
|
||||
D-Bus is an inter-process communication mechanism for applications
|
||||
residing on the same host. The communication is based on
|
||||
@dfn{messages}. Data in the messages is carried in a structured way,
|
||||
it is not just a byte stream.
|
||||
residing on the same host. Emacs uses it when it is compiled with the
|
||||
respective library, see configuration option @option{--with-dbus}. At
|
||||
runtime, the form @code{(featurep 'dbusbind)} indicates D-Bus support.
|
||||
|
||||
D-Bus communication is based on @dfn{messages}. Data in the messages is
|
||||
carried in a structured way, it is not just a byte stream.
|
||||
|
||||
The communication is connection oriented to two kinds of message
|
||||
buses: a so called @dfn{system bus}, and a @dfn{session bus}. On a
|
||||
|
@ -942,6 +942,13 @@ Emacs has been ported to the Android operating system. See the file
|
||||
@file{java/INSTALL} in the Emacs source distribution for details on how
|
||||
to build it.
|
||||
|
||||
@item
|
||||
New user option @code{trusted-contents} to allow potentially dangerous
|
||||
Emacs features which could execute arbitrary Lisp code. Use this
|
||||
variable to list files and directories whose contents Emacs should
|
||||
trust, thus allowing those potentially dangerous features when those
|
||||
files are visited.
|
||||
|
||||
@item
|
||||
Numerous performance improvements, for example in parsing JSON, reading
|
||||
data from subprocesses, handling output from Eshell and in Shell mode, X
|
||||
|
@ -1407,9 +1407,12 @@ Desktop, @uref{https://en.wikipedia.org/wiki/GVFS}. Remote files on
|
||||
@acronym{GVFS} are mounted locally through @acronym{FUSE} and
|
||||
@value{tramp} uses this locally mounted directory internally.
|
||||
|
||||
Emacs uses the D-Bus mechanism to communicate with @acronym{GVFS}@.
|
||||
Emacs must have the message bus system, D-Bus integration active,
|
||||
@pxref{Top, , D-Bus, dbus}.
|
||||
Emacs uses the D-Bus mechanism to communicate with @acronym{GVFS}@. It
|
||||
must have been compiled with D-Bus support, @pxref{Top, , D-Bus, dbus}.
|
||||
|
||||
@vindex tramp-gvfs-enabled
|
||||
The @code{tramp-gvfs-enabled} variable, being non-@code{nil}, signals
|
||||
that @value{tramp} can use @acronym{GVFS}-based methods.
|
||||
|
||||
@table @asis
|
||||
@cindex method @option{afp}
|
||||
|
@ -201,7 +201,7 @@ see the variable 'url-request-extra-headers'.
|
||||
|
||||
+++
|
||||
** New user option 'trusted-content' to allow potentially dangerous features.
|
||||
This variable lists those files and directories whose content Emacs should
|
||||
This option lists those files and directories whose content Emacs should
|
||||
consider as sufficiently trusted to run any part of the code contained
|
||||
therein even without any explicit user request.
|
||||
For example, Flymake's backend for Emacs Lisp consults this option
|
||||
|
10
etc/PROBLEMS
10
etc/PROBLEMS
@ -485,6 +485,16 @@ running the just-built Emacs.
|
||||
|
||||
* General runtime problems
|
||||
|
||||
** GTK+ problems
|
||||
|
||||
*** Some tool-bar icons aren't displayed.
|
||||
|
||||
This could be caused by lack of support for XPM image format in the
|
||||
installed GTK packages. Some GNU/Linux distros no longer install
|
||||
support for those formats by default, so you might need to install
|
||||
additional support packages. E.g., on Fedora you need to install the
|
||||
'gdk-pixbuf2-modules-extra' package.
|
||||
|
||||
** Lisp problems
|
||||
|
||||
*** Changes made to .el files do not take effect.
|
||||
|
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{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}
|
||||
|
||||
|
@ -255,10 +255,9 @@ \section{Značky (tags)}
|
||||
příkaz `{\tt etags} {\it vstupní\_soubory}' v příkazovém interpretu.
|
||||
\askip
|
||||
\key{M-.} najdi definici
|
||||
\key{M-*} běž tam, odkud byla volána poslední \kbd{M-.}
|
||||
\key{M-,} běž tam, odkud byla volána poslední \kbd{M-.}
|
||||
\mkey{M-x tags-query-replace} spusť query-replace na všech souborech
|
||||
zaznamenaných v tabulce značek.
|
||||
\key{M-,} pokračuj v posledním hledání značky nebo query-replace
|
||||
|
||||
\section{Překlady}
|
||||
|
||||
|
@ -499,7 +499,6 @@ \section{Tags}
|
||||
|
||||
\metax{regul\"aren Ausdruck in Dateien suchen}{M-x tags-search}
|
||||
\metax{interakt. Ersetzen in allen Dateien}{M-x tags-query-replace}
|
||||
\key{letztes Suchen oder Ersetzen fortsetzen}{M-,}
|
||||
|
||||
\section{Shells}
|
||||
|
||||
|
@ -503,7 +503,6 @@ \section{Tags}
|
||||
\metax{Rechercher dans tous les fichiers des tags}{M-x tags-search}
|
||||
|
||||
\metax{Remplacer dans tous les fichiers}{M-x tags-query-replace}
|
||||
\key{Continuer la recherche ou le remplacement}{M-,}
|
||||
|
||||
\section{Shell}
|
||||
|
||||
|
@ -251,11 +251,9 @@ \section{Marqueurs}
|
||||
tel fichier, tapez `{\tt etags} {\it fichier\_entr\'ee}' \`a l'invite du shell.
|
||||
\askip
|
||||
\key{M-.} trouve une d\'efinition
|
||||
\key{M-*} revient o\`u \kbd{M-.} a \'et\'e appel\'e pour la derni\`ere fois
|
||||
\key{M-,} revient o\`u \kbd{M-.} a \'et\'e appel\'e pour la derni\`ere fois
|
||||
\mkey{M-x tags-query-replace} lance query-replace sur tous les
|
||||
fichiers enregistr\'es dans le tableau des marqueurs
|
||||
\key{M-,} continue la derni\`ere recherche de marqueurs ou le dernier
|
||||
query-replace
|
||||
|
||||
\section{Compilation}
|
||||
|
||||
|
@ -701,8 +701,6 @@ \section{Tags}
|
||||
we wszystkich plikach wymienionych w~TAGS}{M-x tags-search}
|
||||
\metax{zamiana z zapytaniem we wszystkich\newline
|
||||
plikach wymienionych w~TAGS}{M-x tags-query-replace}
|
||||
\key{kontynuuj wyszukiwanie lub zamian/e z~zapytaniem
|
||||
w~plikach wymienionych w~TAGS}{M-,}
|
||||
|
||||
%\section{Shells}
|
||||
\section{Pow/loki}
|
||||
|
@ -508,7 +508,6 @@ \section{Tags}
|
||||
|
||||
\metax{busca por regexp em todos arquivos}{M-x tags-search}
|
||||
\metax{busca e subst. em todos arquivos}{M-x tags-query-replace}
|
||||
\key{continua a {\'u}ltima busca ou busca e substitui{\c{c}}{\~a}o}{M-,}
|
||||
|
||||
\section{Shells}
|
||||
|
||||
|
@ -515,7 +515,6 @@ \section{Tags}
|
||||
|
||||
\metax{regexp search on all files in tags table}{M-x tags-search}
|
||||
\metax{run query-replace on all the files}{M-x tags-query-replace}
|
||||
\key{continue last tags search or query-replace}{M-,}
|
||||
|
||||
\section{Shells}
|
||||
|
||||
|
@ -344,7 +344,6 @@ \section{Теги}
|
||||
|
||||
поиск по шаблону по всей таблице тегов & \kbd{M-x tags-search} \\
|
||||
выполнить query-replace над всеми файлами & \kbd{M-x tags-query-replace} \\
|
||||
продолжить поиск или поиск-замену тега & \kbd{M-,} \\
|
||||
\end{tabular}
|
||||
|
||||
\section{Командные процессоры}
|
||||
|
@ -498,7 +498,6 @@ \section{Tagy}
|
||||
|
||||
\metax{vyhľadať reg.\ výraz v~súboroch s~tagmi}{M-x tags-search}
|
||||
\metax{spustiť nahradzovanie pre dotyčné súbory}{M-x tags-query-replace}
|
||||
\key{pokračovať v~prehľadávaní alebo nahradzovaní}{M-,}
|
||||
|
||||
\section{Príkazový interprét}
|
||||
|
||||
|
@ -258,10 +258,9 @@ \section{Značky (tags)}
|
||||
príkaz `{\tt etags} {\it vstupné\_súbory}' v príkazovom interprétereri.
|
||||
\askip
|
||||
\key{M-.} nájdi definícu
|
||||
\key{M-*} choď tam, odkiaľ bola volaná posledná \kbd{M-.}
|
||||
\key{M-,} choď tam, odkiaľ bola volaná posledná \kbd{M-.}
|
||||
\mkey{M-x tags-query-replace} spusti query-replace na všetkých súboroch
|
||||
zaznamenaných v tabuľke značiek.
|
||||
\key{M-,} pokračuj v poslednom hľadaní značky alebo query-replace
|
||||
|
||||
\section{Preklady}
|
||||
|
||||
|
@ -243,10 +243,9 @@ \section{Tags}
|
||||
`{\tt etags} {\it input\_files}' as a shell command.
|
||||
\askip
|
||||
\key{M-.} find a definition
|
||||
\key{M-*} pop back to where \kbd{M-.} was last invoked
|
||||
\key{M-,} pop back to where \kbd{M-.} was last invoked
|
||||
\mkey{M-x tags-query-replace} run query-replace on all files
|
||||
recorded in tags table
|
||||
\key{M-,} continue last tags search or query-replace
|
||||
|
||||
\section{Compiling}
|
||||
|
||||
|
@ -1,6 +1,5 @@
|
||||
이맥스(Emacs) 지침서입니다.
|
||||
끝에는 복사 조건이
|
||||
있습니다. 지금 읽고 있는 이 글은 이맥스(Emacs) 지침서입니다.
|
||||
이맥스(Emacs) 지침서입니다. 끝에는 복사 조건이 있습니다.
|
||||
지금 읽고 있는 이 글은 이맥스(Emacs) 지침서입니다.
|
||||
|
||||
이맥스 명령들은 대개 제어쇠 (CTRL이나 CTL이라고도 표시) 혹은
|
||||
META쇠 (EDIT이나 ALT라고도 표시)를 사용합니다. 이런 글쇠를 매번 다
|
||||
|
@ -46,9 +46,7 @@
|
||||
|
||||
(ert-deftest feature-harfbuzz ()
|
||||
(should
|
||||
(eq
|
||||
'harfbuzz
|
||||
(car (frame-parameter nil 'font-backend)))))
|
||||
(eq 'harfbuzz (get 'uniscribe 'font-driver-superseded-by))))
|
||||
|
||||
(ert-deftest feature-gnutls ()
|
||||
(should (gnutls-available-p)))
|
||||
|
@ -274,6 +274,7 @@ a list of settings in the form (VARIABLE . VALUE)."
|
||||
(repeat
|
||||
(choice symbol
|
||||
(cons symbol integer)))))
|
||||
:version "30.1"
|
||||
:risky t)
|
||||
|
||||
(defcustom editorconfig-trim-whitespaces-mode nil
|
||||
@ -281,6 +282,7 @@ a list of settings in the form (VARIABLE . VALUE)."
|
||||
|
||||
If set, enable that mode when `trim_trailing_whitespace` is set to true.
|
||||
Otherwise, use `delete-trailing-whitespace'."
|
||||
:version "30.1"
|
||||
:type 'symbol)
|
||||
|
||||
(defvar-local editorconfig-properties-hash nil
|
||||
|
@ -571,7 +571,7 @@ If this is set to nil, never try to reconnect."
|
||||
(integer :tag "Seconds")))
|
||||
|
||||
(defvar-local erc-server-ping-handler nil
|
||||
"This variable holds the periodic ping timer.")
|
||||
"The periodic server ping timer.")
|
||||
|
||||
;;;; Helper functions
|
||||
|
||||
|
@ -360,13 +360,13 @@ The result is converted to lowercase, as IRC is case-insensitive."
|
||||
erc-log-channels-directory)))))
|
||||
|
||||
(defun erc-generate-log-file-name-with-date (buffer &rest _ignore)
|
||||
"Compute a short log file name with the current date.
|
||||
"Return a short log file name with the current date.
|
||||
The name of the log file is composed of BUFFER and the current date.
|
||||
This function is a possible value for `erc-generate-log-file-name-function'."
|
||||
(concat (buffer-name buffer) "-" (format-time-string "%Y-%m-%d") ".txt"))
|
||||
|
||||
(defun erc-generate-log-file-name-short (buffer &rest _ignore)
|
||||
"Compute a short log file name.
|
||||
"Return a short log file name.
|
||||
In fact, it only uses the buffer name of the BUFFER argument, so
|
||||
you can affect that using `rename-buffer' and the-like. This
|
||||
function is a possible value for
|
||||
|
@ -140,7 +140,7 @@ This setting is used by `erc-track-shorten-names'."
|
||||
(const :tag "Max" max)))
|
||||
|
||||
(defcustom erc-track-shorten-function 'erc-track-shorten-names
|
||||
"This function will be used to reduce the channel names before display.
|
||||
"Function used to reduce the channel names before display.
|
||||
It takes one argument, CHANNEL-NAMES which is a list of strings.
|
||||
It should return a list of strings of the same number of elements.
|
||||
If nil instead of a function, shortening is disabled."
|
||||
|
@ -150,7 +150,8 @@ to writing a completion function."
|
||||
|
||||
(defcustom eshell-cmpl-remote-file-ignore nil
|
||||
(eshell-cmpl--custom-variable-docstring 'pcomplete-remote-file-ignore)
|
||||
:type (get 'pcomplete-remote-file-ignore 'custom-type))
|
||||
:type (get 'pcomplete-remote-file-ignore 'custom-type)
|
||||
:version "30.1")
|
||||
|
||||
(defcustom eshell-cmpl-ignore-case (eshell-under-windows-p)
|
||||
(eshell-cmpl--custom-variable-docstring 'completion-ignore-case)
|
||||
|
@ -150,7 +150,7 @@ buffer using \\[end-of-buffer]."
|
||||
:group 'eshell-smart)
|
||||
|
||||
(defcustom eshell-where-to-jump 'begin
|
||||
"This variable indicates where point should jump to after a command.
|
||||
"The location where point should jump to after a command.
|
||||
The options are `begin', `after' or `end'."
|
||||
:type '(radio (const :tag "Beginning of command" begin)
|
||||
(const :tag "After command word" after)
|
||||
|
@ -171,6 +171,7 @@ These are commands with a full remote file name, such as
|
||||
commands on your local host by using the \"/local:\" prefix, like
|
||||
\"/local:whoami\"."
|
||||
:type 'boolean
|
||||
:version "30.1"
|
||||
:group 'eshell-ext)
|
||||
|
||||
;;; Functions:
|
||||
|
@ -537,7 +537,7 @@ Putting this function on `eshell-pre-command-hook' will mimic Plan 9's
|
||||
(eshell-interactive-output-filter nil string)))
|
||||
|
||||
(defsubst eshell-begin-on-new-line ()
|
||||
"Print a newline if not at beginning of line."
|
||||
"Output a newline if not at beginning of line."
|
||||
(save-excursion
|
||||
(goto-char eshell-last-output-end)
|
||||
(or (bolp)
|
||||
|
@ -512,7 +512,7 @@ might have."
|
||||
:type 'boolean)
|
||||
|
||||
(defcustom gnus-prompt-before-saving 'always
|
||||
"This variable says how much prompting is to be done when saving articles.
|
||||
"How much prompting to do when saving articles.
|
||||
If it is nil, no prompting will be done, and the articles will be
|
||||
saved to the default files. If this variable is `always', each and
|
||||
every article that is saved will be preceded by a prompt, even when
|
||||
|
@ -64,6 +64,7 @@
|
||||
|
||||
(defcustom nnfeed-date-format "%F %X%p"
|
||||
"Format of displayed dates (see function `format-time-string')."
|
||||
:version "30.1"
|
||||
:type 'string)
|
||||
|
||||
(nnoo-declare nnfeed)
|
||||
|
@ -236,7 +236,7 @@ See the variable `sc-cite-frame-alist' for details."
|
||||
:group 'supercite-frames)
|
||||
|
||||
(defcustom sc-cite-region-limit t
|
||||
"This variable controls automatic citation of yanked text.
|
||||
"Size limit for automatic citation of yanked text.
|
||||
Valid values are:
|
||||
|
||||
non-nil -- cite the entire region, regardless of its size
|
||||
|
@ -5039,9 +5039,9 @@ contents."
|
||||
(error (minibuffer-complete-and-exit))))
|
||||
|
||||
(defun minibuffer-complete-history ()
|
||||
"Complete the minibuffer history as far as possible.
|
||||
Like `minibuffer-complete' but completes on the history items
|
||||
instead of the default completion table."
|
||||
"Complete as far as possible using the minibuffer history.
|
||||
Like `minibuffer-complete' but completes using the history of minibuffer
|
||||
inputs for the prompting command, instead of the default completion table."
|
||||
(interactive)
|
||||
(let* ((history (symbol-value minibuffer-history-variable))
|
||||
(completions
|
||||
@ -5062,9 +5062,9 @@ instead of the default completion table."
|
||||
(cycle-sort-function . identity)))))))
|
||||
|
||||
(defun minibuffer-complete-defaults ()
|
||||
"Complete minibuffer defaults as far as possible.
|
||||
Like `minibuffer-complete' but completes on the default items
|
||||
instead of the completion table."
|
||||
"Complete as far as possible using the minibuffer defaults.
|
||||
Like `minibuffer-complete' but completes using the default items
|
||||
provided by the prompting command, instead of the completion table."
|
||||
(interactive)
|
||||
(when (and (not minibuffer-default-add-done)
|
||||
(functionp minibuffer-default-add-function))
|
||||
|
@ -96,6 +96,7 @@ retrieval interval (or the global `newsticker-retrieval-interval`) is
|
||||
recommended."
|
||||
:type 'number
|
||||
:set #'newsticker--set-customvar-ticker
|
||||
:version "30.1"
|
||||
:group 'newsticker-ticker)
|
||||
|
||||
(defcustom newsticker-scroll-smoothly
|
||||
|
@ -154,17 +154,16 @@ If WARN-UNENCRYPTED, query the user if the connection is unencrypted."
|
||||
(dhe-kx high)
|
||||
(rsa-kx high)
|
||||
(cbc-cipher high))
|
||||
"This variable specifies what TLS connection checks to perform.
|
||||
It's an alist where the key is the name of the check, and the
|
||||
value is the minimum security level the check should begin.
|
||||
"Alist of TLS connection checks to perform.
|
||||
The key is the name of the check, and the value is the minimum security
|
||||
level the check should begin.
|
||||
|
||||
Each check function is called with the parameters HOST PORT
|
||||
STATUS SETTINGS. HOST is the host domain, PORT is a TCP port
|
||||
number, STATUS is the peer status returned by
|
||||
`gnutls-peer-status', and SETTINGS is the persistent and session
|
||||
settings for the host HOST. Please refer to the contents of
|
||||
`nsm-settings-file' for details. If a problem is found, the check
|
||||
function is required to return an error message, and nil
|
||||
Each check function is called with the parameters HOST PORT STATUS
|
||||
SETTINGS. HOST is the host domain, PORT is a TCP port number, STATUS is
|
||||
the peer status returned by `gnutls-peer-status', and SETTINGS is the
|
||||
persistent and session settings for the host HOST. Please refer to the
|
||||
contents of `nsm-settings-file' for details. If a problem is found, the
|
||||
check function is required to return an error message, and nil
|
||||
otherwise.
|
||||
|
||||
See also: `nsm-check-tls-connection', `nsm-save-host-names',
|
||||
|
@ -7259,7 +7259,7 @@ that range. See `after-change-functions' for more information."
|
||||
#'org-element--cache-after-change -1 t)))
|
||||
|
||||
(defvar org-element--cache-avoid-synchronous-headline-re-parsing nil
|
||||
"This variable controls how buffer changes are handled by the cache.
|
||||
"How buffer changes are handled by the cache.
|
||||
|
||||
By default (when this variable is nil), cache re-parses modified
|
||||
headlines immediately after modification preserving all the unaffected
|
||||
|
@ -474,6 +474,7 @@ This has effect only for languages in which `c-dollar-in-ids' is
|
||||
non-nil, e.g. C, C++, Objective C. It covers languages where
|
||||
\"$\" is permitted in ids \"informally\", but only by some compilers."
|
||||
:type 'boolean
|
||||
:version "30.1"
|
||||
:group 'c)
|
||||
|
||||
(defcustom-c-stylevar c-basic-offset 4
|
||||
|
@ -583,6 +583,7 @@ AutoSplit. If \"comment\", treat as comment, and do not look for
|
||||
imenu entries."
|
||||
:type '(choice (const perl-code)
|
||||
(const comment))
|
||||
:version "30.1"
|
||||
:group 'cperl-faces)
|
||||
|
||||
(defcustom cperl-ps-print-face-properties
|
||||
|
@ -182,6 +182,13 @@
|
||||
:prefix "eglot-"
|
||||
:group 'tools)
|
||||
|
||||
(add-to-list 'customize-package-emacs-version-alist
|
||||
'(Eglot ("1.12" . "29.1")
|
||||
("1.12" . "29.2")
|
||||
("1.12" . "29.3")
|
||||
("1.12.29" . "29.4")
|
||||
("1.17.30" . "30.1")))
|
||||
|
||||
(defun eglot-alternatives (alternatives)
|
||||
"Compute server-choosing function for `eglot-server-programs'.
|
||||
Each element of ALTERNATIVES is a string PROGRAM or a list of
|
||||
@ -475,7 +482,8 @@ the LSP connection. That can be done by `eglot-reconnect'."
|
||||
(choice
|
||||
(const :tag "Full with original JSON" full)
|
||||
(const :tag "Shortened" short)
|
||||
(const :tag "Pretty-printed lisp" lisp))))))
|
||||
(const :tag "Pretty-printed lisp" lisp)))))
|
||||
:package-version '(Eglot . "1.17.30"))
|
||||
|
||||
(defcustom eglot-confirm-server-edits '((eglot-rename . nil)
|
||||
(t . maybe-summary))
|
||||
@ -506,7 +514,8 @@ ACTION is the default value for commands not in the alist."
|
||||
(alist :tag "Per-command alist"
|
||||
:key-type (choice (function :tag "Command")
|
||||
(const :tag "Default" t))
|
||||
:value-type (choice . ,basic-choices)))))
|
||||
:value-type (choice . ,basic-choices))))
|
||||
:package-version '(Eglot . "1.17.30"))
|
||||
|
||||
(defcustom eglot-extend-to-xref nil
|
||||
"If non-nil, activate Eglot in cross-referenced non-project files."
|
||||
@ -514,7 +523,8 @@ ACTION is the default value for commands not in the alist."
|
||||
|
||||
(defcustom eglot-prefer-plaintext nil
|
||||
"If non-nil, always request plaintext responses to hover requests."
|
||||
:type 'boolean)
|
||||
:type 'boolean
|
||||
:package-version '(Eglot . "1.17.30"))
|
||||
|
||||
(defcustom eglot-menu-string "eglot"
|
||||
"String displayed in mode line when Eglot is active."
|
||||
@ -530,7 +540,7 @@ the LSP connection. That can be done by `eglot-reconnect'."
|
||||
:type '(choice (const :tag "Don't show progress" nil)
|
||||
(const :tag "Show progress in *Messages*" messages)
|
||||
(const :tag "Show progress in Eglot's mode line indicator" t))
|
||||
:version "1.10")
|
||||
:package-version '(Eglot . "1.10"))
|
||||
|
||||
(defcustom eglot-ignored-server-capabilities (list)
|
||||
"LSP server capabilities that Eglot could use, but won't.
|
||||
|
@ -475,7 +475,8 @@
|
||||
|
||||
:language 'elixir
|
||||
:feature 'elixir-data-type
|
||||
'([(atom) (alias)] @font-lock-type-face
|
||||
'((alias) @font-lock-type-face
|
||||
(atom) @elixir-ts-atom
|
||||
(keywords (pair key: (keyword) @elixir-ts-keyword-key))
|
||||
[(keyword) (quoted_keyword)] @elixir-ts-atom
|
||||
[(boolean) (nil)] @elixir-ts-atom
|
||||
@ -540,6 +541,10 @@
|
||||
(unary_operator operand: (identifier) @font-lock-variable-use-face)
|
||||
(interpolation (identifier) @font-lock-variable-use-face)
|
||||
(do_block (identifier) @font-lock-variable-use-face)
|
||||
(rescue_block (identifier) @font-lock-variable-use-face)
|
||||
(catch_block (identifier) @font-lock-variable-use-face)
|
||||
(else_block (identifier) @font-lock-variable-use-face)
|
||||
(after_block (identifier) @font-lock-variable-use-face)
|
||||
(access_call target: (identifier) @font-lock-variable-use-face)
|
||||
(access_call "[" key: (identifier) @font-lock-variable-use-face "]"))
|
||||
|
||||
|
@ -128,6 +128,11 @@
|
||||
:link '(custom-manual "(flymake) Top")
|
||||
:group 'tools)
|
||||
|
||||
(add-to-list 'customize-package-emacs-version-alist
|
||||
'(Flymake ("1.3.4" . "30.1")
|
||||
("1.3.5" . "30.1")
|
||||
("1.3.6" . "30.1")))
|
||||
|
||||
(defcustom flymake-error-bitmap '(flymake-double-exclamation-mark
|
||||
compilation-error)
|
||||
"Bitmap (a symbol) used in the fringe for indicating errors.
|
||||
|
@ -281,7 +281,7 @@ values of OVERRIDE."
|
||||
lua-ts--multi-line-comment-start
|
||||
(parent-is "comment_content")
|
||||
(parent-is "string_content")
|
||||
(node-is "]]"))
|
||||
(or (node-is "]]") (node-is "comment_end")))
|
||||
no-indent 0)
|
||||
((and (n-p-gp "field" "table_constructor" "arguments")
|
||||
lua-ts--multi-arg-function-call-matcher
|
||||
|
@ -97,7 +97,7 @@
|
||||
"C-c C-c" #'m2-compile)
|
||||
|
||||
(defcustom m2-indent 5
|
||||
"This variable gives the indentation in Modula-2 mode."
|
||||
"Indentation in Modula-2 mode."
|
||||
:type 'integer
|
||||
:safe (lambda (v) (or (null v) (integerp v))))
|
||||
|
||||
|
@ -2584,6 +2584,7 @@ the gem \"rubocop\". When t, it is used unconditionally."
|
||||
:type '(choice (const :tag "Always" t)
|
||||
(const :tag "No" nil)
|
||||
(const :tag "If rubocop is in Gemfile" check))
|
||||
:version "30.1"
|
||||
:safe 'booleanp)
|
||||
|
||||
(defun ruby-flymake-rubocop (report-fn &rest _args)
|
||||
|
@ -691,12 +691,14 @@ Set to 0 to have all directives start at the left side of the screen."
|
||||
(defcustom verilog-indent-ignore-multiline-defines t
|
||||
"Non-nil means ignore indentation on lines that are part of a multiline define."
|
||||
:group 'verilog-mode-indent
|
||||
:version "30.1"
|
||||
:type 'boolean)
|
||||
(put 'verilog-indent-ignore-multiline-defines 'safe-local-variable #'verilog-booleanp)
|
||||
|
||||
(defcustom verilog-indent-ignore-regexp nil
|
||||
"Regexp that matches lines that should be ignored for indentation."
|
||||
:group 'verilog-mode-indent
|
||||
:version "30.1"
|
||||
:type 'boolean)
|
||||
(put 'verilog-indent-ignore-regexp 'safe-local-variable #'stringp)
|
||||
|
||||
@ -748,6 +750,7 @@ Otherwise, line them up."
|
||||
"Non-nil means indent classes inside packages.
|
||||
Otherwise, classes have zero indentation."
|
||||
:group 'verilog-mode-indent
|
||||
:version "30.1"
|
||||
:type 'boolean)
|
||||
(put 'verilog-indent-class-inside-pkg 'safe-local-variable #'verilog-booleanp)
|
||||
|
||||
@ -761,6 +764,7 @@ Otherwise else is lined up with first character on line holding matching if."
|
||||
(defcustom verilog-align-decl-expr-comments t
|
||||
"Non-nil means align declaration and expressions comments."
|
||||
:group 'verilog-mode-indent
|
||||
:version "30.1"
|
||||
:type 'boolean)
|
||||
(put 'verilog-align-decl-expr-comments 'safe-local-variable #'verilog-booleanp)
|
||||
|
||||
@ -768,18 +772,21 @@ Otherwise else is lined up with first character on line holding matching if."
|
||||
"Distance (in spaces) between longest declaration/expression and comments.
|
||||
Only works if `verilog-align-decl-expr-comments' is non-nil."
|
||||
:group 'verilog-mode-indent
|
||||
:version "30.1"
|
||||
:type 'integer)
|
||||
(put 'verilog-align-comment-distance 'safe-local-variable #'integerp)
|
||||
|
||||
(defcustom verilog-align-assign-expr nil
|
||||
"Non-nil means align expressions of continuous assignments."
|
||||
:group 'verilog-mode-indent
|
||||
:version "30.1"
|
||||
:type 'boolean)
|
||||
(put 'verilog-align-assign-expr 'safe-local-variable #'verilog-booleanp)
|
||||
|
||||
(defcustom verilog-align-typedef-regexp nil
|
||||
"Regexp that matches user typedefs for declaration alignment."
|
||||
:group 'verilog-mode-indent
|
||||
:version "30.1"
|
||||
:type '(choice (regexp :tag "Regexp")
|
||||
(const :tag "None" nil)))
|
||||
(put 'verilog-align-typedef-regexp 'safe-local-variable #'stringp)
|
||||
@ -787,6 +794,7 @@ Only works if `verilog-align-decl-expr-comments' is non-nil."
|
||||
(defcustom verilog-align-typedef-words nil
|
||||
"List of words that match user typedefs for declaration alignment."
|
||||
:group 'verilog-mode-indent
|
||||
:version "30.1"
|
||||
:type '(repeat string))
|
||||
(put 'verilog-align-typedef-words 'safe-local-variable #'listp)
|
||||
|
||||
@ -939,6 +947,7 @@ always be saved."
|
||||
(defcustom verilog-fontify-variables t
|
||||
"Non-nil means fontify declaration variables."
|
||||
:group 'verilog-mode-actions
|
||||
:version "30.1"
|
||||
:type 'boolean)
|
||||
(put 'verilog-fontify-variables 'safe-local-variable #'verilog-booleanp)
|
||||
|
||||
|
@ -55,8 +55,8 @@
|
||||
"The tail of the Scheme expressions ring whose car is the last thing yanked.")
|
||||
|
||||
(defvar-local xscheme-running-p nil
|
||||
"This variable, if nil, indicates that the scheme process is
|
||||
waiting for input. Otherwise, it is busy evaluating something.")
|
||||
"If nil, the scheme process is waiting for input.
|
||||
Otherwise, it is busy evaluating something.")
|
||||
|
||||
(defconst xscheme-control-g-synchronization-p t
|
||||
"If non-nil, insert markers in the scheme input stream to indicate when
|
||||
@ -64,8 +64,8 @@ control-g interrupts were signaled. Do not allow more control-g's to be
|
||||
signaled until the scheme process acknowledges receipt.")
|
||||
|
||||
(defvar-local xscheme-control-g-disabled-p nil
|
||||
"This variable, if non-nil, indicates that a control-g is being processed
|
||||
by the scheme process, so additional control-g's are to be ignored.")
|
||||
"If non-nil, a control-g is being processed by the scheme process, so
|
||||
additional control-g's are to be ignored.")
|
||||
|
||||
(defvar xscheme-string-receiver nil
|
||||
"Procedure to send the string argument from the scheme process.")
|
||||
|
@ -422,7 +422,8 @@ Format of each entry is controlled by the variable `register-preview-function'."
|
||||
(window-height . fit-window-to-buffer)
|
||||
(preserve-size . (nil . t)))
|
||||
"Window configuration for the register preview buffer."
|
||||
:type display-buffer--action-custom-type)
|
||||
:type display-buffer--action-custom-type
|
||||
:version "30.1")
|
||||
|
||||
(defun register-preview-1 (buffer &optional show-empty types)
|
||||
"Pop up a window showing the preview of registers in BUFFER.
|
||||
|
@ -165,6 +165,7 @@ List of factors, used to expand/compress the time scale. See `vc-annotate'."
|
||||
(defcustom vc-annotate-use-short-revision t
|
||||
"If non-nil, \\[vc-annotate] will use short revisions in its buffer name."
|
||||
:type 'boolean
|
||||
:version "30.1"
|
||||
:group 'vc)
|
||||
|
||||
(defvar-keymap vc-annotate-mode-map
|
||||
|
@ -1220,7 +1220,7 @@ total height."
|
||||
;;; Show/hide which-key buffer
|
||||
|
||||
(defun which-key--hide-popup ()
|
||||
"Hide the `which-key' buffer."
|
||||
"Hide the which-key buffer."
|
||||
(unless (or which-key-persistent-popup
|
||||
(member real-this-command which-key--paging-functions))
|
||||
(setq which-key--last-try-2-loc nil)
|
||||
|
@ -1297,6 +1297,11 @@ barf_if_interaction_inhibited (void)
|
||||
DEFUN ("read-from-minibuffer", Fread_from_minibuffer,
|
||||
Sread_from_minibuffer, 1, 7, 0,
|
||||
doc: /* Read a string from the minibuffer, prompting with string PROMPT.
|
||||
While in the minibuffer, you can use \\<minibuffer-local-completion-map>\\[minibuffer-complete] and \\[minibuffer-complete-word] to complete your input.
|
||||
You can also use \\<minibuffer-local-map>\\[minibuffer-complete-history] to complete using history items in the
|
||||
input history HIST, and you can use \\[minibuffer-complete-defaults] to complete using
|
||||
the default items in DEFAULT-VALUE.
|
||||
|
||||
The optional second arg INITIAL-CONTENTS is an obsolete alternative to
|
||||
DEFAULT-VALUE. It normally should be nil in new code, except when
|
||||
HIST is a cons. It is discussed in more detail below.
|
||||
|
Loading…
Reference in New Issue
Block a user