diff options
| author | Stefan Monnier | 2024-04-05 17:37:32 -0400 |
|---|---|---|
| committer | Stefan Monnier | 2024-04-09 22:28:11 -0400 |
| commit | 820011a254231d6255b0d7fe07ff4ab1314c3b6e (patch) | |
| tree | ebee7d6bc1170be3a9ed50e6182c287d18292403 /etc | |
| parent | dd6b9c9426c5d7dde66974c5790815c3520a755b (diff) | |
| download | emacs-scratch/track-changes.tar.gz emacs-scratch/track-changes.zip | |
lisp/emacs-lisp/track-changes.el: New filescratch/track-changes
This new package provides an API that is easier to use right than
our `*-change-functions` hooks.
The patch includes changes to `diff-mode.el` and `eglot.el` to
make use of this new package.
* lisp/emacs-lisp/track-changes.el: New file.
* test/lisp/emacs-lisp/track-changes-tests.el: New file.
* doc/lispref/text.texi (Tracking changes): New subsection.
* lisp/progmodes/eglot.el: Require `track-changes`.
(eglot--virtual-pos-to-lsp-position): New function.
(eglot--track-changes): New var.
(eglot--managed-mode): Use `track-changes-register` i.s.o
`after/before-change-functions` when available.
(eglot--track-changes-signal): New function, partly extracted from
`eglot--after-change`.
(eglot--after-change): Use it.
(eglot--track-changes-fetch): New function.
(eglot--signal-textDocument/didChange): Use it.
* lisp/vc/diff-mode.el: Require `track-changes`.
Also require `easy-mmode` before the `eval-when-compile`s.
(diff-unhandled-changes): Delete variable.
(diff-after-change-function): Delete function.
(diff--track-changes-function): Rename from `diff-post-command-hook`
and adjust to new calling convention.
(diff--track-changes): New variable.
(diff--track-changes-signal): New function.
(diff-mode, diff-minor-mode): Use it with `track-changes-register`.
Diffstat (limited to 'etc')
| -rw-r--r-- | etc/NEWS | 18 |
1 files changed, 18 insertions, 0 deletions
| @@ -15,6 +15,12 @@ in older Emacs versions. | |||
| 15 | You can narrow news to a specific version by calling 'view-emacs-news' | 15 | You can narrow news to a specific version by calling 'view-emacs-news' |
| 16 | with a prefix argument or by typing 'C-u C-h C-n'. | 16 | with a prefix argument or by typing 'C-u C-h C-n'. |
| 17 | 17 | ||
| 18 | Temporary note: | ||
| 19 | +++ indicates that all relevant manuals in doc/ have been updated. | ||
| 20 | --- means no change in the manuals is needed. | ||
| 21 | When you add a new item, use the appropriate mark if you are sure it | ||
| 22 | applies, and please also update docstrings as needed. | ||
| 23 | |||
| 18 | 24 | ||
| 19 | * Installation Changes in Emacs 30.1 | 25 | * Installation Changes in Emacs 30.1 |
| 20 | 26 | ||
| @@ -1586,6 +1592,18 @@ options of GNU 'ls'. | |||
| 1586 | 1592 | ||
| 1587 | * New Modes and Packages in Emacs 30.1 | 1593 | * New Modes and Packages in Emacs 30.1 |
| 1588 | 1594 | ||
| 1595 | +++ | ||
| 1596 | ** New package Track-Changes. | ||
| 1597 | This library is a layer of abstraction above 'before-change-functions' | ||
| 1598 | and 'after-change-functions' which provides a superset of | ||
| 1599 | the functionality of 'after-change-functions': | ||
| 1600 | - It provides the actual previous text rather than only its length. | ||
| 1601 | - It takes care of accumulating and bundling changes until a time when | ||
| 1602 | its client finds it convenient to react to them. | ||
| 1603 | - It detects most cases where some changes were not properly | ||
| 1604 | reported (calls to 'before/after-change-functions' that are | ||
| 1605 | incorrectly paired, missing, etc...) and reports them adequately. | ||
| 1606 | |||
| 1589 | ** New major modes based on the tree-sitter library | 1607 | ** New major modes based on the tree-sitter library |
| 1590 | 1608 | ||
| 1591 | +++ | 1609 | +++ |