emacs/lisp
Yuan Fu 1897da0b59
Add line-column tracking for tree-sitter
Add line-column tracking for tree-sitter parsers.  Copied from
comments in treesit.c:

   Technically we had to send tree-sitter the line and column
   position of each edit.  But in practice we just send it dummy
   values, because tree-sitter doesn't use it for parsing and
   mostly just carries the line and column positions around and
   return it when e.g. reporting node positions[1].  This has
   been working fine until we encountered grammars that actually
   utilizes the line and column information for
   parsing (Haskell)[2].

   [1] https://github.com/tree-sitter/tree-sitter/issues/445
   [2] https://github.com/tree-sitter/tree-sitter/issues/4001

   So now we have to keep track of line and column positions and
   pass valid values to tree-sitter.  (It adds quite some
   complexity, but only linearly; one can ignore all the linecol
   stuff when trying to understand treesit code and then come
   back to it later.)  Eli convinced me to disable tracking by
   default, and only enable it for languages that needs it.  So
   the buffer starts out not tracking linecol.  And when a
   parser is created, if the language is in
   treesit-languages-require-line-column-tracking, we enable
   tracking in the buffer, and enable tracking for the parser.
   To simplify things, once a buffer starts tracking linecol, it
   never disables tracking, even if parsers that need tracking
   are all deleted; and for parsers, tracking is determined at
   creation time, if it starts out tracking/non-tracking, it
   stays that way, regardless of later changes to
   treesit-languages-require-line-column-tracking.

   To make calculating line/column positons fast, we store
   linecol caches for begv, point, and zv in the
   buffer (buf->ts_linecol_cache_xxx); and in the parser object,
   we store linecol cache for visible beg/end of that parser.

   In buffer editing functions, we need the linecol for
   start/old_end/new_end, those can be calculated by scanning
   newlines (treesit_linecol_of_pos) from the buffer point
   cache, which should be always near the point.  And we usually
   set the calculated linecol of new_end back to the buffer
   point cache.

   We also need to calculate linecol for the visible_beg/end for
   each parser, and linecol for the buffer's begv/zv, these
   positions are usually far from point, so we have caches for
   all of them (in either the parser object or the buffer).
   These positions are far from point, so it's inefficient to
   scan newlines from point to there to get up-to-date linecol
   for them; but in the same time, because they're far and
   outside the changed region, we can calculate their change in
   line and column number by simply counting how much newlines
   are added/removed in the changed
   region (compute_new_linecol_by_change).

