forked from Github/emacs
Compare commits
1 commit
master
...
feature/eg
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9655b5b65f |
3433 changed files with 52707 additions and 272358 deletions
|
|
@ -1,20 +1,12 @@
|
|||
Language: Cpp
|
||||
BasedOnStyle: GNU
|
||||
AlignEscapedNewlinesLeft: true
|
||||
AlignOperands: Align
|
||||
AlwaysBreakAfterReturnType: TopLevelDefinitions
|
||||
BreakBeforeBinaryOperators: All
|
||||
BreakBeforeBraces: GNU
|
||||
ColumnLimit: 70
|
||||
ContinuationIndentWidth: 2
|
||||
IndentPPDirectives: AfterHash
|
||||
PPIndentWidth: 1
|
||||
ForEachMacros:
|
||||
- FOR_EACH_TAIL
|
||||
- FOR_EACH_TAIL_SAFE
|
||||
- FOR_EACH_LIVE_BUFFER
|
||||
- ITREE_FOREACH
|
||||
- FOR_EACH_ALIST_VALUE
|
||||
ForEachMacros: [FOR_EACH_TAIL, FOR_EACH_TAIL_SAFE]
|
||||
IncludeCategories:
|
||||
- Regex: '^<config\.h>$'
|
||||
Priority: -1
|
||||
|
|
@ -24,17 +16,11 @@ IncludeCategories:
|
|||
Priority: 2
|
||||
- Regex: '.*'
|
||||
Priority: 3
|
||||
WhitespaceSensitiveMacros:
|
||||
- STR
|
||||
- CALL1I
|
||||
- CALL2I
|
||||
- STR_VALUE
|
||||
KeepEmptyLinesAtTheStartOfBlocks: false
|
||||
MaxEmptyLinesToKeep: 1
|
||||
PenaltyBreakBeforeFirstCallParameter: 2000
|
||||
SpaceAfterCStyleCast: true
|
||||
SpaceBeforeParens: Always
|
||||
UseTab: Always
|
||||
|
||||
# Local Variables:
|
||||
# mode: yaml
|
||||
|
|
|
|||
|
|
@ -7,12 +7,9 @@
|
|||
(emacs-lisp-docstring-fill-column . 65)
|
||||
(vc-git-annotate-switches . "-w")
|
||||
(bug-reference-url-format . "https://debbugs.gnu.org/%s")
|
||||
(diff-add-log-use-relative-names . t)
|
||||
(vc-prepare-patches-separately . nil)))
|
||||
(diff-add-log-use-relative-names . t)))
|
||||
(c-mode . ((c-file-style . "GNU")
|
||||
(c-noise-macro-names . ("INLINE" "NO_INLINE" "ATTRIBUTE_NO_SANITIZE_UNDEFINED"
|
||||
"UNINIT" "CALLBACK" "ALIGN_STACK" "ATTRIBUTE_MALLOC"
|
||||
"ATTRIBUTE_DEALLOC_FREE"))
|
||||
(c-noise-macro-names . ("INLINE" "ATTRIBUTE_NO_SANITIZE_UNDEFINED" "UNINIT" "CALLBACK" "ALIGN_STACK"))
|
||||
(electric-quote-comment . nil)
|
||||
(electric-quote-string . nil)
|
||||
(indent-tabs-mode . t)
|
||||
|
|
@ -21,9 +18,6 @@
|
|||
(electric-quote-comment . nil)
|
||||
(electric-quote-string . nil)
|
||||
(mode . bug-reference-prog)))
|
||||
(c-ts-mode . ((c-ts-mode-indent-style . gnu)
|
||||
(indent-tabs-mode . t)
|
||||
(mode . bug-reference-prog)))
|
||||
(log-edit-mode . ((log-edit-font-lock-gnu-style . t)
|
||||
(log-edit-setup-add-author . t)
|
||||
(vc-git-log-edit-summary-target-len . 50)))
|
||||
|
|
|
|||
2
.gitattributes
vendored
2
.gitattributes
vendored
|
|
@ -1,6 +1,6 @@
|
|||
# Attributes of Emacs files in the Git repository.
|
||||
|
||||
# Copyright 2015-2023 Free Software Foundation, Inc.
|
||||
# Copyright 2015-2022 Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of GNU Emacs.
|
||||
|
||||
|
|
|
|||
8
.gitignore
vendored
8
.gitignore
vendored
|
|
@ -1,6 +1,6 @@
|
|||
# Files that Git should ignore in the Emacs source directory.
|
||||
|
||||
# Copyright 2009-2023 Free Software Foundation, Inc.
|
||||
# Copyright 2009-2022 Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of GNU Emacs.
|
||||
|
||||
|
|
@ -25,7 +25,6 @@
|
|||
|
||||
# Personal customization.
|
||||
.dir-locals-2.el
|
||||
.no-advice-on-failure
|
||||
|
||||
# Built by 'autogen.sh'.
|
||||
/aclocal.m4
|
||||
|
|
@ -158,7 +157,6 @@ test/manual/etags/srclist
|
|||
test/manual/etags/regexfile
|
||||
test/manual/etags/ETAGS
|
||||
test/manual/etags/CTAGS
|
||||
test/manual/etags/CTAGS*.sorted
|
||||
test/manual/indent/*.new
|
||||
test/lisp/gnus/mml-sec-resources/random_seed
|
||||
test/lisp/play/fortune-resources/fortunes.dat
|
||||
|
|
@ -334,7 +332,3 @@ lib-src/seccomp-filter-exec.pfc
|
|||
# Ignore a directory used by dap-mode.
|
||||
.vscode
|
||||
/test/gmp.h
|
||||
|
||||
# GDB history
|
||||
.gdb_history
|
||||
_gdb_history
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
# Copyright (C) 2021-2023 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2021-2022 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is part of GNU Emacs.
|
||||
#
|
||||
|
|
|
|||
24
CONTRIBUTE
24
CONTRIBUTE
|
|
@ -1,6 +1,3 @@
|
|||
Copyright (C) 2006-2023 Free Software Foundation, Inc.
|
||||
See the end of the file for license conditions.
|
||||
|
||||
* How developers contribute to GNU Emacs
|
||||
|
||||
Here is how software developers can contribute to Emacs. (Non-developers: see
|
||||
|
|
@ -18,7 +15,7 @@ To configure Git for Emacs development, you can run the following:
|
|||
|
||||
The following shell commands then build and run Emacs from scratch:
|
||||
|
||||
git clone https://git.savannah.gnu.org/git/emacs.git
|
||||
git clone git://git.sv.gnu.org/emacs.git
|
||||
cd emacs
|
||||
./autogen.sh
|
||||
./configure
|
||||
|
|
@ -110,7 +107,7 @@ admin/notes/bug-triage.
|
|||
|
||||
Any change that matters to end-users should have an entry in etc/NEWS.
|
||||
Try to start each NEWS entry with a sentence that summarizes the entry
|
||||
and takes just one line -- this will allow reading NEWS in Outline
|
||||
and takes just one line -- this will allow to read NEWS in Outline
|
||||
mode after hiding the body of each entry.
|
||||
|
||||
Doc-strings should be updated together with the code.
|
||||
|
|
@ -123,7 +120,7 @@ Think about whether your change requires updating the manuals. If you
|
|||
know it does not, mark the NEWS entry with "---". If you know
|
||||
that *all* the necessary documentation updates have been made as part
|
||||
of your changes or those by others, mark the entry with "+++".
|
||||
Otherwise, do not mark it.
|
||||
Otherwise do not mark it.
|
||||
|
||||
If your change requires updating the manuals to document new
|
||||
functions/commands/variables/faces, then use the proper Texinfo
|
||||
|
|
@ -205,10 +202,9 @@ them right the first time, so here are guidelines for formatting them:
|
|||
you can put a paragraph (after the empty line and before the
|
||||
individual ChangeLog entries) that further describes the commit.
|
||||
|
||||
- Lines in ChangeLog entries should preferably be not longer than 63
|
||||
characters, and must not exceed 78 characters, unless they consist
|
||||
of a single word of at most 140 characters; this 78/140 limit is
|
||||
enforced by a commit hook.
|
||||
- Limit lines in commit messages to 78 characters, unless they consist
|
||||
of a single word of at most 140 characters; this is enforced by a
|
||||
commit hook.
|
||||
|
||||
- If only a single file is changed, the summary line can be the normal
|
||||
file first line (starting with the asterisk). Then there is no
|
||||
|
|
@ -321,7 +317,7 @@ them right the first time, so here are guidelines for formatting them:
|
|||
** Committing your changes.
|
||||
|
||||
When you commit changes, Git invokes several scripts that test the
|
||||
commit for validity, and may abort the commit if some of the tests
|
||||
commit for validity, and may abort the commit of some of the tests
|
||||
fail. These scripts live in the '.git/hooks/' subdirectory of the
|
||||
top-level directory of the repository, and they perform the following
|
||||
tests:
|
||||
|
|
@ -400,7 +396,7 @@ the commit to master, by starting the commit message with "Backport:".
|
|||
The gitmerge function excludes these commits from the merge to the master.
|
||||
|
||||
Some changes should not be merged to master at all, for whatever
|
||||
reason. These should be marked by including something like "Do not
|
||||
reasons. These should be marked by including something like "Do not
|
||||
merge to master" or anything that matches gitmerge-skip-regexp (see
|
||||
admin/gitmerge.el) in the commit message.
|
||||
|
||||
|
|
@ -449,8 +445,8 @@ files intended for use only with Emacs version 24.5 and later.
|
|||
|
||||
*** Useful files in the admin/ directory
|
||||
|
||||
See all the files in 'admin/notes/*'. In particular, see
|
||||
'admin/notes/newfile' and 'admin/notes/repo'.
|
||||
See all the files in admin/notes/* . In particular, see
|
||||
admin/notes/newfile, see admin/notes/repo.
|
||||
|
||||
The file admin/MAINTAINERS records the areas of interest of frequent
|
||||
Emacs contributors. If you are making changes in one of the files
|
||||
|
|
|
|||
|
|
@ -930,7 +930,7 @@
|
|||
(mostlyclean_dirs, clean_dirs, distclean_dirs, maintainer_clean_dirs):
|
||||
New variables.
|
||||
(mostlyclean, clean, distclean, bootstrap-clean, maintainer-clean)
|
||||
(extraclean): Define using each subdirectory as a prerequisite.
|
||||
(extraclean): Define using each subdirectory as a prequisite.
|
||||
* lib/Makefile.am (bootstrap-clean): New.
|
||||
|
||||
2014-06-15 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
|
@ -4302,7 +4302,7 @@
|
|||
(install-arch-indep): Don't install-etc for self-contained ns builds.
|
||||
|
||||
* configure.in (GCC_TEST_OPTIONS, NON_GCC_TEST_OPTIONS) <darwin>:
|
||||
No longer unconditionally add /sw directories. (Bug#2280)
|
||||
No longer unconditonally add /sw directories. (Bug#2280)
|
||||
|
||||
* Makefile.in (install-arch-dep): Depend on install-arch-indep.
|
||||
(install-arch-indep): Depend on install-leim.
|
||||
|
|
@ -14700,7 +14700,7 @@
|
|||
;; coding: utf-8
|
||||
;; End:
|
||||
|
||||
Copyright (C) 1993-1999, 2001-2023 Free Software Foundation, Inc.
|
||||
Copyright (C) 1993-1999, 2001-2022 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Emacs.
|
||||
|
||||
|
|
|
|||
18
ChangeLog.2
18
ChangeLog.2
|
|
@ -111,7 +111,7 @@
|
|||
|
||||
2017-03-21 Noam Postavsky <npostavs@gmail.com>
|
||||
|
||||
Narrow scope of modification hook re-enabling in org-src fontification
|
||||
Narrow scope of modification hook renabling in org-src fontification
|
||||
|
||||
Modification hooks should be enabled while modifying text in the
|
||||
org-src temp buffer, but in 2017-01-29 "Call modification hooks in
|
||||
|
|
@ -9317,7 +9317,7 @@
|
|||
optional.
|
||||
|
||||
* src/buffer.c (Fbarf_if_buffer_read_only): Rename argument POS
|
||||
to POSITION to keep consistent with doc-string.
|
||||
to POSITION to keep consisteny with doc-string.
|
||||
|
||||
2016-02-01 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
|
|
@ -11843,7 +11843,7 @@
|
|||
|
||||
2016-01-05 Alan Mackenzie <acm@muc.de>
|
||||
|
||||
Make C++ buffers writable when writing their initial text properties.
|
||||
Make C++ buffers writeable when writing their initial text properties.
|
||||
|
||||
This is a correction to yesterday's CC Mode patch.
|
||||
|
||||
|
|
@ -23054,8 +23054,8 @@
|
|||
|
||||
Fix tests in file-notify-tests.el
|
||||
* test/automated/file-notify-tests.el: Remove Tramp declarations.
|
||||
(file-notify-test00-availability): Print remote command without
|
||||
Tramp internal functions.
|
||||
(file-notify-test00-availability): Print remote command w/o Tramp
|
||||
internal functions.
|
||||
(file-notify-test02-events, file-notify-test02-events-remote):
|
||||
Adapt docstring.
|
||||
(file-notify-test03-autorevert): Use `format-message' when
|
||||
|
|
@ -26343,7 +26343,7 @@
|
|||
(verilog-type-font-keywords): Cycle delay operators like ##1 and
|
||||
##[0:$] are now highlighted in their entirety similarly to the #
|
||||
delay-control operator. Likewise, the followed-by operators #-#
|
||||
and #=# are no longer partially highlighted.
|
||||
and #=# are no longer partially highlighed.
|
||||
(verilog-backward-syntactic-ws-quick)
|
||||
(verilog-skip-backward-comments): Minor performance improvements
|
||||
to buffer traversal functions for reduced latency.
|
||||
|
|
@ -28676,7 +28676,7 @@
|
|||
* lisp/faces.el (set-face-attribute): Don't be fooled too easily
|
||||
by a hyphen in a font's name.
|
||||
|
||||
Fix value of posn-at-point in R2L lines
|
||||
Fix value of posn-at-pont in R2L lines
|
||||
* src/keyboard.c (Fposn_at_x_y, Fposn_at_point): Allow X pixel
|
||||
coordinate of -1, for a newline in a right-to-left line that
|
||||
overflowed into the left fringe.
|
||||
|
|
@ -34464,7 +34464,7 @@
|
|||
|
||||
* lisp/emacs-lisp/package.el: Make archive and status pseudo-keywords
|
||||
(package--has-keyword-p): Understand "arc:xxxx" and "status:xxxx"
|
||||
as special keywords which match against package archive and status
|
||||
as special keywords which match agains package archive and status
|
||||
respectively.
|
||||
* etc/NEWS: Document it.
|
||||
|
||||
|
|
@ -35787,7 +35787,7 @@ See ChangeLog.1 for earlier changes.
|
|||
;; coding: utf-8
|
||||
;; End:
|
||||
|
||||
Copyright (C) 2015-2023 Free Software Foundation, Inc.
|
||||
Copyright (C) 2015-2022 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Emacs.
|
||||
|
||||
|
|
|
|||
774
ChangeLog.3
774
ChangeLog.3
File diff suppressed because it is too large
Load diff
114348
ChangeLog.4
114348
ChangeLog.4
File diff suppressed because it is too large
Load diff
|
|
@ -1,6 +1,6 @@
|
|||
# Build Emacs from a fresh tarball or version-control checkout.
|
||||
|
||||
# Copyright (C) 2011-2023 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2011-2022 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is part of GNU Emacs.
|
||||
#
|
||||
|
|
|
|||
2
INSTALL
2
INSTALL
|
|
@ -1,5 +1,5 @@
|
|||
GNU Emacs Installation Guide
|
||||
Copyright (C) 1992, 1994, 1996-1997, 2000-2023 Free Software Foundation,
|
||||
Copyright (C) 1992, 1994, 1996-1997, 2000-2022 Free Software Foundation,
|
||||
Inc.
|
||||
See the end of the file for license conditions.
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ The Emacs repository is hosted on Savannah. The following Git command
|
|||
will clone the repository to the 'emacs' subdirectory of the current
|
||||
directory on your local machine:
|
||||
|
||||
git clone https://git.savannah.gnu.org/git/emacs.git
|
||||
git clone git://git.sv.gnu.org/emacs.git
|
||||
|
||||
To build the repository code, simply run 'make' in the 'emacs'
|
||||
directory. This should work if your files are freshly checked out
|
||||
|
|
@ -98,7 +98,7 @@ never platform-specific.
|
|||
|
||||
|
||||
|
||||
Copyright (C) 2002-2023 Free Software Foundation, Inc.
|
||||
Copyright (C) 2002-2022 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Emacs.
|
||||
|
||||
|
|
|
|||
25
Makefile.in
25
Makefile.in
|
|
@ -1,6 +1,6 @@
|
|||
### @configure_input@
|
||||
|
||||
# Copyright (C) 1992-2023 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1992-2022 Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of GNU Emacs.
|
||||
|
||||
|
|
@ -405,28 +405,26 @@ actual-all: ${SUBDIR} info $(gsettings_SCHEMAS:.xml=.valid) src-depending-on-lis
|
|||
# ADVICE-ON-FAILURE-END:bootstrap
|
||||
|
||||
advice-on-failure:
|
||||
@[ -f .no-advice-on-failure ] && exit ${exit-status}; true
|
||||
@echo >&2 '***'
|
||||
@echo >&2 '*** '"\"make ${make-target}\" failed with exit status ${exit-status}."
|
||||
@echo >&2 '***'
|
||||
@cat Makefile | \
|
||||
sed -n '/^# ADVICE-ON-FAILURE-BEGIN:${make-target}/,$${p;/^# ADVICE-ON-FAILURE-END:${make-target}/q;};' | \
|
||||
sed 's/^# /*** /' | grep -v '^\*\*\* ADVICE-ON-FAILURE-' >&2
|
||||
sed -n '/^# ADVICE-ON-FAILURE-BEGIN:${make-target}/,$${p;/^# ADVICE-ON-FAILURE-END:${make-target}/q};' | \
|
||||
sed 's/^# /*** /' | grep -v '^*** ADVICE-ON-FAILURE-' >&2
|
||||
@echo >&2 '***'
|
||||
@exit ${exit-status}
|
||||
|
||||
sanity-check:
|
||||
@[ -f .no-advice-on-failure ] && exit 0; true
|
||||
@v=`src/emacs${EXEEXT} --batch --eval \
|
||||
@v=$$(src/emacs${EXEEXT} --batch --eval \
|
||||
'(progn (defun f (n) (if (= 0 n) 1 (* n (f (- n 1))))) (princ (f 10)))' \
|
||||
2> /dev/null`; \
|
||||
2> /dev/null); \
|
||||
[ "X$$v" = "X3628800" ] && exit 0; \
|
||||
echo >&2 '***'; \
|
||||
echo >&2 '*** '"\"make ${make-target}\" succeeded, but Emacs is not functional."; \
|
||||
echo >&2 '***'; \
|
||||
cat Makefile | \
|
||||
sed -n '/^# ADVICE-ON-FAILURE-BEGIN:${make-target}/,$${p;/^# ADVICE-ON-FAILURE-END:${make-target}/q;};' | \
|
||||
sed 's/^# /*** /' | grep -v '^\*\*\* ADVICE-ON-FAILURE-' >&2; \
|
||||
sed -n '/^# ADVICE-ON-FAILURE-BEGIN:${make-target}/,$${p;/^# ADVICE-ON-FAILURE-END:${make-target}/q};' | \
|
||||
sed 's/^# /*** /' | grep -v '^*** ADVICE-ON-FAILURE-' >&2; \
|
||||
echo >&2 '***'; \
|
||||
exit 1
|
||||
|
||||
|
|
@ -841,7 +839,7 @@ install-etc:
|
|||
rm -f $${tmp}
|
||||
tmp=etc/emacsclient.tmpdesktop; rm -f $${tmp}; \
|
||||
client_name=`echo emacsclient | sed '$(TRANSFORM)'`${EXEEXT}; \
|
||||
sed -e "/^Exec=/ s|emacsclient|${bindir}/$${client_name}|" \
|
||||
sed -e "/^Exec=emacsclient/ s|emacsclient|${bindir}/$${client_name}|" \
|
||||
-e "/^Icon=emacs/ s/emacs/${EMACS_NAME}/" \
|
||||
$(USE_STARTUP_NOTIFICATION_SED_CMD) \
|
||||
${srcdir}/etc/emacsclient.desktop > $${tmp}; \
|
||||
|
|
@ -855,7 +853,7 @@ install-etc:
|
|||
rm -f $${tmp}
|
||||
tmp=etc/emacsclient-mail.tmpdesktop; rm -f $${tmp}; \
|
||||
client_name=`echo emacsclient | sed '$(TRANSFORM)'`${EXEEXT}; \
|
||||
sed -e "/^Exec=/ s|emacsclient|${bindir}/$${client_name}|" \
|
||||
sed -e "/^Exec=emacsclient/ s|emacsclient|${bindir}/$${client_name}|" \
|
||||
-e "/^Icon=emacs/ s/emacs/${EMACS_NAME}/" \
|
||||
${srcdir}/etc/emacsclient-mail.desktop > $${tmp}; \
|
||||
${INSTALL_DATA} $${tmp} "$(DESTDIR)${desktopdir}/$${client_name}-mail.desktop"; \
|
||||
|
|
@ -1030,9 +1028,6 @@ $(foreach dir,$(distclean_dirs),$(eval $(call submake_template,$(dir),distclean)
|
|||
|
||||
distclean: $(distclean_dirs:=_distclean) clean-gsettings-schemas
|
||||
${top_distclean}
|
||||
ifeq ($(HAVE_NATIVE_COMP),yes)
|
||||
rm -rf native-lisp
|
||||
endif
|
||||
|
||||
### 'bootstrap-clean'
|
||||
### Delete everything that can be reconstructed by 'make' and that
|
||||
|
|
@ -1287,7 +1282,7 @@ PREFERRED_BRANCH = emacs-28
|
|||
preferred-branch-is-current:
|
||||
git branch | grep -q '^\* $(PREFERRED_BRANCH)$$'
|
||||
unchanged-history-files:
|
||||
x=`git diff-files --name-only $(CHANGELOG_N) $(emacslog)` && \
|
||||
x=$$(git diff-files --name-only $(CHANGELOG_N) $(emacslog)) && \
|
||||
test -z "$$x"
|
||||
|
||||
# Regular expression that matches the newest commit covered by a ChangeLog.
|
||||
|
|
|
|||
4
README
4
README
|
|
@ -1,8 +1,8 @@
|
|||
Copyright (C) 2001-2023 Free Software Foundation, Inc.
|
||||
Copyright (C) 2001-2022 Free Software Foundation, Inc.
|
||||
See the end of the file for license conditions.
|
||||
|
||||
|
||||
This directory tree holds version 30.0.50 of GNU Emacs, the extensible,
|
||||
This directory tree holds version 29.0.50 of GNU Emacs, the extensible,
|
||||
customizable, self-documenting real-time display editor.
|
||||
|
||||
The file INSTALL in this directory says how to build and install GNU
|
||||
|
|
|
|||
|
|
@ -2577,7 +2577,7 @@
|
|||
;; coding: utf-8
|
||||
;; End:
|
||||
|
||||
Copyright (C) 2001-2023 Free Software Foundation, Inc.
|
||||
Copyright (C) 2001-2022 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Emacs.
|
||||
|
||||
|
|
|
|||
|
|
@ -294,7 +294,7 @@ Po Lu
|
|||
|
||||
Tramp
|
||||
Maintainer: Michael Albinus
|
||||
Repository: https://git.savannah.gnu.org/git/tramp.git
|
||||
Repository: git://git.savannah.gnu.org/tramp.git
|
||||
Mailing List: tramp-devel@gnu.org
|
||||
Bug Reports: M-x tramp-bug
|
||||
Notes: For backward compatibility requirements, see
|
||||
|
|
@ -316,7 +316,7 @@ Modus themes
|
|||
Org Mode
|
||||
Home Page: https://orgmode.org/
|
||||
Maintainer: Org Mode developers
|
||||
Repository: https://git.savannah.gnu.org/git/emacs/org-mode.git
|
||||
Repository: git://git.sv.gnu.org/emacs/org-mode.git
|
||||
Mailing list: emacs-orgmode@gnu.org
|
||||
Bug Reports: M-x org-submit-bug-report
|
||||
Notes: Org Mode is maintained as a separate project that is
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
Copyright (C) 2001-2023 Free Software Foundation, Inc.
|
||||
Copyright (C) 2001-2022 Free Software Foundation, Inc.
|
||||
See the end of the file for license conditions.
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
;;; admin.el --- utilities for Emacs administration -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2001-2023 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2001-2022 Free Software Foundation, Inc.
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
|
||||
|
|
@ -843,11 +843,8 @@ $Date: %s $
|
|||
(package-install pkg)
|
||||
(require pkg nil t))))
|
||||
|
||||
(declare-function org-html-export-as-html "ox-html.el")
|
||||
(defvar org-html-postamble)
|
||||
(defvar org-html-mathjax-template)
|
||||
(defvar htmlize-output-type)
|
||||
|
||||
(defun make-news-html-file (root version)
|
||||
"Convert the NEWS file into an HTML file."
|
||||
(interactive (let ((root
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/* Allocate X colors. Used for testing with dense colormaps.
|
||||
|
||||
Copyright (C) 2001-2023 Free Software Foundation, Inc.
|
||||
Copyright (C) 2001-2022 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Emacs.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
;;; authors.el --- utility for maintaining Emacs's AUTHORS file -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2000-2023 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2000-2022 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Gerd Moellmann <gerd@gnu.org>
|
||||
;; Maintainer: emacs-devel@gnu.org
|
||||
|
|
@ -182,7 +182,7 @@ files.")
|
|||
("Philip Kaludercic" "Philip K\\." "Philip K")
|
||||
("Philipp Stephani" "Philipp .*phst@google")
|
||||
("Piotr Zieliński" "Piotr Zielinski")
|
||||
("Po Lu" "Po Lu Via" "Your Name") ; looks like a mistake
|
||||
("Po Lu" "Po Lu Via") ; looks like a mistake
|
||||
("Przemysław Wojnowski" "Przemyslaw Wojnowski")
|
||||
("R. Bernstein" "rb@dustyfeet.com")
|
||||
("Rainer Schöpf" "Rainer Schoepf")
|
||||
|
|
@ -990,7 +990,7 @@ in the repository.")
|
|||
;; to how a file was mentioned in the respective ChangeLog. It is
|
||||
;; advisable to run a Grep command such as
|
||||
;;
|
||||
;; grep -F -R BASENAME . --include='ChangeLog*'
|
||||
;; fgrep -R BASENAME . --include='ChangeLog*'
|
||||
;;
|
||||
;; where BASENAME is the old basename of the renamed file. This will
|
||||
;; show all the different reference forms of the file in the various
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#!/bin/bash
|
||||
### automerge - automatically merge the Emacs release branch to master
|
||||
|
||||
## Copyright (C) 2018-2023 Free Software Foundation, Inc.
|
||||
## Copyright (C) 2018-2022 Free Software Foundation, Inc.
|
||||
|
||||
## Author: Glenn Morris <rgm@gnu.org>
|
||||
## Maintainer: Stefan Kangas <stefankangas@gmail.com>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#! /usr/bin/perl
|
||||
# Build Emacs in several different configurations.
|
||||
|
||||
# Copyright (C) 2001-2023 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2001-2022 Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of GNU Emacs.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
### @configure_input@
|
||||
|
||||
# Copyright (C) 2015-2023 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2015-2022 Free Software Foundation, Inc.
|
||||
|
||||
# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
|
||||
# National Institute of Advanced Industrial Science and Technology (AIST)
|
||||
|
|
@ -181,7 +181,7 @@ ${charsetdir}/GB180304.map: ${charsetdir}/GB180302.map ${gb180304}
|
|||
${AM_V_GEN}$(AWK) -f ${gb180304} < $< > $@
|
||||
|
||||
${charsetdir}/JISX0201.map: ${GLIBC_CHARMAPS}/JIS_X0201.gz ${mapconv} ${compact}
|
||||
${AM_V_GEN}(${run_mapconv} $< '/^<.*[ ]\/x[0-9]/' GLIBC-1 ${compact} && \
|
||||
${AM_V_GEN}(${mapconv} $< '/^<.*[ ]\/x[0-9]/' GLIBC-1 ${compact} && \
|
||||
echo "# Generated by hand" && \
|
||||
echo "0xA1-0xDF 0xFF61" ) > $@
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#!/bin/sh
|
||||
|
||||
# Copyright (C) 2015-2023 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2015-2022 Free Software Foundation, Inc.
|
||||
|
||||
# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
|
||||
# National Institute of Advanced Industrial Science and Technology (AIST)
|
||||
|
|
@ -38,8 +38,7 @@
|
|||
## So that eg [A-F] as used by KANJI-DATABASE branch below works as expected.
|
||||
## Otherwise with LANG=en_US.utf8, CNS-6.map was generated with a
|
||||
## bogus entry. By experiment, LC_COLLATE=C was not enough.
|
||||
LC_ALL=C
|
||||
export LC_ALL
|
||||
export LC_ALL=C
|
||||
|
||||
BASE=`expr "$1" : '.*/\(.*\)' '|' "$1"` # basename
|
||||
FILE="admin/charsets/mapfiles/$BASE"
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
Copyright (C) 2009-2023 Free Software Foundation, Inc.
|
||||
Copyright (C) 2009-2022 Free Software Foundation, Inc.
|
||||
Copyright (C) 2009, 2010, 2011
|
||||
National Institute of Advanced Industrial Science and Technology (AIST)
|
||||
Registration Number H13PRO009
|
||||
|
|
|
|||
|
|
@ -1,56 +0,0 @@
|
|||
#!/bin/bash
|
||||
### check-man-pages - check man pages for errors
|
||||
|
||||
## Copyright (C) 2022-2023 Free Software Foundation, Inc.
|
||||
|
||||
## Author: Stefan Kangas <stefankangas@gmail.com>
|
||||
|
||||
## This file is part of GNU Emacs.
|
||||
|
||||
## GNU Emacs is free software: you can redistribute it and/or modify
|
||||
## it under the terms of the GNU General Public License as published by
|
||||
## the Free Software Foundation, either version 3 of the License, or
|
||||
## (at your option) any later version.
|
||||
|
||||
## GNU Emacs is distributed in the hope that it will be useful,
|
||||
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
## GNU General Public License for more details.
|
||||
|
||||
## You should have received a copy of the GNU General Public License
|
||||
## along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
### Commentary:
|
||||
|
||||
## Check Emacs man pages for errors using `man'.
|
||||
|
||||
### Code:
|
||||
|
||||
source "${0%/*}/emacs-shell-lib"
|
||||
|
||||
exit_status=0
|
||||
|
||||
cd "$PD"/../doc/man
|
||||
for page in *.1; do
|
||||
# ctags.1 just includes the man page etags.1, which AFAICT will
|
||||
# default to the one installed on the system (!), instead of the
|
||||
# one in the repository. So checking it is pointless, and we will
|
||||
# in any case already check etags.1 separately.
|
||||
if [ "$page" == "ctags.1" ]; then
|
||||
continue
|
||||
fi
|
||||
log=$(emacs_mktemp)
|
||||
LC_ALL=C.UTF-8 MANROFFSEQ='' MANWIDTH=80 \
|
||||
man --warnings=all,mac -E UTF-8 -l -Tutf8 -Z "$page" >/dev/null 2> "$log"
|
||||
log_size=$(stat --format=%s "$log")
|
||||
if [ "$log_size" -ne 0 ]; then
|
||||
echo "doc/man/$page:"
|
||||
# Point to the correct file for *compilation* buffers.
|
||||
cat "$log" \
|
||||
| sed 's/troff: man1\/\([^ ]\+\)\.1/troff: doc\/man\/\1.1/' \
|
||||
| sed "s/<standard input>/doc\/man\/$page/"
|
||||
exit_status=1
|
||||
fi
|
||||
done
|
||||
|
||||
exit $exit_status
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
;;; cus-test.el --- tests for custom types and load problems -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 1998, 2000, 2002-2023 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1998, 2000, 2002-2022 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Markus Rost <rost@math.uni-bielefeld.de>
|
||||
;; Created: 13 Sep 1998
|
||||
|
|
@ -131,7 +131,7 @@ Names should be as they appear in loaddefs.el.")
|
|||
;; Don't create a file `abbrev-file-name'.
|
||||
(setq save-abbrevs nil)
|
||||
|
||||
;; Avoid compile logs from advised functions.
|
||||
;; Avoid compile logs from adviced functions.
|
||||
(eval-after-load "bytecomp"
|
||||
'(setq ad-default-compilation-action 'never))
|
||||
|
||||
|
|
@ -145,8 +145,7 @@ Names should be as they appear in loaddefs.el.")
|
|||
(require 'cus-load)
|
||||
|
||||
(defvar cus-test-errors nil
|
||||
"List of problematic variables found by `cus-test-apropos'.
|
||||
Each element is (VARIABLE . PROBLEM); see `cus-test--format-problem'.")
|
||||
"List of problematic variables found by `cus-test-apropos'.")
|
||||
|
||||
(defvar cus-test-tested-variables nil
|
||||
"List of options tested by last call of `cus-test-apropos'.")
|
||||
|
|
@ -182,15 +181,6 @@ Set by `cus-test-noloads'.")
|
|||
;; (defvar cus-test-vars-cus-loaded nil
|
||||
;; "A list of options loaded by `custom-load-symbol'.")
|
||||
|
||||
(defun cus-test--format-error (err)
|
||||
"Format an element of `cus-test-errors'."
|
||||
(pcase err
|
||||
(`(,var :type-error ,value ,type)
|
||||
(format "variable: %s\n value: %S\n type: %S" var value type))
|
||||
(`(,var :other-error ,e)
|
||||
(format "variable: %s\n error: %S" var e))
|
||||
(_ (format "%S" err))))
|
||||
|
||||
(defun cus-test-apropos (regexp)
|
||||
"Check the options matching REGEXP.
|
||||
The detected problematic options are stored in `cus-test-errors'."
|
||||
|
|
@ -210,7 +200,8 @@ The detected problematic options are stored in `cus-test-errors'."
|
|||
(let* ((type (custom-variable-type symbol))
|
||||
(conv (widget-convert type))
|
||||
(get (or (get symbol 'custom-get) 'default-value))
|
||||
values)
|
||||
values
|
||||
mismatch)
|
||||
(when (default-boundp symbol)
|
||||
(push (funcall get symbol) values)
|
||||
(push (eval (car (get symbol 'standard-value)) t) values))
|
||||
|
|
@ -224,9 +215,7 @@ The detected problematic options are stored in `cus-test-errors'."
|
|||
;; TODO for booleans, check for values that can be
|
||||
;; evaluated and are not t or nil. Usually a bug.
|
||||
(unless (widget-apply conv :match value)
|
||||
(let ((err (list symbol :type-error value type)))
|
||||
(unless (member err cus-test-errors)
|
||||
(push err cus-test-errors)))))
|
||||
(setq mismatch 'mismatch)))
|
||||
values)
|
||||
|
||||
;; Store symbols with a custom-get property.
|
||||
|
|
@ -242,12 +231,13 @@ The detected problematic options are stored in `cus-test-errors'."
|
|||
(and (consp c-value)
|
||||
(boundp symbol)
|
||||
(not (equal (eval (car c-value) t) (symbol-value symbol)))
|
||||
(add-to-list 'cus-test-vars-with-changed-state symbol))))
|
||||
(add-to-list 'cus-test-vars-with-changed-state symbol)))
|
||||
|
||||
(if mismatch
|
||||
(push symbol cus-test-errors)))
|
||||
|
||||
(error
|
||||
(let ((err (list symbol :other-error alpha)))
|
||||
(unless (member err cus-test-errors)
|
||||
(push err cus-test-errors)))
|
||||
(push symbol cus-test-errors)
|
||||
(message "Error for %s: %s" symbol alpha))))
|
||||
(cus-test-get-options regexp))
|
||||
(message "%s options tested"
|
||||
|
|
@ -302,7 +292,7 @@ currently defined groups."
|
|||
(insert "No errors found by cus-test.")
|
||||
(insert "The following variables seem to have problems:\n\n")
|
||||
(dolist (e cus-test-errors)
|
||||
(insert (cus-test--format-error e) "\n")))))
|
||||
(insert (symbol-name e) "\n")))))
|
||||
|
||||
(defun cus-test-load-custom-loads ()
|
||||
"Call `custom-load-symbol' on all atoms."
|
||||
|
|
@ -409,7 +399,7 @@ Returns a list of variables with suspicious types."
|
|||
(message "No problems found")
|
||||
nil)
|
||||
(message "The following options might have problems:")
|
||||
(cus-test-message (mapcar #'cus-test--format-error cus-test-errors))
|
||||
(cus-test-message cus-test-errors)
|
||||
cus-test-errors))
|
||||
|
||||
(defun cus-test-deps ()
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Copyright (C) 2001-2023 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2001-2022 Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of GNU Emacs.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#!/bin/bash
|
||||
### emacs-shell-lib - shared code for Emacs shell scripts
|
||||
|
||||
## Copyright (C) 2022-2023 Free Software Foundation, Inc.
|
||||
## Copyright (C) 2022 Free Software Foundation, Inc.
|
||||
|
||||
## Author: Stefan Kangas <stefankangas@gmail.com>
|
||||
|
||||
|
|
|
|||
17
admin/emake
17
admin/emake
|
|
@ -1,22 +1,5 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Copyright (C) 2022-2023 Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of GNU Emacs.
|
||||
|
||||
# GNU Emacs is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
# GNU Emacs is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
# This script is meant to be used as ./admin/emake, and will compile
|
||||
# the Emacs tree with virtually all of the informational messages
|
||||
# removed, and with errors/warnings highlighted in red. It'll give a
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
;;; find-gc.el --- detect functions that call the garbage collector -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 1992, 2001-2023 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1992, 2001-2022 Free Software Foundation, Inc.
|
||||
|
||||
;; Maintainer: emacs-devel@gnu.org
|
||||
|
||||
|
|
@ -100,7 +100,7 @@ Also store it in `find-gc-unsafe-list'."
|
|||
|
||||
|
||||
|
||||
(defun trace-call-tree (&optional _ignored)
|
||||
(defun trace-call-tree (&optional ignored)
|
||||
(message "Setting up directories...")
|
||||
(setq find-gc-subrs-called nil)
|
||||
(let ((case-fold-search nil)
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -1,6 +1,6 @@
|
|||
;;; gitmerge.el --- help merge one Emacs branch into another -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2010-2023 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2010-2022 Free Software Foundation, Inc.
|
||||
|
||||
;; Authors: David Engster <deng@randomsample.de>
|
||||
;; Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
|
@ -293,7 +293,7 @@ should not be skipped."
|
|||
"Try to resolve conflicts in FILE with smerge.
|
||||
Returns non-nil if conflicts remain."
|
||||
(unless (file-exists-p file) (error "Gitmerge-resolve: Can't find %s" file))
|
||||
(with-demoted-errors "Error: %S"
|
||||
(with-demoted-errors
|
||||
(let ((exists (find-buffer-visiting file)))
|
||||
(with-current-buffer (let ((enable-local-variables :safe)
|
||||
(enable-local-eval nil))
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
### @configure_input@
|
||||
|
||||
## Copyright (C) 2013-2023 Free Software Foundation, Inc.
|
||||
## Copyright (C) 2013-2022 Free Software Foundation, Inc.
|
||||
|
||||
## This file is part of GNU Emacs.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
;;; c.by -- LL grammar for C/C++ language specification
|
||||
;; Copyright (C) 1999-2023 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1999-2022 Free Software Foundation, Inc.
|
||||
;;
|
||||
;; Author: Eric M. Ludlam <zappo@gnu.org>
|
||||
;; David Ponce <david@dponce.com>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
;;; semantic-grammar.wy -- LALR grammar of Semantic input grammars
|
||||
;;
|
||||
;; Copyright (C) 2002-2023 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2002-2022 Free Software Foundation, Inc.
|
||||
;;
|
||||
;; Author: David Ponce <david@dponce.com>
|
||||
;; Created: 26 Aug 2002
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
;;; java-tags.wy -- Semantic LALR grammar for Java
|
||||
|
||||
;; Copyright (C) 2002-2023 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2002-2022 Free Software Foundation, Inc.
|
||||
;;
|
||||
;; Author: David Ponce <david@dponce.com>
|
||||
;; Created: 26 Aug 2002
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
;;; javascript-jv.wy -- LALR grammar for Javascript
|
||||
|
||||
;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1998-2011 Ecma International.
|
||||
|
||||
;; Author: Joakim Verona
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
;;; make.by -- BY notation for Makefiles.
|
||||
|
||||
;; Copyright (C) 1999-2023 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1999-2022 Free Software Foundation, Inc.
|
||||
;;
|
||||
;; Author: Eric M. Ludlam <zappo@gnu.org>
|
||||
;; David Ponce <david@dponce.com>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
;;; python.wy -- LALR grammar for Python
|
||||
|
||||
;; Copyright (C) 2002-2023 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2002-2022 Free Software Foundation, Inc.
|
||||
;; Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
|
||||
;; 2009, 2010 Python Software Foundation; All Rights Reserved
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
;;; scheme.by -- Scheme BNF language specification
|
||||
|
||||
;; Copyright (C) 2001-2023 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2001-2022 Free Software Foundation, Inc.
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
;;; srecode-template.wy --- Semantic Recoder Template parser
|
||||
|
||||
;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Eric M. Ludlam <zappo@gnu.org>
|
||||
;; Keywords: syntax
|
||||
|
|
@ -126,7 +126,7 @@ variable
|
|||
: SET symbol insertable-string-list newline
|
||||
(VARIABLE-TAG $2 nil $3)
|
||||
| SET symbol number newline
|
||||
;; This so a common error with priority works.
|
||||
;; This so a common error w/ priority works.
|
||||
;; Note that "number" still has a string value in the lexer.
|
||||
(VARIABLE-TAG $2 nil (list $3))
|
||||
| SHOW symbol newline
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
;;; last-chance.el --- dangling deterrence -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2016-2023 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2016-2022 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Thien-Thi Nguyen <ttn@gnu.org>
|
||||
;; Maintainer: emacs-devel@gnu.org
|
||||
|
|
@ -41,7 +41,7 @@
|
|||
;;
|
||||
;; will show you any references to `change-log-date-face' in the
|
||||
;; *.el files in a new buffer (in Grep mode). Hopefully you see
|
||||
;; only the obsolete declaration and can proceed with its removal.
|
||||
;; only the obsolete declaration and can proceed w/ its removal.
|
||||
;; If not, please DTRT and refrain from the removal until those
|
||||
;; references are properly transitioned.
|
||||
;;
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
# Build Emacs with various options for profiling, debugging,
|
||||
# with and without warnings enabled etc.
|
||||
|
||||
# Copyright (C) 2001-2023 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2001-2022 Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of GNU Emacs.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#!/bin/bash
|
||||
### make-manuals - create the Emacs manuals to upload to the gnu.org website
|
||||
|
||||
## Copyright 2018-2023 Free Software Foundation, Inc.
|
||||
## Copyright 2018-2022 Free Software Foundation, Inc.
|
||||
|
||||
## Author: Glenn Morris <rgm@gnu.org>
|
||||
## Maintainer: emacs-devel@gnu.org
|
||||
|
|
|
|||
|
|
@ -68,25 +68,16 @@ General steps (for each step, check for possible errors):
|
|||
PREFERRED_BRANCH = emacs-NN
|
||||
|
||||
where NN is the version on the release branch from which you are
|
||||
producing the tarball. If NN is incorrect (which it usually is
|
||||
when starting a pretest of a new major release), update
|
||||
Makefile.in and re-run 'configure' to update Makefile.
|
||||
producing the tarball. If NN is incorrect, update Makefile.in and
|
||||
re-run 'configure' to update Makefile.
|
||||
|
||||
For the first pretest of a new major release, consider starting a
|
||||
new top-level ChangeLog.N file if the last versioned ChangeLog.N
|
||||
file is too large. A good point to start a new ChangeLog.N file
|
||||
is when the last one gets larger than 1.5 MiB. If so, start a new
|
||||
one by bumping N, and also update the line in top-level
|
||||
Makefile.in which says
|
||||
If the versioned ChangeLog.N file is too large, start a new one
|
||||
by bumping N, and also update the line in top-level Makefile.in
|
||||
which says
|
||||
|
||||
CHANGELOG_HISTORY_INDEX_MAX = N
|
||||
|
||||
by incrementing the value of N by 1; then regenerate Makefile.
|
||||
After bumping N, you need to actually create and commit
|
||||
ChangeLog.N with the updated N, otherwise "M-x authors" below will
|
||||
fail. The easiest way of creating the new ChangeLog.N is to
|
||||
rename the file ChangeLog (without the .N suffix) left over from
|
||||
the last major release (it is usually unversioned) and commit it.
|
||||
|
||||
Now:
|
||||
|
||||
|
|
@ -108,12 +99,11 @@ General steps (for each step, check for possible errors):
|
|||
the relevant entry. If a file was deleted or renamed, consider
|
||||
adding an appropriate entry to variables authors-ignored-files,
|
||||
authors-valid-file-names, or authors-renamed-files-alist in
|
||||
authors.el. If some authors are "ignored", consider adding
|
||||
entries to the author-aliases variable.
|
||||
authors.el.
|
||||
|
||||
If necessary, repeat 'C-u M-x authors' after making those changes.
|
||||
Save the "*Authors*" buffer as etc/AUTHORS.
|
||||
Check the diff looks reasonable. Maybe add more entries to
|
||||
Check the diff looks reasonable. Maybe add entries to
|
||||
authors-ambiguous-files or authors-aliases, and repeat.
|
||||
Commit any fixes to authors.el.
|
||||
|
||||
|
|
@ -160,13 +150,6 @@ General steps (for each step, check for possible errors):
|
|||
4. autoreconf -i -I m4 --force
|
||||
make bootstrap
|
||||
|
||||
The below script checks for any mistakes in the source text of
|
||||
manual pages. Fix any errors and re-run the script to verify.
|
||||
|
||||
./admin/check-man-pages
|
||||
|
||||
Then do this:
|
||||
|
||||
make -C etc/refcards
|
||||
make -C etc/refcards clean
|
||||
|
||||
|
|
@ -179,13 +162,7 @@ General steps (for each step, check for possible errors):
|
|||
messages from TeX, but those seem to be harmless, as the result
|
||||
looks just fine.)
|
||||
|
||||
5. Copy lisp/loaddefs.el to lisp/ldefs-boot.el. After copying, edit
|
||||
ldefs-boot.el to add
|
||||
|
||||
;; no-byte-compile: t
|
||||
|
||||
to its file-local variables section, otherwise make-dist will
|
||||
complain.
|
||||
5. Copy lisp/loaddefs.el to lisp/ldefs-boot.el.
|
||||
|
||||
Commit ChangeLog.N, etc/AUTHORS, lisp/ldefs-boot.el, and the files
|
||||
changed by M-x set-version. Note that the set-version changes
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
#
|
||||
# admin/merge-gnulib
|
||||
|
||||
# Copyright 2012-2023 Free Software Foundation, Inc.
|
||||
# Copyright 2012-2022 Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of GNU Emacs.
|
||||
|
||||
|
|
@ -23,30 +23,29 @@
|
|||
|
||||
# written by Paul Eggert
|
||||
|
||||
GNULIB_URL=https://git.savannah.gnu.org/git/gnulib.git
|
||||
GNULIB_URL=git://git.savannah.gnu.org/gnulib.git
|
||||
|
||||
GNULIB_MODULES='
|
||||
alignasof alloca-opt binary-io byteswap c-ctype c-strcase
|
||||
alloca-opt binary-io byteswap c-ctype c-strcase
|
||||
canonicalize-lgpl
|
||||
careadlinkat close-stream copy-file-range
|
||||
count-leading-zeros count-one-bits count-trailing-zeros
|
||||
crypto/md5 crypto/md5-buffer
|
||||
crypto/sha1-buffer crypto/sha256-buffer crypto/sha512-buffer
|
||||
d-type diffseq double-slash-root dtoastr dtotimespec dup2
|
||||
environ execinfo faccessat
|
||||
environ execinfo explicit_bzero faccessat
|
||||
fchmodat fcntl fcntl-h fdopendir file-has-acl
|
||||
filemode filename filevercmp flexmember fpieee
|
||||
free-posix fstatat fsusage fsync futimens
|
||||
getloadavg getopt-gnu getrandom gettime gettimeofday gitlog-to-changelog
|
||||
ieee754-h ignore-value intprops largefile libgmp lstat
|
||||
manywarnings memmem-simple mempcpy memrchr memset_explicit
|
||||
minmax mkostemp mktime
|
||||
manywarnings memmem-simple mempcpy memrchr minmax mkostemp mktime
|
||||
nanosleep nproc nstrftime
|
||||
pathmax pipe2 pselect pthread_sigmask
|
||||
qcopy-acl readlink readlinkat regex
|
||||
sig2str sigdescr_np socklen stat-time std-gnu11 stdbool stddef stdio
|
||||
sig2str sigdescr_np socklen stat-time std-gnu11 stdalign stdbool stddef stdio
|
||||
stpcpy strnlen strtoimax symlink sys_stat sys_time
|
||||
tempname time-h time_r time_rz timegm timer-time timespec-add timespec-sub
|
||||
tempname time time_r time_rz timegm timer-time timespec-add timespec-sub
|
||||
update-copyright unlocked-io utimensat
|
||||
vla warnings
|
||||
'
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
#
|
||||
# admin/merge-pkg-config
|
||||
|
||||
# Copyright 2014-2023 Free Software Foundation, Inc.
|
||||
# Copyright 2014-2022 Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of GNU Emacs.
|
||||
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ the ones that are not reproducible on the current release.
|
|||
know if you are able to? If I don't hear back in a few
|
||||
weeks, I'll just close this bug as unreproducible."
|
||||
[ ] Check that the priority is reasonable. Most bugs should be
|
||||
marked as normal, but crashes and security issues can be
|
||||
marked as normal, but crashers and security issues can be
|
||||
marked as serious.
|
||||
3. Your changes will take some time to take effect. After a period of minutes
|
||||
to hours, you will get a mail telling you the control message has been
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
Copyright (C) 2007-2023 Free Software Foundation, Inc.
|
||||
Copyright (C) 2007-2022 Free Software Foundation, Inc.
|
||||
See the end of the file for license conditions.
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ NOTES ON THE EMACS PACKAGE ARCHIVE
|
|||
The GNU Emacs package archive, at elpa.gnu.org, is managed using a Git
|
||||
repository named "elpa", hosted on Savannah. To check it out:
|
||||
|
||||
git clone https://git.savannah.gnu.org/git/emacs/elpa
|
||||
git clone git://git.sv.gnu.org/emacs/elpa
|
||||
cd elpa
|
||||
make setup
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
-*- mode: outline; coding: utf-8 -*-
|
||||
|
||||
Copyright (C) 2019-2023 Free Software Foundation, Inc.
|
||||
Copyright (C) 2019-2022 Free Software Foundation, Inc.
|
||||
See the end of the file for license conditions.
|
||||
|
||||
NOTES FOR EMACS CONTINUOUS BUILD ON EMBA
|
||||
|
|
@ -83,46 +83,6 @@ Lisp packages, Makefiles, scripts, and other software could determine
|
|||
whether they run on emba by checking for the environment variable
|
||||
EMACS_EMBA_CI.
|
||||
|
||||
* Running Emba tests locally
|
||||
|
||||
As usual in GitLab, the tests run in containers, which could be
|
||||
applied also locally. Unfortunately, the Emba container registry,
|
||||
emba.gnu.org:5050, is not accessible publicly. Instead, the container
|
||||
images must be build locally. Change the current directory to a
|
||||
recent Emacs branch, and apply the command
|
||||
|
||||
docker build --target emacs-inotify --tag emacs-inotify \
|
||||
-f test/infra/Dockerfile.emba .
|
||||
|
||||
This creates the Debian-based image emacs-inotify, based on the
|
||||
instructions in the file Dockerfile.emba. This image is good for the
|
||||
majority of tests. However, there are also other image build
|
||||
instructions like emacs-filenotify-gio, emacs-eglot, emacs-gnustep and
|
||||
emacs-native-comp-speed{0,1,2}. Use the appropriate one.
|
||||
|
||||
The image contains a directory "/checkout", which is a copy of your
|
||||
local Emacs git repository. Emacs has been built in this directory
|
||||
via "make bootstrap". In order to use the image, start a container
|
||||
like
|
||||
|
||||
docker run --interactive --env EMACS_EMBA_CI=1 --name emacs-inotify \
|
||||
emacs-inotify /bin/sh -i
|
||||
|
||||
In this container, change the current directory to "/checkout". Now
|
||||
you can apply all commands known for Emacs, like
|
||||
|
||||
cd /checkout
|
||||
make -C test files-tests.log
|
||||
|
||||
While this container runs, you can also access its filesystem from
|
||||
your local Emacs via Tramp. For example, in order to see the result
|
||||
of the above test run, open the log file in your local Emacs with
|
||||
|
||||
C-x C-f /docker:emacs-inotify:/checkout/test/lisp/files-tests.log
|
||||
|
||||
Note: On local Red Hat-based systems, use "podman" instead of "docker"
|
||||
in the shell commands and Tramp file names.
|
||||
|
||||
|
||||
This file is part of GNU Emacs.
|
||||
|
||||
|
|
|
|||
|
|
@ -16,14 +16,14 @@ Initial setup
|
|||
|
||||
Then we want to clone the repository. We normally want to have both
|
||||
the current master and (if there is one) the active release branch
|
||||
(eg emacs-29).
|
||||
(eg emacs-28).
|
||||
|
||||
mkdir ~/emacs
|
||||
cd ~/emacs
|
||||
git clone <membername>@git.sv.gnu.org:/srv/git/emacs.git master
|
||||
cd master
|
||||
git config push.default current
|
||||
git worktree add ../emacs-29 emacs-29
|
||||
git worktree add ../emacs-28 emacs-28
|
||||
|
||||
You now have both branches conveniently accessible, and you can do
|
||||
"git pull" in them once in a while to keep updated.
|
||||
|
|
@ -67,7 +67,7 @@ which will look like
|
|||
|
||||
commit 958b768a6534ae6e77a8547a56fc31b46b63710b
|
||||
|
||||
cd ~/emacs/emacs-29
|
||||
cd ~/emacs/emacs-28
|
||||
git cherry-pick -xe 958b768a6534ae6e77a8547a56fc31b46b63710b
|
||||
|
||||
and add "Backport:" to the commit string. Then
|
||||
|
|
@ -109,7 +109,7 @@ up-to-date by doing a pull. Then start Emacs with
|
|||
emacs -l admin/gitmerge.el -f gitmerge
|
||||
|
||||
You'll be asked for the branch to merge, which will default to
|
||||
(eg) 'origin/emacs-29', which you should accept. Merging a local tracking
|
||||
(eg) 'origin/emacs-28', which you should accept. Merging a local tracking
|
||||
branch is discouraged, since it might not be up-to-date, or worse,
|
||||
contain commits from you which are not yet pushed upstream.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
-*- mode: outline; coding: utf-8 -*-
|
||||
|
||||
Copyright (C) 2013-2023 Free Software Foundation, Inc.
|
||||
Copyright (C) 2013-2022 Free Software Foundation, Inc.
|
||||
See the end of the file for license conditions.
|
||||
|
||||
NOTES FOR EMACS CONTINUOUS BUILD ON HYDRA
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
-*- coding: utf-8; mode: text; -*-
|
||||
|
||||
Copyright (C) 2007-2023 Free Software Foundation, Inc.
|
||||
Copyright (C) 2007-2022 Free Software Foundation, Inc.
|
||||
See the end of the file for license conditions.
|
||||
|
||||
From README.multi-tty in the multi-tty branch.
|
||||
|
|
|
|||
|
|
@ -42,24 +42,6 @@ yet another fun excursion into the exciting world of version control.
|
|||
|
||||
https://lists.gnu.org/r/emacs-devel/2010-04/msg00086.html
|
||||
|
||||
* feature and scratch branches
|
||||
|
||||
Besides the master branch, which is where development takes place, and
|
||||
the "emacs-NN" release branches, we also have branches whose names
|
||||
start with "scratch/" and "feature/". The "feature/" prefix is used
|
||||
for feature branches that are intended to live for some time, while
|
||||
"scratch/" is for one-off throw-away-after-use branches.
|
||||
|
||||
We do not intend to "git merge" from scratch branches, so force-pushes
|
||||
are tolerated, as well as commits with poor style, incomplete commit
|
||||
messages, etc.
|
||||
|
||||
We do expect to "git merge" from feature branches so: no force push,
|
||||
and no commits that don't have a proper commit message.
|
||||
|
||||
Automatic tests are run for feature/* branches on EMBA.
|
||||
See: https://emba.gnu.org/emacs/emacs/-/pipelines
|
||||
|
||||
* Installing changes from gnulib
|
||||
|
||||
Some of the files in Emacs are copied from gnulib. To synchronize
|
||||
|
|
@ -128,14 +110,6 @@ again.
|
|||
This is a semi-automated way to find the revision that introduced a bug.
|
||||
Browse 'git help bisect' for technical instructions.
|
||||
|
||||
It is recommended to start a bisection with the admin/git-bisect-start
|
||||
script. Using that script ensures that commits in branches that are
|
||||
the result of merging external trees into the Emacs repository, as
|
||||
well as certain commits on which Emacs fails to build, are skipped
|
||||
during the bisection process. That script can also be executed
|
||||
automatically when 'git bisect start' is called, with the help of a
|
||||
wrapper script that is included in its commentary section.
|
||||
|
||||
* Maintaining ChangeLog history
|
||||
|
||||
Older ChangeLog entries are kept in history files named ChangeLog.1,
|
||||
|
|
|
|||
|
|
@ -1,29 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
languages=(
|
||||
'bash'
|
||||
'c'
|
||||
'cmake'
|
||||
'cpp'
|
||||
'css'
|
||||
'c-sharp'
|
||||
'dockerfile'
|
||||
'elixir'
|
||||
'go'
|
||||
'go-mod'
|
||||
'heex'
|
||||
'html'
|
||||
'javascript'
|
||||
'json'
|
||||
'python'
|
||||
'rust'
|
||||
'toml'
|
||||
'tsx'
|
||||
'typescript'
|
||||
'yaml'
|
||||
)
|
||||
|
||||
for language in "${languages[@]}"
|
||||
do
|
||||
./build.sh $language
|
||||
done
|
||||
|
|
@ -1,92 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
lang=$1
|
||||
topdir="$PWD"
|
||||
|
||||
case $(uname) in
|
||||
"Darwin")
|
||||
soext="dylib"
|
||||
;;
|
||||
*"MINGW"*)
|
||||
soext="dll"
|
||||
;;
|
||||
*)
|
||||
soext="so"
|
||||
;;
|
||||
esac
|
||||
|
||||
echo "Building ${lang}"
|
||||
|
||||
### Retrieve sources
|
||||
|
||||
org="tree-sitter"
|
||||
repo="tree-sitter-${lang}"
|
||||
sourcedir="tree-sitter-${lang}/src"
|
||||
grammardir="tree-sitter-${lang}"
|
||||
|
||||
case "${lang}" in
|
||||
"dockerfile")
|
||||
org="camdencheek"
|
||||
;;
|
||||
"cmake")
|
||||
org="uyha"
|
||||
;;
|
||||
"elixir")
|
||||
org="elixir-lang"
|
||||
;;
|
||||
"go-mod")
|
||||
# The parser is called "gomod".
|
||||
lang="gomod"
|
||||
org="camdencheek"
|
||||
;;
|
||||
"heex")
|
||||
org="phoenixframework"
|
||||
;;
|
||||
"typescript")
|
||||
sourcedir="tree-sitter-typescript/typescript/src"
|
||||
grammardir="tree-sitter-typescript/typescript"
|
||||
;;
|
||||
"tsx")
|
||||
repo="tree-sitter-typescript"
|
||||
sourcedir="tree-sitter-typescript/tsx/src"
|
||||
grammardir="tree-sitter-typescript/tsx"
|
||||
;;
|
||||
"yaml")
|
||||
org="ikatyang"
|
||||
;;
|
||||
esac
|
||||
|
||||
git clone "https://github.com/${org}/${repo}.git" \
|
||||
--depth 1 --quiet
|
||||
cp "${grammardir}"/grammar.js "${sourcedir}"
|
||||
# We have to go into the source directory to compile, because some
|
||||
# C files refer to files like "../../common/scanner.h".
|
||||
cd "${sourcedir}"
|
||||
|
||||
### Build
|
||||
|
||||
cc -fPIC -c -I. parser.c
|
||||
# Compile scanner.c.
|
||||
if test -f scanner.c
|
||||
then
|
||||
cc -fPIC -c -I. scanner.c
|
||||
fi
|
||||
# Compile scanner.cc.
|
||||
if test -f scanner.cc
|
||||
then
|
||||
c++ -fPIC -I. -c scanner.cc
|
||||
fi
|
||||
# Link.
|
||||
if test -f scanner.cc
|
||||
then
|
||||
c++ -fPIC -shared *.o -o "libtree-sitter-${lang}.${soext}"
|
||||
else
|
||||
cc -fPIC -shared *.o -o "libtree-sitter-${lang}.${soext}"
|
||||
fi
|
||||
|
||||
### Copy out
|
||||
|
||||
mkdir -p "${topdir}/dist"
|
||||
cp "libtree-sitter-${lang}.${soext}" "${topdir}/dist"
|
||||
cd "${topdir}"
|
||||
rm -rf "${repo}"
|
||||
|
|
@ -1,458 +0,0 @@
|
|||
STARTER GUIDE ON WRITING MAJOR MODE WITH TREE-SITTER -*- org -*-
|
||||
|
||||
This document guides you on adding tree-sitter support to a major
|
||||
mode.
|
||||
|
||||
TOC:
|
||||
|
||||
- Building Emacs with tree-sitter
|
||||
- Install language definitions
|
||||
- Setup
|
||||
- Naming convention
|
||||
- Font-lock
|
||||
- Indent
|
||||
- Imenu
|
||||
- Navigation
|
||||
- Which-func
|
||||
- More features?
|
||||
- Common tasks (code snippets)
|
||||
- Manual
|
||||
- Appendix 1
|
||||
|
||||
* Building Emacs with tree-sitter
|
||||
|
||||
You can either install tree-sitter by your package manager, or from
|
||||
source:
|
||||
|
||||
git clone https://github.com/tree-sitter/tree-sitter.git
|
||||
cd tree-sitter
|
||||
make
|
||||
make install
|
||||
|
||||
Then pull the tree-sitter branch (or the master branch, if it has
|
||||
merged) and rebuild Emacs.
|
||||
|
||||
* Install language definitions
|
||||
|
||||
Tree-sitter by itself doesn’t know how to parse any particular
|
||||
language. We need to install language definitions (or “grammars”) for
|
||||
a language to be able to parse it. There are a couple of ways to get
|
||||
them.
|
||||
|
||||
You can use this script that I put together here:
|
||||
|
||||
https://github.com/casouri/tree-sitter-module
|
||||
|
||||
This script automatically pulls and builds language definitions for C,
|
||||
C++, Rust, JSON, Go, HTML, JavaScript, CSS, Python, Typescript,
|
||||
C#, etc. Better yet, I pre-built these language definitions for
|
||||
GNU/Linux and macOS, they can be downloaded here:
|
||||
|
||||
https://github.com/casouri/tree-sitter-module/releases/tag/v2.1
|
||||
|
||||
To build them yourself, run
|
||||
|
||||
git clone git@github.com:casouri/tree-sitter-module.git
|
||||
cd tree-sitter-module
|
||||
./batch.sh
|
||||
|
||||
and language definitions will be in the /dist directory. You can
|
||||
either copy them to standard dynamic library locations of your system,
|
||||
eg, /usr/local/lib, or leave them in /dist and later tell Emacs where
|
||||
to find language definitions by setting ‘treesit-extra-load-path’.
|
||||
|
||||
Language definition sources can be found on GitHub under
|
||||
tree-sitter/xxx, like tree-sitter/tree-sitter-python. The tree-sitter
|
||||
organization has all the "official" language definitions:
|
||||
|
||||
https://github.com/tree-sitter
|
||||
|
||||
Alternatively, you can use treesit-install-language-grammar command
|
||||
and follow its instructions. If everything goes right, it should
|
||||
automatically download and compile the language grammar for you.
|
||||
|
||||
* Setting up for adding major mode features
|
||||
|
||||
Start Emacs and load tree-sitter with
|
||||
|
||||
(require 'treesit)
|
||||
|
||||
Now check if Emacs is built with tree-sitter library
|
||||
|
||||
(treesit-available-p)
|
||||
|
||||
Make sure Emacs can find the language grammar you want to use
|
||||
|
||||
(treesit-language-available-p 'lang)
|
||||
|
||||
* Tree-sitter major modes
|
||||
|
||||
Tree-sitter modes should be separate major modes, so other modes
|
||||
inheriting from the original mode don't break if tree-sitter is
|
||||
enabled. For example js2-mode inherits js-mode, we can't enable
|
||||
tree-sitter in js-mode, lest js-mode would not setup things that
|
||||
js2-mode expects to inherit from. So it's best to use separate major
|
||||
modes.
|
||||
|
||||
If the tree-sitter variant and the "native" variant could share some
|
||||
setup, you can create a "base mode", which only contains the common
|
||||
setup. For example, python.el defines python-base-mode (shared),
|
||||
python-mode (native), and python-ts-mode (tree-sitter).
|
||||
|
||||
In the tree-sitter mode, check if we can use tree-sitter with
|
||||
treesit-ready-p, it will error out if tree-sitter is not ready.
|
||||
|
||||
In Emacs 30 we'll introduce some mechanism to more gracefully inherit
|
||||
modes and fallback to other modes.
|
||||
|
||||
* Naming convention
|
||||
|
||||
Use tree-sitter for text (documentation, comment), use treesit for
|
||||
symbol (variable, function).
|
||||
|
||||
* Font-lock
|
||||
|
||||
Tree-sitter works like this: You provide a query made of patterns and
|
||||
capture names, tree-sitter finds the nodes that match these patterns,
|
||||
tag the corresponding capture names onto the nodes and return them to
|
||||
you. The query function returns a list of (capture-name . node). For
|
||||
font-lock, we use face names as capture names. And the captured node
|
||||
will be fontified in their capture name.
|
||||
|
||||
The capture name could also be a function, in which case (NODE
|
||||
OVERRIDE START END) is passed to the function for fontification. START
|
||||
and END are the start and end of the region to be fontified. The
|
||||
function should only fontify within that region. The function should
|
||||
also allow more optional arguments with (&rest _), for future
|
||||
extensibility. For OVERRIDE check out the docstring of
|
||||
treesit-font-lock-rules.
|
||||
|
||||
** Query syntax
|
||||
|
||||
There are two types of nodes, named, like (identifier),
|
||||
(function_definition), and anonymous, like "return", "def", "(",
|
||||
"}". Parent-child relationship is expressed as
|
||||
|
||||
(parent (child) (child) (child (grand_child)))
|
||||
|
||||
Eg, an argument list (1, "3", 1) could be:
|
||||
|
||||
(argument_list "(" (number) (string) (number) ")")
|
||||
|
||||
Children could have field names in its parent:
|
||||
|
||||
(function_definition name: (identifier) type: (identifier))
|
||||
|
||||
Match any of the list:
|
||||
|
||||
["true" "false" "none"]
|
||||
|
||||
Capture names can come after any node in the pattern:
|
||||
|
||||
(parent (child) @child) @parent
|
||||
|
||||
The query above captures both parent and child.
|
||||
|
||||
["return" "continue" "break"] @keyword
|
||||
|
||||
The query above captures all the keywords with capture name
|
||||
"keyword".
|
||||
|
||||
These are the common syntax, see all of them in the manual
|
||||
("Parsing Program Source" section).
|
||||
|
||||
** Query references
|
||||
|
||||
But how do one come up with the queries? Take python for an example,
|
||||
open any python source file, type M-x treesit-explore-mode RET. Now
|
||||
you should see the parse-tree in a separate window, automatically
|
||||
updated as you select text or edit the buffer. Besides this, you can
|
||||
consult the grammar of the language definition. For example, Python’s
|
||||
grammar file is at
|
||||
|
||||
https://github.com/tree-sitter/tree-sitter-python/blob/master/grammar.js
|
||||
|
||||
Neovim also has a bunch of queries to reference:
|
||||
|
||||
https://github.com/nvim-treesitter/nvim-treesitter/tree/master/queries
|
||||
|
||||
The manual explains how to read grammar files in the bottom of section
|
||||
"Tree-sitter Language Definitions".
|
||||
|
||||
** Debugging queries
|
||||
|
||||
If your query has problems, use ‘treesit-query-validate’ to debug the
|
||||
query. It will pop a buffer containing the query (in text format) and
|
||||
mark the offending part in red.
|
||||
|
||||
** Code
|
||||
|
||||
To enable tree-sitter font-lock, set ‘treesit-font-lock-settings’ and
|
||||
‘treesit-font-lock-feature-list’ buffer-locally and call
|
||||
‘treesit-major-mode-setup’. For example, see
|
||||
‘python--treesit-settings’ in python.el. Below is a snippet of it.
|
||||
|
||||
Just like the current font-lock, if the to-be-fontified region already
|
||||
has a face (ie, an earlier match fontified part/all of the region),
|
||||
the new face is discarded rather than applied. If you want later
|
||||
matches always override earlier matches, use the :override keyword.
|
||||
|
||||
Each rule should have a :feature, like function-name,
|
||||
string-interpolation, builtin, etc. Users can then enable/disable each
|
||||
feature individually. See Appendix 1 at the bottom for a set of common
|
||||
features names.
|
||||
|
||||
#+begin_src elisp
|
||||
(defvar python--treesit-settings
|
||||
(treesit-font-lock-rules
|
||||
:feature 'comment
|
||||
:language 'python
|
||||
'((comment) @font-lock-comment-face)
|
||||
|
||||
:feature 'string
|
||||
:language 'python
|
||||
'((string) @font-lock-string-face
|
||||
(string) @contextual) ; Contextual special treatment.
|
||||
|
||||
:feature 'function-name
|
||||
:language 'python
|
||||
'((function_definition
|
||||
name: (identifier) @font-lock-function-name-face))
|
||||
|
||||
:feature 'class-name
|
||||
:language 'python
|
||||
'((class_definition
|
||||
name: (identifier) @font-lock-type-face))
|
||||
|
||||
...))
|
||||
#+end_src
|
||||
|
||||
Then in ‘python-mode’, enable tree-sitter font-lock:
|
||||
|
||||
#+begin_src elisp
|
||||
(treesit-parser-create 'python)
|
||||
(setq-local treesit-font-lock-settings python--treesit-settings)
|
||||
(setq-local treesit-font-lock-feature-list
|
||||
'((comment string function-name)
|
||||
(class-name keyword builtin)
|
||||
(string-interpolation decorator)))
|
||||
...
|
||||
(treesit-major-mode-setup)
|
||||
#+end_src
|
||||
|
||||
Concretely, something like this:
|
||||
|
||||
#+begin_src elisp
|
||||
(define-derived-mode python-mode prog-mode "Python"
|
||||
...
|
||||
(cond
|
||||
;; Tree-sitter.
|
||||
((treesit-ready-p 'python)
|
||||
(treesit-parser-create 'python)
|
||||
(setq-local treesit-font-lock-settings python--treesit-settings)
|
||||
(setq-local treesit-font-lock-feature-list
|
||||
'((comment string function-name)
|
||||
(class-name keyword builtin)
|
||||
(string-interpolation decorator)))
|
||||
(treesit-major-mode-setup))
|
||||
(t
|
||||
;; No tree-sitter, do nothing or fallback to another mode.
|
||||
...)))
|
||||
#+end_src
|
||||
|
||||
* Indent
|
||||
|
||||
Indent works like this: We have a bunch of rules that look like
|
||||
|
||||
(MATCHER ANCHOR OFFSET)
|
||||
|
||||
When the indentation process starts, point is at the BOL of a line, we
|
||||
want to know which column to indent this line to. Let NODE be the node
|
||||
at point, we pass this node to the MATCHER of each rule, one of them
|
||||
will match the node (eg, "this node is a closing bracket!"). Then we
|
||||
pass the node to the ANCHOR, which returns a point, eg, the BOL of the
|
||||
previous line. We find the column number of that point (eg, 4), add
|
||||
OFFSET to it (eg, 0), and that is the column we want to indent the
|
||||
current line to (4 + 0 = 4).
|
||||
|
||||
Matchers and anchors are functions that takes (NODE PARENT BOL &rest
|
||||
_). Matches return nil/non-nil for no match/match, and anchors return
|
||||
the anchor point. Below are some convenient builtin matchers and anchors.
|
||||
|
||||
For MATCHER we have
|
||||
|
||||
(parent-is TYPE) => matches if PARENT’s type matches TYPE as regexp
|
||||
(node-is TYPE) => matches NODE’s type
|
||||
(query QUERY) => matches if querying PARENT with QUERY
|
||||
captures NODE.
|
||||
|
||||
(match NODE-TYPE PARENT-TYPE NODE-FIELD
|
||||
NODE-INDEX-MIN NODE-INDEX-MAX)
|
||||
|
||||
=> checks everything. If an argument is nil, don’t match that. Eg,
|
||||
(match nil TYPE) is the same as (parent-is TYPE)
|
||||
|
||||
For ANCHOR we have
|
||||
|
||||
first-sibling => start of the first sibling
|
||||
parent => start of parent
|
||||
parent-bol => BOL of the line parent is on.
|
||||
standalone-parent => Like parent-bol but handles more edge cases
|
||||
prev-sibling => start of previous sibling
|
||||
no-indent => current position (don’t indent)
|
||||
prev-line => start of previous line
|
||||
|
||||
There is also a manual section for indent: "Parser-based Indentation".
|
||||
|
||||
When writing indent rules, you can use ‘treesit-check-indent’ to
|
||||
check if your indentation is correct. To debug what went wrong, set
|
||||
‘treesit--indent-verbose’ to non-nil. Then when you indent, Emacs
|
||||
tells you which rule is applied in the echo area.
|
||||
|
||||
#+begin_src elisp
|
||||
(defvar typescript-mode-indent-rules
|
||||
(let ((offset typescript-indent-offset))
|
||||
`((typescript
|
||||
;; This rule matches if node at point is "}", ANCHOR is the
|
||||
;; parent node’s BOL, and offset is 0.
|
||||
((node-is "}") parent-bol 0)
|
||||
((node-is ")") parent-bol 0)
|
||||
((node-is "]") parent-bol 0)
|
||||
((node-is ">") parent-bol 0)
|
||||
((node-is "\\.") parent-bol ,offset)
|
||||
((parent-is "ternary_expression") parent-bol ,offset)
|
||||
((parent-is "named_imports") parent-bol ,offset)
|
||||
((parent-is "statement_block") parent-bol ,offset)
|
||||
((parent-is "type_arguments") parent-bol ,offset)
|
||||
((parent-is "variable_declarator") parent-bol ,offset)
|
||||
((parent-is "arguments") parent-bol ,offset)
|
||||
((parent-is "array") parent-bol ,offset)
|
||||
((parent-is "formal_parameters") parent-bol ,offset)
|
||||
((parent-is "template_substitution") parent-bol ,offset)
|
||||
((parent-is "object_pattern") parent-bol ,offset)
|
||||
((parent-is "object") parent-bol ,offset)
|
||||
((parent-is "object_type") parent-bol ,offset)
|
||||
((parent-is "enum_body") parent-bol ,offset)
|
||||
((parent-is "arrow_function") parent-bol ,offset)
|
||||
((parent-is "parenthesized_expression") parent-bol ,offset)
|
||||
...))))
|
||||
#+end_src
|
||||
|
||||
To setup indentation for your major mode, set
|
||||
‘treesit-simple-indent-rules’ to your rules, and call
|
||||
‘treesit-major-mode-setup’:
|
||||
|
||||
#+begin_src elisp
|
||||
(setq-local treesit-simple-indent-rules typescript-mode-indent-rules)
|
||||
(treesit-major-mode-setup)
|
||||
#+end_src
|
||||
|
||||
* Imenu
|
||||
|
||||
Set ‘treesit-simple-imenu-settings’ and call
|
||||
‘treesit-major-mode-setup’.
|
||||
|
||||
* Navigation
|
||||
|
||||
Set ‘treesit-defun-type-regexp’ and call
|
||||
‘treesit-major-mode-setup’. You can additionally set
|
||||
‘treesit-defun-name-function’.
|
||||
|
||||
* Which-func
|
||||
|
||||
If you have an imenu implementation, set ‘which-func-functions’ to
|
||||
nil, and which-func will automatically use imenu’s data.
|
||||
|
||||
If you want an independent implementation for which-func, you can
|
||||
find the current function by ‘treesit-defun-at-point’.
|
||||
|
||||
* More features?
|
||||
|
||||
Obviously this list is just a starting point, if there are features in
|
||||
the major mode that would benefit from a parse tree, adding tree-sitter
|
||||
support for that would be great. But in the minimal case, just adding
|
||||
font-lock is awesome.
|
||||
|
||||
* Common tasks
|
||||
|
||||
How to...
|
||||
|
||||
** Get the buffer text corresponding to a node?
|
||||
|
||||
(treesit-node-text node)
|
||||
|
||||
BTW ‘treesit-node-string’ does different things.
|
||||
|
||||
** Scan the whole tree for stuff?
|
||||
|
||||
(treesit-search-subtree)
|
||||
(treesit-search-forward)
|
||||
(treesit-induce-sparse-tree)
|
||||
|
||||
** Move to next node that...?
|
||||
|
||||
(treesit-search-forward-goto)
|
||||
|
||||
** Get the root node?
|
||||
|
||||
(treesit-buffer-root-node)
|
||||
|
||||
** Get the node at point?
|
||||
|
||||
(treesit-node-at (point))
|
||||
|
||||
* Manual
|
||||
|
||||
I suggest you read the manual section for tree-sitter in Info. The
|
||||
section is Parsing Program Source. Typing
|
||||
|
||||
C-h i d m elisp RET g Parsing Program Source RET
|
||||
|
||||
will bring you to that section. You don’t need to read through every
|
||||
sentence, just read the text paragraphs and glance over function
|
||||
names.
|
||||
|
||||
* Appendix 1
|
||||
|
||||
Below is a set of common features used by built-in major mode.
|
||||
|
||||
Basic tokens:
|
||||
|
||||
delimiter ,.; (delimit things)
|
||||
operator == != || (produces a value)
|
||||
bracket []{}()
|
||||
misc-punctuation (other punctuation that you want to highlight)
|
||||
|
||||
constant true, false, null
|
||||
number
|
||||
keyword
|
||||
comment (includes doc-comments)
|
||||
string (includes chars and docstrings)
|
||||
string-interpolation f"text {variable}"
|
||||
escape-sequence "\n\t\\"
|
||||
function every function identifier
|
||||
variable every variable identifier
|
||||
type every type identifier
|
||||
property a.b <--- highlight b
|
||||
key { a: b, c: d } <--- highlight a, c
|
||||
error highlight parse error
|
||||
|
||||
Abstract features:
|
||||
|
||||
assignment: the LHS of an assignment (thing being assigned to), eg:
|
||||
|
||||
a = b <--- highlight a
|
||||
a.b = c <--- highlight b
|
||||
a[1] = d <--- highlight a
|
||||
|
||||
definition: the thing being defined, eg:
|
||||
|
||||
int a(int b) { <--- highlight a
|
||||
return 0
|
||||
}
|
||||
|
||||
int a; <-- highlight a
|
||||
|
||||
struct a { <--- highlight a
|
||||
int b; <--- highlight b
|
||||
}
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
NOTES ON TREESIT_RECORD_CHANGE
|
||||
|
||||
It is vital that Emacs informs tree-sitter of every change made to the
|
||||
buffer, lest tree-sitter's parse tree would be corrupted/out of sync.
|
||||
|
||||
All buffer changes in Emacs are made through functions in insdel.c
|
||||
(and casefiddle.c), I augmented functions in those files with calls to
|
||||
treesit_record_change. Below is a manifest of all the relevant
|
||||
functions in insdel.c as of Emacs 29:
|
||||
|
||||
Function Calls
|
||||
----------------------------------------------------------------------
|
||||
copy_text (*1)
|
||||
insert insert_1_both
|
||||
insert_and_inherit insert_1_both
|
||||
insert_char insert
|
||||
insert_string insert
|
||||
insert_before_markers insert_1_both
|
||||
insert_before_markers_and_inherit insert_1_both
|
||||
insert_1_both treesit_record_change
|
||||
insert_from_string insert_from_string_1
|
||||
insert_from_string_before_markers insert_from_string_1
|
||||
insert_from_string_1 treesit_record_change
|
||||
insert_from_gap_1 treesit_record_change
|
||||
insert_from_gap insert_from_gap_1
|
||||
insert_from_buffer treesit_record_change
|
||||
insert_from_buffer_1 (used by insert_from_buffer) (*2)
|
||||
replace_range treesit_record_change
|
||||
replace_range_2 (caller needs to call treesit_r_c)
|
||||
del_range del_range_1
|
||||
del_range_1 del_range_2
|
||||
del_range_byte del_range_2
|
||||
del_range_both del_range_2
|
||||
del_range_2 treesit_record_change
|
||||
|
||||
(*1) This functions is used only to copy from string to string when
|
||||
used outside of insdel.c, and when used inside insdel.c, the caller
|
||||
calls treesit_record_change.
|
||||
|
||||
(*2) This function is a static function, and insert_from_buffer is its
|
||||
only caller. So it should be fine to call treesit_record_change in
|
||||
insert_from_buffer but not insert_from_buffer_1. I also left a
|
||||
reminder comment.
|
||||
|
||||
|
||||
As for casefiddle.c, do_casify_unibyte_region and
|
||||
do_casify_multibyte_region modifies buffer, but they are static
|
||||
functions and are called by casify_region, which calls
|
||||
treesit_record_change. Other higher-level functions calls
|
||||
casify_region to do the work.
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
-*-mode: text; coding: utf-8;-*-
|
||||
|
||||
Copyright (C) 2002-2023 Free Software Foundation, Inc.
|
||||
Copyright (C) 2002-2022 Free Software Foundation, Inc.
|
||||
See the end of the file for license conditions.
|
||||
|
||||
Importing a new Unicode Standard version into Emacs
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
-*- outline -*-
|
||||
|
||||
Copyright (C) 2013-2023 Free Software Foundation, Inc.
|
||||
Copyright (C) 2013-2022 Free Software Foundation, Inc.
|
||||
See the end of the file for license conditions.
|
||||
|
||||
NOTES FOR EMACS WWW PAGES
|
||||
|
|
|
|||
|
|
@ -10,10 +10,9 @@ results for plausibility, then commit them.
|
|||
A few known problems with the build-aux/update-copyright script:
|
||||
|
||||
. it doesn't update config.bat, msdos/depfiles.bat,
|
||||
nt/configure.bat, etc/tutorials/TUTORIAL.cn,
|
||||
etc/tutorials/TUTORIAL.el_GR, and etc/tutorials/TUTORIAL.he
|
||||
because the "Copyright" statement begins in these files
|
||||
after a prefix that is more than 5 characters long
|
||||
nt/configure.bat, etc/tutorials/TUTORIAL.cn, and
|
||||
etc/tutorials/TUTORIAL.he because the "Copyright" statement begins
|
||||
in these files after a prefix that is more than 5 characters long
|
||||
. it doesn't update etc/tutorials/TUTORIAL.nl and
|
||||
etc/tutorials/TUTORIAL.ro for some reason
|
||||
. it doesn't update the second Copyright notice, the one that gets
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
Copyright (C) 2001-2023 Free Software Foundation, Inc.
|
||||
Copyright (C) 2001-2022 Free Software Foundation, Inc.
|
||||
See the end of the file for license conditions.
|
||||
|
||||
Emacs for Windows
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
Copyright (C) 2001-2023 Free Software Foundation, Inc.
|
||||
Copyright (C) 2001-2022 Free Software Foundation, Inc.
|
||||
See the end of the file for license conditions.
|
||||
|
||||
Precompiled Distributions of
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
## Copyright (C) 2017-2023 Free Software Foundation, Inc.
|
||||
## Copyright (C) 2017-2022 Free Software Foundation, Inc.
|
||||
|
||||
## This file is part of GNU Emacs.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#!/bin/bash
|
||||
|
||||
## Copyright (C) 2017-2023 Free Software Foundation, Inc.
|
||||
## Copyright (C) 2017-2022 Free Software Foundation, Inc.
|
||||
|
||||
## This file is part of GNU Emacs.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#!/bin/sh
|
||||
### quick-install-emacs --- do a halfway-decent job of installing emacs quickly
|
||||
|
||||
## Copyright (C) 2001-2023 Free Software Foundation, Inc.
|
||||
## Copyright (C) 2001-2022 Free Software Foundation, Inc.
|
||||
|
||||
## Author: Miles Bader <miles@gnu.org>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
### @configure_input@
|
||||
|
||||
# Copyright (C) 2012-2023 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2012-2022 Free Software Foundation, Inc.
|
||||
|
||||
# Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011
|
||||
# National Institute of Advanced Industrial Science and Technology (AIST)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#!/usr/bin/awk -f
|
||||
|
||||
## Copyright (C) 2015-2023 Free Software Foundation, Inc.
|
||||
## Copyright (C) 2015-2022 Free Software Foundation, Inc.
|
||||
|
||||
## Author: Glenn Morris <rgm@gnu.org>
|
||||
## Maintainer: emacs-devel@gnu.org
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#!/usr/bin/awk -f
|
||||
|
||||
## Copyright (C) 2020, 2022-2023 Free Software Foundation, Inc.
|
||||
## Copyright (C) 2020, 2022 Free Software Foundation, Inc.
|
||||
|
||||
## Author: Robert Pluim <rpluim@gmail.com>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
;;; unidata-gen.el --- Create files containing character property data -*- lexical-binding:t -*-
|
||||
|
||||
;; Copyright (C) 2008-2023 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2008-2022 Free Software Foundation, Inc.
|
||||
|
||||
;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011
|
||||
;; National Institute of Advanced Industrial Science and Technology (AIST)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
;;; uvs.el --- utility for UVS (format 14) cmap subtables in OpenType fonts -*- lexical-binding:t -*-
|
||||
|
||||
;; Copyright (C) 2014-2023 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2014-2022 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
# By default, this script uses the local-time calendar year.
|
||||
# Set the UPDATE_COPYRIGHT_YEAR environment variable to override the default.
|
||||
|
||||
# Copyright 2013-2023 Free Software Foundation, Inc.
|
||||
# Copyright 2013-2022 Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of GNU Emacs.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#!/usr/bin/env bash
|
||||
### update_autogen - update some auto-generated files in the Emacs tree
|
||||
|
||||
## Copyright (C) 2011-2023 Free Software Foundation, Inc.
|
||||
## Copyright (C) 2011-2022 Free Software Foundation, Inc.
|
||||
|
||||
## Author: Glenn Morris <rgm@gnu.org>
|
||||
## Maintainer: Stefan Kangas <stefankangas@gmail.com>
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
### upload-manuals - upload the Emacs manuals to the gnu.org website
|
||||
|
||||
## Copyright 2018-2023 Free Software Foundation, Inc.
|
||||
## Copyright 2018-2022 Free Software Foundation, Inc.
|
||||
|
||||
## Author: Glenn Morris <rgm@gnu.org>
|
||||
## Maintainer: emacs-devel@gnu.org
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#!/bin/sh
|
||||
### autogen.sh - tool to help build Emacs from a repository checkout
|
||||
|
||||
## Copyright (C) 2011-2023 Free Software Foundation, Inc.
|
||||
## Copyright (C) 2011-2022 Free Software Foundation, Inc.
|
||||
|
||||
## Author: Glenn Morris <rgm@gnu.org>
|
||||
## Maintainer: emacs-devel@gnu.org
|
||||
|
|
@ -340,8 +340,7 @@ git_config diff.texinfo.xfuncname \
|
|||
tailored_hooks=
|
||||
sample_hooks=
|
||||
|
||||
for hook in commit-msg pre-commit prepare-commit-msg post-commit \
|
||||
pre-push commit-msg-files.awk; do
|
||||
for hook in commit-msg pre-commit prepare-commit-msg; do
|
||||
cmp -- build-aux/git-hooks/$hook "$hooks/$hook" >/dev/null 2>&1 ||
|
||||
tailored_hooks="$tailored_hooks $hook"
|
||||
done
|
||||
|
|
|
|||
12
build-aux/config.guess
vendored
12
build-aux/config.guess
vendored
|
|
@ -1,10 +1,10 @@
|
|||
#! /bin/sh
|
||||
# Attempt to guess a canonical system name.
|
||||
# Copyright 1992-2023 Free Software Foundation, Inc.
|
||||
# Copyright 1992-2022 Free Software Foundation, Inc.
|
||||
|
||||
# shellcheck disable=SC2006,SC2268 # see below for rationale
|
||||
|
||||
timestamp='2023-01-01'
|
||||
timestamp='2022-08-01'
|
||||
|
||||
# This file is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by
|
||||
|
|
@ -60,7 +60,7 @@ version="\
|
|||
GNU config.guess ($timestamp)
|
||||
|
||||
Originally written by Per Bothner.
|
||||
Copyright 1992-2023 Free Software Foundation, Inc.
|
||||
Copyright 1992-2022 Free Software Foundation, Inc.
|
||||
|
||||
This is free software; see the source for copying conditions. There is NO
|
||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||
|
|
@ -966,12 +966,6 @@ EOF
|
|||
GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
|
||||
GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC
|
||||
;;
|
||||
x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*)
|
||||
GUESS="$UNAME_MACHINE-pc-managarm-mlibc"
|
||||
;;
|
||||
*:[Mm]anagarm:*:*)
|
||||
GUESS="$UNAME_MACHINE-unknown-managarm-mlibc"
|
||||
;;
|
||||
*:Minix:*:*)
|
||||
GUESS=$UNAME_MACHINE-unknown-minix
|
||||
;;
|
||||
|
|
|
|||
33
build-aux/config.sub
vendored
33
build-aux/config.sub
vendored
|
|
@ -1,10 +1,10 @@
|
|||
#! /bin/sh
|
||||
# Configuration validation subroutine script.
|
||||
# Copyright 1992-2023 Free Software Foundation, Inc.
|
||||
# Copyright 1992-2022 Free Software Foundation, Inc.
|
||||
|
||||
# shellcheck disable=SC2006,SC2268 # see below for rationale
|
||||
|
||||
timestamp='2023-01-21'
|
||||
timestamp='2022-08-01'
|
||||
|
||||
# This file is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by
|
||||
|
|
@ -76,7 +76,7 @@ Report bugs and patches to <config-patches@gnu.org>."
|
|||
version="\
|
||||
GNU config.sub ($timestamp)
|
||||
|
||||
Copyright 1992-2023 Free Software Foundation, Inc.
|
||||
Copyright 1992-2022 Free Software Foundation, Inc.
|
||||
|
||||
This is free software; see the source for copying conditions. There is NO
|
||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||
|
|
@ -145,7 +145,7 @@ case $1 in
|
|||
nto-qnx* | linux-* | uclinux-uclibc* \
|
||||
| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
|
||||
| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
|
||||
| storm-chaos* | os2-emx* | rtmk-nova* | managarm-*)
|
||||
| storm-chaos* | os2-emx* | rtmk-nova*)
|
||||
basic_machine=$field1
|
||||
basic_os=$maybe_os
|
||||
;;
|
||||
|
|
@ -1075,7 +1075,7 @@ case $cpu-$vendor in
|
|||
pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
|
||||
cpu=i586
|
||||
;;
|
||||
pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*)
|
||||
pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
|
||||
cpu=i686
|
||||
;;
|
||||
pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
|
||||
|
|
@ -1341,10 +1341,6 @@ EOF
|
|||
kernel=linux
|
||||
os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
|
||||
;;
|
||||
managarm*)
|
||||
kernel=managarm
|
||||
os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
|
||||
;;
|
||||
*)
|
||||
kernel=
|
||||
os=$basic_os
|
||||
|
|
@ -1758,7 +1754,7 @@ case $os in
|
|||
| onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
|
||||
| midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
|
||||
| nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
|
||||
| fiwix* | mlibc* )
|
||||
| fiwix* )
|
||||
;;
|
||||
# This one is extra strict with allowed versions
|
||||
sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
|
||||
|
|
@ -1766,9 +1762,6 @@ case $os in
|
|||
;;
|
||||
none)
|
||||
;;
|
||||
kernel* )
|
||||
# Restricted further below
|
||||
;;
|
||||
*)
|
||||
echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
|
||||
exit 1
|
||||
|
|
@ -1779,26 +1772,16 @@ esac
|
|||
# (given a valid OS), if there is a kernel.
|
||||
case $kernel-$os in
|
||||
linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
|
||||
| linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* )
|
||||
| linux-musl* | linux-relibc* | linux-uclibc* )
|
||||
;;
|
||||
uclinux-uclibc* )
|
||||
;;
|
||||
managarm-mlibc* | managarm-kernel* )
|
||||
;;
|
||||
-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* )
|
||||
-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* )
|
||||
# These are just libc implementations, not actual OSes, and thus
|
||||
# require a kernel.
|
||||
echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
|
||||
exit 1
|
||||
;;
|
||||
-kernel* )
|
||||
echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2
|
||||
exit 1
|
||||
;;
|
||||
*-kernel* )
|
||||
echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2
|
||||
exit 1
|
||||
;;
|
||||
kfreebsd*-gnu* | kopensolaris*-gnu*)
|
||||
;;
|
||||
vxworks-simlinux | vxworks-simwindows | vxworks-spe)
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#!/bin/sh
|
||||
# Check the format of GNU Emacs change log entries.
|
||||
|
||||
# Copyright 2014-2023 Free Software Foundation, Inc.
|
||||
# Copyright 2014-2022 Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of GNU Emacs.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,128 +0,0 @@
|
|||
# Check the file list of GNU Emacs change log entries for each commit SHA.
|
||||
|
||||
# Copyright 2023 Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of GNU Emacs.
|
||||
|
||||
# GNU Emacs is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
# GNU Emacs is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
### Commentary:
|
||||
|
||||
# This script accepts a list of (unabbreviated) Git commit SHAs, and
|
||||
# will then iterate over them to check that any files mentioned in the
|
||||
# commit message are actually present in the commit's diff. If not,
|
||||
# it will print out the incorrect file names and return 1.
|
||||
|
||||
# You can also pass "-v reason=pre-push", which will add more-verbose
|
||||
# output, indicating the abbreviated commit SHA and first line of the
|
||||
# commit message for any improper commits.
|
||||
|
||||
### Code:
|
||||
|
||||
function get_commit_changes(commit_sha, changes, cmd, i, j, len, \
|
||||
bits, filename) {
|
||||
# Collect all the files touched in the specified commit.
|
||||
cmd = ("git show --name-status --first-parent --format= " commit_sha)
|
||||
while ((cmd | getline) > 0) {
|
||||
for (i = 2; i <= NF; i++) {
|
||||
len = split($i, bits, "/")
|
||||
for (j = 1; j <= len; j++) {
|
||||
if (j == 1)
|
||||
filename = bits[j]
|
||||
else
|
||||
filename = filename "/" bits[j]
|
||||
changes[filename] = 1
|
||||
}
|
||||
}
|
||||
}
|
||||
close(cmd)
|
||||
}
|
||||
|
||||
function check_commit_msg_files(commit_sha, verbose, changes, good, \
|
||||
cmd, msg, filenames_str, filenames, i) {
|
||||
get_commit_changes(commit_sha, changes)
|
||||
good = 1
|
||||
|
||||
cmd = ("git log -1 --format=%B " commit_sha)
|
||||
while ((cmd | getline) > 0) {
|
||||
if (verbose && ! msg)
|
||||
msg = $0
|
||||
|
||||
# Find file entries in the commit message. We look at any line
|
||||
# starting with "*" (possibly prefixed by "; ") followed by a ":",
|
||||
# possibly on a different line. If we encounter a blank line
|
||||
# without seeing a ":", then we don't treat that as a file entry.
|
||||
|
||||
# Accumulate the contents of a (possible) file entry.
|
||||
if (/^[ \t]*$/)
|
||||
filenames_str = ""
|
||||
else if (/^(; )?\*[ \t]+[[:alnum:]]/)
|
||||
filenames_str = $0
|
||||
else if (filenames_str)
|
||||
filenames_str = (filenames_str $0)
|
||||
|
||||
# We have a file entry; analyze it.
|
||||
if (filenames_str && /:/) {
|
||||
# Delete the leading "*" and any trailing information.
|
||||
sub(/^(; )?\*[ \t]+/, "", filenames_str)
|
||||
sub(/[ \t]*[[(<:].*$/, "", filenames_str)
|
||||
|
||||
# There might be multiple files listed in this entry, separated
|
||||
# by spaces (and possibly a comma). Iterate over each of them.
|
||||
split(filenames_str, filenames, ",[ \t]+")
|
||||
for (i in filenames) {
|
||||
# Remove trailing slashes from any directory entries.
|
||||
sub(/\/$/, "", filenames[i])
|
||||
|
||||
if (length(filenames[i]) && ! (filenames[i] in changes)) {
|
||||
if (good) {
|
||||
# Print a header describing the error.
|
||||
if (verbose)
|
||||
printf("In commit %s \"%s\"...\n", substr(commit_sha, 1, 10), msg)
|
||||
printf("Files listed in commit message, but not in diff:\n")
|
||||
}
|
||||
printf(" %s\n", filenames[i])
|
||||
good = 0
|
||||
}
|
||||
}
|
||||
|
||||
filenames_str = ""
|
||||
}
|
||||
}
|
||||
close(cmd)
|
||||
|
||||
return good
|
||||
}
|
||||
|
||||
BEGIN {
|
||||
if (reason == "pre-push")
|
||||
verbose = 1
|
||||
}
|
||||
|
||||
/^[a-z0-9]{40}$/ {
|
||||
if (! check_commit_msg_files($0, verbose)) {
|
||||
status = 1
|
||||
}
|
||||
}
|
||||
|
||||
END {
|
||||
if (status != 0) {
|
||||
if (reason == "pre-push")
|
||||
error_msg = "Push aborted"
|
||||
else
|
||||
error_msg = "Bad commit message"
|
||||
printf("%s; please see the file 'CONTRIBUTE'\n", error_msg)
|
||||
}
|
||||
exit status
|
||||
}
|
||||
|
|
@ -1,47 +0,0 @@
|
|||
#!/bin/sh
|
||||
# Check the file list of GNU Emacs change log entries after committing.
|
||||
|
||||
# Copyright 2023 Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of GNU Emacs.
|
||||
|
||||
# GNU Emacs is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
# GNU Emacs is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
### Commentary:
|
||||
|
||||
# This hook runs after a commit is finalized and checks that the files
|
||||
# mentioned in the commit message match the diff. We perform this in
|
||||
# the post-commit phase so that we can be sure we properly detect all
|
||||
# the files in the diff (this is difficult during the commit-msg hook,
|
||||
# since there's no cross-platform way to detect when a commit is being
|
||||
# amended).
|
||||
|
||||
# However, since this is a post-commit hook, it's too late to error
|
||||
# out and abort the commit: it's already done! As a result, this hook
|
||||
# is purely advisory, and instead we error out when trying to push
|
||||
# (see "pre-push" in this directory).
|
||||
|
||||
### Code:
|
||||
|
||||
HOOKS_DIR=`dirname "$0"`
|
||||
|
||||
# Prefer gawk if available, as it handles NUL bytes properly.
|
||||
if type gawk >/dev/null 2>&1; then
|
||||
awk="gawk"
|
||||
else
|
||||
awk="awk"
|
||||
fi
|
||||
|
||||
git rev-parse HEAD | $awk -v reason=post-commit \
|
||||
-f "$HOOKS_DIR"/commit-msg-files.awk
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
#!/bin/sh
|
||||
# Check file names in git commits for GNU Emacs.
|
||||
|
||||
# Copyright 2014-2023 Free Software Foundation, Inc.
|
||||
# Copyright 2014-2022 Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of GNU Emacs.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,88 +0,0 @@
|
|||
#!/bin/sh
|
||||
# Check the file list of GNU Emacs change log entries before pushing.
|
||||
|
||||
# Copyright 2023 Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of GNU Emacs.
|
||||
|
||||
# GNU Emacs is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
# GNU Emacs is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
### Commentary:
|
||||
|
||||
# This hook runs before pushing a series of commits and checks that
|
||||
# the files mentioned in each commit message match the diffs. This
|
||||
# helps ensure that the resulting change logs are correct, which
|
||||
# should prevent errors when generating etc/AUTHORS.
|
||||
|
||||
# These checks also happen in the "post-commit" hook (which see), but
|
||||
# that hook can't abort a commit; it just advises the committer to fix
|
||||
# the commit so that this hook runs without errors.
|
||||
|
||||
### Code:
|
||||
|
||||
HOOKS_DIR=`dirname "$0"`
|
||||
|
||||
# Prefer gawk if available, as it handles NUL bytes properly.
|
||||
if type gawk >/dev/null 2>&1; then
|
||||
awk="gawk"
|
||||
else
|
||||
awk="awk"
|
||||
fi
|
||||
|
||||
# Standard input receives lines of the form:
|
||||
# <local ref> SP <local sha> SP <remote ref> SP <remote sha> LF
|
||||
$awk -v origin_name="$1" '
|
||||
# If the local SHA is all zeroes, ignore it.
|
||||
$2 ~ /^0{40}$/ {
|
||||
next
|
||||
}
|
||||
|
||||
# Check any lines with a valid local SHA and whose remote ref is
|
||||
# master or an emacs-NN release branch. (We want to avoid checking
|
||||
# feature or scratch branches here.)
|
||||
$2 ~ /^[a-z0-9]{40}$/ && $3 ~ /^refs\/heads\/(master|emacs-[0-9]+)$/ {
|
||||
newref = $2
|
||||
# If the remote SHA is all zeroes, this is a new object to be
|
||||
# pushed (likely a branch)...
|
||||
if ($4 ~ /^0{40}$/) {
|
||||
back = 0
|
||||
# ... Go backwards until we find a SHA on an origin branch.
|
||||
# Stop trying after 1000 commits, just in case...
|
||||
for (back = 0; back < 1000; back++) {
|
||||
cmd = ("git branch -r -l '\''" origin_name "/*'\''" \
|
||||
" --contains " newref "~" back)
|
||||
rv = (cmd | getline)
|
||||
close(cmd)
|
||||
if (rv > 0)
|
||||
break;
|
||||
}
|
||||
|
||||
cmd = ("git rev-parse " newref "~" back)
|
||||
cmd | getline oldref
|
||||
if (!(oldref ~ /^[a-z0-9]{40}$/)) {
|
||||
# The SHA is misformatted! Skip this line.
|
||||
next
|
||||
}
|
||||
close(cmd)
|
||||
} else if ($4 ~ /^[a-z0-9]{40}$/) {
|
||||
oldref = $4
|
||||
} else {
|
||||
# The SHA is misformatted! Skip this line.
|
||||
next
|
||||
}
|
||||
|
||||
# Print every SHA after oldref, up to (and including) newref.
|
||||
system("git rev-list --first-parent --reverse " oldref ".." newref)
|
||||
}
|
||||
' | $awk -v reason=pre-push -f "$HOOKS_DIR"/commit-msg-files.awk
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
#!/bin/sh
|
||||
# Check the format of GNU Emacs change log entries.
|
||||
|
||||
# Copyright 2019-2023 Free Software Foundation, Inc.
|
||||
# Copyright 2019-2022 Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of GNU Emacs.
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
# Convert git log output to ChangeLog format.
|
||||
|
||||
# Copyright (C) 2008-2023 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2008-2022 Free Software Foundation, Inc.
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
# Convert git log output to ChangeLog format for GNU Emacs.
|
||||
|
||||
# Copyright (C) 2014-2023 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2014-2022 Free Software Foundation, Inc.
|
||||
|
||||
# Author: Paul Eggert
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
### make-info-dir - create info/dir, for systems without install-info
|
||||
|
||||
## Copyright (C) 2013-2023 Free Software Foundation, Inc.
|
||||
## Copyright (C) 2013-2022 Free Software Foundation, Inc.
|
||||
|
||||
## Author: Glenn Morris <rgm@gnu.org>
|
||||
## Maintainer: emacs-devel@gnu.org
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ VERSION='2018-03-07 03:47'; # UTC
|
|||
# If you change this file with Emacs, please let the write hook
|
||||
# do its job. Otherwise, update this string manually.
|
||||
|
||||
# Copyright (C) 2002-2023 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2002-2022 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
# Convert a MSYS path list to Windows-native format.
|
||||
# Status is zero if successful, nonzero otherwise.
|
||||
|
||||
# Copyright (C) 2013-2023 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2013-2022 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
# Update an FSF copyright year list to include the current year.
|
||||
|
||||
# Copyright (C) 2009-2023 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2009-2022 Free Software Foundation, Inc.
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -137,7 +137,7 @@
|
|||
eval 'exec perl -wSx -0777 -pi "$0" "$@"'
|
||||
if 0;
|
||||
|
||||
my $VERSION = '2023-01-11.04:24'; # UTC
|
||||
my $VERSION = '2020-04-04.15:07'; # UTC
|
||||
# The definition above must lie within the first 8 lines in order
|
||||
# for the Emacs time-stamp write hook (at end) to update it.
|
||||
# If you change this file with Emacs, please let the write hook
|
||||
|
|
@ -280,7 +280,7 @@ if (defined $stmt_re)
|
|||
}
|
||||
|
||||
# Replace the old copyright statement.
|
||||
s/$stmt_re/$stmt_wrapped/g;
|
||||
s/$stmt_re/$stmt_wrapped/;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#!/bin/sh
|
||||
# Write into $1/subdirs.el a list of subdirs of directory $1.
|
||||
|
||||
# Copyright (C) 1994-1995, 1997, 1999, 2001-2023 Free Software
|
||||
# Copyright (C) 1994-1995, 1997, 1999, 2001-2022 Free Software
|
||||
# Foundation, Inc.
|
||||
|
||||
# This file is part of GNU Emacs.
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
@echo off
|
||||
rem ----------------------------------------------------------------------
|
||||
rem Configuration script for MSDOS
|
||||
rem Copyright (C) 1994-1999, 2001-2023 Free Software Foundation, Inc.
|
||||
rem Copyright (C) 1994-1999, 2001-2022 Free Software Foundation, Inc.
|
||||
|
||||
rem This file is part of GNU Emacs.
|
||||
|
||||
|
|
|
|||
264
configure.ac
264
configure.ac
|
|
@ -4,7 +4,7 @@ dnl autoconf
|
|||
dnl in the directory containing this script.
|
||||
dnl If you changed any AC_DEFINES, also run autoheader.
|
||||
dnl
|
||||
dnl Copyright (C) 1994-1996, 1999-2023 Free Software Foundation, Inc.
|
||||
dnl Copyright (C) 1994-1996, 1999-2022 Free Software Foundation, Inc.
|
||||
dnl
|
||||
dnl This file is part of GNU Emacs.
|
||||
dnl
|
||||
|
|
@ -23,7 +23,7 @@ dnl along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
|||
|
||||
AC_PREREQ([2.65])
|
||||
dnl Note this is parsed by (at least) make-dist and lisp/cedet/ede/emacs.el.
|
||||
AC_INIT([GNU Emacs], [30.0.50], [bug-gnu-emacs@gnu.org], [],
|
||||
AC_INIT([GNU Emacs], [29.0.50], [bug-gnu-emacs@gnu.org], [],
|
||||
[https://www.gnu.org/software/emacs/])
|
||||
|
||||
dnl Set emacs_config_options to the options of 'configure', quoted for the shell,
|
||||
|
|
@ -463,7 +463,6 @@ OPTION_DEFAULT_ON([xml2],[don't compile with XML parsing support])
|
|||
OPTION_DEFAULT_OFF([imagemagick],[compile with ImageMagick image support])
|
||||
OPTION_DEFAULT_ON([native-image-api], [don't use native image APIs (GDI+ on Windows)])
|
||||
OPTION_DEFAULT_IFAVAILABLE([json], [compile with native JSON support])
|
||||
OPTION_DEFAULT_IFAVAILABLE([tree-sitter], [compile with tree-sitter])
|
||||
|
||||
OPTION_DEFAULT_ON([xft],[don't use XFT for anti aliased fonts])
|
||||
OPTION_DEFAULT_ON([harfbuzz],[don't use HarfBuzz for text shaping])
|
||||
|
|
@ -1001,7 +1000,7 @@ AC_ARG_ENABLE([gcc-warnings],
|
|||
# however, if there is also a .tarball-version file it is probably
|
||||
# just a release imported into Git for patch management.
|
||||
gl_gcc_warnings=no
|
||||
if test -d "$srcdir"/.git && test ! -f "$srcdir"/.tarball-version; then
|
||||
if test -e "$srcdir"/.git && test ! -f "$srcdir"/.tarball-version; then
|
||||
# Clang typically identifies itself as GCC 4.2 or something similar
|
||||
# even if it is recent enough to accept the warnings we enable.
|
||||
AS_IF([test "$emacs_cv_clang" = yes],
|
||||
|
|
@ -1139,7 +1138,6 @@ AS_IF([test $gl_gcc_warnings = no],
|
|||
|
||||
# clang is unduly picky about some things.
|
||||
if test "$emacs_cv_clang" = yes; then
|
||||
gl_WARN_ADD([-Wno-bitwise-instead-of-logical])
|
||||
gl_WARN_ADD([-Wno-missing-braces])
|
||||
gl_WARN_ADD([-Wno-null-pointer-arithmetic])
|
||||
gl_WARN_ADD([-Wno-implicit-const-int-float-conversion])
|
||||
|
|
@ -1172,13 +1170,6 @@ if test "$emacs_cv_clang" = yes; then
|
|||
gl_WARN_ADD([-Wno-tautological-constant-out-of-range-compare])
|
||||
fi
|
||||
|
||||
# Suppress deprecation warnings from using sprintf variants,
|
||||
# starting with Xcode 14.1 on macOS 13.
|
||||
# These warnings are false alarms, as Emacs usage of sprintf is safe.
|
||||
if test $opsys = darwin; then
|
||||
gl_WARN_ADD([-Wno-deprecated-declarations])
|
||||
fi
|
||||
|
||||
# Use a slightly smaller set of warning options for lib/.
|
||||
nw=
|
||||
nw="$nw -Wunused-macros"
|
||||
|
|
@ -1643,8 +1634,7 @@ case "$opsys" in
|
|||
## Motif needs -lgen.
|
||||
unixware) LIBS_SYSTEM="-lsocket -lnsl -lelf -lgen" ;;
|
||||
|
||||
# Haiku needs -lbsd for cfsetspeed.
|
||||
haiku) LIBS_SYSTEM="-lnetwork -lbsd" ;;
|
||||
haiku) LIBS_SYSTEM="-lnetwork" ;;
|
||||
esac
|
||||
|
||||
AC_SUBST([LIBS_SYSTEM])
|
||||
|
|
@ -1843,9 +1833,7 @@ AC_CHECK_HEADERS_ONCE(
|
|||
coff.h pty.h
|
||||
sys/resource.h
|
||||
sys/utsname.h pwd.h utmp.h util.h
|
||||
sanitizer/lsan_interface.h
|
||||
sanitizer/asan_interface.h
|
||||
sanitizer/common_interface_defs.h])
|
||||
sanitizer/lsan_interface.h])
|
||||
|
||||
AC_CACHE_CHECK([for ADDR_NO_RANDOMIZE],
|
||||
[emacs_cv_personality_addr_no_randomize],
|
||||
|
|
@ -2034,29 +2022,37 @@ if test "${with_ns}" != no; then
|
|||
ns_appresdir=${ns_appdir}/Contents/Resources
|
||||
ns_appsrc=Cocoa/Emacs.base
|
||||
ns_fontfile=macfont.o
|
||||
elif flags=`(gnustep-config --objc-flags) 2>/dev/null`; then
|
||||
elif flags=$( (gnustep-config --objc-flags) 2>/dev/null); then
|
||||
NS_IMPL_GNUSTEP=yes
|
||||
NS_GNUSTEP_CONFIG=yes
|
||||
GNU_OBJC_CFLAGS="$flags"
|
||||
LIBS_GNUSTEP=`gnustep-config --gui-libs || exit`
|
||||
LIBS_GNUSTEP=$(gnustep-config --gui-libs) || exit
|
||||
elif test -f $GNUSTEP_CONFIG_FILE; then
|
||||
NS_IMPL_GNUSTEP=yes
|
||||
dnl FIXME sourcing this several times in subshells seems inefficient.
|
||||
GNUSTEP_SYSTEM_HEADERS=`. $GNUSTEP_CONFIG_FILE \
|
||||
&& AS_ECHO(["$GNUSTEP_SYSTEM_HEADERS"])`
|
||||
GNUSTEP_SYSTEM_LIBRARIES=` . $GNUSTEP_CONFIG_FILE \
|
||||
&& AS_ECHO(["$GNUSTEP_SYSTEM_LIBRARIES"])`
|
||||
GNUSTEP_SYSTEM_HEADERS=$(
|
||||
. $GNUSTEP_CONFIG_FILE
|
||||
AS_ECHO(["$GNUSTEP_SYSTEM_HEADERS"])
|
||||
)
|
||||
GNUSTEP_SYSTEM_LIBRARIES=$(
|
||||
. $GNUSTEP_CONFIG_FILE
|
||||
AS_ECHO(["$GNUSTEP_SYSTEM_LIBRARIES"])
|
||||
)
|
||||
dnl I seemed to need these as well with GNUstep-startup 0.25.
|
||||
GNUSTEP_LOCAL_HEADERS=`. $GNUSTEP_CONFIG_FILE \
|
||||
&& AS_ECHO(["$GNUSTEP_LOCAL_HEADERS"])`
|
||||
GNUSTEP_LOCAL_LIBRARIES=`. $GNUSTEP_CONFIG_FILE \
|
||||
&& AS_ECHO(["$GNUSTEP_LOCAL_LIBRARIES"])`
|
||||
GNUSTEP_LOCAL_HEADERS=$(
|
||||
. $GNUSTEP_CONFIG_FILE
|
||||
AS_ECHO(["$GNUSTEP_LOCAL_HEADERS"])
|
||||
)
|
||||
GNUSTEP_LOCAL_LIBRARIES=$(
|
||||
. $GNUSTEP_CONFIG_FILE
|
||||
AS_ECHO(["$GNUSTEP_LOCAL_LIBRARIES"])
|
||||
)
|
||||
test "x${GNUSTEP_LOCAL_HEADERS}" != "x" && \
|
||||
GNUSTEP_LOCAL_HEADERS="-I${GNUSTEP_LOCAL_HEADERS}"
|
||||
test "x${GNUSTEP_LOCAL_LIBRARIES}" != "x" && \
|
||||
GNUSTEP_LOCAL_LIBRARIES="-L${GNUSTEP_LOCAL_LIBRARIES}"
|
||||
CPPFLAGS="$CPPFLAGS -isystem ${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
|
||||
CFLAGS="$CFLAGS -isystem ${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
|
||||
CPPFLAGS="$CPPFLAGS -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
|
||||
CFLAGS="$CFLAGS -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
|
||||
LDFLAGS="$LDFLAGS -L${GNUSTEP_SYSTEM_LIBRARIES} ${GNUSTEP_LOCAL_LIBRARIES}"
|
||||
LIBS_GNUSTEP="-lgnustep-gui -lgnustep-base -lobjc -lpthread"
|
||||
dnl GNUstep defines BASE_NATIVE_OBJC_EXCEPTIONS to 0 or 1.
|
||||
|
|
@ -2689,6 +2685,39 @@ if test "${HAVE_X11}" = "yes"; then
|
|||
export LD_RUN_PATH
|
||||
fi
|
||||
|
||||
if test "${opsys}" = "gnu-linux"; then
|
||||
AC_CACHE_CHECK([whether X on GNU/Linux needs -b to link], [emacs_cv_b_link],
|
||||
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
|
||||
[[XOpenDisplay ("foo");]])],
|
||||
[xgnu_linux_first_failure=no],
|
||||
[xgnu_linux_first_failure=yes])
|
||||
if test "${xgnu_linux_first_failure}" = "yes"; then
|
||||
OLD_CPPFLAGS="$CPPFLAGS"
|
||||
OLD_LIBS="$LIBS"
|
||||
CPPFLAGS="$CPPFLAGS -b i486-linuxaout"
|
||||
LIBS="$LIBS -b i486-linuxaout"
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
|
||||
[[XOpenDisplay ("foo");]])],
|
||||
[xgnu_linux_second_failure=no],
|
||||
[xgnu_linux_second_failure=yes])
|
||||
if test "${xgnu_linux_second_failure}" = "yes"; then
|
||||
# If we get the same failure with -b, there is no use adding -b.
|
||||
# So leave it out. This plays safe.
|
||||
emacs_cv_b_link=no
|
||||
else
|
||||
emacs_cv_b_link=yes
|
||||
fi
|
||||
CPPFLAGS=$OLD_CPPFLAGS
|
||||
LIBS=$OLD_LIBS
|
||||
else
|
||||
emacs_cv_b_link=no
|
||||
fi])
|
||||
if test "x$emacs_cv_b_link" = xyes ; then
|
||||
LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -b i486-linuxaout"
|
||||
C_SWITCH_X_SITE="$C_SWITCH_X_SITE -b i486-linuxaout"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Reportedly, some broken Solaris systems have XKBlib.h but are missing
|
||||
# header files included from there.
|
||||
AC_CACHE_CHECK([for Xkb], [emacs_cv_xkb],
|
||||
|
|
@ -2769,25 +2798,6 @@ if test "${with_webp}" != "no"; then
|
|||
WEBP_MODULE="libwebpdemux >= $WEBP_REQUIRED"
|
||||
|
||||
EMACS_CHECK_MODULES([WEBP], [$WEBP_MODULE])
|
||||
|
||||
# WebPGetInfo is sometimes not present inside libwebpdemux, so
|
||||
# if it does not link, also check for libwebpdecoder.
|
||||
|
||||
OLD_CFLAGS=$CFLAGS
|
||||
OLD_LIBS=$LIBS
|
||||
CFLAGS="$CFLAGS $WEBP_CFLAGS"
|
||||
LIBS="$LIBS $WEBP_LIBS"
|
||||
|
||||
AC_CHECK_FUNC([WebPGetInfo], [],
|
||||
[WEBP_MODULE="$WEBP_MODULE libwebpdecoder >= $WEBP_REQUIRED"
|
||||
HAVE_WEBP=no
|
||||
AS_UNSET([WEBP_LIBS])
|
||||
AS_UNSET([WEBP_CFLAGS])
|
||||
EMACS_CHECK_MODULES([WEBP], [$WEBP_MODULE])])
|
||||
|
||||
CFLAGS=$OLD_CFLAGS
|
||||
LIBS=$OLD_LIBS
|
||||
|
||||
AC_SUBST([WEBP_CFLAGS])
|
||||
AC_SUBST([WEBP_LIBS])
|
||||
fi
|
||||
|
|
@ -3200,52 +3210,6 @@ AC_SUBST([JSON_LIBS])
|
|||
AC_SUBST([JSON_CFLAGS])
|
||||
AC_SUBST([JSON_OBJ])
|
||||
|
||||
HAVE_TREE_SITTER=no
|
||||
TREE_SITTER_OBJ=
|
||||
NEED_DYNLIB=no
|
||||
|
||||
if test "${with_tree_sitter}" != "no"; then
|
||||
dnl Tree-sitter 0.20.2 added support to change the malloc it uses
|
||||
dnl at runtime, we need that feature. However, tree-sitter's
|
||||
dnl Makefile has problems, until that's fixed, all tree-sitter
|
||||
dnl libraries distributed are versioned 0.6.3. We try to
|
||||
dnl accept a tree-sitter library that has incorrect version as long
|
||||
dnl as it supports changing malloc.
|
||||
EMACS_CHECK_MODULES([TREE_SITTER], [tree-sitter >= 0.20.2],
|
||||
[HAVE_TREE_SITTER=yes], [HAVE_TREE_SITTER=no])
|
||||
if test "${HAVE_TREE_SITTER}" = yes; then
|
||||
AC_DEFINE(HAVE_TREE_SITTER, 1, [Define if using tree-sitter.])
|
||||
else
|
||||
EMACS_CHECK_MODULES([TREE_SITTER], [tree-sitter >= 0.6.3],
|
||||
[HAVE_TREE_SITTER=yes], [HAVE_TREE_SITTER=no])
|
||||
if test "${HAVE_TREE_SITTER}" = yes; then
|
||||
OLD_CFLAGS=$CFLAGS
|
||||
OLD_LIBS=$LIBS
|
||||
CFLAGS="$CFLAGS $TREE_SITTER_CFLAGS"
|
||||
LIBS="$TREE_SITTER_LIBS $LIBS"
|
||||
AC_CHECK_FUNCS([ts_set_allocator])
|
||||
CFLAGS=$OLD_CFLAGS
|
||||
LIBS=$OLD_LIBS
|
||||
if test "$ac_cv_func_ts_set_allocator" = yes; then
|
||||
AC_DEFINE(HAVE_TREE_SITTER, 1, [Define if using tree-sitter.])
|
||||
NEED_DYNLIB=yes
|
||||
else
|
||||
AC_MSG_ERROR([Tree-sitter library exists but its version is too old]);
|
||||
TREE_SITTER_CFLAGS=
|
||||
TREE_SITTER_LIBS=
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# Windows loads tree-sitter dynamically
|
||||
if test "${opsys}" = "mingw32"; then
|
||||
TREE_SITTER_LIBS=
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_SUBST(TREE_SITTER_LIBS)
|
||||
AC_SUBST(TREE_SITTER_CFLAGS)
|
||||
|
||||
NOTIFY_OBJ=
|
||||
NOTIFY_SUMMARY=no
|
||||
|
||||
|
|
@ -3595,12 +3559,8 @@ XWIDGETS_OBJ=
|
|||
if test "$with_xwidgets" != "no"; then
|
||||
if test "$USE_GTK_TOOLKIT" = "GTK3" && test "$window_system" != "none"; then
|
||||
WEBKIT_REQUIRED=2.12
|
||||
WEBKIT_MODULES="webkit2gtk-4.1 >= $WEBKIT_REQUIRED"
|
||||
WEBKIT_MODULES="webkit2gtk-4.0 >= $WEBKIT_REQUIRED"
|
||||
EMACS_CHECK_MODULES([WEBKIT], [$WEBKIT_MODULES])
|
||||
if test "$HAVE_WEBKIT" = "no"; then
|
||||
WEBKIT_MODULES="webkit2gtk-4.0 >= $WEBKIT_REQUIRED"
|
||||
EMACS_CHECK_MODULES([WEBKIT], [$WEBKIT_MODULES])
|
||||
fi
|
||||
HAVE_XWIDGETS=$HAVE_WEBKIT
|
||||
XWIDGETS_OBJ="xwidget.o"
|
||||
if test "$HAVE_X_WINDOWS" = "yes" && test "${with_cairo}" = "no"; then
|
||||
|
|
@ -3773,7 +3733,7 @@ if test "${HAVE_X11}" = "yes"; then
|
|||
AC_DEFINE([HAVE_OTF_GET_VARIATION_GLYPHS], [1],
|
||||
[Define to 1 if libotf has OTF_get_variation_glyphs.])
|
||||
fi
|
||||
if $PKG_CONFIG --atleast-version=0.9.16 libotf; then :; else
|
||||
if ! $PKG_CONFIG --atleast-version=0.9.16 libotf; then
|
||||
AC_DEFINE([HAVE_OTF_KANNADA_BUG], [1],
|
||||
[Define to 1 if libotf is affected by https://debbugs.gnu.org/28110.])
|
||||
fi
|
||||
|
|
@ -3881,7 +3841,7 @@ if test "${HAVE_BE_APP}" = "yes"; then
|
|||
AC_DEFINE([HAVE_OTF_GET_VARIATION_GLYPHS], [1],
|
||||
[Define to 1 if libotf has OTF_get_variation_glyphs.])
|
||||
fi
|
||||
if $PKG_CONFIG --atleast-version=0.9.16 libotf; then :; else
|
||||
if ! $PKG_CONFIG --atleast-version=0.9.16 libotf; then
|
||||
AC_DEFINE([HAVE_OTF_KANNADA_BUG], [1],
|
||||
[Define to 1 if libotf is affected by https://debbugs.gnu.org/28110.])
|
||||
fi
|
||||
|
|
@ -3921,10 +3881,21 @@ if test "${HAVE_X11}" = "yes"; then
|
|||
if test "${HAVE_XCB}" = "yes"; then
|
||||
AC_CHECK_LIB([X11-xcb], [XGetXCBConnection], [HAVE_X11_XCB=yes])
|
||||
if test "${HAVE_X11_XCB}" = "yes"; then
|
||||
AC_DEFINE([USE_XCB], [1],
|
||||
AC_CHECK_LIB([xcb-util], [xcb_aux_sync], [HAVE_XCB_UTIL=yes])
|
||||
if test "${HAVE_XCB_UTIL}" = "yes"; then
|
||||
AC_DEFINE([USE_XCB], [1],
|
||||
[Define to 1 if you have the XCB library and X11-XCB library for mixed
|
||||
X11/XCB programming.])
|
||||
XCB_LIBS="-lX11-xcb -lxcb"
|
||||
X11/XCB programming.])
|
||||
XCB_LIBS="-lX11-xcb -lxcb -lxcb-util"
|
||||
else
|
||||
AC_CHECK_LIB([xcb-aux], [xcb_aux_sync], [HAVE_XCB_AUX=yes])
|
||||
if test "${HAVE_XCB_AUX}" = "yes"; then
|
||||
AC_DEFINE([USE_XCB], [1],
|
||||
[Define to 1 if you have the XCB library and X11-XCB library for mixed
|
||||
X11/XCB programming.])
|
||||
XCB_LIBS="-lX11-xcb -lxcb -lxcb-aux"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
|
@ -4109,30 +4080,20 @@ if test "${HAVE_ZLIB}" = "yes"; then
|
|||
fi
|
||||
AC_SUBST([LIBZ])
|
||||
|
||||
### Dynamic library support
|
||||
case $opsys in
|
||||
cygwin|mingw32) DYNAMIC_LIB_SUFFIX=".dll" ;;
|
||||
darwin) DYNAMIC_LIB_SUFFIX=".dylib" ;;
|
||||
*) DYNAMIC_LIB_SUFFIX=".so" ;;
|
||||
esac
|
||||
case "${opsys}" in
|
||||
darwin) DYNAMIC_LIB_SECONDARY_SUFFIX='.so' ;;
|
||||
*) DYNAMIC_LIB_SECONDARY_SUFFIX='' ;;
|
||||
esac
|
||||
AC_DEFINE_UNQUOTED(DYNAMIC_LIB_SUFFIX, "$DYNAMIC_LIB_SUFFIX",
|
||||
[System extension for dynamic libraries])
|
||||
AC_DEFINE_UNQUOTED(DYNAMIC_LIB_SECONDARY_SUFFIX, "$DYNAMIC_LIB_SECONDARY_SUFFIX",
|
||||
[Alternative system extension for dynamic libraries.])
|
||||
|
||||
AC_SUBST(DYNAMIC_LIB_SUFFIX)
|
||||
AC_SUBST(DYNAMIC_LIB_SECONDARY_SUFFIX)
|
||||
|
||||
### Dynamic modules support
|
||||
LIBMODULES=
|
||||
HAVE_MODULES=no
|
||||
MODULES_OBJ=
|
||||
MODULES_SUFFIX="${DYNAMIC_LIB_SUFFIX}"
|
||||
MODULES_SECONDARY_SUFFIX="${DYNAMIC_LIB_SECONDARY_SUFFIX}"
|
||||
NEED_DYNLIB=no
|
||||
case $opsys in
|
||||
cygwin|mingw32) MODULES_SUFFIX=".dll" ;;
|
||||
darwin) MODULES_SUFFIX=".dylib" ;;
|
||||
*) MODULES_SUFFIX=".so" ;;
|
||||
esac
|
||||
case "${opsys}" in
|
||||
darwin) MODULES_SECONDARY_SUFFIX='.so' ;;
|
||||
*) MODULES_SECONDARY_SUFFIX='' ;;
|
||||
esac
|
||||
|
||||
# pgtkterm.c uses dlsym
|
||||
if test $window_system = pgtk; then
|
||||
|
|
@ -4192,14 +4153,12 @@ AC_SUBST_FILE([module_env_snippet_26])
|
|||
AC_SUBST_FILE([module_env_snippet_27])
|
||||
AC_SUBST_FILE([module_env_snippet_28])
|
||||
AC_SUBST_FILE([module_env_snippet_29])
|
||||
AC_SUBST_FILE([module_env_snippet_30])
|
||||
module_env_snippet_25="$srcdir/src/module-env-25.h"
|
||||
module_env_snippet_26="$srcdir/src/module-env-26.h"
|
||||
module_env_snippet_27="$srcdir/src/module-env-27.h"
|
||||
module_env_snippet_28="$srcdir/src/module-env-28.h"
|
||||
module_env_snippet_29="$srcdir/src/module-env-29.h"
|
||||
module_env_snippet_30="$srcdir/src/module-env-30.h"
|
||||
emacs_major_version=`AS_ECHO([$PACKAGE_VERSION]) | sed 's/[[.]].*//'`
|
||||
emacs_major_version="${PACKAGE_VERSION%%.*}"
|
||||
AC_SUBST([emacs_major_version])
|
||||
|
||||
### Emacs Lisp native compiler support
|
||||
|
|
@ -4282,8 +4241,8 @@ If you really want to try it anyway, use the configure option
|
|||
fi
|
||||
|
||||
if test "${with_native_compilation}" != "no"; then
|
||||
if test "$with_unexec" = yes; then
|
||||
AC_MSG_ERROR(['--with-native-compilation' is not compatible with unexec])
|
||||
if test "${HAVE_PDUMPER}" = no; then
|
||||
AC_MSG_ERROR(['--with-native-compilation' requires '--with-dumping=pdumper'])
|
||||
fi
|
||||
if test "${HAVE_ZLIB}" = no; then
|
||||
AC_MSG_ERROR(['--with-native-compilation' requires zlib])
|
||||
|
|
@ -4309,16 +4268,14 @@ if test "${with_native_compilation}" != "no"; then
|
|||
# available. (We filter out the gcc4 packages, because they
|
||||
# don't support jit, and they have names like "gcc49" that
|
||||
# sort later than "gcc11".)
|
||||
PORT_PACKAGE=`port installed active | grep '^ *gcc@<:@0-9@:>@* ' | \
|
||||
PORT_PACKAGE=$(port installed active | grep '^ *gcc@<:@0-9@:>@* ' | \
|
||||
awk '{ print $1; }' | grep -v 'gcc4@<:@0-9@:>@' | \
|
||||
sort -V | tail -n 1`
|
||||
sort -V | tail -n 1)
|
||||
if test -n "$PORT_PACKAGE"; then
|
||||
emacs_val=`port contents $PORT_PACKAGE | grep libgccjit.h`
|
||||
emacs_val=`dirname $emacs_val`
|
||||
MAC_CFLAGS="-I$emacs_val"
|
||||
emacs_val=`port contents $PORT_PACKAGE | grep libgccjit.dylib`
|
||||
emacs_val=`dirname $emacs_val`
|
||||
MAC_LIBS="-L$emacs_val"
|
||||
MAC_CFLAGS="-I$(dirname $(port contents $PORT_PACKAGE | \
|
||||
grep libgccjit.h))"
|
||||
MAC_LIBS="-L$(dirname $(port contents $PORT_PACKAGE | \
|
||||
grep libgccjit.dylib))"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
|
@ -4553,12 +4510,6 @@ case $with_json,$HAVE_JSON in
|
|||
*) MISSING="$MISSING json"
|
||||
WITH_IFAVAILABLE="$WITH_IFAVAILABLE --with-json=ifavailable";;
|
||||
esac
|
||||
case $with_tree_sitter,$HAVE_TREE_SITTER in
|
||||
no,* | ifavailable,* | *,yes) ;;
|
||||
*) MISSING="$MISSING tree-sitter"
|
||||
WITH_IFAVAILABLE="$WITH_IFAVAILABLE --with-tree-sitter=ifavailable";;
|
||||
esac
|
||||
|
||||
if test "X${MISSING}" != X; then
|
||||
# If we have a missing library, and we don't have pkg-config installed,
|
||||
# the missing pkg-config may be the reason. Give the user a hint.
|
||||
|
|
@ -4682,7 +4633,7 @@ AC_SUBST([XINERAMA_LIBS])
|
|||
### Use Xfixes (-lXfixes) if available
|
||||
HAVE_XFIXES=no
|
||||
if test "${HAVE_X11}" = "yes"; then
|
||||
XFIXES_REQUIRED=1.0.0
|
||||
XFIXES_REQUIRED=4.0.0
|
||||
XFIXES_MODULES="xfixes >= $XFIXES_REQUIRED"
|
||||
EMACS_CHECK_MODULES([XFIXES], [$XFIXES_MODULES])
|
||||
if test $HAVE_XFIXES = no; then
|
||||
|
|
@ -4986,7 +4937,6 @@ pthread_sigmask strsignal setitimer \
|
|||
sendto recvfrom getsockname getifaddrs freeifaddrs \
|
||||
gai_strerror sync \
|
||||
getpwent endpwent getgrent endgrent \
|
||||
renameat2 \
|
||||
cfmakeraw cfsetspeed __executable_start log2 pthread_setname_np \
|
||||
pthread_set_name_np])
|
||||
LIBS=$OLD_LIBS
|
||||
|
|
@ -5228,7 +5178,6 @@ AC_CACHE_CHECK([whether signals can be handled on alternate stack],
|
|||
[emacs_cv_alternate_stack],
|
||||
[AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM([[#include <signal.h>
|
||||
#include <stdlib.h>
|
||||
]],
|
||||
[[stack_t ss;
|
||||
struct sigaction sa;
|
||||
|
|
@ -5616,7 +5565,7 @@ case $opsys in
|
|||
esac
|
||||
|
||||
case $opsys in
|
||||
gnu-* | solaris | cygwin )
|
||||
gnu-* | solaris )
|
||||
dnl FIXME Can't we test if this exists (eg /proc/$$)?
|
||||
AC_DEFINE([HAVE_PROCFS], [1], [Define if you have the /proc filesystem.])
|
||||
;;
|
||||
|
|
@ -5980,7 +5929,7 @@ case $opsys in
|
|||
gnu-linux | gnu-kfreebsd )
|
||||
AC_DEFINE([USG], [])
|
||||
AC_DEFINE([GNU_LINUX], [],
|
||||
[Define if this system is compatible with GNU/Linux.])
|
||||
[Define if ths system is compatible with GNU/Linux.])
|
||||
;;
|
||||
|
||||
hpux*)
|
||||
|
|
@ -6118,7 +6067,7 @@ fi
|
|||
|
||||
version=$PACKAGE_VERSION
|
||||
|
||||
copyright="Copyright (C) 2023 Free Software Foundation, Inc."
|
||||
copyright="Copyright (C) 2022 Free Software Foundation, Inc."
|
||||
AC_DEFINE_UNQUOTED([COPYRIGHT], ["$copyright"],
|
||||
[Short copyright string for this version of Emacs.])
|
||||
AC_SUBST([copyright])
|
||||
|
|
@ -6380,7 +6329,7 @@ fi
|
|||
# it temporarily reverts them to their pre-pkg-config values,
|
||||
# because gnulib needs to work with both src (which uses the
|
||||
# pkg-config stuff) and lib-src (which does not). For example, gnulib
|
||||
# may need to determine whether CLOCK_TIME_LIB should contain -lrt,
|
||||
# may need to determine whether LIB_CLOCK_GETTIME should contain -lrt,
|
||||
# and it therefore needs to run in an environment where LIBS does not
|
||||
# already contain -lrt merely because 'pkg-config --libs' printed '-lrt'
|
||||
# for some package unrelated to lib-src.
|
||||
|
|
@ -6520,12 +6469,6 @@ if test "$window_system" != "none"; then
|
|||
AC_DEFINE([POLL_FOR_INPUT], [1],
|
||||
[Define if you poll periodically to detect C-g.])
|
||||
WINDOW_SYSTEM_OBJ="fontset.o fringe.o image.o"
|
||||
|
||||
if test "$window_system" = "x11"; then
|
||||
AC_DEFINE([HAVE_TEXT_CONVERSION], [1],
|
||||
[Define if the window system has text conversion support.])
|
||||
WINDOW_SYSTEM_OBJ="$WINDOW_SYSTEM_OBJ textconv.o"
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_SUBST([WINDOW_SYSTEM_OBJ])
|
||||
|
|
@ -6578,9 +6521,7 @@ if test "${HAVE_GTK}" = "yes"; then
|
|||
fi
|
||||
|
||||
if test $USE_ACL -ne 0; then
|
||||
ACL_SUMMARY="yes"
|
||||
test "$LIB_ACL" && ACL_SUMMARY="$ACL_SUMMARY $LIB_ACL"
|
||||
test "$LIB_XATTR" && ACL_SUMMARY="$ACL_SUMMARY $LIB_XATTR"
|
||||
ACL_SUMMARY="yes $LIB_ACL"
|
||||
else
|
||||
ACL_SUMMARY=no
|
||||
fi
|
||||
|
|
@ -6611,7 +6552,7 @@ emacs_config_features=
|
|||
for opt in ACL BE_APP CAIRO DBUS FREETYPE GCONF GIF GLIB GMP GNUTLS GPM GSETTINGS \
|
||||
HARFBUZZ IMAGEMAGICK JPEG JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 \
|
||||
M17N_FLT MODULES NATIVE_COMP NOTIFY NS OLDXMENU PDUMPER PGTK PNG RSVG SECCOMP \
|
||||
SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER \
|
||||
SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS \
|
||||
UNEXEC WEBP X11 XAW3D XDBE XFT XIM XINPUT2 XPM XWIDGETS X_TOOLKIT \
|
||||
ZLIB; do
|
||||
|
||||
|
|
@ -6651,7 +6592,6 @@ AC_DEFINE_UNQUOTED([EMACS_CONFIG_FEATURES], ["${emacs_config_features}"],
|
|||
[Summary of some of the main features enabled by configure.])
|
||||
|
||||
AS_ECHO([" Does Emacs use -lXaw3d? ${HAVE_XAW3D}
|
||||
Does Emacs use the X Double Buffer Extension? ${HAVE_XDBE}
|
||||
Does Emacs use -lXpm? ${HAVE_XPM}
|
||||
Does Emacs use -ljpeg? ${HAVE_JPEG}
|
||||
Does Emacs use -ltiff? ${HAVE_TIFF}
|
||||
|
|
@ -6681,7 +6621,6 @@ AS_ECHO([" Does Emacs use -lXaw3d? ${HAVE_XAW3D
|
|||
Does Emacs use -lxft? ${HAVE_XFT}
|
||||
Does Emacs use -lsystemd? ${HAVE_LIBSYSTEMD}
|
||||
Does Emacs use -ljansson? ${HAVE_JSON}
|
||||
Does Emacs use -ltree-sitter? ${HAVE_TREE_SITTER}
|
||||
Does Emacs use the GMP library? ${HAVE_GMP}
|
||||
Does Emacs directly use zlib? ${HAVE_ZLIB}
|
||||
Does Emacs have dynamic modules support? ${HAVE_MODULES}
|
||||
|
|
@ -6769,7 +6708,6 @@ if test -f "$srcdir/$opt_makefile.in"; then
|
|||
dnl Again, it's best not to use a variable. Though you can add
|
||||
dnl ", [], [opt_makefile='$opt_makefile']" and it should work.
|
||||
AC_CONFIG_FILES([test/Makefile])
|
||||
AC_CONFIG_FILES([test/manual/noverlay/Makefile])
|
||||
fi
|
||||
opt_makefile=test/infra/Makefile
|
||||
if test -f "$srcdir/$opt_makefile.in"; then
|
||||
|
|
|
|||
|
|
@ -1356,7 +1356,7 @@
|
|||
|
||||
* dired.texi (Dired Deletion, Marks vs Flags): Document Emacs 24.3
|
||||
changes to the mark and unmark commands.
|
||||
(Comparison in Dired): Document changes to dired-diff. Remove M-=,
|
||||
(Comparison in Dired): Document chages to dired-diff. Remove M-=,
|
||||
which is no longer bound to dired-backup-diff.
|
||||
|
||||
2012-10-23 Bastien Guerry <bzg@gnu.org>
|
||||
|
|
@ -2711,7 +2711,7 @@
|
|||
of list-faces-display here, from Standard Faces node.
|
||||
Note special role of `default' background.
|
||||
(Standard Faces): Note special role of `default' background.
|
||||
Note that region face may be taken from GTK. Add xref to Text Display.
|
||||
Note that region face may be taken fom GTK. Add xref to Text Display.
|
||||
(Text Scale): Rename from "Temporary Face Changes".
|
||||
Callers changed. Don't bother documenting variable-pitch-mode.
|
||||
(Font Lock): Copyedits. Remove font-lock-maximum-size.
|
||||
|
|
@ -10919,7 +10919,7 @@
|
|||
;; coding: utf-8
|
||||
;; End:
|
||||
|
||||
Copyright (C) 1993-1999, 2001-2023 Free Software Foundation, Inc.
|
||||
Copyright (C) 1993-1999, 2001-2022 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Emacs.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
### @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1996-2023 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1994, 1996-2022 Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of GNU Emacs.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
@c This is part of the Emacs manual.
|
||||
@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2023 Free Software
|
||||
@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2022 Free Software
|
||||
@c Foundation, Inc.
|
||||
@c See file emacs.texi for copying conditions.
|
||||
@node Abbrevs
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
@c -*- coding: utf-8 -*-
|
||||
@c This is part of the Emacs manual.
|
||||
@c Copyright (C) 1994--1997, 1999--2023 Free Software Foundation, Inc.
|
||||
@c Copyright (C) 1994--1997, 1999--2022 Free Software Foundation, Inc.
|
||||
@c See file emacs.texi for copying conditions.
|
||||
@c
|
||||
@node Acknowledgments
|
||||
|
|
|
|||
|
|
@ -1,158 +1,137 @@
|
|||
@c -*- coding: utf-8 -*-
|
||||
@c This is part of the Emacs manual.
|
||||
@c Copyright (C) 2005--2023 Free Software Foundation, Inc.
|
||||
@c Copyright (C) 2005--2022 Free Software Foundation, Inc.
|
||||
@c See file emacs.texi for copying conditions.
|
||||
|
||||
@node Antinews
|
||||
@appendix Emacs 28 Antinews
|
||||
@appendix Emacs 27 Antinews
|
||||
@c Update the emacs.texi Antinews menu entry with the above version number.
|
||||
|
||||
For those users who live backwards in time, here is information
|
||||
about downgrading to Emacs version 28.2. We hope you will enjoy the
|
||||
about downgrading to Emacs version 27.2. We hope you will enjoy the
|
||||
greater simplicity that results from the absence of many @w{Emacs
|
||||
@value{EMACSVER}} features.
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
Like its newer releases, Emacs 28 can still be built with support of
|
||||
native compilation of Lisp programs. However, in preparation for
|
||||
removal of this feature in some previous version, we've deleted the
|
||||
capability of ahead-of-time native compilation of all the Lisp files
|
||||
that come with Emacs. This makes the Emacs build process much faster.
|
||||
Emacs can no longer be built with support of native compilation of
|
||||
Lisp programs. This means Emacs builds much faster, and the problems
|
||||
that came with native compilation: the need to have GCC and Binutils
|
||||
installed, the complications of managing your @file{eln-cache}
|
||||
directories---all of that is now future history. The simplicity and
|
||||
elegance of the Emacs byte-compiled code is now restored in all of its
|
||||
pristine beauty.
|
||||
|
||||
@item
|
||||
Emacs can no longer be built with the tree-sitter library, so you no
|
||||
longer will need to look for and install the grammar libraries for
|
||||
the languages in which you want to program. Similarly, all the modes
|
||||
that are based on the tree-sitter library were deleted, leaving you
|
||||
with just one major mode for every supported programming language: no
|
||||
more need to decide whether to turn the tree-sitter supported modes on
|
||||
and try using their parser-based fontification, indentation, and other
|
||||
features. For some languages and file types, this means no major mode
|
||||
at all, leaving you with the venerable Fundamental mode as the
|
||||
natural, high-performance choice. For example, Go, Rust, and CMake
|
||||
files no longer have any major modes for editing their files ---
|
||||
another milestone towards a simpler, leaner Emacs.
|
||||
Emacs no longer builds by default with Cairo, even if it's present.
|
||||
The warnings about not using HarfBuzz are also gone, in preparation
|
||||
for complete removal of HarfBuzz support in previous Emacs versions.
|
||||
Fancy text shaping and display is becoming less important as you move
|
||||
back in time. The @code{ftx} font backend is again part of Emacs, for
|
||||
the same reasons.
|
||||
|
||||
@item
|
||||
Built-in support for accessing SQLite databases was removed. You can
|
||||
now again edit SQLite files as simple binary files, which Emacs is
|
||||
quite capable to support, as it always did.
|
||||
Emacs once again supports versions 5.3 and older OpenBSD systems,
|
||||
which will be needed as you move back in time.
|
||||
|
||||
@item
|
||||
As a gesture to users of the Haiku operating system, we've dropped the
|
||||
code which allowed Emacs to be built on that OS@. We expect Haiku
|
||||
users to enjoy the much simpler editors they have for editing their
|
||||
files.
|
||||
We've dropped support for Secure Computing filter on GNU/Linux. The
|
||||
past world is much more secure than the present, so the complexities
|
||||
related with this stuff, which can only be explained by severe
|
||||
paranoia, are no longer justified.
|
||||
|
||||
@item
|
||||
Support for XInput2 input events on X is gone. We think the
|
||||
traditional X input events are more than enough, certainly so as you
|
||||
move back in time, where XInput2 will eventually be removed from X as
|
||||
well, once the maintainers of the X Windows system realize the utter
|
||||
futility of supporting fancy input mechanisms.
|
||||
Emacs reverted back to supporting Unicode 13.x, since the following
|
||||
versions of the standards are not yet published where you are going.
|
||||
The @samp{emoji} script and the support for displaying Emoji sequences
|
||||
were removed for the same reasons: no one will produce them in the
|
||||
past.
|
||||
|
||||
@item
|
||||
The ``pure GTK'' (a.k.a.@: @acronym{PGTK}) configuration of Emacs is
|
||||
no longer supported. This is in anticipation of the complete removal
|
||||
of the GTK toolkit support from Emacs, and in accordance with our
|
||||
expectation that GTK will cease to exist as you move back in time. We
|
||||
plan on removing support for all the other toolkits as well, leaving
|
||||
only the pure X build with our own widgets as the single supported GUI
|
||||
configuration on X.
|
||||
Mode-specific commands and the @kbd{M-S-x} command that invokes them
|
||||
were removed. As you move back in time, the command set in Emacs
|
||||
becomes smaller, so any such filtering of applicable commands just
|
||||
gets in the way.
|
||||
|
||||
@item
|
||||
The @option{--init-directory} command-line option was removed, as
|
||||
initializing Emacs with init files of another user is a preposterous
|
||||
idea anyway.
|
||||
We have removed the system for displaying documentation of groups of
|
||||
related functions, the @kbd{shortdoc-display-group} command to go with
|
||||
it, and the corresponding ``See also'' button in the @file{*Help*}
|
||||
buffer. That should make searching for certain functions simpler:
|
||||
just use the venerable @samp{apropos} commands.
|
||||
|
||||
@item
|
||||
In line with simplifying and eventually removing the
|
||||
native-compilation option, we've deleted the
|
||||
@option{--with-native-compilation=aot} configure-time option. This
|
||||
greatly simplifies how native compilation works and makes your
|
||||
configure-time decision regarding native compilation in Emacs
|
||||
clear-cut: either Emacs compiles non-preloaded Lisp packages to native
|
||||
code only before using it, or it never uses native compilation at all;
|
||||
no more half measures and special exceptions. For similar reasons,
|
||||
@code{native-compile-prune-cache} and
|
||||
@code{startup-redirect-eln-cache} features are no longer part of
|
||||
Emacs.
|
||||
The @code{context-menu-mode} was removed, and with it the context
|
||||
menus popped by pressing the right mouse button. This is one small
|
||||
step towards freeing Emacs (and eventually, the whole world of
|
||||
computing) from the tyranny of the GUI pointing devices in general,
|
||||
and moving back to the simplicity of text-mode user interfaces.
|
||||
Down with mice and other rodents!
|
||||
|
||||
@item
|
||||
We've deleted the special code and features which allowed Emacs to
|
||||
present decent performance and responsiveness when editing files with
|
||||
very long lines. Such files become more and more rare as time goes
|
||||
back, and so having all this tricky code in Emacs for their benefit
|
||||
was deemed an unnecessary complication.
|
||||
The commands @kbd{C-x 4 4} and @kbd{C-x 5 5} for displaying the
|
||||
results in a new window/frame re gone. We are quite certain that
|
||||
creating a new window/frame before running a command is much simpler,
|
||||
and doesn't require a complication of a new prefix.
|
||||
|
||||
@item
|
||||
Emacs dropped support for Eglot and the LSP servers. We decided that
|
||||
the built-in ways of analyzing source code are more than enough as you
|
||||
move back in time.
|
||||
The behavior of active minibuffers when switching frames is now the
|
||||
perfect mess it should be: sometimes the minibuffer moves to the new
|
||||
selected frame, sometimes it doesn't, and sometimes you get an error.
|
||||
This makes Emacs usage much more fun, as you get to guess the result,
|
||||
instead of having it boringly consistent.
|
||||
|
||||
@item
|
||||
Commands to scale and rotate images are once again bound to single
|
||||
keys like @kbd{+}, @kbd{-}, and @kbd{r}, which makes them much easier
|
||||
to type. As for the risk of typing these by mistake, we don't believe
|
||||
Emacs users make typing mistakes, especially as they move back in
|
||||
time and become younger and younger.
|
||||
Compact mode-line display mode has been removed. The items displayed
|
||||
on the mode line are now always in the same place, and if there's not
|
||||
enough space for them, they are not displayed at all, instead of being
|
||||
confusingly displayed in a different position. You no longer need to
|
||||
think twice where to find a particular mode-line element on display.
|
||||
|
||||
@item
|
||||
To simplify typing popular commands, we've rebound the @w{@kbd{C-x 8 . .}}
|
||||
back to @w{@kbd{C-x 8 .}} and @w{@kbd{C-x 8 = =}} back to @w{@kbd{C-x 8 =}}.
|
||||
There's no need for fancier, longer key sequences, as moving back in
|
||||
time means we will have fewer and fewer commands to bind to them in
|
||||
the first place.
|
||||
Many commands and options related to tab bars were removed, including
|
||||
(but not limited to) frame-specific appearance of tab bars, the
|
||||
@code{tab-bar-format} option, the @kbd{C-x t n}, @kbd{C-x t N},
|
||||
@kbd{C-x t M}, and @kbd{C-x t G} commands, and many mouse gestures on
|
||||
the tab bar. We are going to delete the tab bar support from Emacs in
|
||||
one of the past versions, and this is a step in that direction.
|
||||
|
||||
@item
|
||||
If you inadvertently kill the @file{*scratch*} buffer, Emacs will
|
||||
recreate it in Fundamental mode, not in Lisp Interaction mode. You
|
||||
get to turn on the mode you like yourself. Our long-term plans for
|
||||
past Emacs releases is to remove the recreation of @file{*scratch*}
|
||||
altogether, and this is the first step in that direction.
|
||||
The ``transient'' input methods have been removed; use @kbd{C-\} to
|
||||
turn input methods on and off instead. This is in preparation for
|
||||
complete removal of input methods from Emacs in version 19, and
|
||||
consistent with the fact that the number of input methods we support
|
||||
becomes smaller as you move back in time.
|
||||
|
||||
@item
|
||||
Support for @code{rlogin} and @code{rsh} protocols are back, since we
|
||||
expect them to become more and more important and popular as you move
|
||||
back in time.
|
||||
We disabled @code{show-paren-mode} by default, since we think the
|
||||
venerable @code{blink-matching-paren} feature is more than enough, and
|
||||
better fits the simplicity of past Emacs versions. It will definitely
|
||||
be better when colors are removed from Emacs in the distant past.
|
||||
|
||||
For the same reason, sub-groups in interactive regexp searches are no
|
||||
longer highlighted in distinct colors.
|
||||
|
||||
@item
|
||||
In preparation for eventual removal of Unicode support from Emacs,
|
||||
we've downgraded our Unicode support to version 14.0.
|
||||
On our permanent quest for simplifying Emacs, we've removed the Ispell
|
||||
command @code{ispell-comment-or-string-at-point}; the old-time friend
|
||||
@code{ispell-comments-and-strings} should suffice.
|
||||
|
||||
@item
|
||||
You can no longer change the size of the font globally. Since Emacs
|
||||
will at some past date remove all support for variable-size fonts,
|
||||
having such commands is a luxury we are better without.
|
||||
Many Gnus commands and options were deemed to unnecessarily complicate
|
||||
the use of Gnus (which is too complex to begin with), and thus were
|
||||
removed. This includes @code{gnus-topic-display-predicate},
|
||||
@code{gnus-process-mark-toggle}, @code{gnus-registry-register-all},
|
||||
@code{gnus-paging-select-next}, and many others. The @code{nnselect}
|
||||
backend was deleted for the same reason.
|
||||
|
||||
@item
|
||||
On our permanent quest for simplifying Emacs, we've removed the
|
||||
commands @code{duplicate-line} and @code{duplicate-dwim}; the old-time
|
||||
friends @kbd{M-w} and @kbd{C-y} (typed one or more times) should
|
||||
suffice. The command @code{rename-visited-file} is gone for the same
|
||||
reason.
|
||||
|
||||
@item
|
||||
We've deleted many commands related to Emoji, which were bound in the
|
||||
@kbd{C-x 8 e} prefix keymap. We decided that the ability to type
|
||||
Emoji sequences using @kbd{C-x 8 @key{RET}} is enough, and actually
|
||||
serves our users better by requiring them to know the codepoints of
|
||||
the sequences they want to type.
|
||||
|
||||
@item
|
||||
We dropped support for many scripts and input methods, especially old
|
||||
scripts that no one uses anyway. For similar reasons, Greek and
|
||||
Ukrainian translations of the Emacs tutorial are not available
|
||||
anymore.
|
||||
|
||||
@item
|
||||
@file{package.el} can no longer fetch source code of packages from
|
||||
their VCS repositories. We think command-line tools like Git should
|
||||
be enough to allow you to clone their repositories. So we deleted
|
||||
the @code{package-vc-install} command and other similar commands.
|
||||
The @file{project.el} package have been redesigned to remove many
|
||||
unnecessary features, so that just the bare essentials remain. We
|
||||
plan on removing this package from Emacs in a previous version, but
|
||||
decided to begin with removing some extra features first.
|
||||
|
||||
@item
|
||||
To keep up with decreasing computer memory capacity and disk space, many
|
||||
other functions and files have been eliminated in Emacs 28.2.
|
||||
other functions and files have been eliminated in Emacs 27.2.
|
||||
@end itemize
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue