1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-12 22:40:46 -08:00
Commit graph

160480 commits

Author SHA1 Message Date
Yuan Fu
bc66ff9875
* src/treesit.c (Ftreesit_query_language): New function. 2022-10-13 14:39:51 -07:00
Yuan Fu
0b3f785c4a
Better signal data for treesit-load-language-error
* src/treesit.c (ts_load_language): Better formatted signal data,
(Ftreesit_langauge_available_p): Optionally return the signal data if
language not available.
* doc/lispref/parsing.texi: Document the signal data in detail.
2022-10-12 10:38:35 -07:00
Yuan Fu
77f1533ccb
; Comment and docstring fixup in ts-mode.el
* lisp/progmodes/ts-mode.el: Add comment section and docstrings.
2022-10-11 23:49:04 -07:00
Theodor Thornhill
45b8204e09
Add TypeScript support with tree-sitter
* lisp/progmodes/ts-mode.el (ts-mode): New major mode for TypeScript
with support for tree-sitter.  It uses the TSX parser, so that we get
support for TSX as well as TypeScript.  If we cannot find tree-sitter,
we default to using js-mode.
2022-10-11 23:41:53 -07:00
Theodor Thornhill
c4179117af
Fix byte-compile warning for js--treesit-defun-type-regexp
* lisp/progmodes/js.el (js--treesit-defun-type-regexp): Move before
js--treesit-beginning-of-defun.
2022-10-11 11:45:50 -07:00
Yuan Fu
c2ecb08775
Lazily compile tree-sitter query
See comment on struct Lisp_TS_Query for why.  Previous commits adding
python and js support for tree-sitter breaks Emacs build if language
definitions aren't available at build time.  This commit fixes that.

Now query object don't compile the query upon creation, but stores the
query source and language symbol, and compiles upon first use (in
treesit-query-capture).

I want ts_ensure_query_compiled to return signal symbol and data
rather than signaling itself, because it's a helper function not lisp
function.  But because it calls ts_load_language, I had to update
ts_load_language to also use the signal symbol/data interface.

* src/treesit.h (struct Lisp_TS_Query): Add two new field.
* src/treesit.c (ts_load_language): Return signal symbol and data
rather than signaling itself.
(Ftreesit_langauge_available_p)
(Ftreesit_parser_create): Update usage of ts_load_language

(make_ts_query): Now returns a lisp object.
(ts_query_error_to_string): Moved because it's used by
ts_compose_query_signal_data.
(ts_compose_query_signal_data)
(ts_ensure_query_compiled): New functions.
(Ftreesit_query_compile): Delay compiling the query.
(Ftreesit_query_capture): Instead of creating a query object which
compiles the query, now goes two routes: if QUERY is a query object,
make sure it is compiled and use the TSQuery; if QUERY is a cons or
string, compile directly to TSQuery, and free it after use.  Creating
a lisp query requires the language symbol, but in this function we
only have TSLanguage.
2022-10-11 09:30:42 -07:00
Daniel Martín
57e37e9128
Fix typo in Makefile.in
* src/Makefile.in (TREE_SITTER_CFLAGS): Set the correct C flags.
2022-10-10 14:08:53 -07:00
Yuan Fu
1bb7b43e1c
Make treesit-node-at faster
* lisp/treesit.el (treesit-node-at): We only need to use
treesit-node-first-child-for-pos.  This is both faster for large
buffers and simpler.  Also remove the TODO comment.
2022-10-10 11:57:24 -07:00
Theodor Thornhill
c8909fa368
Fix typo in treesit--check-manual-covarage
* lisp/treesit.el (treesit--check-manual-coverage): Fix typo in
function name and also lookup the correct library in
`find-library-name'
2022-10-10 11:31:20 -07:00
Yuan Fu
b341864d90
Improve treesit-search-forward-goto so it doens't stuck at EOF
* lisp/treesit.el (treesit-search-forward-goto): Handle the edge case.
2022-10-10 11:14:35 -07:00
Yuan Fu
2f6b017e3d
* admin/notes/tree-sitter/starter-guide (Navigation): Improve demo. 2022-10-10 11:00:51 -07:00
Yuan Fu
2a762336da
Fix js--treesit-beginning/end-of-defun
* lisp/progmodes/js.el (require): Add rx.
(js--treesit-move-to-node): Remove function.
(js--treesit-beginning-of-defun)
(js--treesit-end-of-defun): Change to use treesit-search-forward-goto.
(js-treesit--defun-query): Remove variable.
(js--treesit-defun-type-regexp): Add variable.
2022-10-10 10:46:47 -07:00
Theodor Thornhill
ceb9591e5d
Add tree-sitter functionality to js-mode
The diff for js-mode, js-json-mode, js-jsx-mode are a bit strange, but
all we did is to wrap some the old code in

(if tree-sitter
  (tree-sitter-enable)
 ...some old-code)

...other old-code (that’s tree-sitter-agnostic)

* lisp/progmodes/js.el (treesit): Add tree-sitter dependency
(js-use-treesitter)
(js-json-use-treesitter): New custom options.

(js--treesit-keywords)
(js--treesit-settings)
(js--treesit-indent-rules)
(js--json-treesit-settings)
(js--json-treesit-indent-rules): New variables.

(js--treesit-backward-up-list)
(js-treesit-current-defun)
(js--treesit-move-to-node)
(js--treesit-beginning-of-defun, js--treesit-end-of-defun)
(js--treesit-enable)
(js--json-treesit-enable): New functions.

(js-mode, js-json-mode, js-jsx-mode): Add support for tree-sitter
functionalities.
2022-10-10 10:25:50 -07:00
Yuan Fu
861e1fb595
Fix tree-sitter build script in admin/notes
* admin/notes/tree-sitter/build-module/README: Add explaination.
* admin/notes/tree-sitter/build-module/build.sh: change
typescript to tsx.
2022-10-10 09:14:30 -07:00
Yuan Fu
b6568c1389
Rename custom group treesit to tree-sitter
* lisp/treesit.el (treesit): Rename.
2022-10-09 20:59:59 -07:00
Yuan Fu
aaaa4ca77e
Add :version tag for new tree-sitter custom options
* lisp/progmodes/python.el (python-use-tree-sitter): Add version tag.
* lisp/treesit.el (treesit):
(treesit-max-buffer-size): Add version tag.
2022-10-09 20:54:19 -07:00
Yuan Fu
bb8376145a
Make python tree-sitter font-lock support decoration levels
* lisp/progmodes/python.el (python--treesit-settings): Stratify into
three levels.
2022-10-09 17:20:40 -07:00
Yuan Fu
c88a1631e3
Make tree-sitter font-lock support decoration levels
* admin/notes/tree-sitter/html-manual/Parser_002dbased-Font-Lock.html:
Update.
* admin/notes/tree-sitter/html-manual/Parsing-Program-Source.html:
Update.
* doc/lispref/modes.texi: Mention the new :level option.
* lisp/treesit.el (treesit-font-lock-settings): Update docstring.
(treesit-font-lock-rules): Support :level.  Relayout the let form.
(treesit-font-lock-fontify-region): Support :level.
2022-10-09 17:20:28 -07:00
Yuan Fu
9f7c359f40
Add note on tree-sitter's naming convention
* admin/notes/tree-sitter/starter-guide: Add note.
* doc/lispref/parsing.texi: Add note.
2022-10-09 17:20:26 -07:00
Yuan Fu
8bc6e31502
Add a :toggle option for tree-sitter font-lock
* admin/notes/tree-sitter/html-manual/Parser_002dbased-Font-Lock.html:
Update html manual.
* admin/notes/tree-sitter/html-manual/build-manual.sh: Fix manual
path.
* admin/notes/tree-sitter/starter-guide: Mention :toggle.
* doc/lispref/modes.texi: Mention :toggle.
* lisp/treesit.el (treesit-font-lock-settings): Update docstring.
(treesit-font-lock-rules): Handle :toggle.  Also change
some wrong-type-argument signal to treesit-font-lock-error which is
easier to understand.
(treesit-font-lock-fontify-region): Handle :toggle.
2022-10-07 01:21:09 -07:00
Yuan Fu
b755f45f65
* src/treesit.c (syms_of_treesit): Add Streesit_language_version. 2022-10-06 15:46:01 -07:00
Yuan Fu
cea1e95d38
Merge branch 'master' into feature/tree-sitter 2022-10-06 11:06:07 -07:00
Arash Esbati
0c65c9dfb3 Pass correct environment name to `reftex-label'
* lisp/textmodes/tex-mode.el (latex-block-body-alist): Pass
"figure" to `reftex-label' when inserting a figure float.
(bug#58329)
2022-10-06 19:45:44 +02:00
Lars Ingebrigtsen
d188013737 etc/NEWS: Fix typo in seq-keep entry. 2022-10-06 14:56:47 +02:00
Justus Winter
9a529537e3 Replace aging OpenPGP artifacts in gnus' mml-sec tests.
This replaces the old OpenPGPv4 keys that are used in the test suite
with more modern OpenPGPv4 keys.

Having old cryptographic artifacts in the test suite presents a
problem once the old algorithms are rejected by contemporary
implementations (bug#58301).
2022-10-06 14:54:57 +02:00
Justus Winter
8352cf53bd Replace aging OpenPGP artifacts in the package-resources tests.
This replaces the old OpenPGPv4 key that is used in the test suite
with a more modern OpenPGPv4 key.  The key is the Alice key from
https://datatracker.ietf.org/doc/draft-bre-openpgp-samples/.  All
cryptographic artifacts in the test suite are updated accordingly.

Having old cryptographic artifacts in the test suite presents a
problem once the old algorithms are rejected by contemporary
implementations.
2022-10-06 14:53:41 +02:00
Justus Winter
40e957c622 Replace aging OpenPGP artifacts in the epg tests.
This replaces the old OpenPGPv4 key that is used in the test suite
with a more modern OpenPGPv4 key.  The key is the Alice key from
https://datatracker.ietf.org/doc/draft-bre-openpgp-samples/.  All
cryptographic artifacts in the test suite are updated accordingly.

Having old cryptographic artifacts in the test suite presents a
problem once the old algorithms are rejected by contemporary
implementations.
2022-10-06 14:53:39 +02:00
Justus Winter
82388dff8e Fix epg's reliance on an implicit GnuPG command.
Previously, epg invoked GnuPG without an explicit command to verify
signatures.  Make that operation explicit.  Happily, this aligns how
gpg and gpgsm is invoked, so it actually makes the code simpler.
2022-10-06 14:53:36 +02:00
Manuel Giraud
07b2e9b909 Fix BSD battery mode over TRAMP (bug#58307)
* lisp/battery.el (battery--call-process-to-string): Simple wrapper
to `call-process' that outputs to a string.
(battery-bsd-apm): Use it instead of `shell-command-to-string'
(bug#58307).
2022-10-06 14:46:39 +02:00
Matt Armstrong
e24f276f8a Fix calling `package-reinstall' just after quick initialization.
* lisp/emacs-lisp/package.el (package-reinstall): call
`package--archives-initialize', just like `package-install' does.
This populates `package-alist', and so fixes calling
`package-reinstall' as the first thing done after package "quick
init" (Bug#53527).
2022-10-06 14:08:20 +02:00
Gerd Möllmann
d9b026d464 Add missing staticpro (bug#58327)
* src/window.c (init_window_once): staticpro old_selected_window.
2022-10-06 10:18:59 +02:00
Gerd Möllmann
a112e3f017 Inhibit GC in probably_quit (bug#58042) 2022-10-06 09:10:17 +02:00
Stefan Kangas
039ada6d03 * etc/NEWS: Document how to continue using 'linum'. (Bug#58220) 2022-10-06 08:56:24 +02:00
Po Lu
e2027d60ba ; * src/xterm.c (x_term_init): Fix typo. 2022-10-06 10:57:43 +08:00
Po Lu
8e8d37aa32 Minor fixes to IM locale handling
* lisp/term/x-win.el (x-get-input-coding-system): Translate locales.
* src/xterm.c (x_term_init): If the X library doesn't support
the current locale, don't set up input methods.
2022-10-06 10:56:27 +08:00
Po Lu
c690d1f15d Fix nsmenu crash when exiting popup dialog
* src/nsmenu.m (pop_down_menu): Do not discard menu items here.
(ns_popup_dialog): Call discard_menu_items after
unuse_menu_items.  (bug#58296)
2022-10-06 10:52:34 +08:00
Stefan Kangas
9cb3813550 * etc/NEWS: Add instructions for replacing 'linum'. (Bug#58220) 2022-10-06 01:33:19 +02:00
Yuan Fu
7ebbd4efc3
Merge branch 'master' into feature/tree-sitter 2022-10-05 14:22:03 -07:00
Yuan Fu
cb183f6467
Add tree-sitter admin notes
starter-guide: Guide on writing major mode features.
build-module: Script for building official language definitions.
html-manual: HTML version of the manual for easy access.

* admin/notes/tree-sitter/build-module/README: New file.
* admin/notes/tree-sitter/build-module/batch.sh: New file.
* admin/notes/tree-sitter/build-module/build.sh: New file.
* admin/notes/tree-sitter/starter-guide: New file.
* admin/notes/tree-sitter/html-manual/Accessing-Node.html: New file.
* admin/notes/tree-sitter/html-manual/Language-Definitions.html: New file.
* admin/notes/tree-sitter/html-manual/Multiple-Languages.html: New file.
* admin/notes/tree-sitter/html-manual/Parser_002dbased-Font-Lock.html:
New file.
* admin/notes/tree-sitter/html-manual/Parser_002dbased-Indentation.html:
New file.
* admin/notes/tree-sitter/html-manual/Parsing-Program-Source.html: New
file.
* admin/notes/tree-sitter/html-manual/Pattern-Matching.html: New file.
* admin/notes/tree-sitter/html-manual/Retrieving-Node.html: New file.
* admin/notes/tree-sitter/html-manual/Tree_002dsitter-C-API.html: New
file.
* admin/notes/tree-sitter/html-manual/Using-Parser.html: New file.
* admin/notes/tree-sitter/html-manual/build-manual.sh: New file.
* admin/notes/tree-sitter/html-manual/manual.css: New file.
2022-10-05 14:11:33 -07:00
Juri Linkov
95efafb726 * lisp/repeat.el (repeat-exit): Add autoload cookie. 2022-10-05 22:47:42 +03:00
Juri Linkov
63e8157b54 * etc/tutorials/TUTORIAL.uk: Fix typos. 2022-10-05 22:43:12 +03:00
Michael Albinus
d8726f574c Adapt Tramp manual
* doc/misc/tramp.texi (Inline methods): Method "kubernetes" does
not support user names.
2022-10-05 17:11:33 +02:00
Stefan Kangas
10ec1a4d7e New command 'world-clock-copy-time-as-kill'
* lisp/time.el (world-clock-copy-time-as-kill): New command.
(world-clock-mode-map): Bind above new command to "w".
2022-10-05 16:33:23 +02:00
Stefan Kangas
9449e0740c Add face help-key-binding in help-char echo
* src/keyboard.c (echo_add_key): Add help-key-binding face to the
"?" key in 'help-char' echo.  (Bug#57906)
(syms_of_keyboard) <Qhelp_key_binding>: New DEFSYM.
2022-10-05 15:23:39 +02:00
Stefan Kangas
1720ebecc7 ; * lisp/files.el (find-file-noselect): Minor simplification. 2022-10-05 15:08:01 +02:00
Po Lu
6430c4c44f Fix bug in "macintization" of x_draw_glyph_string
* src/nsterm.m (ns_draw_stretch_glyph_string): Restore text decoration
drawing code ommitted during "macintization" to convert the X function
into NS code.  Reported by Qiantan Hong <qthong@stanford.edu>.
2022-10-05 08:32:00 +08:00
Filipp Gunbin
a259d0dda3 Add tramp-kubernetes integration
* doc/misc/tramp.texi (Inline methods): Add kubernetes.
(Customizing Methods): Remove kubernetes-tramp.
* etc/NEWS: Mention new Tramp method "kubernetes".
* lisp/net/tramp-compat.el (kubernetes-tramp): Warn if that package is
used.
* lisp/net/tramp-container.el (tramp-kubernetes-program): New
defcustom.
(tramp-kubernetes-method): New defconst.
(tramp-kubernetes--completion-function): New function.
2022-10-05 03:10:06 +03:00
Filipp Gunbin
e4e9cb265c Rename lisp/net/tramp-docker.el to lisp/net/tramp-container.el 2022-10-05 02:16:36 +03:00
Yuan Fu
1ea503ed4b
Add :override flag for python tree-sitter font-lock settings
* lisp/progmodes/python.el (python--treesit-settings): Add :override.
2022-10-04 13:30:56 -07:00
Yuan Fu
23bb724c92
Add :override flag for tree-sitter font-lock
* doc/lispref/modes.texi (Parser-based Font Lock): Update manual.
* lisp/treesit.el (treesit-font-lock-settings): Update docstring.
(treesit-font-lock-rules): Handle :override.
(treesit-font-lock-fontify-region): Handle :override.  Also set
inhibit-point-motion-hooks to t.
2022-10-04 13:30:56 -07:00