* doc/lispref/parsing.texi (Using Parser): Mention line-column
tracking in manual.
* etc/NEWS: Add news.
* lisp/treesit.el:
(treesit-languages-need-line-column-tracking): New variable.
* src/buffer.c: Include treesit.h (for TREESIT_EMPTY_LINECOL).
(Fget_buffer_create):
(Fmake_indirect_buffer): Initialize new buffer fields.
(Fbuffer_swap_text): Add new buffer fields.
* src/buffer.h (ts_linecol): New struct.
(buffer): New buffer fields.
(BUF_TS_LINECOL_BEGV):
(BUF_TS_LINECOL_POINT):
(BUF_TS_LINECOL_ZV):
(SET_BUF_TS_LINECOL_BEGV):
(SET_BUF_TS_LINECOL_POINT):
(SET_BUF_TS_LINECOL_ZV): New inline functions.
* src/casefiddle.c (casify_region): Record linecol info.
* src/editfns.c (Fsubst_char_in_region):
(Ftranslate_region_internal):
(Ftranspose_regions): Record linecol info.
* src/insdel.c (insert_1_both):
(insert_from_string_1):
(insert_from_gap_1):
(insert_from_buffer):
(replace_range):
(del_range_2): Record linecol info.
* src/treesit.c (TREESIT_BOB_LINECOL):
(TREESIT_EMPTY_LINECOL):
(TREESIT_TS_POINT_1_0): New constants.
(treesit_debug_print_linecol):
(treesit_buf_tracks_linecol_p):
(restore_restriction_and_selective_display):
(treesit_count_lines):
(treesit_debug_validate_linecol):
(treesit_linecol_of_pos):
(treesit_make_ts_point):
(Ftreesit_tracking_line_column_p):
(Ftreesit_parser_tracking_line_column_p): New functions.
(treesit_tree_edit_1): Accept real TSPoint and pass to
tree-sitter.
(compute_new_linecol_by_change): New function.
(treesit_record_change_1): Rename from treesit_record_change,
handle linecol if tracking is enabled.
(treesit_linecol_maybe): New function.
(treesit_record_change): New wrapper around
treesit_record_change_1 that handles some boilerplate and sets
buffer state.
(treesit_sync_visible_region): Handle linecol if tracking is
enabled.
(make_treesit_parser): Setup parser's linecol cache if tracking
is enabled.
(Ftreesit_parser_create): Enable tracking if the parser's
language requires it.
(Ftreesit__linecol_at):
(Ftreesit__linecol_cache_set):
(Ftreesit__linecol_cache): New functions for debugging and
testing.
(syms_of_treesit): New variable
Vtreesit_languages_require_line_column_tracking.
* src/treesit.h (Lisp_TS_Parser): New fields.
(TREESIT_BOB_LINECOL):
(TREESIT_EMPTY_LINECOL): New constants.
* test/src/treesit-tests.el (treesit-linecol-basic):
(treesit-linecol-search-back-across-newline):
(treesit-linecol-col-same-line):
(treesit-linecol-enable-disable): New tests.
* src/lisp.h: Declare display_count_lines.
* src/xdisp.c (display_count_lines): Remove static keyword.
2025-05-03 22:14:03 -07:00
..
calc Merge from savannah/emacs-30 2025-04-18 16:26:23 -07:00
calendar Reuse calendar temporary faces 2025-04-26 17:05:16 +03:00
cedet Delete unused block-comment-start and block-comment-end 2025-04-22 20:48:45 +08:00
emacs-lisp Preserve directory structure of local packages 2025-05-03 23:40:57 +02:00
emulation Use defvar-keymap for some trivial keymaps 2025-03-16 13:48:11 +01:00
erc Don't round-trip auto-reconnect probe in ERC 2025-04-16 17:30:13 -07:00
eshell Prefer incf to cl-incf in remaining files 2025-02-26 02:57:03 +01:00
gnus nnfeed: Pass through list request failure reports 2025-04-26 14:41:27 +03:00
image image-dired: Don't croak on file names with regexp characters 2025-03-04 10:58:41 +01:00
international Merge from origin/emacs-30 2025-05-03 06:26:31 -04:00
language japan-util.el: Cosmetic changes 2025-03-31 10:21:58 -04:00
leim/quail Fix thai-pattachote input method 2025-04-26 16:46:34 +03:00
mail Fix 'rfc6068-parse-mailto-url' with 'inhibit-eol-conversion' 2025-04-19 17:20:27 +03:00
mh-e Use 'hash-table-contains-p' in a few places 2025-03-29 14:59:44 +01:00
net Merge from origin/emacs-30 2025-05-03 15:05:09 +02:00
nxml Revert addition of electric-block-comment-mode & follow-up commits 2025-04-22 20:47:56 +08:00
obsolete Mark vc-dav.el as obsolete (bug#77626) 2025-04-27 12:30:41 +08:00
org Org: Use new replace-region-contents 2025-03-29 17:49:49 -04:00
play Recommend using 'keymap-set' in Commentaries 2025-03-15 04:10:27 +01:00
progmodes Add `next-error' support for flymake diagnostics buffers 2025-05-03 11:51:11 +03:00
term Improve 'gui-get-selection' on MS-Windows 2025-03-20 11:03:32 +02:00
textmodes ; * lisp/textmodes/markdown-ts-mode.el (treesit-node-child): Declare. 2025-05-03 13:24:59 +03:00
url url-parse.el: correct code for Windows paths (bug#76982) 2025-04-28 08:19:06 +02:00
use-package Fix use-package :custom-face to set face-defface-spec (bug#77928) 2025-04-27 10:48:55 +03:00
vc New log-edit-maybe-show-diff option for log-edit-hook 2025-04-29 09:40:51 +08:00
abbrev.el ; Normalize spacing in last change 2025-04-11 10:02:54 +08:00
align.el Prefer '(oddp A)' to '(= 1 (% A 2))' 2025-02-17 05:37:10 +01:00
allout-widgets.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
allout.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
ansi-color.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
ansi-osc.el * lisp/ansi-osc.el (ansi-osc-directory-tracker): Don't check host name. 2025-02-10 16:37:25 +01:00
apropos.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
arc-mode.el Detect more types of split zip archives 2025-04-24 16:05:03 +03:00
array.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
auth-source-pass.el cedet: Delete obsolete object name arg to EIEIO constructors 2025-04-07 00:03:20 -04:00
auth-source.el lisp/auth-source.el (authinfo--keywords): Avoid obsolete font-lock face vars 2025-04-25 16:35:04 -04:00
autoinsert.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
autorevert.el ; Use an uninterned symbol in the inhibit-auto-revert expansion. 2025-02-06 20:07:09 +01:00
avoid.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
battery.el Merge from origin/emacs-30 2025-05-03 06:26:31 -04:00
bind-key.el Add :continue-only directive to bind-keys and use-package 2025-02-27 09:33:09 +02:00
bindings.el ; mode-line-collapse-minor-modes: Tweak wording. 2025-04-26 19:48:49 +08:00
bookmark.el bookmark.el: Cosmetic changes 2025-03-25 13:44:15 -04:00
bs.el bs.el: Janitorial work; most importantly use special-mode 2025-03-25 14:06:32 -04:00
buff-menu.el New user option 'Buffer-menu-human-readable-sizes' 2025-02-01 12:37:37 +02:00
button.el Prevent button.el from clearing help-echo strings 2025-03-08 17:29:34 +01:00
calculator.el Recommend using 'keymap-global-set' in Commentaries 2025-03-15 04:06:31 +01:00
case-table.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
ChangeLog.1 ; Delete troff markers from ChangeLog files 2025-02-20 02:46:43 +01:00
ChangeLog.2 ; Delete troff markers from ChangeLog files 2025-02-20 02:46:43 +01:00
ChangeLog.3 ; Delete troff markers from ChangeLog files 2025-02-20 02:46:43 +01:00
ChangeLog.4 ; Delete troff markers from ChangeLog files 2025-02-20 02:46:43 +01:00
ChangeLog.5 ; Delete troff markers from ChangeLog files 2025-02-20 02:46:43 +01:00
ChangeLog.6 ; Delete troff markers from ChangeLog files 2025-02-20 02:46:43 +01:00
ChangeLog.7 ; Delete troff markers from ChangeLog files 2025-02-20 02:46:43 +01:00
ChangeLog.8 ; Delete troff markers from ChangeLog files 2025-02-20 02:46:43 +01:00
ChangeLog.9 ; Delete troff markers from ChangeLog files 2025-02-20 02:46:43 +01:00
ChangeLog.10 Update copyright year to 2025 2025-01-02 18:39:42 +01:00
ChangeLog.11 Update copyright year to 2025 2025-01-02 18:39:42 +01:00
ChangeLog.12 Update copyright year to 2025 2025-01-02 18:39:42 +01:00
ChangeLog.13 Update copyright year to 2025 2025-01-02 18:39:42 +01:00
ChangeLog.14 Update copyright year to 2025 2025-01-02 18:39:42 +01:00
ChangeLog.15 Update copyright year to 2025 2025-01-02 18:39:42 +01:00
ChangeLog.16 Update copyright year to 2025 2025-01-02 18:39:42 +01:00
ChangeLog.17 Update copyright year to 2025 2025-01-02 18:39:42 +01:00
char-fold.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
chistory.el Use defvar-keymap for command-history-mode-map 2025-03-15 04:06:31 +01:00
cmuscheme.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
color.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
comint.el Don't recommend legacy keymap functions in docstrings 2025-03-16 13:48:11 +01:00
completion-preview.el Merge from savannah/emacs-30 2025-03-16 20:16:57 +08:00
completion.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
composite.el Improve 'C-u C-x =' for ligatures of ASCII characters 2025-03-22 12:39:46 +02:00
COPYING
cus-dep.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
cus-edit.el ; * lisp/cus-edit.el: Fix a typo in a comment. 2025-04-29 08:07:33 +03:00
cus-face.el Merge branch 'scratch/no-purespace' into 'master' 2025-02-01 04:56:52 +01:00
cus-start.el Expose some lambdas currently hidden in quoted data 2025-03-24 17:14:26 -04:00
cus-theme.el Fix widget relationship in customize-themes 2025-04-02 08:10:18 -03:00
custom.el (custom--standard-value-p): New function 2025-04-01 18:06:31 -04:00
dabbrev.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
delim-col.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
delsel.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
descr-text.el Improve 'C-u C-x =' for ligatures of ASCII characters 2025-03-22 12:39:46 +02:00
desktop.el * lisp/desktop.el: Fix the recent cleanup. 2025-04-23 09:51:34 +03:00
dframe.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
dired-aux.el ; Add missing :group to new defcustom 2025-04-15 22:22:16 +02:00
dired-x.el * lisp/dired-x.el (dired-omit-expunge): Escape '%' (bug#75877). 2025-02-05 15:48:49 +02:00
dired.el Merge from origin/emacs-30 2025-03-24 10:41:45 +08:00
dirtrack.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
disp-table.el ; Fix typos 2025-02-22 14:48:29 +01:00
display-fill-column-indicator.el ; Fix documentation of previous change. 2025-03-09 11:20:33 +02:00
display-line-numbers.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
dnd.el Merge branch 'scratch/no-purespace' into 'master' 2025-02-01 04:56:52 +01:00
doc-view.el ; Delete duplicate variable definition 2025-03-19 21:26:28 +01:00
dom.el Prefer decf to cl-decf 2025-02-23 00:38:22 +01:00
dos-fns.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
dos-vars.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
dos-w32.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
double.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
dynamic-setting.el Respond to display configuration updates on Android 2025-04-10 15:25:38 +08:00
ebuff-menu.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
ecomplete.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
editorconfig-conf-mode.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
editorconfig-core-handle.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
editorconfig-core.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
editorconfig-fnmatch.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
editorconfig-tools.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
editorconfig.el ; Replace "Elisp" with "Lisp" or "Emacs Lisp" in some places 2025-03-12 10:24:22 +08:00
edmacro.el Prefer incf to cl-incf in remaining files 2025-02-26 02:57:03 +01:00
ehelp.el Recommend using 'keymap-set' in Commentaries 2025-03-15 04:10:27 +01:00
elec-pair.el Prefer '(evenp A)' to '(= 0 (% A 2))' 2025-02-17 05:37:10 +01:00
electric.el Revert addition of electric-block-comment-mode & follow-up commits 2025-04-22 20:47:56 +08:00
elide-head.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
emacs-lock.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
env.el Document return values of the various read-* functions 2025-03-09 15:02:39 +02:00
epa-dired.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
epa-file.el Prefer incf to cl-incf in remaining files 2025-02-26 02:57:03 +01:00
epa-hook.el Merge branch 'scratch/no-purespace' into 'master' 2025-02-01 04:56:52 +01:00
epa-ks.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
epa-mail.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
epa.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
epg-config.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
epg.el Improve integer file mode options docstrings 2025-01-06 11:10:10 +01:00
expand.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
external-completion.el Use 'hash-table-contains-p' in a few places 2025-03-29 14:59:44 +01:00
ezimage.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
face-remap.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
facemenu.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
faces.el Implement dragging and resizing of tty child frames 2025-03-17 09:50:19 +01:00
ffap.el (internal--c-header-file-path): Move to ffap.el 2025-02-28 17:03:21 -05:00
filecache.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
fileloop.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
filenotify.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
files-x.el Merge from savannah/emacs-30 2025-04-18 16:26:23 -07:00
files.el Merge from origin/emacs-30 2025-04-30 07:14:23 -04:00
filesets.el ; Normalize spacing in last change 2025-04-11 10:02:54 +08:00
find-cmd.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
find-dired.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
find-file.el Merge branch 'scratch/no-purespace' into 'master' 2025-02-01 04:56:52 +01:00
find-lisp.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
finder.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
flow-ctrl.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
foldout.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
follow.el ; * lisp/follow.el (follow-mode-prefix-key): Improve. 2025-03-18 00:16:29 +01:00
font-core.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
font-lock.el Expose some lambdas currently hidden in quoted data 2025-03-24 17:14:26 -04:00
format-spec.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
format.el Merge branch 'scratch/no-purespace' into 'master' 2025-02-01 04:56:52 +01:00
forms.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
frame.el ; Fix function declarations in frame.el 2025-03-10 11:31:50 +08:00
frameset.el (register-type, register--type): Delete functions 2025-04-30 12:28:35 -04:00
fringe.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
generic-x.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
help-at-pt.el New Eldoc function `eldoc-show-help-at-pt' 2025-03-29 13:50:26 +03:00
help-fns.el Improve help-fns-edit-variable for Lisp editing 2025-04-26 14:53:18 +03:00
help-macro.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
help-mode.el Delete redundant lambdas around unary functions 2025-02-11 19:04:00 +01:00
help.el Merge from savannah/emacs-30 2025-04-18 16:26:22 -07:00
hex-util.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
hexl.el Prefer '(oddp A)' to '(= 1 (logand A 1))' 2025-02-17 19:33:56 +01:00
hfy-cmap.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
hi-lock.el ; Fix my last commit 2025-03-02 19:46:15 +01:00
hilit-chg.el Recommend using 'keymap-global-set' in Commentaries 2025-03-15 04:06:31 +01:00
hippie-exp.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
hl-line.el ; Fix global-hl-line-highlight after recent commit 2025-03-20 19:05:29 +01:00
htmlfontify.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
ibuf-ext.el Prefer incf to cl-incf in remaining files 2025-02-26 02:57:03 +01:00
ibuf-macs.el (define-ibuffer-op): Minor tweak to Shipmints's patch 2025-02-26 09:13:04 -05:00
ibuffer.el Improve 'define-ibuffer-op' macro (bug#76222) 2025-02-26 09:10:27 -05:00
icomplete.el Icomplete: rename some internal helper functions (bug#77546) 2025-04-06 14:08:14 +01:00
ido.el Recommend using 'keymap-set' in Commentaries 2025-03-15 04:10:27 +01:00
ielm.el Don't recommend legacy keymap functions in docstrings 2025-03-16 13:48:11 +01:00
iimage.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
image-file.el Merge branch 'scratch/no-purespace' into 'master' 2025-02-01 04:56:52 +01:00
image-mode.el Prefer plusp/minusp to cl-plusp/cl-minusp 2025-02-17 22:46:56 +01:00
image.el ; Fix warnings in a tty-only build on MS-Windows 2025-01-05 11:03:07 +02:00
imenu.el Prefer incf to cl-incf in remaining files 2025-02-26 02:57:03 +01:00
indent-aux.el Fix 'kill-ring-deindent-mode' 2025-04-26 17:30:20 +03:00
indent.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
info-look.el Merge from origin/emacs-30 2025-01-25 10:06:19 -05:00
info-xref.el Prefer incf to cl-incf in remaining files 2025-02-26 02:57:03 +01:00
info.el Backport expansion of Time Stamp documentation 2025-03-30 11:39:53 -07:00
informat.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
isearch.el Merge from origin/emacs-30 2025-04-30 07:14:23 -04:00
isearchb.el Recommend using 'keymap-set' in Commentaries 2025-03-15 04:10:27 +01:00
jit-lock.el Replace anonymous lambda timers with named functions 2025-03-04 02:42:45 +01:00
jka-cmpr-hook.el Merge branch 'scratch/no-purespace' into 'master' 2025-02-01 04:56:52 +01:00
jka-compr.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
json.el Replace uses of replace-buffer-contents 2025-03-29 17:49:49 -04:00
jsonrpc.el Make cl-gensym obsolete in favor of built-in gensym 2025-02-25 01:25:15 +01:00
keymap.el Merge from origin/emacs-30 2025-01-25 10:06:19 -05:00
kmacro.el Enable kmacro-call-macro to function in some circumstances 2025-03-02 16:05:04 +08:00
ldefs-boot.el ; Update ldefs-boot.el 2025-04-10 08:04:08 -04:00
loadhist.el Correctly unload variable aliases. 2025-03-16 12:52:40 -04:00
loadup.el lisp/loadup.el (max-lisp-eval-depth): Bump up a bit 2025-03-24 17:31:35 -04:00
locate.el Merge branch 'scratch/no-purespace' into 'master' 2025-02-01 04:56:52 +01:00
lpr.el Merge branch 'scratch/no-purespace' into 'master' 2025-02-01 04:56:52 +01:00
ls-lisp.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
macros.el Improve documentation of 'insert-kbd-macro' 2025-04-27 09:52:25 +03:00
Makefile.in Update copyright year to 2025 2025-01-02 18:39:42 +01:00
man.el Make `man' more portable 2025-04-22 08:45:34 +02:00
master.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
mb-depth.el Make second arg to defvar-local optional 2025-03-09 18:24:22 +01:00
md4.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
menu-bar.el Add 'project-customize-dirlocals' 2025-04-01 22:36:03 +03:00
midnight.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
minibuf-eldef.el Make second arg to defvar-local optional 2025-03-09 18:24:22 +01:00
minibuffer.el Fix completion boundaries for TRAMP file names 2025-05-02 14:47:37 +02:00
misc.el Make second arg to defvar-local optional 2025-03-09 18:24:22 +01:00
misearch.el Use 'file-equal-p' in 'multi-isearch-read-files' (bug#77678). 2025-04-29 20:14:07 +03:00
mouse-copy.el Don't recommend legacy keymap functions in docstrings 2025-03-16 13:48:11 +01:00
mouse-drag.el Don't recommend legacy keymap functions in docstrings 2025-03-16 13:48:11 +01:00
mouse.el Implement dragging and resizing of tty child frames 2025-03-17 09:50:19 +01:00
mpc.el Prefer incf to cl-incf in remaining files 2025-02-26 02:57:03 +01:00
msb.el Prefer incf to cl-incf in remaining files 2025-02-26 02:57:03 +01:00
mwheel.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
newcomment.el ; comment-indent: Leave point where we used to. 2025-04-26 20:04:43 +08:00
notifications.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
novice.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
obarray.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
outline.el Ignore parens in strings for outline headings in emacs-lisp-mode. 2025-04-29 19:55:48 +03:00
paren.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
password-cache.el Use 'hash-table-contains-p' in a few places 2025-03-29 14:59:44 +01:00
pcmpl-cvs.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
pcmpl-git.el Add file completion for git apply, am to pcomplete 2025-02-18 00:03:05 +01:00
pcmpl-gnu.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
pcmpl-linux.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
pcmpl-rpm.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
pcmpl-unix.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
pcmpl-x.el Use 'hash-table-contains-p' in a few places 2025-03-29 14:59:44 +01:00
pcomplete.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
pgtk-dnd.el Merge branch 'scratch/no-purespace' into 'master' 2025-02-01 04:56:52 +01:00
pixel-scroll.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
plstore.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
printing.el Recommend using 'keymap-global-set' in Commentaries 2025-03-15 04:06:31 +01:00
proced.el ; Fix a typo in proced.el 2025-04-13 12:39:13 +03:00
profiler.el Prefer incf to cl-incf in remaining files 2025-02-26 02:57:03 +01:00
ps-bdf.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
ps-mule.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
ps-print.el Recommend using 'keymap-global-set' in Commentaries 2025-03-15 04:06:31 +01:00
ps-samp.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
pulse.el Move pulse.el from lisp/cedet/ to lisp/ 2025-03-15 04:06:31 +01:00
README
recentf.el Strip text properties on recentf entries, when saved (bug#77140) 2025-04-19 17:09:04 +03:00
rect.el Avoid infinite recursion under 'rectangle-mark-mode' 2025-04-27 10:08:38 +03:00
register.el register.el (register--jumpable-p): Fix bug#78186 2025-05-01 12:38:33 -04:00
registry.el Prefer incf to cl-incf in remaining files 2025-02-26 02:57:03 +01:00
repeat.el Recommend using 'keymap-global-set' in Commentaries 2025-03-15 04:06:31 +01:00
replace.el Use defvar-keymap for some trivial keymaps 2025-03-16 13:48:11 +01:00
reposition.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
reveal.el Prefer %S format over %s for non strings 2025-01-02 14:29:49 -05:00
rfn-eshadow.el Merge branch 'scratch/no-purespace' into 'master' 2025-02-01 04:56:52 +01:00
rot13.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
rtree.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
ruler-mode.el Show drag cursor on all window lines (mode, tab, header) 2025-04-15 21:52:47 +03:00
savehist.el (savehist-minibuffer-hook): Exclude uninterned history vars 2025-04-20 10:10:17 -04:00
saveplace.el Recommend using 'keymap-set' in Commentaries 2025-03-15 04:10:27 +01:00
scroll-all.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
scroll-bar.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
scroll-lock.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
select.el ; Improve documentation of 'gui-get-selection' use on X 2025-03-15 11:48:36 +02:00
server.el Improve message handling on server stop 2025-03-29 13:44:09 +03:00
ses.el Prefer '(oddp A)' to '(= 1 (% A 2))' 2025-02-17 05:37:10 +01:00
shadowfile.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
shell.el Promote bookmark-handler prop 'bookmark-inhibit to list (bug#65039) 2025-03-19 16:58:55 +01:00
simple.el Avoid signaling errors in 'cursor-face-highlight-mode' 2025-04-26 17:20:01 +03:00
skeleton.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
so-long.el ; * lisp/so-long.el: Documentation 2025-03-15 23:05:18 +13:00
sort.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
soundex.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
speedbar.el Added a check to see if the 'speedbar-buffer' is still alive 2025-04-01 14:26:30 +03:00
sqlite-mode.el Quote identifiers in SQL queries in 'sqlite-mode' 2025-01-25 11:14:01 +02:00
sqlite.el Use cl-with-gensyms in with-sqlite-transaction 2025-02-24 19:35:55 +01:00
startup.el Avoid warnings about lexbind cookies where they aren't needed 2025-04-10 14:36:43 +03:00
strokes.el Prefer incf to cl-incf in remaining files 2025-02-26 02:57:03 +01:00
subr.el Move documentation of this-command buffer display condition entry 2025-05-02 12:49:35 +08:00
svg.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
t-mouse.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
tab-bar.el Use defvar-keymap for some trivial keymaps 2025-03-16 13:48:11 +01:00
tab-line.el Prefer oddp/evenp to cl-oddp/cl-evenp 2025-02-17 05:37:10 +01:00
tabify.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
talk.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
tar-mode.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
tempo.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
term.el Fix term.el bug with very short multibyte character chunk 2025-04-13 11:05:25 +03:00
thingatpt.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
thread.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
time-stamp.el Backport expansion of Time Stamp documentation 2025-03-30 11:39:53 -07:00
time.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
timezone.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
tmm.el ; Fix typos 2025-02-22 14:48:29 +01:00
tool-bar.el Merge from origin/emacs-30 2025-04-26 10:57:33 -04:00
tooltip.el Provide tool-tip display delays on TTY frames 2025-03-01 17:16:08 +02:00
touch-screen.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
transient.el Backport Transient commit f69e1286 2025-03-15 20:29:58 +01:00
tree-widget.el Use defvar-keymap for some trivial keymaps 2025-03-16 13:48:11 +01:00
treesit-x.el Embed html, yaml and toml in markdown-ts-mode. 2025-05-01 21:23:33 +03:00
treesit.el Add line-column tracking for tree-sitter 2025-05-03 22:14:03 -07:00
tty-tip.el ; Don't set symbol-packages in tty-tip.el 2025-03-19 20:45:06 +01:00
tutorial.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
type-break.el ; Fix typos 2025-01-23 03:14:37 +01:00
uniquify.el 'uniquify' user option setters and automatic buffer refresh (bug#77157) 2025-03-29 15:05:38 +03:00
userlock.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
vcursor.el Recommend using 'keymap-global-set' in Commentaries 2025-03-15 04:06:31 +01:00
version.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
view.el view-search: Start search from beginning or end of line 2025-03-07 09:41:57 +01:00
visual-wrap.el Improve calculation of indent prefixes when using text scaling 2025-02-04 09:25:17 -08:00
w32-fns.el ; Fix warnings in a tty-only build on MS-Windows 2025-01-05 11:03:07 +02:00
w32-vars.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
wdired.el ; Add missing require to wdired.el 2025-02-26 03:08:25 +01:00
which-key.el Merge from origin/emacs-30 2025-03-30 16:17:00 +02:00
whitespace.el ; Fix byte-compilation warnings 2025-01-27 09:19:39 +01:00
wid-browse.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
wid-edit.el Remove variable aliases obsolete since Emacs 23.2 2025-03-11 21:20:38 +01:00
widget.el Merge branch 'scratch/no-purespace' into 'master' 2025-02-01 04:56:52 +01:00
windmove.el Make windmove repetition more robust 2025-03-08 07:53:07 -08:00
window-tool-bar.el window-tool-bar: Use `static-if' from Compat 30 2025-03-13 06:08:58 +01:00
window-x.el Rename some of the new window layout commands 2025-04-09 13:34:55 +08:00
window.el Move documentation of this-command buffer display condition entry 2025-05-02 12:49:35 +08:00
winner.el ; * lisp/winner.el (winner--set-dont-bind-my-keys): Fix typo. 2025-03-15 18:24:28 +01:00
woman.el Recommend using 'keymap-set' in Commentaries 2025-03-15 04:10:27 +01:00
x-dnd.el * lisp/x-dnd.el (x-dnd-do-direct-save): Remove redundant stmts. 2025-02-14 17:56:38 +08:00
xdg.el Use 'hash-table-contains-p' in a few places 2025-03-29 14:59:44 +01:00
xml.el Update copyright year to 2025 2025-01-02 18:39:42 +01:00
xt-mouse.el Implement dragging and resizing of tty child frames 2025-03-17 09:50:19 +01:00
xwidget.el Prefer incf to cl-incf in remaining files 2025-02-26 02:57:03 +01:00
yank-media.el Make yank-media auto select the best mime type 2025-02-22 11:37:23 +02:00

This directory contains source code for the parts of Emacs that are
written in Emacs Lisp.  *.el files are Emacs Lisp source, and the
corresponding *.elc files are byte-compiled versions.  Byte-compiled
files are architecture-independent.

The term subdirectory contains Lisp files that customize Emacs for
certain terminal types.  When Emacs starts, it checks the TERM
environment variable to get the terminal type and loads
'term/${TERM}.el' if it exists.

The other subdirectories hold Lisp packages grouped by their general
purpose.