aboutsummaryrefslogtreecommitdiffstats
path: root/test/lisp/progmodes (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Ensure c-ts-mode tests are never stuck (bug#80565)Yuan Fu2 days1-0/+4
| | | | | * test/lisp/progmodes/c-ts-mode-tests.el: Don't prompt for installing cpp grammar when they're not installed.
* Revert "Repair serious breakage in the batch tests."Michael Albinus7 days1-24/+0
| | | | | | | | | | | | | | | | | | | | | | | This reverts commit feac53141577161c32a7a6dfe75399a5ae98a7c1. This patch has deactivated 253 test cases without a sufficient reasoning. Instead it speaks about a shotgun in its commite message. The patch is reverted because - It hasn't been discussed on emacs-devel. It should have, because it is a serious change in our infrastructure (new official tag :nobatch). Any documentation of this change, for example in test/README, is missing. - The proper way to deactivate such tests would have been (skip-when noninteractive) Even better to skip for the respective reasons. - There is no fault report. There is no information about how these tests have failed. Since it hasn't been a problem so far for us, nobody will work on a fix forever.
* Add Rust panic message pattern (bug#80403)Jacek Świerk10 days1-1/+5
| | | | | | | | | | * etc/compilation.txt: Add example. * lisp/progmodes/compile.el (compilation-error-regexp-alist-alist): New rule. * test/lisp/progmodes/compile-tests.el (compile-tests--test-regexps-data) (compile-test-error-regexps): Add test case. Copyright-paperwork-exempt: yes
* Repair serious breakage in the batch tests.Eric S. Raymond14 days1-0/+24
| | | | | | | | | | | | | | There were a bunch of tests that were breaking make check and should never be run in batch mode, because they do things like assuming there is a controlling tty or assuming we can access network services when we can't (e/g. in a CI/CD environment). I have shotgunned this problem by tagging all the failing tests with :nobatch and then changing the default and expensive selectors so make check won't barf all over its shoes. As many of these :nobatch should be individually removed as possible, after upgrading the test harness to mock the environmental stuff they need. Investigate these failures with "make check-nobatch".
* Fix eglot-tests on MacOS (bug#80479)Mattias Engdegård2026-02-241-1/+2
| | | | | | * test/lisp/progmodes/eglot-tests.el (eglot--call-with-fixture): Normalise 'temporary-file-directory' to stave off problems that occur when it contains symlinks, which is common on MacOS.
* Improve m4-mode font lockBasil L. Contovounesios2026-02-222-0/+85
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Emacs 28 started fontifying several 'composite' (non-builtin) GNU M4 macros which, while listed under '(m4) Macro index', are not defined by GNU M4, and are included in its manual for illustrative purposes. These macro keywords range from clearly misleading (e.g., 'example', which the GNU M4 manual explicitly describes as nonexistent), to common in Autoconf's M4sugar layer (e.g., 'm4_quote'), to variations thereof (e.g., 'foreachq'). It is arguably too late to revert all of these additions, so this patch selects a handful to remove, and categorizes the rest; this should make it easier to hide some categories behind a font lock level or user option in the future, if desired. This patch reverts the Emacs 28 addition of 'example', and removes the older 'file', 'line', and 'gnu' macros. GNU M4 renamed 'gnu' to '__gnu__' already in 1990; and I couldn't find references to the other two which exist as '__file__' and '__line__', respectively. The remaining macros are partitioned into three sets: built-in, M4sugar-like, and other (bug#80412). For discussion, see also: https://lists.gnu.org/r/emacs-devel/2025-10/msg00357.html * lisp/progmodes/m4-mode.el (m4-program-options): Remove stale commentary. (m4--macro-list): Remove, replacing with... (m4--builtin, m4--autoconf, m4--composite): ...these new rx definitions. All uses changed. Remove 'example', 'file', 'gnu', and 'line' as keywords. (m4-font-lock-keywords): For consistency with real #-comments, fontify dnl macro with font-lock-comment-delimiter-face, and only the rest of its line with font-lock-comment-face. Fontify argument references with font-lock-variable-use-face rather than font-lock-variable-name-face. Use font lock faces rather than their eponymous but obsolete variables. Remove redundant entries for $@ and $*. Prefer shy regexp groups where applicable. (m4-mode-syntax-table): Quote syntactically special characters. (m4-m4-buffer): DRY using m4-m4-region. (m4-m4-region): Take region bounds as optional arguments, as recommended under '(elisp) The Mark'. Quote shell command. Support non-contiguous regions. (m4-current-defun-name): Recognize m4 backtick in addition to Autoconf bracket. Prefer shy regexp groups where applicable. (m4-mode): Simplify font-lock-defaults. * test/lisp/progmodes/m4-mode-resources/font-lock.m4: * test/lisp/progmodes/m4-mode-tests.el: New test files.
* Use a custom Pdb class in the Python shellLiu Hui2026-02-211-0/+42
| | | | | | | | | | | | | | | | | | | | | | | | The custom Pdb class enables native completion in pdb by wrapping the pdb's native completer. It also makes necessary function definitions like __PYTHON_EL_* available between pdb frames, and enables non-native completion/ffap/eldoc functionalities when debugging inside python modules. * lisp/progmodes/python.el (python-shell-send-setup-code): Fix the separator between python-shell-setup-codes. (python-shell-completion-native-setup): Move common completion setup code ... (python-shell-completion-setup-code): ... here. (python-shell-completion-at-point): Enable native completion for pdb and respect the delimiter of pdb completer. (python-shell-pdb-setup-code): New variable. (python-shell-comint-watch-for-first-prompt-output-filter): Send setup codes only once. (python-ffap-module-path, python-eldoc--get-doc-at-point): Stop sending setup code in every function call. * test/lisp/progmodes/python-tests.el (python-tests--pdb-1) (python-shell-pdb-1): New test. * etc/NEWS: Mention the change. (bug#80182)
* elisp-scope.el: Add variable value specificationsEshel Yaron2026-02-181-0/+5
| | | | | | | | | | | | | | | | | | | | | | | We add a symbol property 'elisp-scope-variable-spec', which holds a specification for the values of a variable with that property. For example, (put 'foo '(symbol . face)) says that the value of variable 'foo' is a face name. This allows elisp-scope.el to analyze forms such as (setq foo 'bar) and (let ((foo 'bar)) ...) more accurately. This is also used for analyzing macros that let-bind (one of) their arguments to a specific special variable, such as 'with-connection-local-application-variables'. We initially add this new property to some common variables. * lisp/emacs-lisp/elisp-scope.el: Add 'elisp-scope-variable-spec' property to 'coding-system-for-read/write' and 'major-mode'. (elisp-scope--variable-spec): New defsubst. (elisp-scope--let-1, elisp-scope-let*, elisp-scope-setq): Use it. * test/lisp/progmodes/elisp-mode-resources/semantic-highlighting.el: Add test form.
* Fix new eglot test failure due to project cacheDmitry Gutov2026-02-131-1/+2
| | | | | | | * test/lisp/progmodes/eglot-tests.el (eglot-test-project-wide-diagnostics-rust-analyzer): Bind project-vc-non-essential-cache-timeout to 0 so that the result of project-current is refreshed (bug#80387).
* Add JSON path utility command to json-ts-modeBinbin Ye2026-01-211-0/+86
| | | | | | | | | | | * lisp/progmodes/json-ts-mode.el (json-ts--get-path-at-node) (json-ts--path-to-jq, json-ts--path-to-python): New functions. (json-ts-jq-path-at-point): New command for getting JSON path at point. * test/lisp/progmodes/json-ts-mode-tests.el: New file. Add tests for the utility command. * etc/NEWS: Announce new command 'json-ts-jq-path-at-point' (bug#80190).
* ; * test/lisp/progmodes/eglot-tests.el (eglot--wait-for): escape $Mattias Engdegård2026-01-141-1/+1
|
* Fix recent test suite regression (bug#80177)Stefan Monnier2026-01-111-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/cl-generic.el (cl--generic-make-function): Preserve advertised-calling-convention info. * test/lisp/emacs-lisp/pcase-tests.el (pcase-tests-quote-optimization): Require `byte-opt` to fix the test when the compiler is not loaded yet. * lisp/progmodes/elisp-mode.el: Fix some >80column problems. (elisp--xref-format-extra) (elisp--xref-format): Make them constant, now that we don't have the purespace. Also, use %S since some of the elements don't necessarily have names and even if they do, we'd want to escape any funny characters in them to avoid ambiguities. (elisp--xref-find-definitions): Fix uses of `elisp--xref-format-extra` accordingly. Improve heuristic to distinguish proper `cl-defgeneric` from implicit ones. (elisp-eldoc-docstring-length-limit) (elisp-eldoc-funcall-with-docstring-length): Remove redundant `:group`. * lisp/cedet/mode-local.el (xref-mode-local-overload): Pass the override symbol rather than its name through `elisp--xref-format-extra`. * test/lisp/progmodes/elisp-mode-tests.el (find-defs-constructor): Adjust test to new text.
* Eglot: solve misc Elisp compatibility problems on Emacs 26.3João Távora2026-01-111-2/+2
| | | | | | | | | * lisp/progmodes/eglot.el (eglot--semtok-request) (eglot--semtok-after-send-changes): Unbreak for 26.3. * test/lisp/progmodes/eglot-tests.el (eglot--tests-connect): Use split-string. (eglot-test-rust-completion-exit-function): Use skip-unless.
* Eglot: don't use text-property-search-forward unavailable on 26.3João Távora2026-01-111-1/+8
| | | | | | | * lisp/progmodes/eglot.el (eglot--format-markup) (eglot--semtok-font-lock-2): Rewrite. * test/lisp/progmodes/eglot-tests.el (eglot--semtok-wait): Rewrite.
* Eglot: improve diagnostics testsJoão Távora2026-01-111-2/+56
| | | | | | | * test/lisp/progmodes/eglot-tests.el (eglot-test-basic-diagnostics): Robustify. (eglot-test-basic-pull-diagnostics) (eglot-test-basic-stream-diagnostics): New tests.
* Eglot: improve automated test machineryJoão Távora2026-01-111-35/+46
| | | | | | | | | | * test/lisp/progmodes/eglot-tests.el (eglot--wait-for): Fix thinkos and improve. (eglot--tests-connect): Take TIMEOUT and SERVER kwargs. (eglot-test-eclipse-connect) (eglot-test-slow-sync-connection-wait) (eglot-test-slow-sync-connection-intime): Update eglot--tests-connect call.
* ; Eglot: unbreak tests after semtok face renameJoão Távora2026-01-021-4/+4
| | | | | * test/lisp/progmodes/eglot-tests.el (eglot-test-semtok-basic) (eglot-test-semtok-refontify): Fix tests.
* ; Add 2026 to copyright years.Sean Whitton2026-01-0146-46/+46
|
* Allow project-vc-ignores to be applied in more casesDmitry Gutov2026-01-011-2/+22
| | | | | | | | | | | | | | | | | | | | Discussed in https://lists.gnu.org/archive/html/emacs-devel/2025-12/msg00903.html. * lisp/progmodes/project.el (project-files) <vc>: Look up the value of 'project-vc-ignores' inside DIR rather than project root. This allows this variable to be applied in external dirs as well. (project-ignores) <vc>: Do likewise. (project--value-in-dir): Ensure that DIR has a trailing slash. The caller might pass the value without slash if produced differently. * test/lisp/progmodes/project-tests.el (project-vc-ignores-in-external-directory): New test. (project-vc-supports-files-in-subdirectory): Update the test, considering the subtle change in behavior: the directory DIR directly includes a .dir-locals.el which sets project-vc-ignores, which wasn't previously applied because it wasn't set in the root.
* December 2025 spelling fixesPaul Eggert2025-12-262-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some of the fixes are to continue to use American rather than British spelling. * doc/misc/modus-themes.org (my-modus-themes-engraved-faces): Fix misspelled ‘:foreground’s. * etc/themes/modus-themes.el (modus-themes-faces): Fix misspelled ‘modus-themes-bold’. * lisp/emacs-lisp/rx.el (rx--normalize-char-pattern): Rename from rx--normalise-char-pattern. (rx--optimize-or-args): Rename from rx--optimise-or-args. * lisp/frame.el (frame--special-parameters): Fix misspelled "right-divider-width". * lisp/net/tramp.el (tramp-fingerprint-prompt-regexp): Use American spelling “centered”, to match current libfprintf. * lisp/org/org-fold-core.el (org-fold-core--optimize-for-huge-buffers): Rename from org-fold-core--optimise-for-huge-buffers. (org-fold-core-update-optimization): Rename from org-fold-core-update-optimisation, leaving an alias behind. (org-fold-core-remove-optimization): Rename from org-fold-core-remove-optimisation, leaving an alias behind. * lisp/org/org.el (org-advertized-archive-subtree): This alias is now obsolete. * lisp/play/zone.el (zone-ignored-buffers): Fix misspelling of ‘zone--buffer-encrypted-p’. * lisp/progmodes/csharp-mode.el (csharp-ts-mode-faces): Fix misspelling of ‘csharp’ group. * lisp/vc/vc.el (vc-clonable-backends-custom-type): Rename from vc-cloneable-backends-custom-type, leaving an alias behind. * test/lisp/emacs-lisp/bytecomp-tests.el: (bytecomp-tests--warn-arity-non-compiled-callee): Rename from bytecomp-tests--warn-arity-noncompiled-callee. (bytecomp-test-defface-spec): Reword a deliberate misspelling of “default” that is so common I don’t want it to pollute the spelling dictionary. * test/lisp/emacs-lisp/package-vc-tests.el: (package-vc-tests-preserve-artifacts): Rename from package-vc-tests-preserve-artifacts. * test/lisp/eshell/em-prompt-tests.el: (em-prompt-test/forward-backward-paragraph-1): Reword a deliberate misspelling of “goodbye” that is so common I don’t want it to pollute the spelling dictionary.
* ; Fix a typo in a project.el test (bug#79809)Eli Zaretskii2025-12-211-1/+1
| | | | | * test/lisp/progmodes/project-tests.el (project-vc-supports-project-in-different-dir): Fix typo in version.
* project-vc-supports-project-in-different-dir: Tune the expectation for 'find'Dmitry Gutov2025-12-211-1/+5
| | | | | | | * test/lisp/progmodes/project-tests.el (project-vc-supports-project-in-different-dir): Account for difference in behavior when failing over to 'find' (comments in bug#79809).
* hideshow: Support nested comment block in 'hs-hide-level-recursive'Elías Gabriel Pérez2025-12-201-0/+49
| | | | | | | | | | | | bug#80009 * doc/emacs/programs.texi (Hideshow): Update documentation. * lisp/progmodes/hideshow.el (hs-hide-level-recursive): Rework. (hs-get-first-block-on-line): Minor changes. (hs--add-indicators, hs-hide-comments-when-hiding-all) (hs-minor-mode-menu, hs-hide-level, hs-cycle): Update code. * test/lisp/progmodes/hideshow-tests.el (hideshow-hide-levels-with-comments-1): New test.
* Relax the condition on the values of DIRS in project-filesDmitry Gutov2025-12-141-0/+14
| | | | | | * lisp/progmodes/project.el (project-files): Use 'file-in-directory-p' to dispatch to 'project--vc-list-files' when listing subdirectory files too (bug#79809).
* ; * lisp/progmodes/hideshow.el (hs-cycle): Fix regression. (Bug#79983)Elías Gabriel Pérez2025-12-121-0/+84
| | | | | | | * test/lisp/progmodes/hideshow-tests.el (hideshow-cycle-with-delimiters) (hideshow-cycle-without-delimiters) (hideshow-check-unbalanced-parens): Add new tests.
* hideshow: Deep cleaning. (Bug#79934)Elías Gabriel Pérez2025-12-082-38/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is just a refactoring change, simplifying most of the code and commentaries and removing/deprecating redundant code. * etc/NEWS: Announce changes. * lisp/progmodes/hideshow.el (hs-hide-hook, hs-show-hook): Use 'defcustom' instead of 'defvar'. (hs-block-end-regexp, hs-forward-sexp-function) (hs-adjust-block-beginning-function) (hs-adjust-block-end-function, hs-find-block-beginning-function) (hs-find-next-block-function) (hs-looking-at-block-start-predicate) (hs-inside-comment-predicate): Update docstring. (hs-discard-overlays): Simplify. (hs-life-goes-on): Update docstring. (hs-hideable-region-p): Revert previous changes. (hs-overlay-at): Simplify. (hs-make-overlay): Fix performance. (hs-block-positions): Rework. (hs--add-indicators): Fix performance. (hs-isearch-show-temporary): Simplify. (hs-looking-at-block-start-p): Rename ... (hs-looking-at-block-start-p--default): ... to this. (hs-forward-sexp, hs-hide-comment-region): Mark as obsolete. (hs-hide-block-at-point): Rework. (hs-get-first-block): Rename ... (hs-get-first-block-on-line): ... to this. (hs-inside-comment-p--default): Rework. (hs-find-block-beginning): Rename ... (hs-find-block-beg-fn--default): ... to this. (hs-find-next-block): Rename ... (hs-find-next-block-fn--default): ... to this. (hs-hide-level-recursive): Rework. (hs-find-block-beginning-match): Remove function. (hs-already-hidden-p): Simplify. (hs-c-like-adjust-block-beginning): Mark as obsolete. (hs-hide-all, hs-show-all, hs-hide-block, hs-show-block) (hs-hide-level, hs-hide-initial-comment-block, hs-cycle): Simplify. * test/lisp/progmodes/hideshow-tests.el (hideshow-hide-level-1) (hideshow-hide-level-2): * test/lisp/progmodes/python-tests.el (python-hideshow-hide-levels-3, python-hideshow-hide-levels-4): * test/lisp/progmodes/hideshow-tests.el (hideshow-hide-level-1) (hideshow-hide-level-2): * test/lisp/progmodes/python-tests.el (python-hideshow-hide-levels-3, python-hideshow-hide-levels-4): Update tests.
* Fix indentation of keyword argument arrays/hashes in ruby-modeAaron Jensen2025-11-261-0/+18
| | | | | | | | | | | | | | | | | | | | | | * lisp/progmodes/ruby-mode.el (ruby-smie-rules): Check for ':' and '=>' as previous tokens, and handle symbols ending with ':' to properly indent keyword argument arrays and hashes when ruby-bracketed-args-indent is nil. * lisp/progmodes/ruby-ts-mode.el (ruby-ts--parent-call-or-bol): Handle arrays/hashes that are children of 'pair' nodes (keyword arguments) to ensure consistent indentation. * test/lisp/progmodes/ruby-mode-resources/ruby-bracketed-args-indent.rb: Add test cases for keyword argument arrays and hashes with both symbol-colon and hash-rocket syntax. When ruby-bracketed-args-indent is nil, arrays and hashes used as keyword argument values now indent by ruby-indent-level from the line start, matching the documented behavior and fixing inconsistent indentation (bug#74517). (https://lists.gnu.org/archive/html/emacs-devel/2025-11/msg00939.html)
* hideshow: Fix regressions. (Bug#79857)Elías Gabriel Pérez2025-11-191-0/+8
| | | | | | | | * lisp/progmodes/hideshow.el (hs-block-positions): Exit the function if 'hs-forward-sexp' fails. (hs-hide-level-recursive): Fix infloop. * test/lisp/progmodes/hideshow-tests.el (hideshow-hide-level-1): (hideshow-hide-level-2): Update tests.
* Eglot: add two semtok testsJoão Távora2025-11-131-0/+52
| | | | | | | | | The tests are pretty basic, I don't expect them to catch anything else than giant bugs. * test/lisp/progmodes/eglot-tests.el (eglot-test-semtok-basic) (eglot-test-semtok-refontify): New tests. (eglot--semtok-faces, eglot--semtok-wait): New helpers.
* ; Eglot: unbreak "lsp-abiding-column" test for newer clangdJoão Távora2025-11-101-7/+12
| | | | | | | | Newer/newest clangd support more encodings and actually negotiate with us, so test shouldn't assume UTF-16.. * test/lisp/progmodes/eglot-tests.el (eglot-tests--lsp-abiding-column-1): Tweak.
* ; elisp-scope.el: Improve face specification handling.Eshel Yaron2025-10-291-0/+11
| | | | | | | | | | | | | | | | | | Replace the use of 'elisp-scope-face(-1)' for analyzing face specifications with 'elisp-scope-1' calls with an appropriate OUTSPEC argument. This allows us to analyze face specifications even when they are not passed directly to relevant functions, but rather appear in a tail position of a form that evaluates to a face specification. * lisp/emacs-lisp/elisp-scope.el (elisp-scope--match-spec-to-arg): Add new 'face' spec. Use it instead of... (elisp-scope-face, elisp-scope-face-1): ...these functions. Remove them, no longer used. * test/lisp/progmodes/elisp-mode-resources/semantic-highlighting.el: Add test.
* ; elisp-scope.el: Simplify 'custom-declare-face' analyzer.Eshel Yaron2025-10-291-0/+10
|
* ; elisp-scope.el: Fix error during widget args analysisEshel Yaron2025-10-211-0/+7
| | | | | | | | * lisp/emacs-lisp/elisp-scope.el (elisp-scope--match-spec-to-arg): Simplify and fix handling of empty list. * test/lisp/progmodes/elisp-mode-resources/semantic-highlighting.el: Add test.
* ; Fix semantic highlighting in presence of shorthandsEshel Yaron2025-10-212-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | So far, 'scope-elisp-analyze-form' would disable 'read-symbol-shorthands' while reading a source form in order to obtain the "original" length of symbols and pass that length to the callback called for each analyzed symbol. However, 'scope-elisp-analyze-form' could report an incorrect length when a symbol was written with redundant escaping (e.g. 'f\oo'). Moreover, disabling 'read-symbol-shorthands' breaks macro-expansion during analysis, because macros may expect "expanded" symbols, without shorthands. In this commit we address these issues by leaving 'scope-elisp-analyze-form' enabled (so we get expended symbols for macro-expansion) and recovering the original length lazily in the callback, if needed, by going to the beginning of the symbol and searching forward for its end. * lisp/emacs-lisp/elisp-scope.el (elisp-scope--report): Replace LEN argument with SYM, the analyzed symbol itself. Adapt all callers. (elisp-scope-analyze-form): Cease let-binding 'read-symbol-shorthands' to nil while reading. Wrap analysis in 'save-excursion' when reading from current buffer. Update docstring. * lisp/progmodes/elisp-mode.el (elisp-local-references) (elisp-fontify-symbol): Obtain symbol length from buffer. * test/lisp/progmodes/elisp-mode-resources/semantic-highlighting.el: Add test that incorporates 'read-symbol-shorthands'. * test/lisp/progmodes/elisp-mode-tests.el (elisp-test-font-lock): Set up 'read-symbol-shorthands' in test file.
* ; elisp-scope.el: Improve widget-type handling.Eshel Yaron2025-10-121-0/+26
| | | | | | | | | | | | | | | | | Use argument specs to analyze complex widget types. * lisp/emacs-lisp/elisp-scope.el (elisp-scope-widget-type) (elisp-scope-widget-type-1) (elisp-scope-widget-type-keyword-arguments) (elisp-scope-widget-type-arguments) (elisp-scope-widget-type-arguments-1): Delete, no longer used. (custom-declare-variable, define-widget): Simplify analyzers. (elisp-scope--match-spec-to-arg): Add new 'list', 'and', and 'plist-and-then' parametric specs, and add 'widget-type' as a new recursive spec. * test/lisp/progmodes/elisp-mode-resources/semantic-highlighting.el Add test.
* ; elisp-mode.el: Improve consistency among face names.feature/elisp-fontify-semanticallyEshel Yaron2025-10-121-34/+34
| | | | | | | | | | | | | | | | | Rename a couple of faces to solidify the convention that the face name 'elisp-foo' implies "references to foo", not "foo definitions". For definitions we use 'elisp-deffoo' if foo is only one word, or 'elisp-bar-baz-definition' otherwise. * lisp/progmodes/elisp-mode.el (elisp-function-reference): Rename to 'elisp-function'. (elisp-macro-call): Rename to 'elisp-macro'. (elisp-non-local-exit): (elisp-unknown-call): (elisp-special-form): * lisp/emacs-lisp/elisp-scope.el: * test/lisp/progmodes/elisp-mode-resources/semantic-highlighting.el: Update references to renamed faces.
* ; (elisp-scope-if-let): Fix case where bindings entry is a symbolEshel Yaron2025-10-081-1/+3
| | | | | | | | | * lisp/emacs-lisp/elisp-scope.el (elisp-scope-if-let): Fix handling of a plain symbol as one the bindings in an 'if-let*' form, as in (if-let* (foo) 'bar). * test/lisp/progmodes/elisp-mode-resources/semantic-highlighting.el: Test it.
* ; Add semantic highlighting test with 'when-let*'Eshel Yaron2025-10-082-4/+15
| | | | | | | * test/lisp/progmodes/elisp-mode-resources/semantic-highlighting.el: Add test form with 'when-let*'. * test/lisp/progmodes/elisp-mode-tests.el (elisp-test-font-lock): Trust temporary test buffer.
* ; Test semantic highlighting with 'cl-macrolet' and 'cl-flet'Eshel Yaron2025-10-061-0/+14
|
* ; Add another ELisp semantic highlighting testEshel Yaron2025-10-041-0/+68
| | | | | * test/lisp/progmodes/elisp-mode-resources/semantic-highlighting.el: Add test with code that uses 'cl-loop'.
* ; Add a couple of tests for ELisp semantic highlightingEshel Yaron2025-10-032-0/+37
| | | | | | | * test/lisp/progmodes/elisp-mode-tests.el (elisp-test-font-lock): New test. * test/lisp/progmodes/elisp-mode-resources/semantic-highlighting.el: New resource file.
* ruby-syntax-propertize: Add exception for /=Dmitry Gutov2025-09-161-0/+1
| | | | | | | | * lisp/progmodes/ruby-mode.el (ruby-syntax-propertize): Create an exception for assign-division operator not to be recognized as regexp start (bug#79454). * test/lisp/progmodes/ruby-mode-resources/ruby.rb: Add example.
* ; even less test log spam from loadMattias Engdegård2025-09-121-4/+4
|
* Eglot: escape literal % characters in URIsSteven Allen2025-08-301-0/+4
| | | | | | | | | | | | | | | Escape literal % characters in Eglot URIs Otherwise, a literal % in a file-name will be interpreted (by the language server) as if it were a part of a percent-encoded sequence. See Bug#78984 for context on why `url-path-allowed-chars' cannot be changed to escape literal % characters. * lisp/progmodes/eglot.el (eglot--uri-path-allowed-chars): Escape %, remove the redundant variable definition. * test/lisp/progmodes/eglot-tests.el (eglot-test-path-to-uri-escape): test it.
* Fontify all comment delimiters in 'lua-ts-mode'john muhl2025-08-301-0/+5
| | | | | | | | | * lisp/progmodes/lua-ts-mode.el (lua-ts--comment-font-lock): Apply 'font-lock-comment-delimiter-face' to the entire span of initial dashes. In particular, this improves the appearance of LuaCATS and EmmyLua style annotations which use "---". * test/lisp/progmodes/lua-ts-mode-resources/font-lock.lua: Add tests. (Bug#79258)
* ; Add tests for 'lua-mode'john muhl2025-08-256-0/+1980
| | | | | | | | | * test/lisp/progmodes/lua-mode-resources/font-lock.lua: * test/lisp/progmodes/lua-mode-resources/hide-show.lua: * test/lisp/progmodes/lua-mode-resources/indent.erts: * test/lisp/progmodes/lua-mode-resources/movement.erts: * test/lisp/progmodes/lua-mode-resources/which-function.lua: * test/lisp/progmodes/lua-mode-tests.el: New file.
* Skip eglot-test-rust-completion-exit-function on embaMichael Albinus2025-08-221-0/+1
|
* ; cperl-mode.el: Indent labels only in code (Bug#79271)Harald Jörg2025-08-221-0/+22
| | | | | | | | | * lisp/progmodes/cperl-mode.el (cperl-indent-line): Make sure that labels are indented in code only * test/lisp/progmodes/cperl-mode-resources/cperl-indents.erts: Two new testcases for non-indentable "labels" in a regex pattern and a qw list
* ; cperl-mode.el: Fix fontification error with signaturesHarald Jörg2025-08-222-1/+8
| | | | | | | | | | | | | | | This fixes the second issue in Bug#79269. * lisp/progmodes/cperl-mode.el (cperl-init-faces): Move handling of signatures with initializers from the "anchor" to the "anchored" matcher * test/lisp/progmodes/cperl-mode-resources/proto-and-attrs.pl (sub_7): Test case for Bug#79269, wrong face report * test/lisp/progmodes/cperl-mode-tests.el (cperl-test-fontify-attrs-and-signatures): Make sure that the test catches sub_7 for Bug#79269
* rust-ts-mode: handle invalid rust syntax without signalingSteven Allen2025-08-212-0/+14
| | | | | | | | | | | | | | Don't signal an error when encountering invalid rust syntax. Without this patch, invalid rust code would prevent a chunk of the buffer from being highlighted (bug#79272). * lisp/progmodes/rust-ts-mode.el (rust-ts-mode--fontify-scope): (rust-ts-mode--fontify-pattern): Avoid calling `string-match-p' on nil when a node is missing a parent. * test/lisp/progmodes/rust-ts-mode-resources/font-lock-no-parent.rs: Rust file that reproduces the issue. * test/lisp/progmodes/rust-ts-mode-tests.el: Test case to reproduce the issue.