commit c4d16909fa4c30fd5f11bd66de7936790349cb7d (HEAD, refs/remotes/origin/master) Author: Jim Porter Date: Tue Aug 15 18:52:11 2023 -0700 ; Be more strict with command arguments for a few Eshell commands * lisp/eshell/em-dirs.el (eshell/pwd): * lisp/eshell/em-unix.el (eshell/whoami): * lisp/eshell/esh-proc.el (eshell/jobs): Don't accept arguments. diff --git a/lisp/eshell/em-dirs.el b/lisp/eshell/em-dirs.el index cf90a8bb230..85036620c57 100644 --- a/lisp/eshell/em-dirs.el +++ b/lisp/eshell/em-dirs.el @@ -316,7 +316,7 @@ Thus, this does not include the current directory.") (`(boundaries . ,suffix) `(boundaries 0 . ,(string-search "/" suffix)))))))))) -(defun eshell/pwd (&rest _args) +(defun eshell/pwd () "Change output from `pwd' to be cleaner." (let* ((path default-directory) (len (length path))) diff --git a/lisp/eshell/em-unix.el b/lisp/eshell/em-unix.el index dad02206759..c3c3fea691a 100644 --- a/lisp/eshell/em-unix.el +++ b/lisp/eshell/em-unix.el @@ -1018,7 +1018,7 @@ Show wall-clock time elapsed during execution of COMMAND.") (eshell-stringify-list (flatten-tree (cdr time-args)))))))) -(defun eshell/whoami (&rest _args) +(defun eshell/whoami () "Make \"whoami\" Tramp aware." (eshell-user-login-name)) diff --git a/lisp/eshell/esh-proc.el b/lisp/eshell/esh-proc.el index 2bb0043bddb..35c81f6a4b2 100644 --- a/lisp/eshell/esh-proc.el +++ b/lisp/eshell/esh-proc.el @@ -193,7 +193,7 @@ This is like `process-live-p', but additionally checks whether (defalias 'eshell/wait #'eshell-wait-for-process) -(defun eshell/jobs (&rest _args) +(defun eshell/jobs () "List processes, if there are any." (and (fboundp 'process-list) (process-list) commit a3cd284b90edcc7e06b21110cdbf55d11fb6fd0d Author: Jim Porter Date: Sat Mar 4 22:11:23 2023 -0800 Support setting umask symbolically in Eshell * lisp/eshell/em-basic.el (eshell/umask): Handle setting umask symbolically, and make setting umask take precedence over "-S". * test/lisp/eshell/em-basic-tests.el (em-basic-test/umask-print-numeric, em-basic-test/umask-read-symbolic, em-basic-test/umask-set): Rename to... (em-basic-test/umask/print-numeric) (em-basic-test/umask/print-symbolic, em-basic-test/umask/set-numeric): ... these. (em-basic-test/umask/set-symbolic, em-basic-test/umask/set-with-S): New tests. * etc/NEWS: Announce this change. diff --git a/etc/NEWS b/etc/NEWS index c2bc25d6289..061ac9a7d10 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -678,6 +678,14 @@ command passed as arguments to 'env'. If you pass any initial arguments of the form 'VAR=VALUE', 'env' will first set 'VAR' to 'VALUE' before running the command. +--- +*** Eshell's 'umask' command now supports setting the mask symbolically. +Now, you can pass an argument like "u+w,o-r" to Eshell's 'umask' +command, which will give write permission for owners of newly-created +files and deny read permission for users who are not members of the +file's group. See the Info node '(coreutils)File permissions' for +more information on this notation. + +++ *** New special reference type '#'. This special reference type returns a marker at 'POSITION' in diff --git a/lisp/eshell/em-basic.el b/lisp/eshell/em-basic.el index 8f68a750bd7..6ec53ef9412 100644 --- a/lisp/eshell/em-basic.el +++ b/lisp/eshell/em-basic.el @@ -160,6 +160,18 @@ or `eshell-printn' for display." :preserve-args :usage "[-S] [mode]") (cond + (args + (let* ((mask (car args)) + (modes + (if (stringp mask) + (if (string-match (rx bos (+ (any "0-7")) eos) mask) + (- #o777 (string-to-number mask 8)) + (file-modes-symbolic-to-number + mask (default-file-modes))) + (- #o777 mask)))) + (set-default-file-modes modes) + (eshell-print + "Warning: umask changed for all new files created by Emacs.\n"))) (symbolic-p (let ((mode (default-file-modes))) (eshell-printn @@ -173,17 +185,9 @@ or `eshell-printn' for display." (concat (and (= (logand mode 1) 1) "r") (and (= (logand mode 2) 2) "w") (and (= (logand mode 4) 4) "x")))))) - ((not args) - (eshell-printn (format "%03o" (logand (lognot (default-file-modes)) - #o777)))) (t - (when (stringp (car args)) - (if (string-match "^[0-7]+$" (car args)) - (setcar args (string-to-number (car args) 8)) - (error "Setting umask symbolically is not yet implemented"))) - (set-default-file-modes (- #o777 (car args))) - (eshell-print - "Warning: umask changed for all new files created by Emacs.\n"))) + (eshell-printn (format "%03o" (logand (lognot (default-file-modes)) + #o777))))) nil)) (put 'eshell/umask 'eshell-no-numeric-conversions t) diff --git a/test/lisp/eshell/em-basic-tests.el b/test/lisp/eshell/em-basic-tests.el index 960e04690a5..ebb91cdeea0 100644 --- a/test/lisp/eshell/em-basic-tests.el +++ b/test/lisp/eshell/em-basic-tests.el @@ -33,7 +33,7 @@ ;;; Tests: -(ert-deftest em-basic-test/umask-print-numeric () +(ert-deftest em-basic-test/umask/print-numeric () "Test printing umask numerically." (cl-letf (((symbol-function 'default-file-modes) (lambda () #o775))) (eshell-command-result-equal "umask" "002\n")) @@ -43,7 +43,7 @@ (cl-letf (((symbol-function 'default-file-modes) (lambda () #o1775))) (eshell-command-result-equal "umask" "002\n"))) -(ert-deftest em-basic-test/umask-read-symbolic () +(ert-deftest em-basic-test/umask/print-symbolic () "Test printing umask symbolically." (cl-letf (((symbol-function 'default-file-modes) (lambda () #o775))) (eshell-command-result-equal "umask -S" @@ -56,8 +56,8 @@ (eshell-command-result-equal "umask -S" "u=rwx,g=rwx,o=rx\n"))) -(ert-deftest em-basic-test/umask-set () - "Test setting umask." +(ert-deftest em-basic-test/umask/set-numeric () + "Test setting umask numerically." (let ((file-modes 0)) (cl-letf (((symbol-function 'set-default-file-modes) (lambda (mode) (setq file-modes mode)))) @@ -68,4 +68,30 @@ (eshell-test-command-result "umask $(identity #o222)") (should (= file-modes #o555))))) +(ert-deftest em-basic-test/umask/set-symbolic () + "Test setting umask symbolically." + (let ((file-modes 0)) + (cl-letf (((symbol-function 'default-file-modes) + (lambda() file-modes)) + ((symbol-function 'set-default-file-modes) + (lambda (mode) (setq file-modes mode)))) + (eshell-test-command-result "umask u=rwx,g=rwx,o=rx") + (should (= file-modes #o775)) + (eshell-test-command-result "umask u=rw,g=rx,o=x") + (should (= file-modes #o651)) + (eshell-test-command-result "umask u+x,o-x") + (should (= file-modes #o750)) + (eshell-test-command-result "umask a+rx") + (should (= file-modes #o755))))) + +(ert-deftest em-basic-test/umask/set-with-S () + "Test that passing \"-S\" and a umask still sets the umask." + (let ((file-modes 0)) + (cl-letf (((symbol-function 'set-default-file-modes) + (lambda (mode) (setq file-modes mode)))) + (eshell-test-command-result "umask -S 002") + (should (= file-modes #o775)) + (eshell-test-command-result "umask -S 123") + (should (= file-modes #o654))))) + ;; em-basic-tests.el ends here commit 236317e5d2284399d6ca0413ea2a29b84270d545 Author: Yuan Fu Date: Sat Jan 27 22:03:28 2024 -0800 Fix treesit-range-rules * lisp/treesit.el (treesit-range-rules): Reset :local like other keywords. The other chunk is indentation fix. diff --git a/lisp/treesit.el b/lisp/treesit.el index d1e0beaaac9..96222ed81cb 100644 --- a/lisp/treesit.el +++ b/lisp/treesit.el @@ -595,8 +595,8 @@ that encompasses the region between START and END." (unless (and (consp range-offset) (numberp (car range-offset)) (numberp (cdr range-offset))) - (signal 'treesit-error (list "Value of :offset option should be a pair of numbers" range-offset))) - (setq offset range-offset))) + (signal 'treesit-error (list "Value of :offset option should be a pair of numbers" range-offset))) + (setq offset range-offset))) (query (if (functionp query) (push (list query nil nil) result) (when (null embed) @@ -606,7 +606,7 @@ that encompasses the region between START and END." (push (list (treesit-query-compile host query) embed local offset) result)) - (setq host nil embed nil offset nil)))) + (setq host nil embed nil offset nil local nil)))) (nreverse result))) (defun treesit--merge-ranges (old-ranges new-ranges start end) commit 6d76e3991241905b0841effc6f8cd42394d9aa64 Author: Eli Zaretskii Date: Sun Jan 28 07:43:25 2024 +0200 ; Fix last change in package.texi * doc/lispref/package.texi (Multi-file Packages): Fix wording and markup. (Bug#65027) diff --git a/doc/lispref/package.texi b/doc/lispref/package.texi index ebe578932bf..f75023d4039 100644 --- a/doc/lispref/package.texi +++ b/doc/lispref/package.texi @@ -284,12 +284,14 @@ variable @code{load-file-name} (@pxref{Loading}). Here is an example: (expand-file-name file superfrobnicator-base)) @end smallexample - If your project contains files that you don't wish to distribute to +@cindex @file{.elpaignore} file + If your package contains files that you don't wish to distribute to users (e.g.@: regression tests), you can add them to an -@file{.elpaignore} file. In this file, each line lists a file or -wildcard matching files to ignore when producing your package's tar -file on ELPA. (ELPA will pass this file to @command{tar} with the -@code{-X} option.) +@file{.elpaignore} file. In this file, each line lists a file or a +wildcard matching files; those files should be ignored when producing +your package's tarball on ELPA (@pxref{Package Archives}). (ELPA +will pass this file to the @command{tar} command via the @option{-X} +command-line option, when it prepares the package for download.) @node Package Archives @section Creating and Maintaining Package Archives commit 744a10a4d722a361bc21561b4162045e4ec97ed6 Author: Jim Porter Date: Wed Aug 2 21:51:18 2023 -0700 * doc/lispref/package.texi (Multi-file Packages): Document ".elpaignore". diff --git a/doc/lispref/package.texi b/doc/lispref/package.texi index 6f52a33d194..ebe578932bf 100644 --- a/doc/lispref/package.texi +++ b/doc/lispref/package.texi @@ -284,6 +284,13 @@ variable @code{load-file-name} (@pxref{Loading}). Here is an example: (expand-file-name file superfrobnicator-base)) @end smallexample + If your project contains files that you don't wish to distribute to +users (e.g.@: regression tests), you can add them to an +@file{.elpaignore} file. In this file, each line lists a file or +wildcard matching files to ignore when producing your package's tar +file on ELPA. (ELPA will pass this file to @command{tar} with the +@code{-X} option.) + @node Package Archives @section Creating and Maintaining Package Archives @cindex package archive commit 3c680968e492acf8891fda22c28baef5078ca768 Author: Jim Porter Date: Wed Jan 24 18:32:00 2024 -0800 Fix command replacement with the Eshell builtin versions of "sudo" and "doas" This is particularly important when the inner command to execute is an alias. Aliases throw 'eshell-replace-command' too, so we want to do this in two phases: first, replace the "sudo"/"doas" with a let-binding of 'default-directory', and then later, let the alias code do its own replacement (bug#68074). * lisp/eshell/em-tramp.el (eshell/sudo, eshell/doas): Use 'eshell-replace-command' to wrap the inner command. * test/lisp/eshell/em-tramp-tests.el (mock-eshell-named-command): Remove. (em-tramp-test/sudo-basic, em-tramp-test/sudo-user) (em-tramp-test/doas-basic, em-tramp-test/doas-user): Catch 'eshell-replace-command'. diff --git a/lisp/eshell/em-tramp.el b/lisp/eshell/em-tramp.el index 90f9c6cf78d..efb37225651 100644 --- a/lisp/eshell/em-tramp.el +++ b/lisp/eshell/em-tramp.el @@ -121,12 +121,11 @@ Uses the system sudo through Tramp's sudo method." :usage "[(-u | --user) USER] (-s | --shell) | COMMAND Execute a COMMAND as the superuser or another USER.") (let ((dir (eshell--method-wrap-directory default-directory "sudo" user))) - (if shell - (throw 'eshell-replace-command - (eshell-parse-command "cd" (list dir))) - (throw 'eshell-external - (let ((default-directory dir)) - (eshell-named-command (car args) (cdr args)))))))) + (throw 'eshell-replace-command + (if shell + (eshell-parse-command "cd" (list dir)) + `(let ((default-directory ,dir)) + (eshell-named-command ',(car args) ',(cdr args)))))))) (put 'eshell/sudo 'eshell-no-numeric-conversions t) @@ -144,12 +143,11 @@ Uses the system doas through Tramp's doas method." :usage "[(-u | --user) USER] (-s | --shell) | COMMAND Execute a COMMAND as the superuser or another USER.") (let ((dir (eshell--method-wrap-directory default-directory "doas" user))) - (if shell - (throw 'eshell-replace-command - (eshell-parse-command "cd" (list dir))) - (throw 'eshell-external - (let ((default-directory dir)) - (eshell-named-command (car args) (cdr args)))))))) + (throw 'eshell-replace-command + (if shell + (eshell-parse-command "cd" (list dir)) + `(let ((default-directory ,dir)) + (eshell-named-command ',(car args) ',(cdr args)))))))) (put 'eshell/doas 'eshell-no-numeric-conversions t) diff --git a/test/lisp/eshell/em-tramp-tests.el b/test/lisp/eshell/em-tramp-tests.el index d33f6a2b46a..3be5d3542ca 100644 --- a/test/lisp/eshell/em-tramp-tests.el +++ b/test/lisp/eshell/em-tramp-tests.el @@ -59,35 +59,31 @@ "cd" (list ,(format "/su:root@%s:~/" tramp-default-host)))))) -(defun mock-eshell-named-command (&rest args) - "Dummy function to test Eshell `sudo' command rewriting." - (list default-directory args)) - (ert-deftest em-tramp-test/sudo-basic () "Test Eshell `sudo' command with default user." - (cl-letf (((symbol-function 'eshell-named-command) - #'mock-eshell-named-command)) - (should (equal - (catch 'eshell-external (eshell/sudo "echo" "hi")) - `(,(format "/sudo:root@%s:%s" tramp-default-host default-directory) - ("echo" ("hi"))))) - (should (equal - (catch 'eshell-external (eshell/sudo "echo" "-u" "hi")) - `(,(format "/sudo:root@%s:%s" tramp-default-host default-directory) - ("echo" ("-u" "hi"))))))) + (let ((sudo-directory (format "/sudo:root@%s:%s" + tramp-default-host default-directory))) + (should (equal (catch 'eshell-replace-command + (eshell/sudo "echo" "hi")) + `(let ((default-directory ,sudo-directory)) + (eshell-named-command '"echo" '("hi"))))) + (should (equal (catch 'eshell-replace-command + (eshell/sudo "echo" "-u" "hi")) + `(let ((default-directory ,sudo-directory)) + (eshell-named-command '"echo" '("-u" "hi"))))))) (ert-deftest em-tramp-test/sudo-user () "Test Eshell `sudo' command with specified user." - (cl-letf (((symbol-function 'eshell-named-command) - #'mock-eshell-named-command)) - (should (equal - (catch 'eshell-external (eshell/sudo "-u" "USER" "echo" "hi")) - `(,(format "/sudo:USER@%s:%s" tramp-default-host default-directory) - ("echo" ("hi"))))) - (should (equal - (catch 'eshell-external (eshell/sudo "-u" "USER" "echo" "-u" "hi")) - `(,(format "/sudo:USER@%s:%s" tramp-default-host default-directory) - ("echo" ("-u" "hi"))))))) + (let ((sudo-directory (format "/sudo:USER@%s:%s" + tramp-default-host default-directory))) + (should (equal (catch 'eshell-replace-command + (eshell/sudo "-u" "USER" "echo" "hi")) + `(let ((default-directory ,sudo-directory)) + (eshell-named-command '"echo" '("hi"))))) + (should (equal (catch 'eshell-replace-command + (eshell/sudo "-u" "USER" "echo" "-u" "hi")) + `(let ((default-directory ,sudo-directory)) + (eshell-named-command '"echo" '("-u" "hi"))))))) (ert-deftest em-tramp-test/sudo-shell () "Test Eshell `sudo' command with -s/--shell option." @@ -109,34 +105,29 @@ (ert-deftest em-tramp-test/doas-basic () "Test Eshell `doas' command with default user." - (cl-letf (((symbol-function 'eshell-named-command) - #'mock-eshell-named-command)) - (should (equal - (catch 'eshell-external (eshell/doas "echo" "hi")) - `(,(format "/doas:root@%s:%s" - tramp-default-host default-directory) - ("echo" ("hi"))))) - (should (equal - (catch 'eshell-external (eshell/doas "echo" "-u" "hi")) - `(,(format "/doas:root@%s:%s" - tramp-default-host default-directory) - ("echo" ("-u" "hi"))))))) + (let ((doas-directory (format "/doas:root@%s:%s" + tramp-default-host default-directory))) + (should (equal (catch 'eshell-replace-command + (eshell/doas "echo" "hi")) + `(let ((default-directory ,doas-directory)) + (eshell-named-command '"echo" '("hi"))))) + (should (equal (catch 'eshell-replace-command + (eshell/doas "echo" "-u" "hi")) + `(let ((default-directory ,doas-directory)) + (eshell-named-command '"echo" '("-u" "hi"))))))) (ert-deftest em-tramp-test/doas-user () "Test Eshell `doas' command with specified user." - (cl-letf (((symbol-function 'eshell-named-command) - #'mock-eshell-named-command)) - (should (equal - (catch 'eshell-external (eshell/doas "-u" "USER" "echo" "hi")) - `(,(format "/doas:USER@%s:%s" - tramp-default-host default-directory) - ("echo" ("hi"))))) - (should (equal - (catch 'eshell-external - (eshell/doas "-u" "USER" "echo" "-u" "hi")) - `(,(format "/doas:USER@%s:%s" - tramp-default-host default-directory) - ("echo" ("-u" "hi"))))))) + (let ((doas-directory (format "/doas:USER@%s:%s" + tramp-default-host default-directory))) + (should (equal (catch 'eshell-replace-command + (eshell/doas "-u" "USER" "echo" "hi")) + `(let ((default-directory ,doas-directory)) + (eshell-named-command '"echo" '("hi"))))) + (should (equal (catch 'eshell-replace-command + (eshell/doas "-u" "USER" "echo" "-u" "hi")) + `(let ((default-directory ,doas-directory)) + (eshell-named-command '"echo" '("-u" "hi"))))))) (ert-deftest em-tramp-test/doas-shell () "Test Eshell `doas' command with -s/--shell option." commit aa386cd92f403b2441d09e06743c78d6f2c8a7f5 Author: Eli Zaretskii Date: Sat Jan 27 22:21:11 2024 +0200 ; * src/pdumper.c: Fix comments. diff --git a/src/pdumper.c b/src/pdumper.c index e1c71ae56c0..ee554cda55a 100644 --- a/src/pdumper.c +++ b/src/pdumper.c @@ -1858,11 +1858,10 @@ dump_field_lv_or_rawptr (struct dump_context *ctx, /* Set a pointer field on an output object during dump. - CTX is the dump context. OFFSET is the offset at which the current - object starts. OUT is a pointer to the dump output object. - IN_START is the start of the current Emacs object. IN_FIELD is a - pointer to the field in that object. TYPE is the type of pointer - to which IN_FIELD points. + CTX is the dump context. OUT is a pointer to the dump output + object. IN_START is the start of the current Emacs object. + IN_FIELD is a pointer to the field in that object. TYPE is the + type of pointer to which IN_FIELD points. */ static void dump_field_lv_rawptr (struct dump_context *ctx, @@ -1877,8 +1876,7 @@ dump_field_lv_rawptr (struct dump_context *ctx, /* Set a Lisp_Object field on an output object during dump. - CTX is a dump context. OFFSET is the offset at which the current - object starts. OUT is a pointer to the dump output object. + CTX is a dump context. OUT is a pointer to the dump output object. IN_START is the start of the current Emacs object. IN_FIELD is a pointer to a Lisp_Object field in that object. @@ -3214,7 +3212,7 @@ dump_charset (struct dump_context *ctx, int cs_i) #if CHECK_STRUCTS && !defined (HASH_charset_E31F4B5D96) # error "charset changed. See CHECK_STRUCTS comment in config.h." #endif - /* We can't change the alignment here, because `offset` is what + /* We can't change the alignment here, because ctx->offset is what will be used for the whole array. */ eassert (ctx->offset % alignof (struct charset) == 0); const struct charset *cs = charset_table + cs_i; @@ -4233,9 +4231,9 @@ types. */) ctx->header.hash_list = ctx->offset; dump_hash_table_list (ctx); - /* `dump_hash_table_list` just adds a new vector to the dump but all its - content should already have been in the dump, so it doesn't add anything - to any queue. */ + /* dump_hash_table_list just adds a new vector to the dump but all + its content should already have been in the dump, so it doesn't + add anything to any queue. */ eassert (dump_queue_empty_p (&ctx->dump_queue) && NILP (ctx->deferred_hash_tables) && NILP (ctx->deferred_symbols)); commit 54c6588952b469df8d7983b6735461f542cd806e Author: Konstantin Kharlamov Date: Fri Jan 19 10:33:47 2024 +0300 Support a local repo as URL in 'treesit-language-source-alist' Sometimes people may need to bisect to find specific revision in a grammar library's repo. In this case they'd want to point the URL to the local repo to avoid cloning it on every rebuild. So add support for a directory instead of URL in 'treesit-language-source-alist'. * lisp/treesit.el (treesit--install-language-grammar-1): Test if URL is a local directory. Then if it is, avoid cloning the repo and removing the path on success. (treesit--git-clone-repo): Factor out the code for cloning to a separate function. (treesit--git-checkout-branch): A helper to checkout the revision for cases where we didn't clone the repo but want it to point the revision. (Bug#68579) diff --git a/etc/NEWS b/etc/NEWS index ee113e5614e..c2bc25d6289 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1877,6 +1877,14 @@ The 'test' parameter is omitted if it is 'eql' (the default), as is 'data' if empty. 'rehash-size', 'rehash-threshold' and 'size' are always omitted, and ignored if present when the object is read back in. ++++ +** 'treesit-install-language-grammar' can handle local directory instead of URL. +It is now possible to pass a directory of a local repository as URL +inside 'treesit-language-source-alist', so that calling +'treesit-install-language-grammar' would avoid cloning the repository. +It may be useful, for example, for the purposes of bisecting a +treesitter grammar. + * Changes in Emacs 30.1 on Non-Free Operating Systems diff --git a/lisp/treesit.el b/lisp/treesit.el index 89f688b61c1..d1e0beaaac9 100644 --- a/lisp/treesit.el +++ b/lisp/treesit.el @@ -3417,7 +3417,8 @@ The value should be an alist where each element has the form (LANG . (URL REVISION SOURCE-DIR CC C++)) Only LANG and URL are mandatory. LANG is the language symbol. -URL is the Git repository URL for the grammar. +URL is the URL of the grammar's Git repository or a directory +where the repository has been cloned. REVISION is the Git tag or branch of the desired version, defaulting to the latest default branch. @@ -3551,6 +3552,26 @@ content as signal data, and erase buffer afterwards." (buffer-string))) (erase-buffer))) +(defun treesit--git-checkout-branch (repo-dir revision) + "Checkout REVISION in a repo located in REPO-DIR." + (treesit--call-process-signal + "git" nil t nil "-C" repo-dir "checkout" revision)) + +(defun treesit--git-clone-repo (url revision workdir) + "Clone repo pointed by URL at commit REVISION to WORKDIR. + +REVISION may be nil, in which case the cloned repo will be at its +default branch." + (message "Cloning repository") + ;; git clone xxx --depth 1 --quiet [-b yyy] workdir + (if revision + (treesit--call-process-signal + "git" nil t nil "clone" url "--depth" "1" "--quiet" + "-b" revision workdir) + (treesit--call-process-signal + "git" nil t nil "clone" url "--depth" "1" "--quiet" + workdir))) + (defun treesit--install-language-grammar-1 (out-dir lang url &optional revision source-dir cc c++) "Install and compile a tree-sitter language grammar library. @@ -3564,8 +3585,12 @@ For LANG, URL, REVISION, SOURCE-DIR, GRAMMAR-DIR, CC, C++, see `treesit-language-source-alist'. If anything goes wrong, this function signals an error." (let* ((lang (symbol-name lang)) + (maybe-repo-dir (expand-file-name url)) + (url-is-dir (file-accessible-directory-p maybe-repo-dir)) (default-directory (make-temp-file "treesit-workdir" t)) - (workdir (expand-file-name "repo")) + (workdir (if url-is-dir + maybe-repo-dir + (expand-file-name "repo"))) (source-dir (expand-file-name (or source-dir "src") workdir)) (cc (or cc (seq-find #'executable-find '("cc" "gcc" "c99")) ;; If no C compiler found, just use cc and let @@ -3580,15 +3605,10 @@ function signals an error." (lib-name (concat "libtree-sitter-" lang soext))) (unwind-protect (with-temp-buffer - (message "Cloning repository") - ;; git clone xxx --depth 1 --quiet [-b yyy] workdir - (if revision - (treesit--call-process-signal - "git" nil t nil "clone" url "--depth" "1" "--quiet" - "-b" revision workdir) - (treesit--call-process-signal - "git" nil t nil "clone" url "--depth" "1" "--quiet" - workdir)) + (if url-is-dir + (when revision + (treesit--git-checkout-branch workdir revision)) + (treesit--git-clone-repo url revision workdir)) ;; We need to go into the source directory because some ;; header files use relative path (#include "../xxx"). ;; cd "${sourcedir}" @@ -3635,7 +3655,9 @@ function signals an error." ;; Ignore errors, in case the old version is still used. (ignore-errors (delete-file old-fname))) (message "Library installed to %s/%s" out-dir lib-name)) - (when (file-exists-p workdir) + ;; Remove workdir if it's not a repo owned by user and we + ;; managed to create it in the first place. + (when (and (not url-is-dir) (file-exists-p workdir)) (delete-directory workdir t))))) ;;; Etc commit 12afe75cf7af99eabf821e40dd2fab2f9c3efcf9 Author: Manuel Giraud Date: Sat Jan 27 17:23:06 2024 +0100 Enable marking tagged with ls -F Bug#68637 * lisp/image/image-dired-dired.el (image-dired-mark-tagged-files): Enable marking tagged for executable and symlink images when 'dired-listing-switches' includes -F. diff --git a/lisp/image/image-dired-dired.el b/lisp/image/image-dired-dired.el index f4778d8e121..7219a106ca8 100644 --- a/lisp/image/image-dired-dired.el +++ b/lisp/image/image-dired-dired.el @@ -383,7 +383,7 @@ matching tag will be marked in the Dired buffer." (file-name-directory curr-file))) (setq curr-file (file-name-nondirectory curr-file)) (goto-char (point-min)) - (when (search-forward-regexp (format "\\s %s$" curr-file) nil t) + (when (search-forward-regexp (format "\\s %s[*@]?$" curr-file) nil t) (setq hits (+ hits 1)) (dired-mark 1)))) (message "%d files with matching tag marked" hits))) commit 6da9dc90481fc5678dd79ac211c9d92b5e1ee8a5 Author: Eli Zaretskii Date: Sat Jan 27 19:18:16 2024 +0200 ; * lisp/visual-wrap.el: Fix typos. diff --git a/lisp/visual-wrap.el b/lisp/visual-wrap.el index 809df005dcb..20e55444082 100644 --- a/lisp/visual-wrap.el +++ b/lisp/visual-wrap.el @@ -28,7 +28,7 @@ ;; This package provides the `visual-wrap-prefix-mode' minor mode ;; which sets the wrap-prefix property on the fly so that ;; single-long-line paragraphs get word-wrapped in a way similar to -;; what you'd get with M-q using visual-fill-mode, but without +;; what you'd get with M-q using adaptive-fill-mode, but without ;; actually changing the buffer's text. ;;; Code: @@ -165,7 +165,7 @@ by `visual-wrap-extra-indent'." ;; prefix but also the previous newline. So it's not ;; just making the prefix more pretty and could interfere ;; or even defeat our efforts (e.g. it comes from - ;; `visual-fill-mode'). + ;; `adaptive-fill-mode'). (remove-text-properties 0 (length pfx) '(display) pfx))) pfx)))) commit 37c0607241506540b033e2feebe152e249517794 Author: Eli Zaretskii Date: Sat Jan 27 19:15:00 2024 +0200 ; * lisp/visual-wrap.el (visual-wrap-fill-context-prefix): Doc fix. diff --git a/lisp/visual-wrap.el b/lisp/visual-wrap.el index c23a886801d..809df005dcb 100644 --- a/lisp/visual-wrap.el +++ b/lisp/visual-wrap.el @@ -112,7 +112,7 @@ extra indent = 2 "")))) (defun visual-wrap-fill-context-prefix (beg end) - "Compute visual wrap prefix from text between FROM and TO. + "Compute visual wrap prefix from text between BEG and END. This is like `fill-context-prefix', but with prefix length adjusted by `visual-wrap-extra-indent'." (let* ((fcp commit 58f0603d40d238383aaa911eb09b3e2809177bfa Author: Eli Zaretskii Date: Sat Jan 27 19:11:22 2024 +0200 Allow users to opt out of following Windows Dark mode * src/w32fns.c (globals_of_w32fns) : New variable. (w32_applytheme): Disable application of Dark mode if 'w32-follow-system-dark-mode' is nil. * etc/NEWS: * doc/emacs/msdos.texi (Windows Misc): Document 'w32-follow-system-dark-mode'. diff --git a/doc/emacs/msdos.texi b/doc/emacs/msdos.texi index b00f116ee4e..861c0d90dc6 100644 --- a/doc/emacs/msdos.texi +++ b/doc/emacs/msdos.texi @@ -1182,12 +1182,23 @@ click-to-focus policy. @end ifnottex On Windows 10 (version 1809 and higher) and Windows 11, Emacs title -bars and scroll bars will follow the system's Light or Dark mode, -similar to other programs such as Explorer and Command Prompt. To -change the color mode, select @code{Personalization} from -@w{@code{Windows Settings}}, then -@w{@code{Colors->Choose your color}} (or @w{@code{Choose your default -app mode}}); then restart Emacs. +bars and scroll bars by default follow the system's Light or Dark +mode, similar to other programs such as Explorer and Command Prompt. +To change the color mode, select @code{Personalization} from +@w{@code{Windows Settings}}, then @w{@code{Colors->Choose your color}} +(or @w{@code{Choose your default app mode}} or @w{@code{Choose your +mode}}); then restart Emacs. On Windows 11, you can select separate +default modes for Windows and for applications. + +@vindex w32-follow-system-dark-mode + If you don't want Emacs to follow the system's Dark mode setting, +customize the variable @code{w32-follow-system-dark-mode} to a +@code{nil} value; then Emacs will use the default Light mode +regardless of system-wide settings. Changing the value of this +variable affects only the Emacs frames created after the change, so +you should set its value in your init file (@pxref{Init File}), either +directly or via @kbd{M-x customize-variable}, which lets you save the +customized value, see @ref{Saving Customizations}. @ifnottex @include msdos-xtra.texi diff --git a/etc/NEWS b/etc/NEWS index dd4a9c2afcf..ee113e5614e 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1880,6 +1880,16 @@ always omitted, and ignored if present when the object is read back in. * Changes in Emacs 30.1 on Non-Free Operating Systems +** MS-Windows + ++++ +*** You can now opt out of following the system's Dark mode. +By default, Emacs on MS-Windows follows the system's Dark mode for its +title bars' and scroll bars' appearance. If the new user option +'w32-follow-system-dark-mode' is customized to the nil value, Emacs +will disregard the system's Dark mode and will always use the default +Light mode. + ---------------------------------------------------------------------- This file is part of GNU Emacs. diff --git a/lisp/cus-start.el b/lisp/cus-start.el index 36879029282..7e0b64e9067 100644 --- a/lisp/cus-start.el +++ b/lisp/cus-start.el @@ -606,6 +606,8 @@ This should only be chosen under exceptional circumstances, since it could result in memory overflow and make Emacs crash." nil)) "27.1") + ;; w32fns.c + (w32-follow-system-dark-mode display boolean "30.1") ;; window.c (temp-buffer-show-function windows (choice (const nil) function)) (next-screen-context-lines windows integer) diff --git a/src/w32fns.c b/src/w32fns.c index f44460e52c0..8d4bd00b91c 100644 --- a/src/w32fns.c +++ b/src/w32fns.c @@ -2376,7 +2376,7 @@ w32_init_class (HINSTANCE hinst) static void w32_applytheme (HWND hwnd) { - if (w32_darkmode) + if (w32_darkmode && w32_follow_system_dark_mode) { /* Set window theme to that of a built-in Windows app (Explorer), because it has dark scroll bars and other UI elements. */ @@ -11393,6 +11393,14 @@ This variable is used for debugging, and takes precedence over any value of the `inhibit-double-buffering' frame parameter. */); w32_disable_double_buffering = false; + DEFVAR_BOOL ("w32-follow-system-dark-mode", w32_follow_system_dark_mode, + doc: /* Whether to follow the system's Dark mode on MS-Windows. +If this is nil, Emacs on MS-Windows will not follow the system's Dark +mode as far as the appearance of title bars and scroll bars is +concerned, it will always use the default Light mode instead. +Changing the value takes effect only for frames created after the change. */); + w32_follow_system_dark_mode = true; + if (os_subtype == OS_SUBTYPE_NT) w32_unicode_gui = 1; else commit 3c4b6823c3f92291888a24b7fee40de82bb92d68 Author: Stefan Monnier Date: Sat Jan 27 11:15:54 2024 -0500 * src/pdumper.c (Fdump_emacs_portable): Simplify commit 16a16645f524 diff --git a/src/pdumper.c b/src/pdumper.c index 6d0abc5d835..e1c71ae56c0 100644 --- a/src/pdumper.c +++ b/src/pdumper.c @@ -4226,22 +4226,19 @@ types. */) dump_drain_deferred_symbols (ctx); dump_drain_normal_queue (ctx); } - while (!dump_queue_empty_p (&ctx->dump_queue) - || !NILP (ctx->deferred_hash_tables) - || !NILP (ctx->deferred_symbols)); + while (!(dump_queue_empty_p (&ctx->dump_queue) + && NILP (ctx->deferred_hash_tables) + && NILP (ctx->deferred_symbols))); ctx->header.hash_list = ctx->offset; dump_hash_table_list (ctx); - do - { - dump_drain_deferred_hash_tables (ctx); - dump_drain_deferred_symbols (ctx); - dump_drain_normal_queue (ctx); - } - while (!dump_queue_empty_p (&ctx->dump_queue) - || !NILP (ctx->deferred_hash_tables) - || !NILP (ctx->deferred_symbols)); + /* `dump_hash_table_list` just adds a new vector to the dump but all its + content should already have been in the dump, so it doesn't add anything + to any queue. */ + eassert (dump_queue_empty_p (&ctx->dump_queue) + && NILP (ctx->deferred_hash_tables) + && NILP (ctx->deferred_symbols)); dump_sort_copied_objects (ctx); commit 4e5dd1a796ab3fbf26a9c6f0119776327068cafd Author: Eli Zaretskii Date: Sat Jan 27 16:47:10 2024 +0200 ; * doc/misc/calc.texi (Fractions): Fix typos. (Bug#66944) diff --git a/doc/misc/calc.texi b/doc/misc/calc.texi index 31db77a0720..dacf1451cc2 100644 --- a/doc/misc/calc.texi +++ b/doc/misc/calc.texi @@ -10575,14 +10575,14 @@ form). The numerator and denominator always use the same radix. Fractions may also be entered with @kbd{@U{2044}} (U+2044 FRACTION SLASH) in place of any @kbd{:}. Precomposed fraction characters from @kbd{@U{00BD}} (U+00BD VULGAR FRACTION ONE HALF) through -@kbd{@U{215E}} (U+215E VULGAR FRACTION SEVEN EIGHTHS) as supported as -well. Thus @samp{2:3}, @samp{2@U{2044}3}, and @samp{@U{2154}} are all +@kbd{@U{215E}} (U+215E VULGAR FRACTION SEVEN EIGHTHS) are supported as +well. Thus, @samp{2:3}, @samp{2@U{2044}3}, and @samp{@U{2154}} are all equivalent. @end ifnottex @iftex Fractions may also be entered with U+2044 FRACTION SLASH in place of any @kbd{:}. Precomposed fraction characters from U+00BD VULGAR -FRACTION ONE HALF through U+215E VULGAR FRACTION SEVEN EIGHTHS as +FRACTION ONE HALF through U+215E VULGAR FRACTION SEVEN EIGHTHS are supported as well. @end iftex commit 77d9d05df87965409c537f49d59cb5ea632abda1 Author: Daniel Brooks Date: Sun Nov 5 01:03:37 2023 -0700 Calc parses fractions written using U+2044 FRACTION SLASH Fractions of the form 123⁄456 are handled as if written 123:456. Note in particular the difference in behavior from U+2215 DIVISION SLASH and U+002F SOLIDUS, which result in division rather than a rational fraction. * lisp/calc/calc-aent.el (math-read-replacement-list): Substitute a colon for any fraction slash. (Bug#66944) * test/lisp/calc/calc-tests.el (calc-frac-input): Test various fraction types. * etc/NEWS: * doc/misc/calc.texi (Fractions): Mention fraction slash, precomposed fractions. Copyright-paperwork-exempt: yes diff --git a/doc/misc/calc.texi b/doc/misc/calc.texi index 7ae338307a5..31db77a0720 100644 --- a/doc/misc/calc.texi +++ b/doc/misc/calc.texi @@ -10571,6 +10571,22 @@ Non-decimal fractions are entered and displayed as @samp{@var{radix}#@var{num}:@var{denom}} (or in the analogous three-part form). The numerator and denominator always use the same radix. +@ifnottex +Fractions may also be entered with @kbd{@U{2044}} (U+2044 FRACTION +SLASH) in place of any @kbd{:}. Precomposed fraction characters from +@kbd{@U{00BD}} (U+00BD VULGAR FRACTION ONE HALF) through +@kbd{@U{215E}} (U+215E VULGAR FRACTION SEVEN EIGHTHS) as supported as +well. Thus @samp{2:3}, @samp{2@U{2044}3}, and @samp{@U{2154}} are all +equivalent. +@end ifnottex +@iftex +Fractions may also be entered with U+2044 FRACTION SLASH in place of +any @kbd{:}. Precomposed fraction characters from U+00BD VULGAR +FRACTION ONE HALF through U+215E VULGAR FRACTION SEVEN EIGHTHS as +supported as well. +@end iftex + + @node Floats @section Floats diff --git a/etc/NEWS b/etc/NEWS index 0af275787d1..dd4a9c2afcf 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1288,7 +1288,16 @@ chat buffers use by default. +++ *** New command 'customize-dirlocals'. This command pops up a buffer to edit the settings in ".dir-locals.el". - +** Calc ++++ +*** Calc parses fractions written using U+2044 FRACTION SLASH +Fractions of the form 123⁄456 are handled as if written 123:456. Note +in particular the difference in behavior from U+2215 DIVISION SLASH +and U+002F SOLIDUS, which result in division rather than a rational +fraction. You may also be interested to know that precomposed +fraction characters, such as ½ (U+00BD VULGAR FRACTION ONE HALF), are +also recognized as rational fractions. They have been since 2004, but +it looks like it was never mentioned in the NEWS, or even the manual. * New Modes and Packages in Emacs 30.1 diff --git a/lisp/calc/calc-aent.el b/lisp/calc/calc-aent.el index 08e8d9fcd6f..a21efc0238d 100644 --- a/lisp/calc/calc-aent.el +++ b/lisp/calc/calc-aent.el @@ -505,6 +505,7 @@ The value t means abort and give an error message.") ("⅝" "(5:8)") ; 5/8 ("⅞" "(7:8)") ; 7/8 ("⅟" "1:") ; 1/... + ("⁄" ":") ; arbitrary fractions of the form 123⁄456 ;; superscripts ("⁰" "0") ; 0 ("¹" "1") ; 1 diff --git a/test/lisp/calc/calc-tests.el b/test/lisp/calc/calc-tests.el index a44a5898055..d96672c04a1 100644 --- a/test/lisp/calc/calc-tests.el +++ b/test/lisp/calc/calc-tests.el @@ -734,6 +734,31 @@ An existing calc stack is reused, otherwise a new one is created." (var c var-c)))))) (calc-set-language nil))) +(ert-deftest calc-frac-input () + ;; precomposed fraction + (should (equal (math-read-expr "½") + '(frac 1 2))) + ;; ascii solidus + (should (equal (math-read-expr "123/456") + '(/ 123 456))) + (should (equal (math-read-expr "a/b") + '(/ (var a var-a) (var b var-b)))) + ;; fraction slash + (should (equal (math-read-expr "123⁄456") + '(frac 41 152))) + (should (equal (math-read-expr "a⁄b") + '(error 1 "Syntax error"))) + ;; division slash + (should (equal (math-read-expr "123∕456") + '(/ 123 456))) + (should (equal (math-read-expr "a∕b") + '(/ (var a var-a) (var b var-b)))) + ;; division sign + (should (equal (math-read-expr "123÷456") + '(frac 41 152))) + (should (equal (math-read-expr "a÷b") ; I think this one is wrong + '(error 1 "Syntax error")))) + (defvar var-g) ;; Test `let'. commit 63a12ffbc37e46d2752b3903228fc8ec2c1fc611 Author: Eshel Yaron Date: Sat Jan 27 14:01:47 2024 +0100 Avoid signaling errors in emoji.el * lisp/international/emoji.el (emoji--read-emoji): Signal user-error on empty input (bug#68671). diff --git a/lisp/international/emoji.el b/lisp/international/emoji.el index 3a191c5ecd3..4f3aab5a6be 100644 --- a/lisp/international/emoji.el +++ b/lisp/international/emoji.el @@ -683,11 +683,12 @@ We prefer the earliest unique letter." strings)))) (complete-with-action action table string pred))) nil t))) - (when (cl-plusp (length name)) - (let ((glyph (if emoji-alternate-names - (cadr (split-string name "\t")) - (gethash name emoji--all-bases)))) - (cons glyph (gethash glyph emoji--derived)))))) + (if (cl-plusp (length name)) + (let ((glyph (if emoji-alternate-names + (cadr (split-string name "\t")) + (gethash name emoji--all-bases)))) + (cons glyph (gethash glyph emoji--derived))) + (user-error "You didn't specify an emoji")))) (defvar-keymap emoji-zoom-map "+" #'emoji-zoom-increase commit 61769242382a170ee110cb65588dcad920ecd0b9 Merge: 9b10aca6afd 53481cc9546 Author: Eli Zaretskii Date: Sat Jan 27 08:14:31 2024 -0500 Merge from origin/emacs-29 53481cc9546 Fix description of when "\xNNN" is considered a unibyte c... 1ef8b90ae06 Simplify imenu setup for {cmake,dockerfile}-ts-modes 7338af9c986 ; * etc/PROBLEMS: Document that GnuPG 2.4.4 solves the Ea... 5483a1df99c Improve documentation of profiler commands fb4cf0ab46d ; Fix xref under Output Overrides in Elisp manual. aa6c24da61f Fix broken links to Freedesktop notifications spec 14d68221d26 Fix nasty cut'n'waste error in Tramp 51ca049608c Fix image-dired-tags-db-file void variable error c450eec07ff typescript-ts-mode: Skip test if tsx grammar missing 9841ced147f ; Fix typos 557ed9c0463 * admin/README: Document the run-codespell script. 5701f96335c * admin/README: Fix entry on coccinelle subdirectory. 1805f4bfd62 Add script admin/run-codespell and supporting files commit 9b10aca6afd6840652f894332d512ad8ac1d8c91 Merge: 67392fc0ddc 115908469d3 Author: Eli Zaretskii Date: Sat Jan 27 08:14:31 2024 -0500 ; Merge from origin/emacs-29 The following commit was skipped: 115908469d3 Sync with Tramp 2.6.3-pre (don't merge with master) commit 67392fc0ddc59bd629274228cfbfcb8365304cc7 Merge: fbe25965310 3a541b25df5 Author: Eli Zaretskii Date: Sat Jan 27 08:14:30 2024 -0500 Merge from origin/emacs-29 3a541b25df5 Update Polish translation of tutorial 6df731431ad * doc/misc/gnus.texi (Summary Mail Commands): Fix command... 409bb8eb243 ; * doc/misc/gnus.texi (Scoring): Typo (bug#68581). 25734dd40c1 ; Delete pre-release remainder in NEWS.27 commit fbe259653100cf049b57c4b5958d0ed91acbbe4e Merge: 9d3229c7d1d 4e500d9d5ab Author: Eli Zaretskii Date: Sat Jan 27 08:14:30 2024 -0500 ; Merge from origin/emacs-29 The following commits were skipped: 4e500d9d5ab Bump Emacs version to 29.2.50. ef01b634d21 ; Regenerate lisp/ldefs-boot.el and etc/AUTHORS for 29.2. commit 9d3229c7d1d909920a5f65059b56eb978e6d907b Merge: 393f1f7d24e b4baf0f8216 Author: Eli Zaretskii Date: Sat Jan 27 08:14:29 2024 -0500 Merge from origin/emacs-29 b4baf0f8216 ; Update ChangeLog.4 with latest changes. c633c90993f * Update etc/HISTORY and ChangeLog.4 for 29.2 release. commit 393f1f7d24e11d666265b1024715891813bbb424 Merge: 58e2569bd30 1ab88d8aa52 Author: Eli Zaretskii Date: Sat Jan 27 08:14:29 2024 -0500 ; Merge from origin/emacs-29 The following commit was skipped: 1ab88d8aa52 Bump Emacs version to 29.2 commit 58e2569bd300ba16363b5a86b95864b9673a47e7 Merge: 3b091c4af87 20125ad97b4 Author: Eli Zaretskii Date: Sat Jan 27 08:13:22 2024 -0500 Merge from origin/emacs-29 20125ad97b4 ; admin/authors.el (authors-aliases): Update for Emacs 29.2. 92a7132bd6c ; * etc/NEWS: Clean up for Emacs 29.2. 314ac2e4317 ; * lisp/mail/rmail.el (rmail-show-message-verbose-min): ... 2cb1b76696b diff-mode: Support committing diff with file deletions b96aa528f64 * lisp/net/eww.el (eww-retrieve): Fix args of eww-render ... commit 3b091c4af87aba1d14410251dcae65890e1a3311 Merge: 47ee5aacdc1 d4b9cb6b5b6 Author: Eli Zaretskii Date: Sat Jan 27 08:07:26 2024 -0500 ; Merge from origin/emacs-29 The following commits were skipped: d4b9cb6b5b6 Fix folder creation error (Bug#67361) 53b5b770101 Simplify 'without-restriction' commit 47ee5aacdc12516a24dbcec1d9fddae85345aa0b Author: Eli Zaretskii Date: Sat Jan 27 15:05:40 2024 +0200 ; Declare tree-sitter functions in yaml-ts-mode.el * lisp/textmodes/yaml-ts-mode.el (treesit-node-start) (treesit-node-end, treesit-node-type): Declare. diff --git a/lisp/textmodes/yaml-ts-mode.el b/lisp/textmodes/yaml-ts-mode.el index 08fe4c49733..c0185457bc2 100644 --- a/lisp/textmodes/yaml-ts-mode.el +++ b/lisp/textmodes/yaml-ts-mode.el @@ -30,6 +30,9 @@ (require 'treesit) (declare-function treesit-parser-create "treesit.c") +(declare-function treesit-node-start "treesit.c") +(declare-function treesit-node-end "treesit.c") +(declare-function treesit-node-type "treesit.c") (defvar yaml-ts-mode--syntax-table (let ((table (make-syntax-table))) commit 85faf907618798eb09f34ba49527827b0e4026bc Author: Mattias Engdegård Date: Sat Jan 27 12:36:15 2024 +0100 ; * lisp/visual-wrap.el: use regexp-unmatchable diff --git a/lisp/visual-wrap.el b/lisp/visual-wrap.el index 1cb49538eae..c23a886801d 100644 --- a/lisp/visual-wrap.el +++ b/lisp/visual-wrap.el @@ -123,7 +123,7 @@ by `visual-wrap-extra-indent'." ;; actually modify the buffer, so this restriction doesn't ;; make much sense (and is positively harmful in ;; taskpaper-mode where paragraph-start matches everything). - (or (let ((paragraph-start "\\`\\'a")) + (or (let ((paragraph-start regexp-unmatchable)) (fill-context-prefix beg end)) ;; Note: fill-context-prefix may return nil; See: ;; http://article.gmane.org/gmane.emacs.devel/156285 commit da726c6de201cdb9123bd99e22206dbed5fdc50f Author: Mattias Engdegård Date: Thu Jan 25 18:56:03 2024 +0100 Add DOHASH_SAFE, make DOHASH faster (bug#68690) Revert DOHASH to the fast (field-caching) implementation but with an assertion to detect misuses. Add DOHASH_SAFE for use in code that must tolerate arbitrary mutation of the table being iterated through. * src/lisp.h (DOHASH): Go back to fast design that only allows restricted mutation, but with a checking assertion. (DOHASH_SAFE): New macro that tolerates arbitrary mutation while being much simpler (and acceptably fast). * src/fns.c (Fmaphash): * src/comp.c (compile_function, Fcomp__compile_ctxt_to_file): Use DOHASH_SAFE. diff --git a/src/comp.c b/src/comp.c index 5f28cf046b5..853757f6162 100644 --- a/src/comp.c +++ b/src/comp.c @@ -4330,9 +4330,12 @@ compile_function (Lisp_Object func) declare_block (Qentry); Lisp_Object blocks = CALL1I (comp-func-blocks, func); struct Lisp_Hash_Table *ht = XHASH_TABLE (blocks); - DOHASH (ht, block_name, block) - if (!EQ (block_name, Qentry)) - declare_block (block_name); + DOHASH_SAFE (ht, i) + { + Lisp_Object block_name = HASH_KEY (ht, i); + if (!EQ (block_name, Qentry)) + declare_block (block_name); + } gcc_jit_block_add_assignment (retrive_block (Qentry), NULL, @@ -4340,8 +4343,10 @@ compile_function (Lisp_Object func) gcc_jit_lvalue_as_rvalue (comp.func_relocs)); - DOHASH (ht, block_name, block) + DOHASH_SAFE (ht, i) { + Lisp_Object block_name = HASH_KEY (ht, i); + Lisp_Object block = HASH_VALUE (ht, i); Lisp_Object insns = CALL1I (comp-block-insns, block); if (NILP (block) || NILP (insns)) xsignal1 (Qnative_ice, @@ -4956,12 +4961,12 @@ DEFUN ("comp--compile-ctxt-to-file", Fcomp__compile_ctxt_to_file, struct Lisp_Hash_Table *func_h = XHASH_TABLE (CALL1I (comp-ctxt-funcs-h, Vcomp_ctxt)); - DOHASH (func_h, k, v) - declare_function (v); + DOHASH_SAFE (func_h, i) + declare_function (HASH_VALUE (func_h, i)); /* Compile all functions. Can't be done before because the relocation structs has to be already defined. */ - DOHASH (func_h, k, v) - compile_function (v); + DOHASH_SAFE (func_h, i) + compile_function (HASH_VALUE (func_h, i)); /* Work around bug#46495 (GCC PR99126). */ #if defined (WIDE_EMACS_INT) \ diff --git a/src/fns.c b/src/fns.c index 859df6748f7..e4fa8157000 100644 --- a/src/fns.c +++ b/src/fns.c @@ -5662,8 +5662,11 @@ set a new value for KEY, or `remhash' to remove KEY. (Lisp_Object function, Lisp_Object table) { struct Lisp_Hash_Table *h = check_hash_table (table); - DOHASH (h, k, v) - call2 (function, k, v); + /* We can't use DOHASH here since FUNCTION may violate the rules and + we shouldn't crash as a result (although the effects are + unpredictable). */ + DOHASH_SAFE (h, i) + call2 (function, HASH_KEY (h, i), HASH_VALUE (h, i)); return Qnil; } diff --git a/src/lisp.h b/src/lisp.h index d07d9d14e2f..c2dfd1afad5 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -2604,32 +2604,38 @@ hash_from_key (struct Lisp_Hash_Table *h, Lisp_Object key) } /* Iterate K and V as key and value of valid entries in hash table H. - The body may mutate the hash-table. */ -#define DOHASH(h, k, v) \ - for (Lisp_Object *dohash_##k##_##v##_base = (h)->key_and_value, \ - *dohash_##k##_##v##_kv = dohash_##k##_##v##_base, \ - *dohash_##k##_##v##_end = dohash_##k##_##v##_base \ - + 2 * HASH_TABLE_SIZE (h), \ - k, v; \ - dohash_##k##_##v##_kv < dohash_##k##_##v##_end \ - && (dohash_##k##_##v##_base == (h)->key_and_value \ - /* The `key_and_value` table has been reallocated! */ \ - || (dohash_##k##_##v##_kv \ - = (dohash_##k##_##v##_kv - dohash_##k##_##v##_base) \ - + (h)->key_and_value, \ - dohash_##k##_##v##_base = (h)->key_and_value, \ - dohash_##k##_##v##_end = dohash_##k##_##v##_base \ - + 2 * HASH_TABLE_SIZE (h), \ - /* Check again, in case the table has shrunk. */ \ - dohash_##k##_##v##_kv < dohash_##k##_##v##_end)) \ - && (k = dohash_##k##_##v##_kv[0], \ - v = dohash_##k##_##v##_kv[1], /*maybe unused*/ (void)v, \ - true); \ - dohash_##k##_##v##_kv += 2) \ - if (hash_unused_entry_key_p (k)) \ - ; \ + The body may remove the current entry or alter its value slot, but not + mutate TABLE in any other way. */ +#define DOHASH(h, k, v) \ + for (Lisp_Object *dohash_##k##_##v##_kv = (h)->key_and_value, \ + *dohash_##k##_##v##_end = dohash_##k##_##v##_kv \ + + 2 * HASH_TABLE_SIZE (h), \ + *dohash_##k##_##v##_base = dohash_##k##_##v##_kv, \ + k, v; \ + dohash_##k##_##v##_kv < dohash_##k##_##v##_end \ + && (k = dohash_##k##_##v##_kv[0], \ + v = dohash_##k##_##v##_kv[1], /*maybe unused*/ (void)v, \ + true); \ + eassert (dohash_##k##_##v##_base == (h)->key_and_value \ + && dohash_##k##_##v##_end \ + == dohash_##k##_##v##_base \ + + 2 * HASH_TABLE_SIZE (h)), \ + dohash_##k##_##v##_kv += 2) \ + if (hash_unused_entry_key_p (k)) \ + ; \ else +/* Iterate I as index of valid entries in hash table H. + Unlike DOHASH, this construct copes with arbitrary table mutations + in the body. The consequences of such mutations are limited to + whether and in what order entries are encountered by the loop + (which is usually bad enough), but not crashing or corrupting the + Lisp state. */ +#define DOHASH_SAFE(h, i) \ + for (ptrdiff_t i = 0; i < HASH_TABLE_SIZE (h); i++) \ + if (hash_unused_entry_key_p (HASH_KEY (h, i))) \ + ; \ + else void hash_table_thaw (Lisp_Object hash_table); commit 9b3f43fa08b2672a5ef33b872b2c6d1b0e881b88 Author: Eli Zaretskii Date: Sat Jan 27 13:28:32 2024 +0200 ; * lisp/textmodes/refill.el (refill-fill-paragraph-at): Fix typo. diff --git a/lisp/textmodes/refill.el b/lisp/textmodes/refill.el index 244c96b60df..63789e887e2 100644 --- a/lisp/textmodes/refill.el +++ b/lisp/textmodes/refill.el @@ -106,7 +106,7 @@ This is used to optimize refilling.") ;; FIXME: forward-paragraph seems to disregard `use-hard-newlines', ;; leading to excessive refilling and wrong choice of fill-prefix. ;; might be a bug in my paragraphs.el. - (fill-forward-paragraph) + (fill-forward-paragraph 1) (skip-syntax-backward "-") (let ((end (point)) (beg (progn (fill-forward-paragraph -1) (point))) commit d36c370ce555849d3d19f25999998230361cc828 Author: Eli Zaretskii Date: Sat Jan 27 12:52:55 2024 +0200 ; Minor improvements of last change * lisp/register.el (register-use-preview): Doc fix. * doc/emacs/regs.texi (Registers): Fix wording. (Bug#68654) diff --git a/doc/emacs/regs.texi b/doc/emacs/regs.texi index c30bcc37999..cac5b32c566 100644 --- a/doc/emacs/regs.texi +++ b/doc/emacs/regs.texi @@ -72,9 +72,9 @@ inserted into the buffer, omitting registers which hold window configurations, positions, and other un-insertable values. @item insist -This value is like @code{t}, but in addition of pressing @key{RET} to -exit with the choosen value, you can press the same key as the name of -register. +This value is like @code{t}, but in addition you can press the same +key as the name of register one more time to exit the minibuffer, +instead of pressing @key{RET}. @item nil This value requests behavior similar to @code{traditional}, but the diff --git a/lisp/register.el b/lisp/register.el index 73d1b24b231..822467a0d72 100644 --- a/lisp/register.el +++ b/lisp/register.el @@ -133,9 +133,10 @@ to the value of `register--read-with-preview-function'.") When set to `t', show a preview buffer with navigation and highlighting. -When set to \\='insist behave as with `t' but allow exiting minibuffer -by pressing a second time the selected register, e.g pressing \"a\" -select register \"a\" and pressing again \"a\" exit minibuffer. +When set to \\='insist, behave as with `t', but allow exiting the +minibuffer by pressing the register name a second time. E.g., +press \"a\" to select register \"a\", then press \"a\" again to +exit the minibuffer. When nil, show a preview buffer without navigation and highlighting, and exit the minibuffer immediately after inserting response in minibuffer. When set to \\='never, behave as with nil, but with no preview buffer at @@ -145,7 +146,7 @@ according to `register-preview-delay'; this preserves the traditional behavior of Emacs 29 and before." :type '(choice (const :tag "Use preview" t) - (const :tag "Use preview and exit on second hit" insist) + (const :tag "Use preview and exit by pressing register name" insist) (const :tag "Use quick preview" nil) (const :tag "Never use preview" never) (const :tag "Basic preview like Emacs-29" traditional)) commit 6b93e16e436735003d49a5a2ab451394937ee76c Author: Thierry Volpiatto Date: Mon Jan 8 15:08:01 2024 +0100 Add new option to 'register-use-preview' When set to 'insist', exit minibuffer with same key as register name, instead of pressing RET. E.g., pressing "a" selects register "a", then pressing "a" again exits the minibuffer. * lisp/register.el (register-use-preview): New option 'insist'. (register-read-with-preview-fancy): Handle new option. * doc/emacs/regs.texi: Document it. * etc/NEWS: Mention 'insist'. (Bug#68654) diff --git a/doc/emacs/regs.texi b/doc/emacs/regs.texi index fdcddbbc739..c30bcc37999 100644 --- a/doc/emacs/regs.texi +++ b/doc/emacs/regs.texi @@ -71,6 +71,11 @@ by @code{insert-register} will only show registers whose values can be inserted into the buffer, omitting registers which hold window configurations, positions, and other un-insertable values. +@item insist +This value is like @code{t}, but in addition of pressing @key{RET} to +exit with the choosen value, you can press the same key as the name of +register. + @item nil This value requests behavior similar to @code{traditional}, but the preview is shown without delay, and is filtered according to the diff --git a/etc/NEWS b/etc/NEWS index 7e30cda7226..e854873b8d0 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -639,7 +639,7 @@ This allows to customize different switches for different remote machines. +++ *** New mode of prompting for register names and showing preview. The new user option 'register-use-preview' can be customized to the -value t to request a different user interface of prompting for +value t or insist to request a different user interface of prompting for register names and previewing the registers: Emacs will require confirmation for overwriting the value of a register, and will show the preview of registers without delay. You can also customize this diff --git a/lisp/register.el b/lisp/register.el index f5b0365dec2..73d1b24b231 100644 --- a/lisp/register.el +++ b/lisp/register.el @@ -131,7 +131,11 @@ to the value of `register--read-with-preview-function'.") (defcustom register-use-preview 'traditional "Whether to show register preview when modifying registers. -When set to `t', show a preview buffer with navigation and highlighting. +When set to `t', show a preview buffer with navigation and +highlighting. +When set to \\='insist behave as with `t' but allow exiting minibuffer +by pressing a second time the selected register, e.g pressing \"a\" +select register \"a\" and pressing again \"a\" exit minibuffer. When nil, show a preview buffer without navigation and highlighting, and exit the minibuffer immediately after inserting response in minibuffer. When set to \\='never, behave as with nil, but with no preview buffer at @@ -141,6 +145,7 @@ according to `register-preview-delay'; this preserves the traditional behavior of Emacs 29 and before." :type '(choice (const :tag "Use preview" t) + (const :tag "Use preview and exit on second hit" insist) (const :tag "Use quick preview" nil) (const :tag "Never use preview" never) (const :tag "Basic preview like Emacs-29" traditional)) @@ -541,7 +546,12 @@ or \\='never." (member new strs)) new old)) (delete-minibuffer-contents) - (insert input))) + (insert input) + ;; Exit minibuffer on second hit + ;; when *-use-preview == insist. + (when (and (string= new old) + (eq register-use-preview 'insist)) + (setq noconfirm t)))) (when (and smatch (not (string= input "")) (not (member input strs))) (setq input "") @@ -551,6 +561,10 @@ or \\='never." (setq pat input)))) (if (setq win (get-buffer-window buffer)) (with-selected-window win + (when noconfirm + ;; Happen only when + ;; *-use-preview == insist. + (exit-minibuffer)) (let ((ov (make-overlay (point-min) (point-min))) ;; Allow upper-case and lower-case letters commit fc70eced27832bde0f3702a1f9033d5b81a8d61d Author: Brad Howes Date: Sun Jan 21 10:07:24 2024 +0100 Downcase host names in ansi-osc.el to match URL parsing behavior * lisp/ansi-osc.el (ansi-osc-directory-tracker): Compare with 'system-name' case-insensitively. (Bug#68632) Copyright-paperwork-exempt: yes diff --git a/lisp/ansi-osc.el b/lisp/ansi-osc.el index 7e686193f69..8dbaeb45132 100644 --- a/lisp/ansi-osc.el +++ b/lisp/ansi-osc.el @@ -121,7 +121,8 @@ and `shell-dirtrack-mode'." (let ((url (url-generic-parse-url text))) (when (and (string= (url-type url) "file") (or (null (url-host url)) - (string= (url-host url) (system-name)))) + ;; Use `downcase' to match `url-generic-parse-url' behavior + (string= (url-host url) (downcase (system-name))))) (ignore-errors (cd-absolute (url-unhex-string (url-filename url))))))) commit 756daa93b3ef7ce33e741ab30000fa397fcd9783 Author: Mekeor Melire Date: Mon Dec 4 16:37:37 2023 +0100 Add option Info-url-alist * lisp/info.el (Info-url-alist): New option mapping manuals to URLs. (Info-url-for-node): Use it. * test/lisp/info-tests.el (test-info-urls): Add more tests. In particular, 'Info-url-for-node' should error when manual-name is not handled in 'Info-url-alist'. * etc/NEWS: Announce the change. (Bug#67615) diff --git a/etc/NEWS b/etc/NEWS index b249f7e1ecb..7e30cda7226 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -436,6 +436,15 @@ only to specify the 'mouse-4/5/6/7' events generated by older configurations such as X11 when the X server does not support at least version 2.1 of the X Input Extension, and 'xterm-mouse-mode'. +** Info + +--- +*** New user option 'Info-url-alist'. +This user option associates manual-names with URLs. It affects the +'Info-goto-node-web' command. By default, associations for all +Emacs-included manuals are set. Further associations can be added for +arbitrary Info manuals. + +++ ** New command 'lldb'. Run the LLDB debugger, analogous to the 'gud-gdb' command. diff --git a/lisp/info.el b/lisp/info.el index e56344825b9..e91cc7b8e54 100644 --- a/lisp/info.el +++ b/lisp/info.el @@ -213,6 +213,53 @@ a version of Emacs without installing it.") These directories are searched after those in `Info-directory-list'." :type '(repeat directory)) +(defcustom Info-url-alist + '((("auth" "autotype" "bovine" "calc" "ccmode" "cl" "dbus" "dired-x" + "ebrowse" "ede" "ediff" "edt" "efaq" "efaq-w32" "eglot" "eieio" + "eintr" "elisp" "emacs" "emacs-gnutls" "emacs-mime" "epa" "erc" + "ert" "eshell" "eudc" "eww" "flymake" "forms" "gnus" + "htmlfontify" "idlwave" "ido" "info" "mairix-el" "message" + "mh-e" "modus-themes" "newsticker" "nxml-mode" "octave-mode" + "org" "pcl-cvs" "pgg" "rcirc" "reftex" "remember" "sasl" "sc" + "semantic" "ses" "sieve" "smtpmail" "speedbar" "srecode" + "todo-mode" "tramp" "transient" "url" "use-package" "vhdl-mode" + "vip" "viper" "vtable" "widget" "wisent" "woman") . + "https://www.gnu.org/software/emacs/manual/html_node/%m/%e")) + "Alist telling `Info-mode' where manuals are accessible online. + +Each element of this list has the form (MANUALs . URL-SPEC). +MANUALs represents the name of one or more manuals. It can +either be a string or a list of strings. URL-SPEC can be a +string in which the substring \"%m\" will be expanded to the +manual-name, \"%n\" to the node-name, and \"%e\" to the +URL-encoded node-name (without a `.html' suffix). (The +URL-encoding of the node-name mimics GNU Texinfo, as documented +at Info node `(texinfo)HTML Xref Node Name Expansion'.) +Alternatively, URL-SPEC can be a function which is given +manual-name, node-name and URL-encoded node-name as arguments, +and is expected to return the corresponding URL as a string. + +This variable particularly affects the command +`Info-goto-node-web', which see. + +The default value of this variable refers to the official, +HTTPS-accessible HTML-representations of all manuals that Emacs +includes. These URLs refer to the most recently released version +of Emacs, disregarding the version of the running Emacs. In +other words, the content of your local Info node and the +associated online node may differ. The resource represented by +the generated URL may even be not found by the gnu.org server." + :version "30.1" + :type '(alist + :tag "Mapping from manual-name(s) to URL-specification" + :key-type (choice + (string :tag "A single manual-name") + (repeat :tag "List of manual-names" string)) + :value-type (choice + (string :tag "URL-specification string") + (function + :tag "URL-specification function")))) + (defcustom Info-scroll-prefer-subnodes nil "If non-nil, \\\\[Info-scroll-up] in a menu visits subnodes. @@ -1854,33 +1901,50 @@ By default, go to the current Info node." (Info-url-for-node (format "(%s)%s" filename node))))) (defun Info-url-for-node (node) - "Return a URL for NODE, a node in the GNU Emacs or Elisp manual. -NODE should be a string on the form \"(manual)Node\". Only emacs -and elisp manuals are supported." - (unless (string-match "\\`(\\(.+\\))\\(.+\\)\\'" node) - (error "Invalid node name %s" node)) - (let ((manual (match-string 1 node)) - (node (match-string 2 node))) - (unless (member manual '("emacs" "elisp")) - (error "Only emacs/elisp manuals are supported")) - ;; Encode a bunch of characters the way that makeinfo does. - (setq node - (mapconcat (lambda (ch) - (if (or (< ch 32) ; ^@^A-^Z^[^\^]^^^- + "Return the URL corresponding to NODE. + +NODE should be a string of the form \"(manual)Node\"." + ;; GNU Texinfo skips whitespaces and newlines between the closing + ;; parenthesis and the node-name, i.e. space, tab, line feed and + ;; carriage return. + (unless (string-match "\\`(\\(.+\\))[ \t\n\r]*\\(.+\\)\\'" node) + (error "Invalid node-name %s" node)) + ;; Use `if-let*' instead of `let*' so we check if an association was + ;; found. + (if-let* ((manual (match-string 1 node)) + (node (match-string 2 node)) + (association (seq-find + (lambda (pair) + (seq-contains-p (ensure-list (car pair)) + manual #'string-equal-ignore-case)) + Info-url-alist)) + (url-spec (cdr association)) + (encoded-node + ;; Reproduce GNU Texinfo's way of URL-encoding. + ;; (info "(texinfo) HTML Xref Node Name Expansion") + (if (equal node "Top") + "" + (url-hexify-string + (string-replace " " "-" + (mapconcat + (lambda (ch) + (if (or (< ch 32) ; ^@^A-^Z^[^\^]^^^- (<= 33 ch 47) ; !"#$%&'()*+,-./ (<= 58 ch 64) ; :;<=>?@ (<= 91 ch 96) ; [\]_` (<= 123 ch 127)) ; {|}~ DEL (format "_00%x" ch) - (char-to-string ch))) - node - "")) - (concat "https://www.gnu.org/software/emacs/manual/html_node/" - manual "/" - (and (not (equal node "Top")) - (concat - (url-hexify-string (string-replace " " "-" node)) - ".html"))))) + (char-to-string ch))) + node "")))))) + (cond + ((stringp url-spec) + (format-spec url-spec + `((?m . ,manual) (?n . ,node) (?e . ,encoded-node)))) + ((functionp url-spec) + (funcall url-spec manual node encoded-node)) + (t (error "URL-specification neither string nor function"))) + (error "No URL-specification associated with manual-name `%s'" + manual))) (defvar Info-read-node-completion-table) diff --git a/test/lisp/info-tests.el b/test/lisp/info-tests.el index ebe718167bf..0dfdbf417e8 100644 --- a/test/lisp/info-tests.el +++ b/test/lisp/info-tests.el @@ -29,11 +29,17 @@ (ert-deftest test-info-urls () (should (equal (Info-url-for-node "(emacs)Minibuffer") - "https://www.gnu.org/software/emacs/manual/html_node/emacs/Minibuffer.html")) + "https://www.gnu.org/software/emacs/manual/html_node/emacs/Minibuffer")) (should (equal (Info-url-for-node "(emacs)Minibuffer File") - "https://www.gnu.org/software/emacs/manual/html_node/emacs/Minibuffer-File.html")) + "https://www.gnu.org/software/emacs/manual/html_node/emacs/Minibuffer-File")) (should (equal (Info-url-for-node "(elisp)Backups and Auto-Saving") - "https://www.gnu.org/software/emacs/manual/html_node/elisp/Backups-and-Auto_002dSaving.html")) - (should-error (Info-url-for-node "(gnus)Minibuffer File"))) + "https://www.gnu.org/software/emacs/manual/html_node/elisp/Backups-and-Auto_002dSaving")) + (should (equal (Info-url-for-node "(eintr)car & cdr") + "https://www.gnu.org/software/emacs/manual/html_node/eintr/car-_0026-cdr")) + (should (equal (Info-url-for-node "(emacs-mime)\tIndex") + "https://www.gnu.org/software/emacs/manual/html_node/emacs-mime/Index")) + (should (equal (Info-url-for-node "(gnus) Don't Panic") + "https://www.gnu.org/software/emacs/manual/html_node/gnus/Don_0027t-Panic")) + (should-error (Info-url-for-node "(nonexistent)Example"))) ;;; info-tests.el ends here commit 09cdf8a406c5b73e8924a7396c2aaabe74a1a638 Author: Jakub Ječmínek Date: Fri Jan 19 16:38:21 2024 +0100 Fix syntax highlighting after string literal concat in python-mode * lisp/progmodes/python.el (python-syntax-stringify): Fix incorrect font-lock after string literal concatenation. (Bug#45897) * test/lisp/progmodes/python-tests.el (python-font-lock-string-literal-concatenation): New test. Co-authored-by: kobarity Copyright-paperwork-exempt: yes diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index 41f612c8b1c..9d840efb9da 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el @@ -909,6 +909,7 @@ is used to limit the scan." "Put `syntax-table' property correctly on single/triple quotes." (let* ((ppss (save-excursion (backward-char 3) (syntax-ppss))) (string-start (and (eq t (nth 3 ppss)) (nth 8 ppss))) + (string-literal-concat (numberp (nth 3 ppss))) (quote-starting-pos (- (point) 3)) (quote-ending-pos (point))) (cond ((or (nth 4 ppss) ;Inside a comment @@ -921,6 +922,8 @@ is used to limit the scan." ((nth 5 ppss) ;; The first quote is escaped, so it's not part of a triple quote! (goto-char (1+ quote-starting-pos))) + ;; Handle string literal concatenation (bug#45897) + (string-literal-concat nil) ((null string-start) ;; This set of quotes delimit the start of a string. Put ;; string fence syntax on last quote. (bug#49518) diff --git a/test/lisp/progmodes/python-tests.el b/test/lisp/progmodes/python-tests.el index 97ffd5fe20f..59957ff0712 100644 --- a/test/lisp/progmodes/python-tests.el +++ b/test/lisp/progmodes/python-tests.el @@ -660,6 +660,18 @@ r'\\x12 \123 \\n \\u1234 \\U00010348 \\N{Plus-Minus Sign}'" (3 . font-lock-string-face) (14) (16 . font-lock-string-face)))) +(ert-deftest python-font-lock-string-literal-concatenation () + "Test for bug#45897." + (python-tests-assert-faces + "x = \"hello\"\"\" +y = \"confused\"" + '((1 . font-lock-variable-name-face) (2) + (3 . font-lock-operator-face) (4) + (5 . font-lock-string-face) (14) + (15 . font-lock-variable-name-face) (16) + (17 . font-lock-operator-face) (18) + (19 . font-lock-string-face)))) + ;;; Indentation commit f0c573d8069f7ee654a550ae3d148325c49900a3 Author: Eshel Yaron Date: Sat Jan 20 12:24:32 2024 +0100 Optionally avoid extending 'completion-at-point-functions' It is now possible to avoid extending 'completion-at-point-functions' in Text mode and its descendants. * lisp/textmodes/text-mode.el (text-mode-meta-tab-ispell-complete-word): Rename to... (text-mode-ispell-word-completion): ...this. Extend with another option 'completion-at-point'. (text-mode): Only extend 'completion-at-point-functions' when 'text-mode-ispell-word-completion' is 'completion-at-point'. (Bug#67527) * etc/NEWS: Update the entry about 'M-TAB' in Text mode. diff --git a/etc/NEWS b/etc/NEWS index d69d0001135..b249f7e1ecb 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1346,12 +1346,13 @@ files and save the changes. +++ ** 'M-TAB' now invokes 'completion-at-point' also in Text mode. -Text mode no longer binds 'M-TAB' to 'ispell-complete-word', and -instead this mode arranges for 'completion-at-point', globally bound -to 'M-TAB', to perform word completion as well. If you want 'M-TAB' -to invoke 'ispell-complete-word', as it did in previous Emacs -versions, customize the new user option -'text-mode-meta-tab-ispell-complete-word' to non-nil. +By default, Text mode no longer binds 'M-TAB' to +'ispell-complete-word'. Instead this mode arranges for +'completion-at-point', globally bound to 'M-TAB', to perform word +completion as well. You can have Text mode bind 'M-TAB' to +'ispell-complete-word' as it did in previous Emacs versions, or +disable Ispell word completion in Text mode altogether, by customizing +the new user option 'text-mode-ispell-word-completion'. ** 'pp' and 'pp-to-string' now always include a terminating newline. In the past they included a terminating newline in most cases but not all. diff --git a/lisp/textmodes/text-mode.el b/lisp/textmodes/text-mode.el index 7d3b47a9c03..87f6668cecb 100644 --- a/lisp/textmodes/text-mode.el +++ b/lisp/textmodes/text-mode.el @@ -75,8 +75,15 @@ Many other modes, such as `mail-mode' and `outline-mode', inherit all the commands defined in this map.") -(defcustom text-mode-meta-tab-ispell-complete-word nil - "Whether M-TAB invokes `ispell-complete-word' in Text mode. +(defcustom text-mode-ispell-word-completion 'completion-at-point + "How Text mode provides Ispell word completion. + +By default, this option is set to `completion-at-point', which +means that Text mode adds an Ispell word completion function to +`completion-at-point-functions'. Any other non-nil value says to +bind M-TAB directly to `ispell-complete-word' instead. If this +is nil, Text mode neither binds M-TAB to `ispell-complete-word' +nor does it extend `completion-at-point-functions'. This user option only takes effect when you customize it in Custom or with `setopt', not with `setq'." @@ -84,8 +91,9 @@ Custom or with `setopt', not with `setq'." :type 'boolean :version "30.1" :set (lambda (sym val) - (if (set sym val) - (keymap-set text-mode-map "C-M-i" #'ispell-complete-word) + (if (and (set sym val) + (not (eq val 'completion-at-point))) + (keymap-set text-mode-map "C-M-i" #'ispell-complete-word) (keymap-unset text-mode-map "C-M-i" t)))) (easy-menu-define text-mode-menu text-mode-map @@ -144,7 +152,8 @@ Turning on Text mode runs the normal hook `text-mode-hook'." ;; Enable text conversion in this buffer. (setq-local text-conversion-style t) (add-hook 'context-menu-functions 'text-mode-context-menu 10 t) - (add-hook 'completion-at-point-functions #'ispell-completion-at-point 10 t)) + (when (eq text-mode-ispell-word-completion 'completion-at-point) + (add-hook 'completion-at-point-functions #'ispell-completion-at-point 10 t))) (define-derived-mode paragraph-indent-text-mode text-mode "Parindent" "Major mode for editing text, with leading spaces starting a paragraph. commit fa7543eeb72342544d324a54010b6cb96c246733 Author: Eli Zaretskii Date: Sat Jan 27 11:44:54 2024 +0200 Minor fix in 'describe-language-environment' * lisp/international/mule-cmds.el (describe-language-environment): Use 'current-language-environment' as DEFAULT in the prompt. Patch by Thierry Volpiatto . (Bug#68602) diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el index 07f11a62594..6b4c83112e3 100644 --- a/lisp/international/mule-cmds.el +++ b/lisp/international/mule-cmds.el @@ -2159,7 +2159,9 @@ See `set-language-info-alist' for use in programs." (interactive (list (read-language-name 'documentation - (format-prompt "Describe language environment" current-language-environment)))) + (format-prompt "Describe language environment" + current-language-environment) + current-language-environment))) (let ((help-buffer-under-preparation t)) (if (null language-name) (setq language-name current-language-environment)) commit 8163e0b20c97a8394225a7165a8ab361af09ec29 Author: Eli Zaretskii Date: Sat Jan 27 10:52:47 2024 +0200 Improve 'refill-mode' in Org buffers * lisp/textmodes/refill.el (refill-fill-paragraph-at): Use 'fill-forward-paragraph' instead of 'forward/backward-paragraph', so that modes could customize the behavior. (Bug#68418) diff --git a/lisp/textmodes/refill.el b/lisp/textmodes/refill.el index bb6b6ebda0f..244c96b60df 100644 --- a/lisp/textmodes/refill.el +++ b/lisp/textmodes/refill.el @@ -106,10 +106,10 @@ This is used to optimize refilling.") ;; FIXME: forward-paragraph seems to disregard `use-hard-newlines', ;; leading to excessive refilling and wrong choice of fill-prefix. ;; might be a bug in my paragraphs.el. - (forward-paragraph) + (fill-forward-paragraph) (skip-syntax-backward "-") (let ((end (point)) - (beg (progn (backward-paragraph) (point))) + (beg (progn (fill-forward-paragraph -1) (point))) (obeg (overlay-start refill-ignorable-overlay)) (oend (overlay-end refill-ignorable-overlay))) (unless (> beg pos) ;Don't fill if point is outside the paragraph. commit 43e2f3acdd2dbd040ec2fc473ca60ee3179bb796 Author: Eli Zaretskii Date: Sat Jan 27 10:38:14 2024 +0200 ; Minor improvements in 'visual-wrap-prefix-mode' * lisp/visual-wrap.el (visual-wrap-extra-indent): Add :version. (visual-wrap-fill-context-prefix): Doc fix. * lisp/menu-bar.el (menu-bar-line-wrapping-menu): Move the menu to a better place, improve the help-echo text. * etc/NEWS: * doc/emacs/basic.texi (Continuation Lines): Improve documentation and indexing of 'visual-wrap-prefix-mode'. diff --git a/doc/emacs/basic.texi b/doc/emacs/basic.texi index a6b71db4bea..cdc183c2a40 100644 --- a/doc/emacs/basic.texi +++ b/doc/emacs/basic.texi @@ -630,7 +630,7 @@ before they get too long, by inserting newlines. If you prefer, you can make Emacs insert a newline automatically when a line gets too long, by using Auto Fill mode. @xref{Filling}. -@cindex continuation lines, wrapping with prefix +@cindex continuation lines, visual wrap prefix @findex visual-wrap-prefix-mode Normally, the first character of each continuation line is positioned at the beginning of the screen line where it is displayed. @@ -639,7 +639,8 @@ continuation lines be prefixed by slightly adjusted versions of the fill prefixes (@pxref{Fill Prefix}) of their respective logical lines, so that indentation characters or the prefixes of source code comments are replicated across every continuation line, and the appearance of -such comments or indentation is not broken. +such comments or indentation is not broken. These prefixes are only +shown on display, and does not change the buffer text in any way. Sometimes, you may need to edit files containing many long logical lines, and it may not be practical to break them all up by adding diff --git a/etc/NEWS b/etc/NEWS index 37a017c4db1..d69d0001135 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -319,15 +319,15 @@ name detection. +++ ** New minor mode 'visual-wrap-prefix-mode'. - -When enabled, continuation lines displayed for a folded long line will -receive a 'wrap-prefix' automatically computed from the line's -surrounding context by the function 'fill-context-prefix', which -generally indents continuation lines as if the line were filled with -'M-q', or similar. - -This minor mode is the 'adaptive-wrap' ELPA package renamed and -lightly edited for inclusion in Emacs. +When enabled, continuation lines displayed for a wrapped long line +will receive a 'wrap-prefix' automatically computed from the line's +surrounding context, such that continuation lines are indented on +display as if they were filled with 'M-q' or similar. Unlike 'M-q', +the indentation only happens on display, and doesn't change the buffer +text in any way. + +(This minor mode is the 'adaptive-wrap' ELPA package renamed and +lightly edited for inclusion in Emacs.) +++ ** New user option 'gud-highlight-current-line'. diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el index 761f0603c75..47c6a8f0613 100644 --- a/lisp/menu-bar.el +++ b/lisp/menu-bar.el @@ -1438,6 +1438,14 @@ mail status in mode line")) (defvar menu-bar-line-wrapping-menu (let ((menu (make-sparse-keymap "Line Wrapping"))) + (bindings--define-key menu [visual-wrap] + '(menu-item "Visual Wrap Prefix mode" visual-wrap-prefix-mode + :help "Display continuation lines with visual context-dependent prefix" + :visible (menu-bar-menu-frame-live-and-visible-p) + :button (:toggle + . (bound-and-true-p visual-wrap-prefix-mode)) + :enable t)) + (bindings--define-key menu [word-wrap] '(menu-item "Word Wrap (Visual Line mode)" menu-bar--visual-line-mode-enable @@ -1467,13 +1475,6 @@ mail status in mode line")) (not word-wrap))) :visible (menu-bar-menu-frame-live-and-visible-p) :enable (not (truncated-partial-width-window-p)))) - - (bindings--define-key menu [visual-wrap] - '(menu-item "Visual Wrap Prefix" visual-wrap-prefix-mode - :help "Display continuation lines with contextual prefix" - :visible (menu-bar-menu-frame-live-and-visible-p) - :button (:toggle . (bound-and-true-p visual-wrap-prefix-mode)) - :enable t)) menu)) (defvar menu-bar-search-options-menu diff --git a/lisp/visual-wrap.el b/lisp/visual-wrap.el index f8e00b9c685..1cb49538eae 100644 --- a/lisp/visual-wrap.el +++ b/lisp/visual-wrap.el @@ -59,6 +59,7 @@ extra indent = 2 ullamco laboris nisi ut aliquip ex ea commodo consequat." :type 'integer :safe 'integerp + :version "30.1" :group 'visual-line) (defun visual-wrap--face-extend-p (face) @@ -111,8 +112,9 @@ extra indent = 2 "")))) (defun visual-wrap-fill-context-prefix (beg end) - "Like `fill-context-prefix', but with length adjusted by -`visual-wrap-extra-indent'." + "Compute visual wrap prefix from text between FROM and TO. +This is like `fill-context-prefix', but with prefix length adjusted +by `visual-wrap-extra-indent'." (let* ((fcp ;; `fill-context-prefix' ignores prefixes that look like ;; paragraph starts, in order to avoid inadvertently commit 53481cc954641256602830a6d74def86440ac4a9 Author: Eli Zaretskii Date: Sat Jan 27 10:11:32 2024 +0200 Fix description of when "\xNNN" is considered a unibyte character * doc/lispref/objects.texi (Non-ASCII in Strings): More accurate description of when a hexadecimal escape sequence yields a unibyte character. (Bug#68751) diff --git a/doc/lispref/objects.texi b/doc/lispref/objects.texi index 13c5f06b0bd..7b2a4af303f 100644 --- a/doc/lispref/objects.texi +++ b/doc/lispref/objects.texi @@ -1180,13 +1180,14 @@ character), Emacs automatically assumes that it is multibyte. You can also use hexadecimal escape sequences (@samp{\x@var{n}}) and octal escape sequences (@samp{\@var{n}}) in string constants. -@strong{But beware:} If a string constant contains hexadecimal or -octal escape sequences, and these escape sequences all specify unibyte -characters (i.e., less than 256), and there are no other literal -non-@acronym{ASCII} characters or Unicode-style escape sequences in -the string, then Emacs automatically assumes that it is a unibyte -string. That is to say, it assumes that all non-@acronym{ASCII} -characters occurring in the string are 8-bit raw bytes. +@strong{But beware:} If a string constant contains octal escape +sequences or one- or two-digit hexadecimal escape sequences, and these +escape sequences all specify unibyte characters (i.e., codepoints less +than 256), and there are no other literal non-@acronym{ASCII} +characters or Unicode-style escape sequences in the string, then Emacs +automatically assumes that it is a unibyte string. That is to say, it +assumes that all non-@acronym{ASCII} characters occurring in the +string are 8-bit raw bytes. In hexadecimal and octal escape sequences, the escaped character code may contain a variable number of digits, so the first subsequent commit 1ef8b90ae06d698ab2ba9b43f67fde7289db2c5d Author: Randy Taylor Date: Wed Jan 24 21:39:45 2024 -0500 Simplify imenu setup for {cmake,dockerfile}-ts-modes * lisp/progmodes/cmake-ts-mode.el (treesit-induce-sparse-tree, treesit-node-child, treesit-node-start, cmake-ts-mode--imenu, cmake-ts-mode--imenu-1): Remove. (treesit-search-subtree): Declare. (cmake-ts-mode--function-name): New function. (cmake-ts-mode): Use it. * lisp/progmodes/dockerfile-ts-mode.el (treesit-induce-sparse-tree, treesit-node-start, dockerfile-ts-mode--imenu, dockerfile-ts-mode--imenu-1): Remove. (dockerfile-ts-mode--stage-name): New function. (dockerfile-ts-mode): Use it. diff --git a/lisp/progmodes/cmake-ts-mode.el b/lisp/progmodes/cmake-ts-mode.el index d933e4ebb81..29c9e957d3c 100644 --- a/lisp/progmodes/cmake-ts-mode.el +++ b/lisp/progmodes/cmake-ts-mode.el @@ -32,10 +32,8 @@ (declare-function treesit-parser-create "treesit.c") (declare-function treesit-query-capture "treesit.c") -(declare-function treesit-induce-sparse-tree "treesit.c") -(declare-function treesit-node-child "treesit.c") -(declare-function treesit-node-start "treesit.c") (declare-function treesit-node-type "treesit.c") +(declare-function treesit-search-subtree "treesit.c") (defcustom cmake-ts-mode-indent-offset 2 "Number of spaces for each indentation step in `cmake-ts-mode'." @@ -195,37 +193,14 @@ Check if a node type is available, then return the right font lock rules." '((ERROR) @font-lock-warning-face)) "Tree-sitter font-lock settings for `cmake-ts-mode'.") -(defun cmake-ts-mode--imenu () - "Return Imenu alist for the current buffer." - (let* ((node (treesit-buffer-root-node)) - (func-tree (treesit-induce-sparse-tree - node "function_def" nil 1000)) - (func-index (cmake-ts-mode--imenu-1 func-tree))) - (append - (when func-index `(("Function" . ,func-index)))))) - -(defun cmake-ts-mode--imenu-1 (node) - "Helper for `cmake-ts-mode--imenu'. -Find string representation for NODE and set marker, then recurse -the subtrees." - (let* ((ts-node (car node)) - (children (cdr node)) - (subtrees (mapcan #'cmake-ts-mode--imenu-1 - children)) - (name (when ts-node - (pcase (treesit-node-type ts-node) - ("function_def" - (treesit-node-text - (treesit-node-child (treesit-node-child ts-node 0) 2) t))))) - (marker (when ts-node - (set-marker (make-marker) - (treesit-node-start ts-node))))) - (cond - ((or (null ts-node) (null name)) subtrees) - (subtrees - `((,name ,(cons name marker) ,@subtrees))) - (t - `((,name . ,marker)))))) +(defun cmake-ts-mode--function-name (node) + "Return the function name of NODE. +Return nil if there is no name or if NODE is not a function node." + (pcase (treesit-node-type node) + ("function_command" + (treesit-node-text + (treesit-search-subtree node "^argument$" nil nil 2) + t)))) ;;;###autoload (define-derived-mode cmake-ts-mode prog-mode "CMake" @@ -242,7 +217,8 @@ the subtrees." (setq-local comment-start-skip (rx "#" (* (syntax whitespace)))) ;; Imenu. - (setq-local imenu-create-index-function #'cmake-ts-mode--imenu) + (setq-local treesit-simple-imenu-settings + `(("Function" "\\`function_command\\'" nil cmake-ts-mode--function-name))) (setq-local which-func-functions nil) ;; Indent. diff --git a/lisp/progmodes/dockerfile-ts-mode.el b/lisp/progmodes/dockerfile-ts-mode.el index d5b7f953e31..878335431af 100644 --- a/lisp/progmodes/dockerfile-ts-mode.el +++ b/lisp/progmodes/dockerfile-ts-mode.el @@ -31,10 +31,8 @@ (eval-when-compile (require 'rx)) (declare-function treesit-parser-create "treesit.c") -(declare-function treesit-induce-sparse-tree "treesit.c") (declare-function treesit-node-child "treesit.c") (declare-function treesit-node-child-by-field-name "treesit.c") -(declare-function treesit-node-start "treesit.c") (declare-function treesit-node-type "treesit.c") (defvar dockerfile-ts-mode--syntax-table @@ -118,38 +116,15 @@ continuation to the previous entry." '((ERROR) @font-lock-warning-face)) "Tree-sitter font-lock settings.") -(defun dockerfile-ts-mode--imenu () - "Return Imenu alist for the current buffer." - (let* ((node (treesit-buffer-root-node)) - (stage-tree (treesit-induce-sparse-tree - node "from_instruction" - nil 1000)) - (stage-index (dockerfile-ts-mode--imenu-1 stage-tree))) - (when stage-index `(("Stage" . ,stage-index))))) - -(defun dockerfile-ts-mode--imenu-1 (node) - "Helper for `dockerfile-ts-mode--imenu'. -Find string representation for NODE and set marker, then recurse -the subtrees." - (let* ((ts-node (car node)) - (children (cdr node)) - (subtrees (mapcan #'dockerfile-ts-mode--imenu-1 - children)) - (name (when ts-node - (pcase (treesit-node-type ts-node) - ("from_instruction" - (treesit-node-text - (or (treesit-node-child-by-field-name ts-node "as") - (treesit-node-child ts-node 1)) t))))) - (marker (when ts-node - (set-marker (make-marker) - (treesit-node-start ts-node))))) - (cond - ((or (null ts-node) (null name)) subtrees) - (subtrees - `((,name ,(cons name marker) ,@subtrees))) - (t - `((,name . ,marker)))))) +(defun dockerfile-ts-mode--stage-name (node) + "Return the stage name of NODE. +Return nil if there is no name or if NODE is not a stage node." + (pcase (treesit-node-type node) + ("from_instruction" + (treesit-node-text + (or (treesit-node-child-by-field-name node "as") + (treesit-node-child node 1)) + t)))) ;;;###autoload (define-derived-mode dockerfile-ts-mode prog-mode "Dockerfile" @@ -166,8 +141,8 @@ the subtrees." (setq-local comment-start-skip (rx "#" (* (syntax whitespace)))) ;; Imenu. - (setq-local imenu-create-index-function - #'dockerfile-ts-mode--imenu) + (setq-local treesit-simple-imenu-settings + `(("Stage" "\\`from_instruction\\'" nil dockerfile-ts-mode--stage-name))) (setq-local which-func-functions nil) ;; Indent. commit 7338af9c9862f7581f8a246efbd2ee35040b0219 Author: Eli Zaretskii Date: Fri Jan 26 21:05:43 2024 +0200 ; * etc/PROBLEMS: Document that GnuPG 2.4.4 solves the EasyPG hangs. diff --git a/etc/PROBLEMS b/etc/PROBLEMS index cc9f9176f70..1254f6a3bc9 100644 --- a/etc/PROBLEMS +++ b/etc/PROBLEMS @@ -530,11 +530,10 @@ The solution is to use gawk (GNU awk). *** Saving a file encrypted with GnuPG via EasyPG hangs. This is known to happen with GnuPG v2.4.1. The only known workaround -is to downgrade to a version of GnuPG older than 2.4.1 (or, in the -future, upgrade to a newer version which solves the problem, when such -a fixed version becomes available). Note that GnuPG v2.2.42 and later -also has this problem, so you should also avoid those later 2.2.4x -versions; v2.2.41 is reported to work fine. +is to downgrade to a version of GnuPG older than 2.4.1, or upgrade to +version 2.4.4 and newer, which reportedly solves the problem. Note +that GnuPG v2.2.42 and later also has this problem, so you should also +avoid those later 2.2.4x versions; v2.2.41 is reported to work fine. *** EasyPG loopback pinentry does not work with gpgsm. commit 5483a1df99c4c36a96435e1c81ffd021f9355af9 Author: Eli Zaretskii Date: Wed Jan 24 21:34:16 2024 +0200 Improve documentation of profiler commands * doc/lispref/debugging.texi (Profiling): Document more commands. Improve indexing. (Bug#68693) diff --git a/doc/lispref/debugging.texi b/doc/lispref/debugging.texi index 774fcaf68bf..47851be0f7c 100644 --- a/doc/lispref/debugging.texi +++ b/doc/lispref/debugging.texi @@ -1093,10 +1093,19 @@ argument (@kbd{C-u @key{RET}}) to see the whole call tree below a function. Pressing @kbd{@key{RET}} again will collapse back to the original state. -Press @kbd{j} or @kbd{mouse-2} to jump to the definition of a function -at point. Press @kbd{d} to view a function's documentation. You can -save a profile to a file using @kbd{C-x C-w}. You can compare two -profiles using @kbd{=}. +@findex profiler-report-find-entry +@findex profiler-report-describe-entry +@findex profiler-find-profile +@findex profiler-find-profile-other-window +@findex profiler-report-compare-profile +Press @kbd{j} (@code{profiler-report-find-entry}) or @kbd{mouse-2} to +jump to the definition of a function at point. Press @kbd{d} +(@code{profiler-report-describe-entry}) to view a function's +documentation. You can save a profile to a file using @kbd{C-x C-w} +(@code{profiler-report-write-profile}) and read a saved profile with +@w{@kbd{M-x profiler-find-profile}} or @w{@kbd{M-x +profiler-find-profile-other-window}}. You can compare two profiles +using @kbd{=} (@code{profiler-report-compare-profile}). @c FIXME reversed calltree? commit fb4cf0ab46df5a0bb70ebe51ac31becfe21deb8d Author: Basil L. Contovounesios Date: Wed Dec 20 13:42:53 2023 +0100 ; Fix xref under Output Overrides in Elisp manual. diff --git a/doc/lispref/streams.texi b/doc/lispref/streams.texi index 5d6a382cbb0..9fd2d074efe 100644 --- a/doc/lispref/streams.texi +++ b/doc/lispref/streams.texi @@ -986,7 +986,7 @@ having their own escape syntax such as newline. @cindex overrides, in output functions @cindex output variables, overriding -The previous section (@pxref{Output Functions}) lists the numerous +The previous section (@pxref{Output Variables}) lists the numerous variables that control how the Emacs Lisp printer formats data for outputs. These are generally available for users to change, but sometimes you want to output data in the default format, or override commit aa6c24da61fd1419ac0a7c491c5aec20e52cc964 Author: Basil L. Contovounesios Date: Wed Dec 20 13:40:47 2023 +0100 Fix broken links to Freedesktop notifications spec * doc/lispref/os.texi (Desktop Notifications): * lisp/notifications.el: Replace broken developer.gnome.org links with specifications.freedesktop.org (bug#67939). diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi index e9d81038d4b..c8c64ddde89 100644 --- a/doc/lispref/os.texi +++ b/doc/lispref/os.texi @@ -2913,7 +2913,7 @@ interpreted as icon name. @item :category @var{category} The type of notification this is, a string. See the -@uref{https://developer.gnome.org/notification-spec/#categories, +@url{https://specifications.freedesktop.org/notification-spec/notification-spec-latest.html#categories, Desktop Notifications Specification} for a list of standard categories. diff --git a/lisp/notifications.el b/lisp/notifications.el index f284fb46b20..3509968a6cd 100644 --- a/lisp/notifications.el +++ b/lisp/notifications.el @@ -23,7 +23,7 @@ ;;; Commentary: ;; This package provides an implementation of the Desktop Notifications -;; . +;; . ;; In order to activate this package, you must add the following code ;; into your .emacs: commit 14d68221d26af5c3e99ae0fbc7ade44494aaf4f3 Author: Michael Albinus Date: Mon Jan 22 10:08:45 2024 +0100 Fix nasty cut'n'waste error in Tramp * lisp/net/tramp.el (tramp-parse-passwd): Use `tramp-parse-passwd-group'. Reported by Tim Landscheidt . diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 56b00bdeb42..bd556753261 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -3518,7 +3518,7 @@ Host is always \"localhost\"." (when (zerop (tramp-call-process nil "getent" nil t nil "passwd")) (goto-char (point-min)) (cl-loop while (not (eobp)) collect - (tramp-parse-etc-group-group)))) + (tramp-parse-passwd-group)))) (tramp-parse-file filename #'tramp-parse-passwd-group)))) (defun tramp-parse-passwd-group () commit 51ca049608cd116e5ec5b8bb4fd815bed1cbf4ca Author: Stefan Kangas Date: Sun Jan 21 14:41:27 2024 +0100 Fix image-dired-tags-db-file void variable error * lisp/image/image-dired-tags.el (image-dired-sane-db-file): Require 'image-dired'. (Bug#68636) diff --git a/lisp/image/image-dired-tags.el b/lisp/image/image-dired-tags.el index 7b4ca35a15e..2b5248cb14b 100644 --- a/lisp/image/image-dired-tags.el +++ b/lisp/image/image-dired-tags.el @@ -51,6 +51,7 @@ Return the value of last form in BODY." "Check if `image-dired-tags-db-file' exists. If not, try to create it (including any parent directories). Signal error if there are problems creating it." + (require 'image-dired) ; for `image-dired-dir' (or (file-exists-p image-dired-tags-db-file) (let (dir buf) (unless (file-directory-p (setq dir (file-name-directory commit c450eec07ff19953c8e1e75e99909d140db0e5d0 Author: Matthew Smith Date: Sat Jan 20 09:45:31 2024 +0000 typescript-ts-mode: Skip test if tsx grammar missing typescript-ts-mode-test-indentation depends on both the tree-sitter typescript grammar, and the tree-sitter tsx grammar. If only the typescript is installed, the tests will run and then fail unexpectedly after tsx fails to load. * test/lisp/progmodes/typescript-ts-mode-tests.el (typescript-ts-mode-test-indentation): Skip test if tsx grammar is missing. Copyright-paperwork-exempt: yes diff --git a/test/lisp/progmodes/typescript-ts-mode-tests.el b/test/lisp/progmodes/typescript-ts-mode-tests.el index 27b7df714e6..effd9551fb0 100644 --- a/test/lisp/progmodes/typescript-ts-mode-tests.el +++ b/test/lisp/progmodes/typescript-ts-mode-tests.el @@ -24,7 +24,8 @@ (require 'treesit) (ert-deftest typescript-ts-mode-test-indentation () - (skip-unless (treesit-ready-p 'typescript)) + (skip-unless (and (treesit-ready-p 'typescript) + (treesit-ready-p 'tsx))) (ert-test-erts-file (ert-resource-file "indent.erts"))) (provide 'typescript-ts-mode-tests) commit 9841ced147f8a198da58a7925c0be55e2ed8dc75 Author: Stefan Kangas Date: Sat Jan 20 21:08:52 2024 +0100 ; Fix typos diff --git a/admin/codespell/codespell.exclude b/admin/codespell/codespell.exclude index 89b8a951f93..2503f4a9a16 100644 --- a/admin/codespell/codespell.exclude +++ b/admin/codespell/codespell.exclude @@ -1548,3 +1548,4 @@ VERY VERY LONG STRIN | VERY VERY LONG STRIN (ert-info ("Joined by bouncer to #foo, pal persent") (ert-info ("Joined by bouncer to #chan@foonet, pal persent") (ert-info ("Joined by bouncer to #chan@barnet, pal persent") +.UE . diff --git a/lisp/net/tramp-crypt.el b/lisp/net/tramp-crypt.el index 143327c123a..9f30cdef069 100644 --- a/lisp/net/tramp-crypt.el +++ b/lisp/net/tramp-crypt.el @@ -862,7 +862,7 @@ WILDCARD is not supported." 'unlock-file (tramp-crypt-encrypt-file-name filename)))) (defun tramp-crypt-cleanup-connection (vec) - "Cleanup crypt ressources determined by VEC." + "Cleanup crypt resources determined by VEC." (let ((tramp-cleanup-connection-hook (remove #'tramp-crypt-cleanup-connection tramp-cleanup-connection-hook))) commit 557ed9c04634aaacaafb9bf3066d33b1644912ac Author: Stefan Kangas Date: Sat Jan 20 21:03:12 2024 +0100 * admin/README: Document the run-codespell script. diff --git a/admin/README b/admin/README index 0afacee5f2f..419039b4fba 100644 --- a/admin/README +++ b/admin/README @@ -39,6 +39,11 @@ Build Emacs in various ways. Install emacs quickly ("incrementally"). +** run-codespell + +Run the codespell tool on the Emacs sources. Requires codespell to be +installed first. + ** alloc-colors.c A utility program that allocates a given number of colors on X. Can @@ -66,6 +71,7 @@ coccinelle semantic patches for use with the static code minor changes in Emacs internals in multiple places, they are trivial for copyright purposes. +codespell supporting files for the run-codespell script. grammars wisent and bovine grammars, used to produce files in lisp/cedet/. notes miscellaneous notes related to administrative commit 5701f96335c603b474ccb01a7d8522875ac4905f Author: Stefan Kangas Date: Sat Jan 20 21:01:11 2024 +0100 * admin/README: Fix entry on coccinelle subdirectory. diff --git a/admin/README b/admin/README index c7dec63875a..0afacee5f2f 100644 --- a/admin/README +++ b/admin/README @@ -57,15 +57,15 @@ Tests for custom types and load problems. Show files added/removed between two tar files. -Brief description of sub-directories: +* Brief description of sub-directories. charsets scripts for generating charset map files in ../etc/charsets -coccinelle patches to make coccinelle work with - the latest Emacs version. Since they - apply a few minor changes in Emacs internals - in multiple places, they are trivial for - copyright purposes. +coccinelle semantic patches for use with the static code + analyzer coccinelle. Since they apply a few + minor changes in Emacs internals in multiple + places, they are trivial for copyright + purposes. grammars wisent and bovine grammars, used to produce files in lisp/cedet/. notes miscellaneous notes related to administrative commit 1805f4bfd62354f4331c8f0464a2adb7787ecc1f Author: Stefan Kangas Date: Sun Dec 10 14:48:33 2023 +0100 Add script admin/run-codespell and supporting files * admin/codespell/README: * admin/codespell/codespell.dictionary: * admin/codespell/codespell.exclude: * admin/codespell/codespell.ignore: * admin/codespell/codespell.rc: * admin/run-codespell: New files. diff --git a/admin/codespell/README b/admin/codespell/README new file mode 100644 index 00000000000..fcc5e3b41d0 --- /dev/null +++ b/admin/codespell/README @@ -0,0 +1,27 @@ +This directory contains supporting files for running codespell. +See the ./admin/run-codespell script. + +codespell.dictionary + + This file contains additional, Emacs-specific corrections. When + fixing typos in Emacs, consider adding them to this file. + +codespell.exclude + + This file contains lines that are correct and should be ignored by + codespell. Add any false positives to this file. + + The lines must match lines in the Emacs source tree exactly, + including any whitespace. + +codespell.ignore + + This file contains any words that are correct in the context of + Emacs, or that we otherwise choose to ignore. Use your best + judgment when adding words to this file. Common typos that are + only correct in highly specific contexts should probably be in + codespell.exclude instead. + +codespell.rc + + This file contains the Emacs specific codespell configuration. diff --git a/admin/codespell/codespell.dictionary b/admin/codespell/codespell.dictionary new file mode 100644 index 00000000000..b082a48fe99 --- /dev/null +++ b/admin/codespell/codespell.dictionary @@ -0,0 +1,17 @@ +alis->alist, alias, alas, axis, alms, +boostrap-clean->bootstrap-clean +brunches->branches +defalis->defalias +defalises->defaliases +ecmacs->emacs +ehsell->eshell +emcs->emacs +finis->finish +firs->first +file-writeable-p->file-writable-p +hep->help +least-favourite->least-favorite +lien->line +liens->lines +mecas->emacs +sehell->eshell, shell, diff --git a/admin/codespell/codespell.exclude b/admin/codespell/codespell.exclude new file mode 100644 index 00000000000..89b8a951f93 --- /dev/null +++ b/admin/codespell/codespell.exclude @@ -0,0 +1,1550 @@ +Bonus: Return a cons cell: (COMPILED . UPTODATE). +Bonus: Return a cons cell: (COMPILED . UPTODATE)." +(defun semantic-grammar-create-package (&optional force uptodate) +If the Lisp code seems up to date, do nothing (if UPTODATE + (if uptodate (setq output nil))) +;; Updated by the RIPE Network Coordination Center. +;; Thanks to jond@miter.org (Jonathan Doughty) for help with code for + \"VHDL Modeling Guidelines\". +# PCRE LICENSE +# General Purpose Licence (GPL), or Lesser General Purpose Licence (LGPL), +# then the terms of that licence shall supersede any condition above with + Li, Luo et al. "The CRI-CAM02UCS colour rendering index." COLOR research + Luo et al. "Uniform colour spaces based on CIECAM02 colour appearance + "[o]utput/save MIME part; save [a]ll parts; \n" +;; Jari Aalto +;; Alon Albert +;; Jari Aalto . + ("IRCnet: EU, AT, Linz" IRCnet "linz.irc.at" ((6666 6668))) + ["Januar" "Februar" "März" "April" "Mai" "Juni" "Juli" "August" +Both types of item should be moved en bloc to the new category, + return dum// -7- + struct Dum { + mutable a::b::Foo::Dum dumdum; + "Mot de Passe :" ; localized (Bug#29729) + (leapyear, ydhms_diff, guess_time_tm, __mktime_internal): Use it. + * config.bat: Build-in the first step towards X11 support with + * configure.ac (emacs_config_features): Don’t worry about GIR. + * configure.ac (WEBKIT, GIR, CAIRO): Use EMACS_CHECK_MODULES, not PKG_. + * configure.ac (emacs_config_features): Add XWIDGETS, WEBKIT, GIR. +1995-04-20 Kevin Rodgers +(seq-mapn #'concat '("moskito" "bite") ["bee" "sting"]) +Steven E. Harris (seh at panix.com), +Kevin Rodgers (kevin.rodgers at ihs.com), +plot,x,alog(x+5*sin(x) + 2), +be shown. On positions 3,4, and 7, the @samp{alog} function will be +As is my wont, I started hacking on it almost immediately. I first +The latter criterion is the "je ne sais quoi" of the artistic aspect of +order but are now listed consecutively en bloc. + "mot de passe" "Mot de passe") + Reported by Mor Zahavi . (Bug#51271) + * etc/refcards/fr-refcard.tex (section{Formater}): Remove mention + Reported by Ture Pålsson. + 9261a219ec * doc/emacs/windows.texi (Window Convenience): Describe mor... + 650a664ccd Let imenu to work on the menu bar when its list is a singl... + "\\(?:Currentl?y\\|Now\\) drawing from '\\(AC\\|Battery\\) Power'" + ;; Move done items en bloc to top of done items section. + * erc-complete.el: * added docfixes (thanks ore) + (interactive "DDelete directory from file cache: ") + some Agian scripts. */ + Rename from "Gnus Maintainance Guide". + * gnus-coding.texi (Gnus Maintainance Guide): Update to mention Emacs + * gnus-coding.texi (Gnus Maintainance Guide): Fix title typo. + * gnus-coding.texi (Gnus Maintainance Guide): Update conventions for +2005-10-23 Lars Hansen +1998-07-17 Gordon Matzigkeit +1998-04-26 James Troup +2003-06-11 Daniel Néri +2001-07-26 10:00:00 Steven E. Harris +2001-01-15 Jack Twilley + + matching LAMDA as a word. Noted by Stefan Monnier. + completion variant for every "LAMDA" name (bug#30513). + "foto" + ("foto" . 0.375) + Add configury for GMP library + Include w32inevt.h, basetyps.h and unknwn.h. + * make-docfile.c (write_c_args): Correctly handle prefixes of "defalt". + * hexl.c [DOSNT]: Include fcntl.h. + * make-docfile.c (write_c_args): Print an argument named "defalt" +2003-03-07 Kevin Rodgers (tiny change) +2003-03-06 Kevin Rodgers (tiny change) + "Speedwave", "Simili", "Synopsys Design Compiler", "Cadence NC", + with-parsed-tramp-file-name macro which is wont to produce such stuff. +2004-12-29 Sanghyuk Suh +2007-02-28 Lars Hansen +2006-11-24 Lars Hansen +2006-10-29 Lars Hansen +2006-09-12 Lars Hansen +2006-06-23 Lars Hansen +2006-05-14 Lars Hansen +2006-05-13 Lars Hansen +2006-02-09 Lars Hansen +2006-02-06 Lars Hansen +2005-11-22 Lars Hansen +2005-11-08 Lars Hansen +2005-11-03 Lars Hansen +2005-11-02 Lars Hansen +2005-10-08 Lars Hansen +2005-08-10 Lars Hansen +2005-07-12 Lars Hansen +2011-02-22 Seppo Sade (tiny change) +2012-09-21 Joel Bion (tiny change) + * rmail.el: Major changes from Bob Weiner + * rmailsum.el: Big rewrite from weiner@pts.mot.com. +1995-05-19 Kevin Rodgers (tiny change) +1994-08-29 Tom Tromey (tromey@creche.colorado.edu) +1994-07-11 Kevin Rodgers (tiny change) +1994-06-17 Kevin Rodgers (kevinr@ihs.com) (tiny change) +1995-12-13 Kevin Rodgers +1995-11-10 Kevin Rodgers +1995-06-30 Kevin Rodgers +1998-07-07 Kevin Rodgers (tiny change) +1998-06-03 Kevin Rodgers (tiny change) +1997-12-22 Kevin Rodgers (tiny change) +1997-11-02 Kevin Rodgers +1997-10-21 Brad Howes +1997-06-22 Howard Melman +1997-03-24 Kevin Rodgers +1996-11-04 Kevin Rodgers +1996-10-20 Kevin Rodgers +1996-09-12 Kevin Rodgers +1999-11-16 Reto Zimmermann +1999-06-12 Reto Zimmermann +1999-05-15 Reto Zimmermann +1998-08-26 Kevin Rodgers (tiny change) + directories. From Kevin Rodgers . + "du Radis" "de la Ruche" "du Gainier" + Iinclude string.h, stdlib.h unconditionally. +2006-04-23 Lars Hansen +2006-04-20 Lars Hansen +2005-11-10 Lars Hansen + explicitly sets the defalt value. + Unexpect wait_object in case of x errors (memory leak). + (receive_incremental_selection): Don't unexpect wait_object when done + append "CCL: Quitted" when the CCL program is quitted. + the loop. When quitted, show a proper error message. + (read_minibuf_noninteractive): If defalt is cons, set val to its car. + (read_minibuf): If defalt is cons, set histstring to its car. + (Fcompleting_read): If defalt is cons, set val to its car. + but it still has blocs in it, don't return it to the system, + any, in the DEFALT argument into the root of the Emacs build or + * fileio.c (Fexpand_file_name): Default DEFALT at beginning, +1992-03-03 Wilson H. Tien (wtien@urbana.mcd.mot.com) + * fileio.c (Fexpand_file_name): Pass DEFALT through + * ralloc.c (relocate_some_blocs): Handle BLOC == NIL_BLOC. + malloc heap, zero it out even if we don't have any blocs in the + (r_alloc_sbrk): Provide hysteresis in relocating the blocs. + (get_bloc): Return zero if we can't allocate the new bloc. + * ralloc.c (r_re_alloc): Instead of allocating a new bloc at the + original bloc, just expand the original block. This saves a copy + If string quotes don't match up, don't take value from OFROM; + Globally replaced INTERRUPTABLE with INTERRUPTIBLE. + * fileio.c (Fread_file_name): If defalt is nil and user tries to use +1995-03-23 Kevin Rodgers (tiny change) + * fileio.c (Fexpand_file_name): Look for a handler for defalt. +1994-09-21 Tom Tromey + (r_alloc_sbrk): Refuse to move blocs, if frozen. +1994-08-26 Kevin Rodgers + (Fcall_process_region) [DOSNT]: Canonicalize slashes in filename. + * minibuf.c (read_minibuf): Do use DEFALT in place of empty input + * minibuf.c (read_minibuf): Return DEFALT here, if minibuffer is empty. + (read_minibuf): Now static. New arg DEFALT. Callers changed. + CHAR_TABLE_ORDINARY_SLOTS for top, defalt, parent, and purpose. + is moved before `contents' so that XCHAT_TABLE (val)->defalt can + for an ASCII font, not defalt slot. + /* And if the configury during frame creation has been + Bob Desinger +/* Calculate the checksum of a SOM header record. */ + to preserve. Then we map these VAs to the section entries in the +#include + /* weiner@footloose.sps.mot.com reports that this causes + (VARN+1 SLOTN+1)) +dum@dots{} Nice tune, that@dots{} la la la@dots{} What, you're back? +C'est la vie. + ("gnus-warning" "duplicat\\(e\\|ion\\) of message" "duplicate") +James Troup, +@cindex @code{multline}, AMS-LaTeX environment +@code{align}, @code{gather}, @code{multline}, @code{flalign}, + \openin 1 #1.pdf \ifeof 1 + \openin 1 #1.PDF \ifeof 1 + \openin 1 #1.png \ifeof 1 + \openin 1 #1.jpg \ifeof 1 + \openin 1 #1.jpeg \ifeof 1 + \openin 1 #1.JPG \ifeof 1 + \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks} + \openin 1 \jobname.\indexname s + % If the index file exists but is empty, then \openin leaves \ifeof +\setbox\balancedcolumns=\vbox{shouldnt see this}% + \openin 1 \tocreadfilename\space + \openin 1 \jobname.aux +\openin 1 = epsf.tex + \openin 1 txi-#1.tex + \openin 1 txi-#1.tex + @openin 1 texinfo.cnf + '("En" "To" "Tre")) +=project.clj=, =build.boot= or =deps.edn=, falling back on + ("(.H)J" (1 :otf=beng=half+)) +- (".H" :otf=beng=blwf,half,vatu+) ++ (".+H" :otf=beng=blwf,half,vatu+) + \quad \B{p}art: a)uthor (from), s)ubject, x)refs (cross-post), d)ate, l)ines, + message-i)d, t)references (parent), f)ollowup, b)ody, h)ead (all headers);\\* +\key{show subtree in indirect buffer, ded.\ frame}{C-c C-x b} +@tindex alog +mode setting. With the Inverse flag [@code{alog}], this command is +@r{ a b@: I B @: @: 2 @:alog@:(a,b) b^a} +@r{ a b@: I f I @: @: 2 @:alog@:(a,b) b^a} + Change comment about the iif hook to reflect the actual reason. + "I + E (ln), L (exp), B (alog: B^X); f E (lnp1), f L (expm1)" + (let (numer denom) + (setq numer (car (math-read-expr-list))) + (if (and (Math-num-integerp numer) + (list 'frac numer denom) + (list '/ numer denom)))) + (calc-binary-op "alog" 'calcFunc-alog arg) + (let ((dum (math-lud-pivot-check sum))) + (if (or (math-zerop big) (Math-lessp big dum)) + (setq big dum + (calc-pop-push-record-list 0 "larg" + (interactive "NNumber of columns = ") + (calc-binary-op "cros" 'calcFunc-cross arg))) + (calc-binary-op "unio" 'calcFunc-vunion arg '(vec) 'calcFunc-rdup))) + (calc-tabular-command 'calcFunc-table "Index" "tabl" + (ptd (file-truename pd))) + (string-match (concat "^" (regexp-quote ptd)) ftn))) + (let ((aci (autoconf-parameters-for-macro "AC_INIT")) + ((> (length aci) 1) + (setq name (nth 0 aci) + ver (nth 1 aci) + bugrep (nth 2 aci))) + (princ "\nKnown members of ") + (peom (save-excursion (c-end-of-macro) (point)))) + (when (> (point) peom) + (let ((larg (car args)) + (if (stringp larg) + (setq larg (semantic-tag-new-variable + larg nil nil))) + (srecode-semantic-tag (semantic-tag-name larg) + :prime larg) + (princ "\n--------------------------------------------\n\nNumber of tables: ") +;; avk@rtsg.mot.com (Andrew V. Klein) for a dired tip. + (args docstring interactive orig &optional befores arounds afters) +and BEFORES, AROUNDS and AFTERS are the lists of advices with which ORIG + (dolist (advice befores) + (let* ((nam (buffer-substring (match-beginning 2) (match-end 2))) + (setq nmlst (cons nam nmlst) + "If we are in an rmail summary buffer, then chart out the froms." + (let* ((nam (buffer-substring (match-beginning 1) (match-end 1))) + (m (member nam nmlst))) + (message "Scanned username %s" nam) + (setq nmlst (cons nam nmlst) + ((memq word '(concat concating)) + (crypted (cl-loop with str = (make-string (* 2 (length orig-name)) 0) + for c-sym = (concat prefix crypted "_" human-readable "_" + (concat prefix crypted "_" human-readable "_0")))) + (let* ((acces (plist-get soptions :accessor)) + (when acces + (push `(cl-defmethod (setf ,acces) (value (this ,name)) + (push `(cl-defmethod ,acces ((this ,name)) + (push `(cl-defmethod ,acces ((this (subclass ,name))) +;; => "(\\(c\\(atch\\|ond\\(ition-case\\)?\\)\\|if\\|let\\*?\\|prog[12n]\\|save-\\(current-buffer\\|excursion\\|match-data\\|restriction\\|window-excursion\\)\\|throw\\|un\\(less\\|wind-protect\\)\\|wh\\(en\\|ile\\)\\)\\>" +G-C-g: Keyboard Quit |Ex Ext Cmd|Fill Regio| REPLACE | UND W | +;; lisp example from Jari Aalto +;; perl example from Jari Aalto +;; '(("\\<\\(uno\\|due\\|tre\\)\\>" . 'font-lock-keyword-face) + "define\\|e\\(?:l\\(?:if\\|se\\)\\|ndif\\|rror\\)\\|file\\|i\\(?:f\\(?:n?def\\)?\\|mport\\|nclude\\)\\|line\\|pragma\\|undef\\|warning" +2003-06-11 Daniel Néri + (lambda (valu symb) + (let ((anumber (string-to-number + (< anumber bnumber))))) + (curren . 164) + ;; Now we must merge the Dows with the Doms. To do that, we + (dows dow-list) + ;; second add all possible dows + (while (setq day (pop dows)) +;; Added by gord@enci.ucalgary.ca (Gordon Matzigkeit). + didnt nnmaildir--file nnmaildir-article-file-name + (setq didnt (cons (nnmaildir--art-num article) didnt))) + (setq didnt (cons (nnmaildir--art-num article) didnt)) + didnt))) + (insert "\nKnown Certificates:\n")))) +;; We could use `symbol-file' but this is a wee bit more efficient. + (beng . bengali) + (maka . makasar) + ,(font-spec :registry "iso10646-1" :otf '(beng nil (rphf)))) + (khmer ,(font-spec :registry "iso10646-1" :otf '(khmr nil (pres)))) + ("wee" . "Latin-2") ; MS Windows Lower Sorbian + ;; Unicode uses the spelling "lamda" in character + (string-match "\\" new-name)) + "WINDOWS-1258 (Viet Nam)" + "mot de passe" ; fr +Je/sli czytasz ten tekst, to albo przegl/adasz plik /xr/od/lowy +W drugim przypadku mo/zesz usun/a/c tekst z ekranu, stosuj/ac + przekodowuj/a zaznaczony fragment wzgl/ednie ca/ly buffor. + Poni/zsze przyk/lady powinny wyja/sni/c, jakich parametr/ow + Funkcje biblioteki odwo/luj/a si/e do pi/eciu zmiennych, kt/ore + ("capetown" "Cape Town, South Africa") + (progn (error msg "preced") 0))) + 2005-08-10. + (dolist (slot '(answers authorities additionals)) + queries answers authorities additionals) + (setq additionals (dns-read-bytes 2)) + (additionals ,additionals)) + [nil ; 1 ACI Item N + ("¤" . "(#)") +;; Author: Alon Albert + "Mark region appropriately. The next char REGION is d(efun),s(-exp),b(uffer), +l(ines)." + (t (message "Mark: d(efun),s(-exp),b(uf),p(arag),P(age),f(unct),w(ord),e(os),l(ines)") + "Verify spelling for the objects specified by char UNIT : [b(uffer), + (t (message "Spell check: b(uffer), r(egion), s(tring), w(ord)") +sWith: " ) +(defun org-babel-perl--var-to-perl (var &optional varn) + (if varn + (concat "my $" (symbol-name varn) "=" (when lvar "\n") + (if org-agenda-entry-text-mode " ETxt" "") + ("curren" "\\textcurrency{}" nil "¤" "curr." "¤" "¤") + (interactive "nNumber of clones to produce: ") +N is the number of WHATs to shift. +multlinewidth The width of the multline environment. + (list :tag "multlinewidth (width to use for the multline environment)" + "align" "gather" "multline" "flalign" "alignat" + ("ca" :default "Autor") + ("cs" :default "Autor") + ("de" :default "Autor") + ("es" :default "Autor") + ("et" :default "Autor") + ("pl" :default "Autor") + ("pt_BR" :default "Autor") + ("ro" :default "Autor") + ("sl" :default "Seznam tabel") + ("nl" :default "Zie tabel %s" + :html "Zie tabel %s" :latex "Zie tabel~%s") + ("et" :default "Tabel") + ("nl" :default "Tabel") + ("ro" :default "Tabel") + ("ro" :default "Tabele") + ("da" :default "Tabel %d") + ("et" :default "Tabel %d") + ("nl" :default "Tabel %d:" :html "Tabel %d:") + ("ro" :default "Tabel %d") + ("pl" :html "Spis treści") + (thier their (their)) + (whats up) (whats new) (what\'s up) (what\'s new) + refer refered referred refers + (c++-mode . "#\\(assert\\|cpu\\|define\\|endif\\|el\\(if\\|se\\)\\|i\\(dent\\|f\\(def\\|ndef\\)?\\|mport\\|nclude\\(_next\\)?\\)\\|line\\|machine\\|pragma\\|system\\|un\\(assert\\|def\\)\\|warning\\)\\>")) + "^\\(?:Error\\|Warnin\\(g\\)\\) \\(?:[FEW][0-9]+ \\)?\ +: \\(?:see declaration\\|\\(?:warnin\\(g\\)\\|[a-z ]+\\) C[0-9]+:\\)" + "^\\([^ \n]+\\)(\\([0-9]+\\)): \\(?:error\\|warnin\\(g\\)\\|remar\\(k\\)\\)" + "^\"\\(.*\\)\",\\([0-9]+\\)\\s-+\\(?:Error\\|Warnin\\(g\\)\\)\\[[0-9]+\\]:" + \\(?:warnin\\(g\\)\\|informationa\\(l\\)\\)?" 1 2 3 (4 . 5)) + "^ *\\([0-9]+\\)\\.[ \t]+.*\n +\\(<-*>\n\\*\\*\\* \\(?:Error\\|Warnin\\(g\\)\\)\\)" + "^\\(?:Error\\|Warnin\\(g\\)\\):.*\n.* line \\([0-9]+\\) char\ + ": \\(?:ERROR\\|WARNIN\\(G\\)\\|REMAR\\(K\\)\\) \\(?:[[:alnum:] ]+, \\)?\ + (" --?o\\(?:utfile\\|utput\\)?[= ]\\(\\S +\\)" . 1) + "^[ \t]*\\(format\\)[ \t]*\\([a-zA-Z0-9_]+\\)?[ \t]*=[ \t]*$" ;FRMAT + (insert "\n[U]nknown conditionals: ") + (struc info file tags-file &optional view where) +STRUC is an `ebrowse-bs' structure (or a structure including that) +FILE is not taken out of STRUC here because the filename in STRUC + (ebrowse-bs-name struc))) + (setf ebrowse-temp-position-to-view struc + (ebrowse-find-pattern struc info)))) + "cexp" "log" "alog" "dlog" "clog" "log10" + '("ASCII" "addto" "also" "and" "angle" "atleast" "batchmode" + "bre~ak" "bti~tle" "c~hange" "cl~ear" "col~umn" "conn~ect" + "repf~ooter" "reph~eader" "r~un" "sav~e" "sho~w" "shutdown" + "copyc~ommit" "copytypecheck" "def~ine" "describe" +That is, all code between \"// synopsys translate_off\" and +\"// synopsys translate_on\" is highlighted using a different background color +option to intermix between input/output/inouts. + :help "Help on AUTOINOUT - adding inouts from cells"] + (eval-when-compile (verilog-regexp-words '("Outputs" "Inouts" "Inputs" "Interfaces" "Interfaced")))) + '("surefire" "0in" "auto" "leda" "rtl_synthesis" "synopsys" + (structres nil) + (setq structres (verilog-in-struct-nested-p)) + (cond ((not structres) nil) + ;;((and structres (equal (char-after) ?\})) (throw 'nesting 'struct-close)) + ((> structres 0) (throw 'nesting 'nested-struct)) + ((= structres 0) (throw 'nesting 'block)) + (list 'block structres)) +// Created : + (search-forward "") (replace-match "" t t) +Return an array of [outputs inouts inputs wire reg assign const gparam intf]." + (when (looking-at "[^\n]*\\(auto\\|synopsys\\)\\s +enum\\s +\\([a-zA-Z0-9_]+\\)") +Return an array of [ outputs inouts inputs ] signals for modules that are + (while (re-search-forward "\\s *(?\\s *// Inouts" end-inst-point t) + (if (looking-at "[^\n]*\\(auto\\|synopsys\\)\\s +enum\\s +\\([a-zA-Z0-9_]+\\)") + "// Inouts" + Inouts are not supported, as assignments must be unidirectional. + (verilog-auto-inst-port-list "// Inouts\n" + This ONLY detects inouts of AUTOINSTants (see `verilog-read-sub-decls'). + // Beginning of automatic inouts + // Inouts +from only extracting inouts starting with i: + (verilog-insert-indent "// Beginning of automatic inouts (from unused autoinst inouts)\n") + // Beginning of automatic in/out/inouts + (verilog-insert-indent "// Beginning of automatic in/out/inouts (from specific module)\n") + // Beginning of automatic in/out/inouts (from modport) + (verilog-insert-indent "// Beginning of automatic in/out/inouts (from modport)\n") +finds all inputs and inouts in the module, and if that input is not otherwise +First, parameters are built into an enumeration using the synopsys enum + \"synopsys enum\" may be used in place of \"auto enum\". + default: state_ascii_r = \"%Erro\"; + `verilog-auto-inout' for AUTOINOUT making hierarchy inouts + `verilog-auto-unused' for AUTOUNUSED unused inputs/inouts + ;; duluth: *E,430 (test.vhd,13): identifier (POSITIV) is not declared + ("GHDL" "ghdl" "-i --workdir=\\1 --ieee=synopsys -fexplicit " "make" "-f \\1" + ;; ERROR: test.vhd(14): Unknown identifier: positiv + ;; ProVHDL, Synopsys LEDA: provhdl -w work -f test.vhd + ;; Synopsys, VHDL Analyzer (sim): vhdlan -nc test.vhd + ("Synopsys" "vhdlan" "-nc -work \\1" "make" "-f \\1" + nil "mkdir \\1" "./" "work/" "Makefile" "synopsys" + ;; Synopsys, VHDL Analyzer (syn): vhdlan -nc -spc test.vhd + ("Synopsys Design Compiler" "vhdlan" "-nc -spc -work \\1" "make" "-f \\1" + ("Synopsys" "-vhdl87 \\2" "-f \\1 top_level" ((".*/datapath/.*" . "-optimize \\3") (".*_tb\\.vhd" . nil)))) +(defcustom vhdl-directive-keywords '("psl" "pragma" "synopsys") + (eq (vhdl-decision-query nil "(d)eclaration or (b)ody?") ?b)) + (eq (vhdl-decision-query nil "(d)eclaration or (b)ody?") ?b))) +;; Author: Alex Rezinsky +;; Thanks to Gord Wait for +;; Thanks to Paul Furnanz for XEmacs compatibility +;; Thanks to Kevin Rodgers for handling control characters +;; * Check `ps-paper-type': Sudhakar Frederick +;; Thanks to Kevin Rodgers for adding support for color and +;; Thanks to Avishai Yacobi, avishaiy@mcil.comm.mot.com, for writing the +;; Ralf Brown's Interrupt List. file INTERRUP.F, D-2138, Table 01400 + ("portugues" ; Portuguese mode + ("portugues" "pt_PT") +;; of the document. If WRAPP is true then wrap the search to the +(defun reftex-isearch-switch-to-next-file (crt-buf &optional wrapp) + (if wrapp +f / c Toggle follow mode / Toggle display of [c]ontext. + F t c Toggle: [F]ile borders, [t]able of contents, [c]ontext +\\`l' \\`i' \\`c' \\`F' Toggle display of [l]abels, [i]ndex, [c]ontext, [F]ile borders. + ;; OK, get the makro name + ("multline" ?e nil nil t) + "nbsp" "iexcl" "cent" "pound" "curren" "yen" "brvbar" "sect" +;; |ment\| +;; horizontale disigatan fenestron, si- horizontally split window similar to +;; ^jus anta^ue faris C-x C-f. file if you just did C-x C-f. +;; per C-x u kaj plue modifu la du continue to edit the two buffers. +;; Programistoj eble ^satus la eblecon Programmers might like the ability +;; iliajn finojn dum redaktado. won't see their end during editing. + "news:" "nfs://" "nntp://" "opaquelocktoken:" "pop://" "pres:" +;; Bob Weiner , + control whether we try to do keep-alives for our connections. + keep-alives to time out on cached documents with no known + ;; seconds for the keep-alives to time out on some servers. + msglen = ccl->quit_silently ? 0 : sprintf (msg, "\nCCL: Quitted."); + Quitted" to the generated text when + CCL program is quitted. */ + followings. */ + /* Followings are target of code detection. */ + /* Followings are NOT target of code detection. */ + /* The followings are extra attributes for each type. */ + Aadd, + case Aadd : accum += next; break; + case Aadd : mpz_add (mpz[0], *accum, *next); break; + case Aadd : overflow = INT_ADD_WRAPV (accum, next, &a); break; + return nargs == 1 ? a : arith_driver (Aadd, nargs, args, a); + /* The followings are used only for a font-entity and a font-object. */ + /* The followings are used only for a font-object. */ + /* We have already tried this element and the followings +/* According to RBIL (INTERRUP.A, V-1000), 160 is the maximum possible + hole between the first bloc and the end of malloc storage. */ + /* First bloc in this heap. */ + /* Last bloc in this heap. */ + struct heap *heap; /* Heap this bloc is in. */ +/* Find the bloc referenced by the address in PTR. Returns a pointer + callers that always expect a bloc to be returned should abort +/* Allocate a bloc of SIZE bytes and append it to the chain of blocs. + Returns a pointer to the new bloc, or zero if we couldn't allocate + /* Put this bloc on the doubly-linked list of blocs. */ +/* Calculate new locations of blocs in the list beginning with BLOC, +in the quitted window. + trough color and main window's background color. + means the truck and arrow colors, and "trough" means the + bg[ACTIVE] = "blue"@ @ @ @ # @r{Trough color.} +also for the trough of a scroll bar, i.e., @code{bg[ACTIVE] = "red"} +sets the scroll bar trough to red. Buttons that have been armed + (while (search-forward "nam" nil t) + (search-forward "som") + (search-forward "Nam") + (0 ":rando!~u@bivkhq8yav938.irc PRIVMSG tester :[09:17:51] u thur?") + (0.01 ":alice/foonet PRIVMSG #chan/foonet :bob: Sir, his wife some two months since fled from his house: her pretence is a pilgrimage to Saint Jaques le Grand; which holy undertaking with most austere sanctimony she accomplished; and, there residing, the tenderness of her nature became as a prey to her grief; in fine, made a groan of her last breath, and now she sings in heaven.") + "sav" + (if valu + (cons symb valu))) + (sample-text . "Er is een aantal manieren waarop je dit kan doen") +Tai Daeng (also known as Red Tai or Tai Rouge), + ;; Ith character and the followings matches precomposable + sprintf (css, "scrollbar trough { background-color: #%06x; }", + OFROM[I] is position of the earliest comment-starter seen + sprintf (css, "scrollbar trough { background-color: #%02x%02x%02x; }", + /* Note: "background" is the thumb color, and "trough" is the color behind + (uptodate t)) + (while (and files uptodate) + (setq uptodate nil))))) + uptodate))) + ptrdiff_t acount = 0; /* The # of consecutive times A won. */ + acount = 0; + ++acount; + if (acount >= min_gallop) + acount = k; + } while (acount >= GALLOP_WIN_MIN || bcount >= GALLOP_WIN_MIN); + ptrdiff_t acount = 0; /* The # of consecutive times A won. */ + ++acount; + if (acount >= min_gallop) + acount = 0; + acount = k; + } while (acount >= GALLOP_WIN_MIN || bcount >= GALLOP_WIN_MIN); + 154cd116be (origin/emacs-27) * admin/release-process: Adapt bug numbe... + a38da0d cc-mode.texi: Work around makeinfo alignment bug. Fix proble... + fd35804971 (origin/emacs-26) * doc/lispref/strings.texi (Case Convers... + be in line with the raison d'être of compiling printer which is speed. +mace +at that position, the result is @samp{fro!b}, with point between the +doesnt +minimize(xfit(gaus(a,b,c,d,x), x, [a,b,c], data)_5, d, guess) +where @code{gaus} represents the Gaussian model with background, +* Score Decays:: It can be useful to let scores wither away. +providers if they were to do this---their @emph{raison d'être} is to +While this design may be internally consistent with the raison d'être of +Finally, just to whet your appetite for what can be done with the +Wedler, Alan Williams, Roland Winkler, Hans-Christoph Wirth, Eli + "Some Place\nIn some City\nSome country.") +@c andrewm@@optimation.co.nz +Emacs Macht Alle Computer Schoen +GLib-GObject-WARNING **: /build/buildd/glib2.0-2.14.5/gobject/gsignal.c:1741: instance `0x8206790' has no handler with id `1234' at t-compilation-perl-gtk.pl line 3. + \quad \B{A}ction: I)ncrease, L)ower;\\* + (calc-unary-op "flor" 'calcFunc-ffloor arg) + (calc-unary-op "flor" 'calcFunc-floor arg))))) + ["de la Vertu" "du Génie" "du Travail" "de la Raison" "des Récompenses" + "de la Cuve" "de la Pomme de terre" "de l'Immortelle" + "de la Raison" "des Récompenses" "de la Révolution"] + (string-match "config\\(ure\\.\\(in\\|ac\\)\\|\\.status\\)?$" f) + ("\\.\\(dll\\|drv\\|386\\|vxd\\|fon\\|fnt\\|fot\\|ttf\\|grp\\)$" . t) + (insert (format "\nIn %s:\n" form))) + (format "\nIn macro %s:" (cadr form))) + (format "\nIn variable %s:" (cadr form))) + (insert "\nIn " package) + "\nIn order to use version `%s' of gnus, you will need to set\n" +znak/ow diakrytycznych. Funkcje te mo/zna pogrupowa/c nast/epuj/aco. + oraz ich warto/sci domy/slne s/a nast/epuj/ace: + (insert "\nIn " (emacs-version)) + "[n]ew messages; [']ticked messages; [s]earch;\n" + (?/ "Limit to [c]c, ran[g]e, fro[m], [s]ubject, [t]o; [w]iden") + (dictionary-send-command "show strat") +r(egion), s(tring), w(ord) ]." + "ncl" "nfd" "ngu" "nin" "nma" "nmu" "nod" "nop" "npp" "nsf" + (theyre they\'re (they are)) + (insert "\n[K]nown conditionals: ") + "[T]rue Face" "[F]alse Face" "[W]rite")) + "[ \t]*in\\(?:put\\|clude\\)[ \t]*{\\(.*%s\\)}"))) + (let ((siz (cond ((numberp size) + (and (< siz 0) + siz)) + "\tHow to report bugs and contribute improvements to Emacs\n" + "\tHow to obtain the latest version of Emacs\n" + (insert "\tHow to report bugs and contribute improvements to Emacs\n\n") + (insert "\tHow to get the latest version of GNU Emacs\n") + ("/mod\\(?:ules\\|probe\\)\\.conf" . "alias\\|in\\(?:clude\\|stall\\)\\|options\\|remove") + ("/dictionary\\.lst\\'" . "DICT\\|HYPH\\|THES") + ;; use-mark sizeA dateA sizeB dateB filename +;; nin, nil are placeholders. See ediff-make-new-meta-list-element in +;; Andrew McRae + * xmenu.c (apply_systemfont_to_menu): *childs was incorrectly used. +DEFUN ("catch", Fcatch, Scatch, 1, UNEVALLED, 0, + defsubr (&Scatch); +DEFUN ("elt", Felt, Selt, 2, 2, 0, + defsubr (&Selt); + (should (equal (string-truncate-left "longstring" 8) "...tring"))) + (0.06 ":joe!~u@6d9pasqcqwb2s.irc PRIVMSG #chan :mike: Lady, I will commend you to mine own heart.") + (perl "GLib-GObject-WARNING **: /build/buildd/glib2.0-2.14.5/gobject/gsignal.c:1741: instance `0x8206790' has no handler with id `1234' at t-compilation-perl-gtk.pl line 3." + (rxp "Error: Mismatched end tag: expected , got \nin unnamed entity at line 71 char 8 of file:///home/reto/test/group.xml" + (rxp "Warning: Start tag for undeclared element geroup\nin unnamed entity at line 4 char 8 of file:///home/reto/test/group.xml" + (string= (python-util-strip-string "\n str \nin \tg \n\r") "str \nin \tg")) + (insert "hel") + (format "\nIn function %s:" (cadr form))) + (t "\nIn top level expression:")))) + All suggested by Ned Ludd. +;; 2002-07-27 Added DELETESCRIPT. Suggested by Ned Ludd. +;; Ned Ludd. +To: Ned Freed +@strong{Te Deum} + If the termcap entry does not define the "ti" or "te" string, + and the "te" string is used to set it back on exit. + (te (solar-time-equation date ut))) + (setq ut (- ut te)) + (let ((te (semantic-tag-end aftertag))) + (when (not te) + (goto-char te) + ("te" . "Telugu") + ("\\.te?xt\\'" . text-mode) + ("\\.te?xi\\'" . texinfo-mode) + '(("\\.te?xt$\\|\\.doc$\\|read.*me\\|\\.c?$\\|\\.h$\\|\\.bat$\\|\\.asm$\\|makefile" "cat %s | sed 's/\r$//'") + ("\\.\\(te?xt\\|doc\\|c\\|h\\)$" "text/plain") + (not (string-match "\\.te?xi\\'" name)) ;; not .texi + (?\ተ "te") + (?\ቴ "tE") + (?\ጠ "Te") + (?\ጤ "TE") + (?\∃ "TE") + (?\て "te") + (?\テ "Te") + ("te" "Telugu" utf-8) ; Telugu + "సంకేతపదము" ; te + * org-clock.el (org-clocktable-steps): Allow ts and te to be day + issue face m te ts dt ov) + te nil ts nil) + te (match-string 3) + te (float-time (org-time-string-to-time te)) + dt (- te ts)))) + (setq tlend (or te tlend) tlstart (or ts tlstart)) + ts te s h m remove) + (setq te (org-insert-time-stamp (or at-time now) 'with-hm 'inactive)) + (org-time-string-to-time te) + te (org-duration-from-minutes (+ (* 60 h) m))) + (te (float-time + (dt (- (if tend (min te tend) te) + (te (plist-get params :tend)) + te (nth 1 cc))) + (unless (or block (and ts te)) + (te (plist-get params :tend)) + te (nth 1 cc))) + (when (integerp te) (setq te (calendar-gregorian-from-absolute te))) + (when (and te (listp te)) + (setq te (format "%4d-%02d-%02d" (nth 2 te) (car te) (nth 1 te)))) + (if te (setq te (org-matcher-time te))) + (org-clock-sum ts te + ts te h m s neg) + te (match-string 3)) + (apply #'encode-time (org-parse-time-string te))) +;; Emulate more complete preprocessor support for tbl (.TS/.TE) +This applies to text between .TE and .TS directives. + ;; ((looking-at "[te]") (setq c nil)) ; reject t(roff) and e(ven page) + (set-marker to (woman-find-next-control-line "TE")) + tty->TS_end_termcap_modes = tgetstr ("te", address); + const char *TS_end_termcap_modes; /* "te" */ + (0 ":joe!~u@286u8jcpis84e.irc PRIVMSG #chan :[09:19:19] mike: Chi non te vede, non te pretia.") + (0.1 ":mike!~u@wvys46tx8tpmk.irc PRIVMSG #chan :joe: Chi non te vede, non te pretia.") + "un moyen, et te trompant ainsi sur la route =C3=A0 suivre les voil=C3=A0 bi=\n" + "ent=C3=B4t qui te d=C3=A9gradent, car si leur musique est vulgaire ils te f=\n" + "abriquent pour te la vendre une =C3=A2me vulgaire.")) + "un moyen, et te trompant ainsi sur la route à suivre les voilà bi" + "entôt qui te dégradent, car si leur musique est vulgaire ils te f" + "abriquent pour te la vendre une âme vulgaire.")) + (".TS" . ".TE") + (define-key vhdl-template-map "te" #'vhdl-template-terminal) + ("te" "telugu") + (format "%s.TE\n" +:NR:te=\\E[47l:ti=\\E[47h\ + ;; don't define :te=\\E[2J\\E[?47l\\E8:ti=\\E7\\E[?47h\ + nil nil nil nil "FA" "C." "dP" "TE" "~TE" "/0" +(defalias 'woman2-TE #'woman2-fi) +;;; Preliminary table support (.TS/.TE) + ;; ".TE -- End of table code for the tbl processor." + 8804ac857b * src/buffer.c (syms_of_buffer) : Doc fix. (Bu... + da00a6f317 Fix Xaw widget text disappearing when built with cairo (bu... +2020-11-10 Andrew G Cohen +2020-09-23 Andrew G Cohen +2020-09-11 Andrew G Cohen +2020-09-10 Andrew G Cohen +2020-09-09 Andrew G Cohen +2020-09-07 Andrew G Cohen +2020-09-05 Andrew G Cohen +2020-08-29 Andrew G Cohen +2020-08-27 Andrew G Cohen + 121be3e118 ; * etc/NEWS: Remove temporary note on documentation. (Bu... + 224e8d1464 Make call_process call signal_after_change. This fixes bu... + 891f7de8ed * test/lisp/simple-tests.el: Full path to Emacs binary (bu... + 8b7c776 * lisp/simple.el (kill-do-not-save-duplicates): Doc fix. (Bu... + beb4eac * doc/lispref/display.texi (Showing Images): Fix a typo. (Bu... + 60b5c10 Provide more details in doc-string of 'delete-windows-on' (Bu... + 57bcdc7 Don't call XGetGeometry for frames without outer X window (Bu... + f64c277 (origin/emacs-26) Let bookmark-jump override window-point (Bu... + 4bd43b0 Increase max-lisp-eval-depth adjustment while in debugger (bu... + 55c9bb9f3c Fix comint-get-old-input-default for output field case (Bu... + e244fed Clarify that nil doesn't match itself as a cl-case clause (Bu... + e21f018 * doc/lispref/functions.texi (Inline Functions): Fix typo (Bu... + c59ecb005e New customization variable for python-mode indentation (Bu... + a36a090 * lisp/progmodes/verilog-mode.el (verilog-mode): Fix typo (Bu... + 98ca7d5 Improve edit-kbd-macro prompting in case of remapped keys (Bu... + 804b37ca63 Save and restore text-pixel height and width of frames (Bu... + 9715317dfd * lisp/dired.el (dired-find-alternate-file): Doc fix. (Bu... + 234b1e3864 Flymake backends must check proc obsoleteness in source bu... + dc8812829b Remove resizable attribute on macOS undecorated frames (bu... + 43fac3beae Make "unsafe directory" error message more informative (Bu... +2017-04-25 Andrew G Cohen +2017-04-23 Andrew G Cohen + dbb3410 python.el: Fix detection of native completion in Python 3 (bu... + 4b2d77d * lisp/emacs-lisp/macroexp.el (macroexp--expand-all): Fix (bu... + d59bcbc Handle mouse leaving initial window in `mouse-set-region' (Bu... + 586b213 * lisp/url/url.el (url-retrieve-synchronously): Doc fix. (Bu... + f3653ec * configure.ac (HAVE_MODULES): Treat gnu like gnu-linux. (Bu... +2010-12-15 Andrew Cohen +2010-12-14 Andrew Cohen +2010-12-13 Andrew Cohen +;; Author: Joe Wells + (define-key calc-mode-map "bu" 'calc-unpack-bits) + (ruby-mode "*.r[bu]" "*.rake" "*.gemspec" "*.erb" "*.haml" +2002-03-31 Andrew Cohen (tiny change) +2013-05-04 Andrew Cohen +2013-04-25 Andrew Cohen +2013-04-24 Andrew Cohen +2013-04-14 Andrew Cohen +2013-04-10 Andrew Cohen +2013-04-04 Andrew Cohen +2013-04-01 Andrew Cohen +2013-03-31 Andrew Cohen +2013-03-30 Andrew Cohen +2013-03-29 Andrew Cohen +2013-03-27 Andrew Cohen +2013-03-26 Andrew Cohen +2012-07-22 Andrew Cohen +2011-09-12 Andrew Cohen +2011-09-05 Andrew Cohen +2011-09-01 Andrew Cohen +2011-08-11 Andrew Cohen +2011-08-05 Andrew Cohen +2011-08-04 Andrew Cohen +2011-08-03 Andrew Cohen +2011-08-02 Andrew Cohen +2011-07-24 Andrew Cohen +2011-07-23 Andrew Cohen +2011-07-20 Andrew Cohen +2011-07-14 Andrew Cohen +2011-07-02 Andrew Cohen +2011-07-01 Andrew Cohen +2011-06-30 Andrew Cohen +2011-06-21 Andrew Cohen +2011-02-22 Andrew Cohen +2010-12-17 Andrew Cohen +2010-12-16 Andrew Cohen +2010-12-10 Andrew Cohen +2010-12-08 Andrew Cohen +2010-12-07 Andrew Cohen +2010-12-06 Andrew Cohen +2010-12-05 Andrew Cohen +2010-12-04 Andrew Cohen +2010-12-03 Andrew Cohen +2010-12-02 Andrew Cohen +2010-12-01 Andrew Cohen +2010-11-29 Andrew Cohen +2010-11-28 Andrew Cohen +2010-11-27 Andrew Cohen +2010-11-23 Andrew Cohen +2010-11-21 Andrew Cohen +2010-11-17 Andrew Cohen +2010-11-11 Andrew Cohen +2010-11-06 Andrew Cohen +2010-11-04 Andrew Cohen +2010-11-03 Andrew Cohen +2010-11-01 Andrew Cohen +2010-10-31 Andrew Cohen +2010-10-30 Andrew Cohen +2010-10-22 Andrew Cohen +2010-10-18 Andrew Cohen +2010-10-16 Andrew Cohen +2010-10-15 Andrew Cohen +2010-10-14 Andrew Cohen +2010-10-10 Andrew Cohen +2010-09-25 Andrew Cohen (tiny change) +2010-09-23 Andrew Cohen +2004-02-26 Andrew Cohen + . + syntax table here. Reported by Andrew Cohen . + ;; Fix by Mike Dugan . +;; Author: Andrew Cohen + (?\ቡ "bu") + (?\ぶ "bu") + (?\ブ "Bu") +;; Author: Joe Wells +;; Tue Mar 23 21:23:18 1993 Joe Wells (jbw at csd.bu.edu) +;; Mon Mar 22 21:20:56 1993 Joe Wells (jbw at bigbird.bu.edu) +;; Mon Mar 22 20:16:57 1993 Joe Wells (jbw at bigbird.bu.edu) +;; Mon Mar 22 00:46:12 1993 Joe Wells (jbw at bigbird.bu.edu) +;; Sun Mar 21 21:41:06 1993 Joe Wells (jbw at bigbird.bu.edu) +;; Sun Mar 21 14:39:38 1993 Joe Wells (jbw at bigbird.bu.edu) +;; Mon Feb 1 22:23:31 1993 Joe Wells (jbw at bigbird.bu.edu) +;; Mon Apr 6 23:59:09 1992 Joe Wells (jbw at bigbird.bu.edu) +;; Sun Apr 5 19:39:08 1992 Joe Wells (jbw at bigbird.bu.edu) +;; Sun Feb 2 14:45:24 1992 Joe Wells (jbw at bigbird.bu.edu) + " --------Unsent Message below:" ; from sendmail at BU +;; Mostly rewritten by Andrew Cohen from 2010 + ((string= "*" bullet) "\\(bu") + (gud-def gud-finish "bu\\t" "\C-f" "Finish executing current function.") + ("bu" "*" "\267" . t) ; bullet + '("+l" "#s" "#bu"))) + da6234e2df Make sure pixel sizes are zero when setting window size fo... + d38fd9229c0 Narrow scope of modification hook renabling in org-src fo... +is the last word in the buffer that starts with @samp{fo}. A numeric +after the first @samp{FO}; the @samp{F} in that @samp{FO} might not be +expression @samp{fo}, which matches only the string @samp{fo}. To do +expression. Thus, @samp{fo*} has a repeating @samp{o}, not a repeating +@samp{fo}. It matches @samp{f}, @samp{fo}, @samp{foo}, and so on. +$ ls -li fo* +(file-name-all-completions "fo" "") + nil t "fo") +Complete a foo: fo@point{} +and @samp{o} to get the regular expression @samp{fo}, which matches only +the string @samp{fo}. Still trivial. To do something more powerful, you +fo +@samp{fo#.el} matches @file{f.el}, @file{fo.el}, @file{foo.el}, etc. +@samp{fo#.el} matches @file{fo.el}, @file{foo.el}, @file{fooo.el}, + + + \futurelet\next\fo@t +M-f Fo Alias (keep?) +% | fo | + fo ;; List of final overloaded functions + (if (get s 'constant-flag) fo ov)) + (when fo + (mapc #'mode-local-print-binding fo)) + :eval (string-match-p "^[fo]+" "foobar")) + :eval (and (string-match "^\\([fo]+\\)b" "foobar") + ("fo" . "Faroese") + (?\ፎ "fo") + ("fo" . "Latin-1") ; Faroese + ("fo" "Faroe Islands") + M-f -> Fo Alias (keep?) + ;; quotes (for example), we end up completing "fo" to "foobar and throwing + ;; completing "fo" to "foO" when completing against "FOO" (bug#4219). + + + + (format " fo:min-width=\"%0.2fcm\"" (or width .2)))) + (concat (format " fo:min-height=\"%0.2fcm\"" (or height .2)) + + ;; Are we coalescing two tokens together, e.g. "fo o" + ;; user from completing "fo" to "foo/" when she +;; | | | fo | | fo | | | +page-height == bm + print-height + tm - fo - fh + ("fo+bar" nil "2nd") + ("fo*bar" nil "3rd"))) + (should (equal (ert--abbreviate-string "foo" 2 nil) "fo")) + (should (equal (string-limit "foo" 2) "fo")) + (should (equal (string-limit "foó" 10 nil 'utf-8) "fo\303\263")) + (should (equal (string-limit "foó" 3 nil 'utf-8) "fo")) + (should (equal (string-limit "foó" 4 nil 'utf-8) "fo\303\263")) + (should (equal (string-limit "foóa" 4 nil 'utf-8) "fo\303\263")) + (should (equal (string-limit "foóá" 4 nil 'utf-8) "fo\303\263")) + (should (equal (string-limit "foóa" 4 nil 'iso-8859-1) "fo\363a")) + (should (equal (string-limit "foóá" 4 nil 'iso-8859-1) "fo\363\341")) + (should (equal (string-limit "foó" 10 t 'utf-8) "fo\303\263")) + (should (equal (string-limit "foó" 4 t 'utf-8) "fo\303\263")) + (should (equal (string-limit "foóa" 4 t 'iso-8859-1) "fo\363a")) + (should (equal (string-limit "foóá" 4 t 'iso-8859-1) "fo\363\341")) + " fo")) + (("foo" 2 nil nil "...") . "fo") ;; XEmacs failure? + (non-directories '("/abso-folder/fo" "rela-folder/fo" + "/testdir/Mail/rela-folder/fo" + (format "+%s/fo" mh-test-rel-folder) nil 'lambda))))) + (format "+%s/fo" mh-test-abs-folder) nil 'lambda))))) + (should (equal (file-name-completion "fo" tmp-name) "foo.")) + (sort (file-name-all-completions "fo" tmp-name) #'string-lessp) + (should (equal (file-name-completion "fo" tmp-name) "foo")) + (equal (file-name-all-completions "fo" tmp-name) '("foo"))) + (should (equal (file-name-completion "fo" tmp-name) "foo")) + (should (equal (string-replace "fo" "bar" "lafofofozot") + (should (= (replace-regexp-in-region "fo+" "new" (point-min) (point-max)) + (should (= (replace-regexp-in-region "fo+" "new" (point-min) 14) + (should-error (replace-regexp-in-region "fo+" "new" (point-min) 30))) + (should (= (replace-regexp-in-region "Fo+" "new" (point-min)) + (should-not (yank-media--utf-16-p "fo")) + (should (equal (fns-tests--with-region base64-encode-region "fo") "Zm8=")) + (should (equal (base64-encode-string "fo") "Zm8=")) + (should (equal (fns-tests--with-region base64url-encode-region "fo") "Zm8=")) + (should (equal (fns-tests--with-region base64url-encode-region "fo" t) "Zm8")) + (should (equal (fns-tests--with-region base64url-encode-region (fns-tests--string-repeat "fo" 50) t) + (should (equal (base64url-encode-string "fo") "Zm8=")) + (should (equal (base64url-encode-string "fo" t) "Zm8")) + (should (equal (base64url-encode-string (fns-tests--string-repeat "fo" 50) t) (concat (fns-tests--string-repeat "Zm9mb2Zv" 16) "Zm9mbw"))) + (should (equal (base64-decode-string "Zm8=") "fo")) + (should (equal (base64-decode-string "Zm8" t) "fo")) + (should (equal (base64-decode-string "Zm8=" t) "fo")) + (fns-tests--string-repeat "fo" 50))) +@samp{o} (oblique), @samp{ri} (reverse italic), or @samp{ot} (other). +@deffn Method project-update-version :AFTER ot +The @code{:version} of the project @var{OT} has been updated. +@deffn Method project-remove-file :AFTER ot fnnd +Remove the current buffer from project target @var{OT}. +@deffn Method project-delete-target :AFTER ot +Delete the current target @var{OT} from its parent project. +@deffn Method project-edit-file-target :AFTER ot +Edit the target @var{OT} associated with this file. +@deffn Method project-add-file :AFTER ot file +Add the current buffer into project target @var{OT}. +- (font (nil phetsarath\ ot unicode-bmp))) + "Remove the current buffer from project target OT. +(cl-defmethod project-update-version ((ot ede-project)) + "The :version of the project OT has been updated. + (error "project-update-version not supported by %s" (eieio-object-name ot))) + ;; no so ea we ne se nw sw up do in ot + ;; no so ea we ne se nw sw up do in ot + (define-key vhdl-template-map "ot" #'vhdl-template-others) + { 200, { "italic" ,"i", "ot" }}, +(cl-defmethod oclosure-interactive-form ((ot oclosure-test)) + (let ((snd (oclosure-test--snd ot))) + (math-simplify-divisor): Only bind math-simplify-divisor-[nd]over + @result{} Nd + "s section[eg- emacs / p4-blame]:\nD source-dir: \nD output-dir: ") +(define-key ctl-x-map "nd" 'narrow-to-defun) + (aref ["th" "st" "nd" "rd"] (% n 10)))) + (let* ((nd date) + (setq nd (list (car date) (1+ (cadr date)) + (setq nd (list (car date) (1- (cadr date)) + (setq nd (calendar-gregorian-from-absolute ; date standardization + (calendar-absolute-from-gregorian nd))) + (list nd ut))) + (interactive "*P\nd") + (interactive "^p\nd") + (interactive "^p\nd\nd") + (if (string= "" nd) + (concat "\\`" (regexp-quote nd))) + (nd (file-name-nondirectory auto-save-list-file-prefix))) + ((= digit 2) "nd") + \"s section[eg- emacs / p4-blame]:\\nD source-dir: \\nD output-dir: \") + (interactive "D source directory: \nD output directory: ") +(defun mailcap-parse-mailcap-extras (st nd) + (narrow-to-region st nd) + ("New York" . "ny") ("North Carolina" . "nc") ("North Dakota" . "nd") + '(Lu Ll Lt Lm Lo Mn Mc Me Nd Nl No Pc Pd +(xsdre-def-derived-category 'N '(union Nd Nl No)) + "cm=^p=%+ %+ :cr=^p^a:le=^p^b:nd=^p^f:" +p(aragraph), P(age), f(unction in C/Pascal etc.), w(ord), e(nd of sentence), +;; - an ordinal suffix (st, nd, rd, th) for the year + - an ordinal suffix (st, nd, rd, th) for the year + '(", *\\(e\\(nd\\|rr\\)\\)\\> *\\(= *\\([0-9]+\\)\\)?" + "\\<\\(&&\\|and\\|b\\(egin\\|reak\\)\\|c\\(ase\\|o\\(mpile_opt\\|ntinue\\)\\)\\|do\\|e\\(lse\\|nd\\(case\\|else\\|for\\|if\\|rep\\|switch\\|while\\)?\\|q\\)\\|for\\(ward_function\\)?\\|g\\(oto\\|[et]\\)\\|i\\(f\\|nherits\\)\\|l[et]\\|mod\\|n\\(e\\|ot\\)\\|o\\(n_\\(error\\|ioerror\\)\\|[fr]\\)\\|re\\(peat\\|turn\\)\\|switch\\|then\\|until\\|while\\|xor\\|||\\)\\>") + "and\\|begin\\|case\\|do\\|e\\(lse\\|nd\\)\\|for\\|i[fn]\\|" + (interactive "P\nd") + (interactive "*p\nd") + Right (tty) = tgetstr ("nd", address); + "c\nd\n"))) + (insert "a\nb\nc\nd\ne\nf") + (insert "a\nb\nc\nd\ne") + (interactive "i\nd\nP") + * lisp/term.el (term-termcap-format): Fix a typo in the "ue=" +Urban Engberg (ue at cci.dk), + * quail/latin-post.el ("german-postfix"): Do not translate ue to + (define-key calc-mode-map "ue" 'calc-explain-units) + le ue pe) + (bindat--make :ue ,(bindat--toplevel 'unpack type) + Trivial patch from Urban Engberg . + ("ü" "ue") + ("Ü" "Ue") +;; AE -> Ä OE -> Ö UE -> Ü +;; ae -> ä oe -> ö ue -> ü ss -> ß +;; AEE -> AE OEE -> OE UEE -> UE +;; aee -> ae oee -> oe uee -> ue sss -> ss" +;; ("UE" ?Ü) +;; ("ue" ?ü) +;; ("UEE" "UE") +;; ("uee" "ue") + ("Uuml" "\\\"{U}" nil "Ü" "Ue" "Ü" "Ü") + ("uuml" "\\\"{u}" nil "ü" "ue" "ü" "ü") +:so=\\E[7m:se=\\E[m:us=\\E[4m:ue=\\E[m:md=\\E[1m:mr=\\E[7m:me=\\E[m\ + (("\"U" "\\\"U") . "Ue") ; "U,\"U -> Ue + (("\"u" "\\\"u") . "ue") ; "u,\"u -> ue +/^#undef INTERNAL_TERMINAL *$/s,^.*$,#define INTERNAL_TERMINAL "pc|bios|IBM PC with color display::co#80:li#25:Co#16:pa#256:km:ms:cm=:cl=:ce=::se=:so=:us=
    :ue=
:md=:mh=:mb=:mr=:me=::AB=:AF=:op=:", + * s/msdos.h (INTERNAL_TERMINAL): Add capabilities se, so, us, ue, + tty->TS_exit_underline_mode = tgetstr ("ue", address); +:bl=^G:do=^J:le=^H:ta=^I:se=\\E[27m:ue=\\E[24m\ + const char *TS_enter_underline_mode; /* "ue" -- end underlining. */ + ((equal (aref (car lines) 0) "fpr") + (let* ((fpr (epg-sub-key-fingerprint subkey)) + (candidates (epg-list-keys context fpr 'secret)) + (error "Found %d secret keys with same fingerprint %s" candno fpr)) + (fpr (epg-sub-key-fingerprint primary))) + (string-match-p (concat fingerprint "$") fpr) + (dolist (fpr signer-fprs nil) + fpr + (substring fpr -16 nil))) + (let ((fpr (if (eq protocol 'OpenPGP) + (should (string-match-p (concat "-r " fpr) match)))) + time. The reverse is true in Ireland, where standard time "IST" +(e.g., especially with l(ist) and k(ill)). +;; + ;; . + ("ist" "İstanbul, Turkey") + consistency (e.g., esp. with l(ist) and k(ill). + (?F "[l]ist; [v]isit folder;\n" + "[s]equences, [l]ist,\n" + "exec~ute" "exit" "get" "help" "ho~st" "[$]" "i~nput" "l~ist" + (calendar-standard-time-zone-name "IST") + "1972-07-01 05:29:59.999 +0530 (IST)")) + (let ((thi (if (math-lessp hi '(float -2 0)) + (math-float lo) (math-float thi) 'inf) + lo thi))) +Joakim Hove wrote @file{html2text.el}, a html to plain text converter. +Hove, Denis Howe, Lars Ingebrigtsen, Andrew Innes, Seiichiro Inoue, + * html2text.el: New file from Joakim Hove . +;; Author: Joakim Hove +Damon Anton Permezel wrote @file{hanoi.el}, an animated demonstration of +Jeff Peck, Damon Anton Permezel, Tom Perrine, William M. Perry, Per +;; Author: Damon Anton Permezel +; Author (a) 1985, Damon Anton Permezel +;; JAVE I preferred ecmascript-mode. +;;JAVE break needs labels +;JAVE this just instantiates a default empty ebrowse struct? +JAVE: stub for needs-refresh, because, how do we know if BROWSE files +;JAVE what it actually seems to do is split the original tree in "tables" associated with files + ;(semantic-fetch-tags) ;JAVE could this go here? +JAVE this thing would need to be recursive to handle java and csharp" +; (re-search-forward (concat "/\\*" indicator "\\*/")); JAVE this isn't generic enough for different languages + clen cidx) + (setq clen (length lao-consonant)) + str (if (= clen 1) + * bidi.c (bidi_level_of_next_char): clen should be EMACS_NT, not int. + if (ident_length == 6 && memcmp (ident_start, "defalt", 6) == 0) + if (! NILP (XCHAR_TABLE (table)->defalt)) + Fcopy_sequence (XCHAR_TABLE (table)->defalt)); +make_sub_char_table (int depth, int min_char, Lisp_Object defalt) + XSUB_CHAR_TABLE (table)->contents[i] = defalt; + set_char_table_defalt (copy, XCHAR_TABLE (table)->defalt); + val = tbl->defalt; + Lisp_Object defalt, bool is_uniprop, bool is_subtable) + defalt, is_uniprop); + val = defalt; + Lisp_Object defalt, bool is_uniprop) + defalt, is_uniprop, true); + defalt, is_uniprop, true); + tbl->defalt, is_uniprop, false); + tbl->defalt, is_uniprop, false); + val = XCHAR_TABLE (char_table)->defalt; + this = XCHAR_TABLE (top)->defalt; + ? (dp)->defalt \ +decode_env_path (const char *evarname, const char *defalt, bool empty) + path = ns_relocate (defalt); + path = defalt; + (name, defalt) + if (NILP (defalt)) + CHECK_STRING (defalt); + if (CHAR_TABLE_P (vector) && ! NILP (XCHAR_TABLE (vector)->defalt)) + (*elt_describer) (XCHAR_TABLE (vector)->defalt, args); + The size counts the defalt, parent, purpose, ascii, + Lisp_Object defalt; + val = tbl->defalt; + counts the ordinary slots and the top, defalt, parent, and purpose +verify (offsetof (struct Lisp_Char_Table, defalt) == header_size); + XCHAR_TABLE (table)->defalt = val; + string, and DEFALT is a string, read from DEFALT instead of VAL. */ +string_to_object (Lisp_Object val, Lisp_Object defalt) + if (STRINGP (defalt)) + else if (CONSP (defalt) && STRINGP (XCAR (defalt))) + Lisp_Object defalt) + val = string_to_object (val, CONSP (defalt) ? XCAR (defalt) : defalt); + DEFALT specifies the default value for the sake of history commands. + Lisp_Object histvar, Lisp_Object histpos, Lisp_Object defalt, + specbind (Qminibuffer_default, defalt); + val = read_minibuf_noninteractive (prompt, expflag, defalt); + else if (STRINGP (defalt)) + else if (CONSP (defalt) && STRINGP (XCAR (defalt))) + val = string_to_object (val, defalt); + Lisp_Object defalt = Fassq (prop, Vtext_property_default_nonsticky); + if (ignore_previous_character || (CONSP (defalt) && !NILP (XCDR (defalt)))) + val = dp->defalt; + Lisp_Object name, defalt; + defalt = current_buffer->directory; + newdir = SDATA (defalt); + val = defalt; + val = XCAR (defalt); + histstring = defalt; + histstring = XCAR (defalt); + EIEIO: Promote the CLOS behavior over the EIEIO-specific behavior + Change the implementation of `:initform` to better match the CLOS semantics, + (CLOS compatibility, Wish List): Adjust to new featureset. +@cindex CLOS +(@acronym{CLOS}), this support is based on @dfn{generic functions}. +The Emacs generic functions closely follow @acronym{CLOS}, including +use of similar names, so if you have experience with @acronym{CLOS}, + * eieio.texi (Accessing Slots, CLOS compatibility): Adjust wording + (Method Invocation, CLOS compatibility): + * eieio.texi (Class Values, CLOS compatibility): + EIEIO and CLOS from 'Building Classes' to here. + (Class Values, CLOS compatibility): Mention that + * eieio.texi (top): Make clear that EIEIO is not a full CLOS +to Emacs Lisp programmers. CLOS and Common Lisp streams are fine +a subset of CLOS functionality. @xref{Top, , Introduction, eieio, EIEIO}.) +The Common Lisp Object System (CLOS) is not implemented, +CLOS functionality. +bugs in @ede{}. A knowledge of Emacs Lisp, and some @eieio{}(CLOS) is +@ede{} uses @eieio{}, the CLOS package for Emacs, to define two object +concepts of the Common Lisp Object System (CLOS). It provides a +* CLOS compatibility:: What are the differences? +Lisp Object System (CLOS) and also differs from it in several aspects, +on the other hand you are already familiar with CLOS, you should be +aware that @eieio{} does not implement the full CLOS specification and +@pxref{CLOS compatibility}). +and methods using inheritance similar to CLOS. +Method definitions similar to CLOS. +Public and private classifications for slots (extensions to CLOS) +Customization support in a class (extension to CLOS) +Due to restrictions in the Emacs Lisp language, CLOS cannot be +setf. Here are some important CLOS features that @eieio{} presently +This CLOS method tag is non-functional. +will use the list as a value. This is incompatible with CLOS (which would +This option is in the CLOS spec, but is not fully compliant in @eieio{}. +This option is specific to Emacs, and is not in the CLOS spec. +what CLOS does when a monotonic class structure is defined. +Unsupported CLOS option. Enables the use of a different base class other +Unsupported CLOS option. Specifies a list of initargs to be used when +@xref{CLOS compatibility}, for more details on CLOS tags versus +The following accessors are defined by CLOS to reference or modify +This is not a CLOS function. It is therefore +of CLOS. +objects. In CLOS, this would be named @code{STANDARD-CLASS}, and that +This function takes arguments in a different order than in CLOS. +In @var{clos}, the argument list is (@var{class} @var{object} @var{slot-name}), but +@node CLOS compatibility +@chapter CLOS compatibility +CLOS. +CLOS supports the @code{describe} command, but @eieio{} provides +@eieio{} is an incomplete implementation of CLOS@. Finding ways to +improve the compatibility would help make CLOS style programs run +@c LocalWords: cb cdr charquote checkcache cindex CLOS +System (CLOS). It is used by the other CEDET packages. +CLOS class and slot documentation. + "Convert a list of CLOS class slot PARTLIST to `variable' tags." +C++ and CLOS can define methods that are not in the body of a class +Some languages such as C++ and CLOS permit the declaration of member +the class. C++ and CLOS both permit methods of a class to be defined +;; Standard CLOS name. +This may prevent classes from CLOS applications from being used with EIEIO +since EIEIO does not support all CLOS tags.") + ;; not by CLOS and is mildly inconsistent with the :initform thingy, so + ;; (but not CLOS) but is a bad idea (for one: it's slower). + "Abstractly modify a CLOS object." + "Instance of a CLOS class." +;; CLOS, the Common Lisp Object System. In addition, EIEIO also adds +The following are extensions on CLOS: +Options in CLOS not supported in EIEIO: + ;; test, so we can let typep have the CLOS documented behavior +;;; Handy CLOS macros +;; CLOS name, maybe? +The CLOS function `class-direct-superclasses' is aliased to this function." +The CLOS function `class-direct-subclasses' is aliased to this function." +;; Official CLOS functions. +;;; CLOS queries into classes and slots +;; FIXME: CLOS uses "&rest INITARGS" instead. +In CLOS, the argument list is (CLASS OBJECT SLOT-NAME), but +;;; Unimplemented functions from CLOS + ;; CLOS and EIEIO + ;; this works for SOS, STklos, SCOOPS, Meroon and Tiny CLOS. + ;; EIEIO's :initform is not 100% compatible with CLOS in +;; Also test behavior of `call-next-method'. From clos.org: + ;; CLOS form of make-instance + (interactive "p\nd\nd") + (interactive "p\nd") + (let (st nd pt) + (setq nd (match-beginning 0) + pt nd) + (setq nd (match-beginning 0) + (setq nd (match-beginning 0)))) + (setq nd (match-beginning 0))) + (or st nd)))) + (narrow-to-region (or st (point-min)) (or nd (point-max))) + (when nd + (goto-char nd) + (fortran-blink-match "e\\(nd[ \t]*if\\|lse\\([ \t]*if\\)?\\)\\b" + ;; FIXME: `foo a!nd bar' should transpose into `bar and foo'. + (make-directory nd t) + (speedbar-goto-this-file nd) + (let ((nd (file-name-nondirectory file))) + (concat "] \\(" (regexp-quote nd) +:nd=\\E[C:up=\\E[A:ce=\\E[K:ho=\\E[H:pt\ +(defun url-http-content-length-after-change-function (_st nd _length) + (funcall byte-count-to-string-function (- nd url-http-end-of-headers)) + (url-percentage (- nd url-http-end-of-headers) + (funcall byte-count-to-string-function (- nd url-http-end-of-headers)) + (url-percentage (- nd url-http-end-of-headers) + (if (> (- nd url-http-end-of-headers) url-http-content-length) +(defun url-http-chunked-encoding-after-change-function (st nd length) + url-http-chunked-counter st nd length) + (if (> nd (+ url-http-chunked-start url-http-chunked-length)) + nd)) +(defun url-http-wait-for-headers-change-function (_st nd _length) + (setq nd (- nd (url-http-clean-headers))))) + (when (> nd url-http-end-of-headers) + (marker-position url-http-end-of-headers) nd + (- nd url-http-end-of-headers)))) + ((> nd url-http-end-of-headers) + nd + (- nd url-http-end-of-headers))) + Lu, Ll, Lt, Lm, Lo, Mn, Mc, Me, Nd, Nl, No, Pc, Pd, Ps, Pe, Pi, Pf, Po, + const char *cm_right; /* right (nd) */ + (should (equal (ert-test-result-messages result) "a\nb\nc\nd\n"))))) + (insert "a\nb\nc\nd\n") + (insert "a\nb\nc\nd\n") + (insert "a\nb\nc\nd\n") + (insert "a\nb\nc\nd\n") + (insert "a\nb\nc\nd\n") + (should (string= (buffer-string) "Abc\nd efg\n(h ijk).")))) + (nd (read-directory-name "Create directory: " +DESCRIPTION:In this meeting\\, we will cover topics from product and enginee +@item @samp{.crate} --- +@cindex @file{crate} file archive suffix +@cindex file archive suffix @file{crate} +;; * ".crate" - Cargo (Rust) packages + "crate" ;; Cargo (Rust) packages. Not in libarchive testsuite. + ;; RFC5546 refers to uninvited attendees as "party crashers". +That includes both spelling (e.g., "behavior", not "behaviour") and + * doc/lispref/control.texi (Signalling Errors) + * doc/lispref/control.texi (Signalling Errors) +Re "behavior" vs "behaviour", etc. ++ [[https://protesilaos.com/codelog/2020-07-08-modus-themes-nuanced-colours/][Modus themes: major review of "nuanced" colours]] (2020-07-08) ++ [[https://protesilaos.com/codelog/2020-09-14-modus-themes-review-blues/][Modus themes: review of blue colours]] (2020-09-14) ++ [[https://protesilaos.com/codelog/2021-01-11-modus-themes-review-select-faint-colours/][Modus themes: review of select "faint" colours]] (2021-01-11) ++ [[https://protesilaos.com/codelog/2022-01-02-review-modus-themes-org-habit-colours/][Modus themes: review of the org-habit graph colours]] (2022-01-02) ++ [[https://protesilaos.com/codelog/2022-04-20-modus-themes-case-study-avy/][Modus themes: case study on Avy faces and colour combinations]] (2022-04-20) ++ [[https://protesilaos.com/codelog/2022-04-21-modus-themes-colour-theory/][Emacs: colour theory and techniques used in the Modus themes]] (2022-04-21) + * :- initialise + * :- finalise + "initialise", "finalise", "mutable", "module", "interface", "implementation", +;;; ( A cancelled ) Ignore this cache entry; + (.DEFAULT): Use $(FLAVOUR) instead of $@ for clarity. +1998-04-26 Justin Sheehy +1997-10-25 David S. Goldberg +;; Updated by the RIPE Network Coordination Centre. +;; Thanks to jond@mitre.org (Jonathan Doughty) for help with code for + (when (and ok tod (not (string-match "\\`DONE\\|CANCELLED" evt))) +"all" "analyse" "analyze" "and" "array" "asc" "as" "asymmetric" + \"VHDL Modelling Guidelines\". + {WSAECANCELLED , "Operation cancelled"}, /* not sure */ + {WSA_E_CANCELLED , "Operation already cancelled"}, /* really not sure */ + 2013-09-26 dup2, dup3: work around another cygwin crasher + cc3ad9a ; * CONTRIBUTE: Clarify rules for committing to release branc... +Paul Raines (raines at slack.stanford.edu), + \qquad date: b)efore, a)t, n)this,\\* +place an (I)nstall flag on the available version and a (D)elete flag + Improved verbiage of prompt. Aliases are now inserted "[b]efore" + or "[a]fter" the existing alias instead of "[i]nsert" or + "[b]efore or [a]fter: ") + (let* ((max (read-char "Number of [e]ntries [t]odos [T]ags [E]ffort? ")) + (mark_image): Move from allo.c. +Forward propagate immediate involed in assignments." ; FIXME: Typo. Involved or invoked? + (setq te (org-insert-time-stamp (or at-time now) 'with-hm 'inactive)) + (org-time-string-to-time te) + (te (org-time-string-to-seconds se)) + (dt (- (if tend (min te tend) te) + te (match-string 3)) + (setq s (- (org-time-string-to-seconds te) + ("te" :babel-ini-only "telugu" :polyglossia "telugu" :lang-name "Telugu") +2016-09-10 Toke Høiland-Jørgensen (tiny change) + Reported by Toke Høiland-Jørgensen . +2012-07-17 Toke Høiland-Jørgensen (tiny change) +2012-06-17 Toke Høiland-Jørgensen (tiny change) +(doctor-put-meaning toke 'toke) + "\\|" ; per toke.c + const struct sockaddr *to, int tolen); +2014-11-26 Toke Høiland-Jørgensen (tiny change) + ptrdiff_t tolen = strlen (key_symbols[i].to); + eassert (tolen <= fromlen); + memcpy (match, key_symbols[i].to, tolen); + memmove (match + tolen, match + fromlen, + len -= fromlen - tolen; + p = match + tolen; + const struct sockaddr * to, int tolen); + const struct sockaddr * to, int tolen) + int rc = pfn_sendto (SOCK_HANDLE (s), buf, len, flags, to, tolen); +Put dialogue in buffer." + "Function called by ], the ket. View registers and call ]]." +;; Matches a char which is a constituent of a variable or number, or a ket +(defun verilog-expand-vector-internal (bra ket) + "Given start brace BRA, and end brace KET, expand one line into many lines." + (regexp-quote ket) + (int-to-string (car vec)) ket sig-tail "\n")) + "Given start brace BRA, and end brace KET, expand one line into many lines." + m | mo | mot | moti | motif ) val=motif ;; + i | in | ino | inot | inoti | inotif | inotify ) val=inotify ;; +2001-04-23 Kahlil Hodgson + (funcall expect 20 "ingenuous"))))) + (0.1 ":joe!~u@kd7gmjbnbkn8c.irc PRIVMSG #chan :mike: Mehercle! if their sons be ingenuous, they shall want no instruction; if their daughters be capable, I will put it to them. But, vir sapit qui pauca loquitur. A soul feminine saluteth us.")) + (search-forward "return te") + "fn test() -> i32 { let test=3; return te; }")))) + ts te h m s neg) + te (match-string 3)) + (setq s (- (org-time-string-to-seconds te) + Rename from whitespace-skipping-for-quotes-not-ouside. + (whitespace-skipping-for-quotes-not-ouside) +Thread-Modell: posix +Thread-Modell: posix +(ert-deftest indent-sexp-cant-go () +(ert-deftest thunk-let-bound-vars-cant-be-set-test () + (mml-secure-cust-fpr-lookup context 'encrypt "sub@example.org"))) + (let ((p-e-fprs (mml-secure-cust-fpr-lookup + (p-s-fprs (mml-secure-cust-fpr-lookup + (let ((p-e-fprs (mml-secure-cust-fpr-lookup + (p-s-fprs (mml-secure-cust-fpr-lookup + (let ((s-e-fprs (mml-secure-cust-fpr-lookup + (s-s-fprs (mml-secure-cust-fpr-lookup +(ert-deftest doesnt-time-out () +(ert-deftest json-el-cant-serialize-this () + (should (equal (try-completion "B-hel" subvtable) + (should (equal (all-completions "B-hel" subvtable) '("-hello"))) + (should (equal (completion-boundaries "B-hel" subvtable +(ert-deftest ruby-regexp-doesnt-start-in-string () + Rename from wisent-inaccessable-symbols, fixing a misspelling. + ("calc-math" calcFunc-alog calcFunc-arccos + ( ?B 2 calcFunc-alog ) + (change-log-function-face, change-log-acknowledgement-face): + (bs-appearance) : Renamed from bs-appearence. + typo `fortran-strip-sqeuence-nos'. + * progmodes/fortran.el (fortran-strip-sqeuence-nos): Doc fix. + (fortran-strip-sqeuence-nos): Make arg optional. Fix regexp and +1999-06-01 Jae-youn Chung +doc/emacs/docstyle.texi:14: fied ==> field +(define-obsolete-variable-alias 'hfy-optimisations 'hfy-optimizations "25.1") +(define-obsolete-function-alias 'hfy-colour-vals #'hfy-color-vals "27.1") +(define-obsolete-function-alias 'hfy-colour #'hfy-color "27.1") +(define-obsolete-variable-alias 'eglot-ignored-server-capabilities + setenv ("TZ", "IST-02IDT-03,M4.1.6/00:00,M9.5.6/01:00", 0); + "kana-TA", "kana-CHI", "kana-TSU", "kana-TE", + (internal--after-with-selected-window): Fix typo seleted->selected. + * subr.el (internal--before-with-seleted-window) + (internal--after-with-seleted-window): New functions. + * follow.el (follow-inactive-menu): Rename from follow-deactive-menu. + * emacs-lisp/cconv.el (cconv-analyse-form): Warn use of ((λ ...) ...). + (feedmail-sendmail-f-doesnt-sell-me-out) + (feedmail-sendmail-f-doesnt-sell-me-out) + Respect feedmail-sendmail-f-doesnt-sell-me-out. + * terminal.el (te-get-char, te-tic-sentinel): +from server-external-socket-initialised, since it should be + * lisp/server.el: (server-external-socket-initialised): New + Rename from help-fns--analyse-function. + c-ambiguous-overloadable-or-identifier-prefices. Caller changed. + * lisp/progmodes/cc-langs.el (c-ambiguous-overloadable-or-identifier-prefices) + Rename from nndiary-last-occurence. + Rename from nndiary-next-occurence. All uses changed. + lisp/textmodes/flyspell.el (flyspell-ajust-cursor-point): Rename to + * test/file-organization.org: Rename from test/file-organisation.org. + character class (namely ‘fo’ leaving ‘o’ in the string), but since the + change-log-acknowledgement-face): + 9daf1cf * etc/NEWS: Improve wording of vc-git-log-output-coding-syste... + a05fb21 * lisp/emacs-lisp/package.el (package-install-selected-packag... + 5cc6919 Fix a caching bug, which led to inordinately slow c-beginnin... + (mml-secure-cust-usage-lookup, mml-secure-cust-fpr-lookup) + * test/file-organisation.org: New file. + ("test/file-organisation.org" . "file-organization.org") + `message-insert-formated-citation-line'. + info.addons = (\"hald-addon-acpi\") + deactive->inactive, inactivate->deactivate spelling fixes (Bug#10150) + (org-detach-overlay): Rename from `org-detatch-overlay'. + (change-log-acknowledgement): Remove "-face" suffix from face names. + (appt-visible): Rename from appt-visable. + (pascal-seperator-keywords): Renamed to pascal-separator-keywords. + mouse-union-first-prefered. + * sc.el (sc-consistent-cite-p): Renamed from sc-consistant-cite-p. + bibtex-name-alignement. + "d-elete, u-ndelete, x-punge, f-ind, o-ther window, R-ename, C-opy, h-elp")) + (erc-coding-sytem-for-target): Removed. + (erc-coding-sytem-for-target): New. +Paul Raines (raines at slac.stanford.edu), + "union" "unsafe" "use" "where" "while" (crate) (self) (super) + term-ansi-face-alredy-done. + (ebnf-syntactic): Change group name and tag from "ebnf-syntatic". + "ebnf-syntatic". + Rename from ucs-input-inactivate. + Rename from hangul-input-method-inactivate. + * terminal.el (te-create-terminfo): Use make-temp-file + (org-detatch-overlay, org-move-overlay, org-overlay-put): + 'gnus-score-find-favourite-words + 'nndiary-last-occurence + 'nndiary-next-occurence +(define-obsolete-function-alias 'org-truely-invisible-p +(define-obsolete-variable-alias 'eglot-ignored-server-capabilites + ("`fo" . "format" ) +(define-obsolete-function-alias 'rtree-normalise-range + `org-attch-delete'. Add a security query before deleting the + `org-toggel-region-headings'. + "3 Oktober 2000 16:30 multiline + "September" "Oktober" "November" "Dezember"]) + "de la Cognée" "de l'Ellébore" "du Brocoli" + 1fe596d89f (origin/emacs-27) Fix another compilation problem in a bui... + "du Buis" "du Lichen" "de l'If" + if (c == BIG) { /* caint get thar from here */ + Christoph Groth and Liu Xin . + "passord" ; nb + (should (equal (rfc6068-unhexify-string "caf%C3%A9") "café"))) + (equal (rfc6068-parse-mailto-url "mailto:user@example.org?subject=caf%C3%A9&body=caf%C3%A9") +;; Paul Lew suggested implementing fixed width + (TUNG@WAIF.MIT.EDU <8704130324.AA10879@prep.ai.mit.edu>) + (ruby-ts-mode "*.r[bu]" "*.rake" "*.gemspec" "*.erb" "*.haml" +(doctor-put-meaning cunt 'sexnoun) +(doctor-put-meaning cunts 'sexnoun) +(doctor-put-meaning skool 'school) + Add ".crate" to Tramp archive file suffixes. + * lisp/net/tramp-archive.el (tramp-archive-suffixes): Add ".crate". +2021-11-10 Benj (tiny change) + allow party crashers to respond to ical events + calling those respondents "party crashers". +2019-12-17 Antoine Kalmbach (tiny change) +2014-02-18 Matus Goljer +2014-02-13 Matus Goljer +2004-05-20 Magnus Henoch +2004-11-14 Magnus Henoch +2006-10-16 Magnus Henoch +2006-11-01 Magnus Henoch +2006-11-08 Magnus Henoch +2006-11-15 Magnus Henoch +2006-11-26 Magnus Henoch +2006-12-08 Magnus Henoch +2007-01-14 Magnus Henoch +2007-10-28 Magnus Henoch +2007-12-03 Magnus Henoch +2008-02-04 Magnus Henoch +2008-03-09 Magnus Henoch +2008-09-30 Magnus Henoch + (secnd (cdr (cadr dlist)))) + (car secnd))) ; fetch_date + secnd (cdr secnd)) + (car secnd))) ; Keep_flag + secnd (cdr secnd)) + (car secnd))) ; NOV_entry_position +@c LocalWords: DesBrisay Dcc devel dir dired docstring filll forw +Older versions of the themes provided options ~grayscale~ (or ~greyscale~) + > The requestor should delete [...] the property specified in the + We are not the requestor, so we should not be deleting this property + needs to remain available as the requestor will generally want to read + [t]ime [s]cheduled [d]eadline [c]reated cloc[k]ing + (message "Sparse tree: [r]egexp [t]odo [T]odo-kwd [m]atch [p]roperty +;; -grey Render in greyscale as 8bits/pixel. + -grey Render in greyscale as 8bits/pixel. + (if (looking-at "p\\(ublic\\|rotected\\|rivate\\)") + "\\=p\\(r\\(ivate\\|otected\\)\\|ublic\\)\\>[^_]" nil t) + "\\(p\\(r\\(ivate\\|otected\\)\\|ublic\\)\\|more\\)\\>" + * sysdep.c (WRITABLE): Renamed from WRITEABLE. +DEFUN ("cond", Fcond, Scond, 0, UNEVALLED, 0, + defsubr (&Scond); + /* XXX: who is wrong, the requestor or the implementation? */ + /* "Data" to send a requestor for a failed MULTIPLE subtarget. */ + /* This formula is from a paper titled `Colour metric' by Thiadmer Riemersma. + (0.1 ":mike!~u@286u8jcpis84e.irc PRIVMSG #chan :joe: Good gentleman, go your gait, and let poor volk pass. An chud ha' bin zwaggered out of my life, 'twould not ha' bin zo long as 'tis by a vortnight. Nay, come not near th' old man; keep out, che vor ye, or ise try whether your costard or my ballow be the harder. Chill be plain with you.") + db "create table if not exists test10 (col1 text, col2 blob, col3 numbre)") + (const :format "[%v] %t\n" :tag "Alias for `gray-background'" greyscale) +2008-09-11 Magnus Henoch + . +2006-10-07 Magnus Henoch +2006-09-07 Magnus Henoch + Reported by Magnus Henoch . +2005-09-24 Magnus Henoch +2005-09-17 Magnus Henoch +2005-09-10 Magnus Henoch +2005-08-09 Magnus Henoch +2008-10-16 Magnus Henoch +2008-10-01 Magnus Henoch +2008-07-02 Magnus Henoch +2008-04-23 Magnus Henoch +2008-03-28 Magnus Henoch + * bibtex.el (bibtex-entry): Add OPTkey/annote. If OPTcrossref set +;; :booktitle :month :annote :abstract + (:annote . "An annotation. It is not used by the standard bibliography styles, but may be used by others that produce an annotated bibliography.") + :annote (or (cdr (assoc "annote" entry)) "[no annotation]") + '(("annote" "Personal annotation (ignored)")) + (r2b-put-field "annote" r2bv-annote) +2006-10-29 Magnus Henoch +2006-10-28 Magnus Henoch +2006-10-27 Magnus Henoch +2006-10-12 Magnus Henoch +2006-10-11 Magnus Henoch +2006-10-09 Magnus Henoch +2008-10-16 Magnus Henoch +2007-12-31 Magnus Henoch +2007-12-05 Magnus Henoch + (ENUMABLE): Remove; no longer needed. + * lisp.h (ENUMABLE) [!_AIX]: Don't define to 0 merely because we're + * lisp.h (ENUMABLE, DEFINE_GDB_SYMBOL_ENUM): New macros. + * lisp.h (ENUMABLE, DEFINE_GDB_SYMBOL_ENUM): Delete macros. + * lisp.h (ENUMABLE, DEFINE_GDB_SYMBOL_ENUM): New macros. +2023-06-29 Andrew G Cohen +2023-05-07 Andrew G Cohen + C-x b fo + avoid failures due to MS-Windows "numeric tails" (mis)feature and +2022-04-07 Andrew G Cohen +2022-04-03 Andrew G Cohen +2022-03-22 Andrew G Cohen +2022-03-20 Andrew G Cohen +2022-03-17 Andrew G Cohen +2022-03-17 Andrew G Cohen +2022-03-04 Andrew G Cohen +2022-02-18 Andrew G Cohen +2022-02-18 Andrew G Cohen +2022-02-11 Andrew G Cohen +2022-02-08 Andrew G Cohen +2022-02-03 Andrew G Cohen +2021-12-21 Andrew G Cohen +2021-12-18 Andrew G Cohen + 6d5886e780 * test/lisp/repeat-tests.el (repeat-tests-call-b): Test fo... + 0771d8939a * etc/PROBLEMS: Mention problems with regexp matcher. (Bu... + 59df93e2dd * lisp/help.el (help--analyze-key): Add new arg BUFFER (bu... + 3832b983cf In Fdelete_other_windows_internal fix new total window siz... + 3a9d5f04fb Mention ffap-file-name-with-spaces in the ffap doc strin + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. +@item Unform +J. Otto Tennant, +extern struct servent *hes_getservbyname (/* char *, char * */); + struct servent *servent; + servent = hes_getservbyname (service, "tcp"); + if (servent) + servent = getservbyname (service, "tcp"); + if (servent) + struct servent *srv = getservbyname (service, protocol); +2003-04-10 Sebastian Tennant (tiny change) + Reported by Sebastian Tennant . + causing truncation of AUTOWIRE signals. Reported by Bruce Tennant. + Tennant. +1997-10-21 Jens Lautenbacher + unform Use unformatted display: add(a, mul(b,c)). + (memq calc-language '(nil flat unform)) + (memq calc-language '(nil flat unform))) + '(flat big unform)))) +;; Sebastian Tennant + (message "Mark as unread: (n)one / (a)ll / all (d)ownloaded articles? (n) ") + (wheight (window-height)) + (rest (- wheight pheight))) + (vai #xA500) + (vai\ . vai) + ts te h m s neg) + te (match-string 3)) + (setq s (- (org-time-string-to-seconds te) +(defun dun-listify-string (strin) + (while (setq end-pos (string-match "[ ,:;]" (substring strin pos))) + (substring strin pos end-pos)))))) +(defun dun-listify-string2 (strin) + (while (setq end-pos (string-search " " (substring strin pos))) + (substring strin pos end-pos)))))) +"any" "append" "as" "asc" "ascic" "async" "at_begin" "at_end" "audit" + "attribute" "(d)eclaration or (s)pecification?" t) ?s) + "quantity" "(f)ree, (b)ranch, or (s)ource quantity?" t))) + "Spacify table frame. + ("\\oint" . ?∮) +struct servent * sys_getservbyname (const char * name, const char * proto); + Supplement, Latin Extended-A/B, Vai, Supplemental Punctuation, Tai + Remove the "mis;tak-+;;" line from the code; apparently this + it->dpvec_char_len if dpend reached. + 3:000MSTRIN[0]STRIN[1]STRIN[2] + [2:000MSTRIN[0]STRIN[1]STRIN[2]] + Lisp_Object *dpvec, *dpend; + struct servent *svc_info +struct servent * (PASCAL *pfn_getservbyname) (const char * name, const char * proto); +struct servent * + struct servent * serv; + struct servent *srv = sys_getservbyname (service, protocol); + /* Reset bits 4 (Phonetic), 12 (Vai), 14 (Nko), 27 (Balinese). */ + DEFSYM (Qvai, "vai"); + it->dpend = v->contents + v->header.size; + it->dpend = default_invis_vector + 3; + it->dpend = v->contents + v->header.size; + it->dpend = it->dpvec + ctl_len; + if (it->dpvec + it->current.dpvec_index >= it->dpend) + if (it->dpend - it->dpvec > 0 /* empty dpvec[] is invalid */ + if (it->current.dpvec_index < it->dpend - it->dpvec - 1) + && it->dpvec + it->current.dpvec_index + 1 >= it->dpend))) + && it->dpvec + it->current.dpvec_index != it->dpend); +VERY VERY LONG STRIN | VERY VERY LONG STRIN + (ert-info ("Joined by bouncer to #foo, pal persent") + (ert-info ("Joined by bouncer to #chan@foonet, pal persent") + (ert-info ("Joined by bouncer to #chan@barnet, pal persent") diff --git a/admin/codespell/codespell.ignore b/admin/codespell/codespell.ignore new file mode 100644 index 00000000000..34de02e969b --- /dev/null +++ b/admin/codespell/codespell.ignore @@ -0,0 +1,41 @@ +acknowledgements +afile +ake +analogue +ans +bloc +blocs +callint +clen +crossreference +crossreferences +debbugs +dedented +dependant +doas +ede +grey +gud +ifset +inout +keypair +keyserver +keyservers +lightening +mapp +master +mimicks +mitre +msdos +ot +parm +parms +reenable +reenabled +requestor +sie +spawnve +statics +stdio +texline +typdef diff --git a/admin/codespell/codespell.rc b/admin/codespell/codespell.rc new file mode 100644 index 00000000000..9ef5f40369c --- /dev/null +++ b/admin/codespell/codespell.rc @@ -0,0 +1,4 @@ +[codespell] +skip=.git/*,*.elc,*.eln,*.gpg,*.gz,*.icns,*.jpg,*.kbx,*.key,*.pbm,*.png,*.rnc,*.so,*.tiff,*.tit,*.xml,*.xpm,*.zip,*random_seed +builtin=clear,rare,en-GB_to_en-US +quiet-level=35 diff --git a/admin/run-codespell b/admin/run-codespell new file mode 100755 index 00000000000..991b72073b2 --- /dev/null +++ b/admin/run-codespell @@ -0,0 +1,68 @@ +#!/bin/bash +### run-codespell - run codespell on Emacs + +## Copyright (C) 2023-2024 Free Software Foundation, Inc. + +## Author: Stefan Kangas + +## 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 . + +### Commentary: + +## Run codespell on the Emacs source tree. +## +## codespell 2.2.2 or later is recommended. Earlier versions had a +## bug where the line count was incorrect for files containing "^L" +## characters. + +source "${0%/*}/emacs-shell-lib" + +CODESPELL_DIR="${PD}/codespell" + +CODESPELL_RC="${CODESPELL_DIR}/codespell.rc" +CODESPELL_EXCLUDE="${CODESPELL_DIR}/codespell.exclude" +CODESPELL_IGNORE="${CODESPELL_DIR}/codespell.ignore" +CODESPELL_DICTIONARY="${CODESPELL_DIR}/codespell.dictionary" + +emacs_run_codespell () +{ + git ls-files |\ + grep -v -E -e '^(lib|m4)/.*' |\ + grep -v -E -e '^admin/(charsets|codespell|unidata)/.*' |\ + grep -v -E -e '^doc/misc/texinfo.tex$' |\ + grep -v -E -e '^etc/(AUTHORS|HELLO|publicsuffix.txt)$' |\ + grep -v -E -e '^etc/refcards/(cs|de|fr|pl|pt|sk)-.+.tex$' |\ + grep -v -E -e '^etc/tutorials/TUTORIAL\..+' |\ + grep -v -E -e '^leim/(MISC|SKK)-DIC/.*' |\ + grep -v -E -e '^lisp/language/ethio-util.el' |\ + grep -v -E -e '^lisp/ldefs-boot.el' |\ + grep -v -E -e '^lisp/leim/.*' |\ + grep -v -E -e '^test/lisp/net/puny-resources/IdnaTestV2.txt' |\ + grep -v -E -e '^test/manual/(etags|indent)/.*' |\ + grep -v -E -e '^test/src/regex-resources/.*' |\ + xargs codespell \ + --config "$CODESPELL_RC" \ + --exclude-file "$CODESPELL_EXCLUDE" \ + --ignore-words "$CODESPELL_IGNORE" \ + --disable-colors \ + --write-changes \ + $@ +} + +emacs_run_codespell +emacs_run_codespell --dictionary "$CODESPELL_DICTIONARY" + +exit 0 commit 115908469d30f8c40689673312f72b44c1631c6b Author: Michael Albinus Date: Sat Jan 20 10:45:27 2024 +0100 Sync with Tramp 2.6.3-pre (don't merge with master) * doc/misc/tramp.texi (Obtaining @value{tramp}): Mention the ELPA Tramp manual. (Remote processes): Adapt index. * doc/misc/trampver.texi: * lisp/net/trampver.el (tramp-version): Set to "2.6.3-pre". * lisp/net/tramp.el (tramp-local-host-regexp): Extend. Adapt :version. (tramp-signal-process): PROCESS can also be a string. (tramp-skeleton-directory-files): * lisp/net/tramp-cache.el (with-tramp-saved-file-property) (with-tramp-saved-file-properties) (with-tramp-saved-connection-property) (with-tramp-saved-connection-properties): Use `setf' but `setq' in macro. * lisp/net/tramp-compat.el (tramp-compat-funcall): Declare debug. * lisp/net/tramp-crypt.el (tramp-crypt-file-name-p): Exclude lock files. (tramp-crypt-file-name-handler-alist): Use `identity' for `abbreviate-file-name'. (tramp-crypt-add-directory, tramp-crypt-remove-directory): Adapt docstrings. (tramp-crypt-cleanup-connection): New defun. Add it to `tramp-cleanup-connection-hook' * lisp/net/tramp.el (tramp-skeleton-file-name-all-completions): Handle "." and "..". * lisp/net/tramp-adb.el (tramp-adb-handle-file-name-all-completions): * lisp/net/tramp-fuse.el (tramp-fuse-handle-file-name-all-completions): * lisp/net/tramp-gvfs.el (tramp-gvfs-handle-file-name-all-completions): Remove special handling of "." an "..". * lisp/net/tramp-sh.el (tramp-pipe-stty-settings): New defcustom. (tramp-sh-handle-make-process): Use it. (Bug#62093) * test/lisp/net/tramp-tests.el (tramp-test18-file-attributes): Adapt test. (tramp-test31-signal-process): Extend. diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi index 53a848ad652..3be88d1767a 100644 --- a/doc/misc/tramp.texi +++ b/doc/misc/tramp.texi @@ -318,7 +318,7 @@ behind the scenes when you open a file with @value{tramp}. @cindex GNU ELPA @vindex tramp-version -@value{tramp} is included as part of Emacs (since @w{Emacs 22.1}). +@value{tramp} is included as part of Emacs. @value{tramp} is also freely packaged for download on the Internet at @uref{https://ftp.gnu.org/gnu/tramp/}. The version number of @@ -340,10 +340,12 @@ versions packaged with Emacs can be retrieved by @end lisp @value{tramp} is also available as @uref{https://elpa.gnu.org, GNU -ELPA} package. Besides the standalone releases, further minor versions -of @value{tramp} will appear on GNU ELPA, until the next @value{tramp} -release appears. These minor versions have a four-number string, like -``2.4.5.1''. +ELPA} package. Besides the standalone releases, further minor +versions of @value{tramp} will appear on GNU ELPA, until the next +@value{tramp} release appears. These minor versions have a +four-number string, like ``2.4.5.1''. The manual of the latest +@value{tramp} ELPA package is located at +@uref{https://elpa.gnu.org/packages/doc/tramp.html}. @value{tramp} development versions are available on Git servers. Development versions contain new and incomplete features. The @@ -4108,7 +4110,7 @@ To open @command{powershell} as a remote shell, use this: @subsection Remote process connection type @vindex process-connection-type -@cindex tramp-process-connection-type +@vindex tramp-process-connection-type Asynchronous processes behave differently based on whether they use a pseudo tty or not. This is controlled by the variable @@ -4245,7 +4247,7 @@ called @code{tramp-connection-local-*-ps-profile} and @end group @end lisp -@cindex proced +@cindex @code{proced} @vindex proced-show-remote-processes If you want to see a listing of remote system processes when calling @code{proced}, set user option @code{proced-show-remote-processes} to diff --git a/doc/misc/trampver.texi b/doc/misc/trampver.texi index 794c54c112e..956d055fdaf 100644 --- a/doc/misc/trampver.texi +++ b/doc/misc/trampver.texi @@ -7,7 +7,7 @@ @c In the Tramp GIT, the version number and the bug report address @c are auto-frobbed from configure.ac. -@set trampver 2.6.2.29.2 +@set trampver 2.6.3-pre @set trampurl https://www.gnu.org/software/tramp/ @set tramp-bug-report-address tramp-devel@@gnu.org @set emacsver 26.1 diff --git a/lisp/net/tramp-adb.el b/lisp/net/tramp-adb.el index 144212a3aec..f2c50983a32 100644 --- a/lisp/net/tramp-adb.el +++ b/lisp/net/tramp-adb.el @@ -464,14 +464,10 @@ Emacs dired can't find files." (file-name-as-directory f) f)) (with-current-buffer (tramp-get-buffer v) - (append - ;; On some file systems like "sdcard", "." and ".." are - ;; not included. - '("." "..") - (mapcar - (lambda (l) - (and (not (string-match-p (rx bol (* blank) eol) l)) l)) - (split-string (buffer-string) "\n" 'omit)))))))))) + (mapcar + (lambda (l) + (and (not (string-match-p (rx bol (* blank) eol) l)) l)) + (split-string (buffer-string) "\n" 'omit))))))))) (defun tramp-adb-handle-file-local-copy (filename) "Like `file-local-copy' for Tramp files." diff --git a/lisp/net/tramp-cache.el b/lisp/net/tramp-cache.el index b17469ba908..fe6aeca6eb0 100644 --- a/lisp/net/tramp-cache.el +++ b/lisp/net/tramp-cache.el @@ -338,7 +338,7 @@ Preserve timestamps." (declare (indent 3) (debug t)) `(progn ;; Unify localname. Remove hop from `tramp-file-name' structure. - (setq ,key (tramp-file-name-unify ,key ,file)) + (setf ,key (tramp-file-name-unify ,key ,file)) (let* ((hash (tramp-get-hash-table ,key)) (cached (and (hash-table-p hash) (gethash ,property hash)))) (unwind-protect (progn ,@body) @@ -356,7 +356,7 @@ Preserve timestamps." (declare (indent 3) (debug t)) `(progn ;; Unify localname. Remove hop from `tramp-file-name' structure. - (setq ,key (tramp-file-name-unify ,key ,file)) + (setf ,key (tramp-file-name-unify ,key ,file)) (let* ((hash (tramp-get-hash-table ,key)) (values (and (hash-table-p hash) @@ -472,7 +472,7 @@ used to cache connection properties of the local machine." "Save PROPERTY, run BODY, reset PROPERTY." (declare (indent 2) (debug t)) `(progn - (setq ,key (tramp-file-name-unify ,key)) + (setf ,key (tramp-file-name-unify ,key)) (let* ((hash (tramp-get-hash-table ,key)) (cached (and (hash-table-p hash) (gethash ,property hash tramp-cache-undefined)))) @@ -489,7 +489,7 @@ used to cache connection properties of the local machine." PROPERTIES is a list of file properties (strings)." (declare (indent 2) (debug t)) `(progn - (setq ,key (tramp-file-name-unify ,key)) + (setf ,key (tramp-file-name-unify ,key)) (let* ((hash (tramp-get-hash-table ,key)) (values (mapcar diff --git a/lisp/net/tramp-compat.el b/lisp/net/tramp-compat.el index 66d312ad2f0..43de5509081 100644 --- a/lisp/net/tramp-compat.el +++ b/lisp/net/tramp-compat.el @@ -63,6 +63,7 @@ ;; avoid them in cases we know what we do. (defmacro tramp-compat-funcall (function &rest arguments) "Call FUNCTION with ARGUMENTS if it exists. Do not raise compiler warnings." + (declare (indent 1) (debug t)) `(when (functionp ,function) (with-no-warnings (funcall ,function ,@arguments)))) diff --git a/lisp/net/tramp-crypt.el b/lisp/net/tramp-crypt.el index a27ca875646..143327c123a 100644 --- a/lisp/net/tramp-crypt.el +++ b/lisp/net/tramp-crypt.el @@ -148,6 +148,8 @@ If NAME doesn't belong to an encrypted remote directory, return nil." (and tramp-crypt-enabled (stringp name) (not (tramp-compat-file-name-quoted-p name)) (not (string-suffix-p tramp-crypt-encfs-config name)) + ;; No lock file name. + (not (string-prefix-p ".#" (file-name-nondirectory name))) (dolist (dir tramp-crypt-directories) (and (string-prefix-p dir (file-name-as-directory (expand-file-name name))) @@ -157,7 +159,7 @@ If NAME doesn't belong to an encrypted remote directory, return nil." ;; New handlers should be added here. ;;;###tramp-autoload (defconst tramp-crypt-file-name-handler-alist - '(;; `abbreviate-file-name' performed by default handler. + '((abbreviate-file-name . identity) (access-file . tramp-crypt-handle-access-file) (add-name-to-file . tramp-handle-add-name-to-file) ;; `byte-compiler-base-file-name' performed by default handler. @@ -487,7 +489,7 @@ See `tramp-crypt-do-encrypt-or-decrypt-file'." ;;;###tramp-autoload (defun tramp-crypt-add-directory (name) - "Mark remote directory NAME for encryption. + "Mark expanded remote directory NAME for encryption. Files in that directory and all subdirectories will be encrypted before copying to, and decrypted after copying from that directory. File names will be also encrypted." @@ -511,7 +513,7 @@ directory. File names will be also encrypted." #'tramp-crypt-command-completion-p) (defun tramp-crypt-remove-directory (name) - "Unmark remote directory NAME for encryption. + "Unmark expanded remote directory NAME for encryption. Existing files in that directory and its subdirectories will be kept in their encrypted form." ;; (declare (completion tramp-crypt-command-completion-p)) @@ -859,6 +861,22 @@ WILDCARD is not supported." (tramp-compat-funcall 'unlock-file (tramp-crypt-encrypt-file-name filename)))) +(defun tramp-crypt-cleanup-connection (vec) + "Cleanup crypt ressources determined by VEC." + (let ((tramp-cleanup-connection-hook + (remove + #'tramp-crypt-cleanup-connection tramp-cleanup-connection-hook))) + (dolist (dir tramp-crypt-directories) + (when (tramp-file-name-equal-p vec (tramp-dissect-file-name dir)) + (tramp-cleanup-connection (tramp-crypt-dissect-file-name dir)))))) + +;; Add cleanup hooks. +(add-hook 'tramp-cleanup-connection-hook #'tramp-crypt-cleanup-connection) +(add-hook 'tramp-crypt-unload-hook + (lambda () + (remove-hook 'tramp-cleanup-connection-hook + #'tramp-crypt-cleanup-connection))) + (with-eval-after-load 'bookmark (add-hook 'bookmark-inhibit-context-functions #'tramp-crypt-file-name-p) diff --git a/lisp/net/tramp-fuse.el b/lisp/net/tramp-fuse.el index 885000406ea..47870c05911 100644 --- a/lisp/net/tramp-fuse.el +++ b/lisp/net/tramp-fuse.el @@ -108,17 +108,8 @@ (tramp-fuse-remove-hidden-files (all-completions filename - (append - (file-name-all-completions - filename (tramp-fuse-local-file-name directory)) - ;; Some storage systems do not return "." and "..". - (let (result) - (dolist (item '(".." ".") result) - (when (string-prefix-p filename item) - (catch 'match - (dolist (elt completion-regexp-list) - (unless (string-match-p elt item) (throw 'match nil))) - (setq result (cons (concat item "/") result))))))))))) + (file-name-all-completions + filename (tramp-fuse-local-file-name directory)))))) ;; This function isn't used. (defun tramp-fuse-handle-insert-directory diff --git a/lisp/net/tramp-gvfs.el b/lisp/net/tramp-gvfs.el index ecb0f922f54..2ccba85c238 100644 --- a/lisp/net/tramp-gvfs.el +++ b/lisp/net/tramp-gvfs.el @@ -1440,7 +1440,7 @@ If FILE-SYSTEM is non-nil, return file system attributes." filename (with-parsed-tramp-file-name (expand-file-name directory) nil (with-tramp-file-property v localname "file-name-all-completions" - (let ((result '("./" "../"))) + (let (result) ;; Get a list of directories and files. (dolist (item (tramp-gvfs-get-directory-attributes directory) diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el index 40e706c4a11..38925652376 100644 --- a/lisp/net/tramp-sh.el +++ b/lisp/net/tramp-sh.el @@ -2876,7 +2876,16 @@ the result will be a local, non-Tramp, file name." (tramp-run-real-handler #'expand-file-name (list localname)))))))))) -;;; Remote commands: +;;; Remote processes: + +(defcustom tramp-pipe-stty-settings "-icanon min 1 time 0" + "How to prevent blocking read in pipeline processes. +This is used in `make-process' with `connection-type' `pipe'." + :group 'tramp + :version "29.3" + :type '(choice (const :tag "Use size limit" "-icanon min 1 time 0") + (const :tag "Use timeout" "-icanon min 0 time 1") + string)) ;; We use BUFFER also as connection buffer during setup. Because of ;; this, its original contents must be saved, and restored once @@ -3087,12 +3096,21 @@ implementation will be used." ;; otherwise strings larger than 4096 ;; bytes, sent by the process, could ;; block, see termios(3) and Bug#61341. + ;; In order to prevent blocking read + ;; from pipe processes, "stty -icanon" + ;; is used. By default, it expects at + ;; least one character to read. When a + ;; process does not read from stdin, + ;; like magit, it should set a timeout + ;; instead. See`tramp-pipe-stty-settings'. + ;; (Bug#62093) ;; FIXME: Shall we rather use "stty raw"? - (if (tramp-check-remote-uname v "Darwin") - (tramp-send-command - v "stty -icanon min 1 time 0") - (tramp-send-command - v "stty -icrnl -icanon min 1 time 0"))) + (tramp-send-command + v (format + "stty %s %s" + (if (tramp-check-remote-uname v "Darwin") + "" "-icrnl") + tramp-pipe-stty-settings))) ;; `tramp-maybe-open-connection' and ;; `tramp-send-command-and-read' could ;; have trashed the connection buffer. diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 15a12000120..56b00bdeb42 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -569,11 +569,15 @@ host runs a restricted shell, it shall be added to this list, too." (tramp-compat-rx bos (| (literal tramp-system-name) - (| "localhost" "localhost4" "localhost6" "127.0.0.1" "::1")) + (| "localhost" "127.0.0.1" "::1" + ;; Fedora. + "localhost4" "localhost6" + ;; Ubuntu. + "ip6-localhost" "ip6-loopback")) eos) "Host names which are regarded as local host. If the local host runs a chrooted environment, set this to nil." - :version "29.1" + :version "29.3" :type '(choice (const :tag "Chrooted environment" nil) (regexp :tag "Host regexp"))) @@ -3071,19 +3075,27 @@ not in completion mode." (tramp-run-real-handler #'file-exists-p (list filename)))) (defmacro tramp-skeleton-file-name-all-completions - (_filename _directory &rest body) + (filename directory &rest body) "Skeleton for `tramp-*-handle-filename-all-completions'. BODY is the backend specific code." (declare (indent 2) (debug t)) `(tramp-compat-ignore-error file-missing (delete-dups (delq nil (let* ((case-fold-search read-file-name-completion-ignore-case) - (regexp (mapconcat #'identity completion-regexp-list "\\|")) - (result ,@body)) + (result (progn ,@body))) + ;; Some storage systems do not return "." and "..". + (when (tramp-tramp-file-p ,directory) + (dolist (elt '(".." ".")) + (when (string-prefix-p ,filename elt) + (setq result (cons (concat elt "/") result))))) (if (consp completion-regexp-list) ;; Discriminate over `completion-regexp-list'. (mapcar - (lambda (x) (and (stringp x) (string-match-p regexp x) x)) + (lambda (x) + (when (stringp x) + (catch 'match + (dolist (elt completion-regexp-list x) + (unless (string-match-p elt x) (throw 'match nil)))))) result) result)))))) @@ -3617,7 +3629,7 @@ BODY is the backend specific code." (with-parsed-tramp-file-name (expand-file-name ,directory) nil (tramp-barf-if-file-missing v ,directory (when (file-directory-p ,directory) - (setq ,directory + (setf ,directory (file-name-as-directory (expand-file-name ,directory))) (let ((temp (with-tramp-file-property v localname "directory-files" ,@body)) @@ -6895,7 +6907,14 @@ If PROCESS is a process object which contains the property `remote-pid', or PROCESS is a number and REMOTE is a remote file name, PROCESS is interpreted as process on the respective remote host, which will be the process to signal. +If PROCESS is a string, it is interpreted as process object with +the respective process name, or as a number. SIGCODE may be an integer, or a symbol whose name is a signal name." + (when (stringp process) + (setq process (or (get-process process) + (and (string-match-p (rx bol (+ digit) eol) process) + (string-to-number process)) + (signal 'wrong-type-argument (list #'processp process))))) (let (pid vec) (cond ((processp process) diff --git a/lisp/net/trampver.el b/lisp/net/trampver.el index 7817c520974..1647960ef0e 100644 --- a/lisp/net/trampver.el +++ b/lisp/net/trampver.el @@ -7,7 +7,7 @@ ;; Maintainer: Michael Albinus ;; Keywords: comm, processes ;; Package: tramp -;; Version: 2.6.2.29.2 +;; Version: 2.6.3-pre ;; Package-Requires: ((emacs "26.1")) ;; Package-Type: multi ;; URL: https://www.gnu.org/software/tramp/ @@ -40,7 +40,7 @@ ;; ./configure" to change them. ;;;###tramp-autoload -(defconst tramp-version "2.6.2.29.2" +(defconst tramp-version "2.6.3-pre" "This version of Tramp.") ;;;###tramp-autoload @@ -78,7 +78,7 @@ ;; Check for Emacs version. (let ((x (if (not (string-version-lessp emacs-version "26.1")) "ok" - (format "Tramp 2.6.2.29.2 is not fit for %s" + (format "Tramp 2.6.3-pre is not fit for %s" (replace-regexp-in-string "\n" "" (emacs-version)))))) (unless (string-equal "ok" x) (error "%s" x))) diff --git a/test/lisp/net/tramp-tests.el b/test/lisp/net/tramp-tests.el index 5f2a41909b7..465afa87bb0 100644 --- a/test/lisp/net/tramp-tests.el +++ b/test/lisp/net/tramp-tests.el @@ -3757,7 +3757,7 @@ This tests also `access-file', `file-readable-p', (should (eq (file-attribute-type attr) t))) ;; Cleanup. - (ignore-errors (delete-directory tmp-name1)) + (ignore-errors (delete-directory tmp-name1 'recursive)) (ignore-errors (delete-file tmp-name1)) (ignore-errors (delete-file tmp-name2)))))) @@ -5675,55 +5675,69 @@ If UNSTABLE is non-nil, the test is tagged as `:unstable'." (delete-exited-processes t) kill-buffer-query-functions command proc) - (dolist (sigcode '(2 INT)) - (unwind-protect - (with-temp-buffer - (setq command "trap 'echo boom; exit 1' 2; sleep 100" - proc (start-file-process-shell-command - (format "test1%s" sigcode) (current-buffer) command)) - (should (processp proc)) - (should (process-live-p proc)) - (should (equal (process-status proc) 'run)) - (should (numberp (process-get proc 'remote-pid))) - (should (equal (process-get proc 'remote-command) - (with-connection-local-variables - `(,shell-file-name ,shell-command-switch ,command)))) - (should (zerop (signal-process proc sigcode))) - ;; Let the process accept the signal. - (with-timeout (10 (tramp--test-timeout-handler)) - (while (accept-process-output proc 0 nil t))) - (should-not (process-live-p proc))) + ;; If PROCESS is a string, it must be a process name or a process + ;; number. Check error handling. + (should-error + (signal-process (md5 (current-time-string)) 0) + :type 'wrong-type-argument) + + ;; The PROCESS argument of `signal-process' can be a string. Test + ;; this as well. + (dolist + (func '(identity + (lambda (x) (format "%s" (if (processp x) (process-name x) x))))) + (dolist (sigcode '(2 INT)) + (unwind-protect + (with-temp-buffer + (setq command "trap 'echo boom; exit 1' 2; sleep 100" + proc (start-file-process-shell-command + (format "test1-%s" sigcode) (current-buffer) command)) + (should (processp proc)) + (should (process-live-p proc)) + (should (equal (process-status proc) 'run)) + (should (numberp (process-get proc 'remote-pid))) + (should + (equal (process-get proc 'remote-command) + (with-connection-local-variables + `(,shell-file-name ,shell-command-switch ,command)))) + (should (zerop (signal-process (funcall func proc) sigcode))) + ;; Let the process accept the signal. + (with-timeout (10 (tramp--test-timeout-handler)) + (while (accept-process-output proc 0 nil t))) + (should-not (process-live-p proc))) - ;; Cleanup. - (ignore-errors (kill-process proc)) - (ignore-errors (delete-process proc))) + ;; Cleanup. + (ignore-errors (kill-process proc)) + (ignore-errors (delete-process proc))) - (unwind-protect - (with-temp-buffer - (setq command "trap 'echo boom; exit 1' 2; sleep 100" - proc (start-file-process-shell-command - (format "test2%s" sigcode) (current-buffer) command)) - (should (processp proc)) - (should (process-live-p proc)) - (should (equal (process-status proc) 'run)) - (should (numberp (process-get proc 'remote-pid))) - (should (equal (process-get proc 'remote-command) - (with-connection-local-variables - `(,shell-file-name ,shell-command-switch ,command)))) - ;; `signal-process' has argument REMOTE since Emacs 29. - (with-no-warnings + (unwind-protect + (with-temp-buffer + (setq command "trap 'echo boom; exit 1' 2; sleep 100" + proc (start-file-process-shell-command + (format "test2-%s" sigcode) (current-buffer) command)) + (should (processp proc)) + (should (process-live-p proc)) + (should (equal (process-status proc) 'run)) + (should (numberp (process-get proc 'remote-pid))) (should - (zerop - (signal-process - (process-get proc 'remote-pid) sigcode default-directory)))) - ;; Let the process accept the signal. - (with-timeout (10 (tramp--test-timeout-handler)) - (while (accept-process-output proc 0 nil t))) - (should-not (process-live-p proc))) + (equal (process-get proc 'remote-command) + (with-connection-local-variables + `(,shell-file-name ,shell-command-switch ,command)))) + ;; `signal-process' has argument REMOTE since Emacs 29. + (with-no-warnings + (should + (zerop + (signal-process + (funcall func (process-get proc 'remote-pid)) + sigcode default-directory)))) + ;; Let the process accept the signal. + (with-timeout (10 (tramp--test-timeout-handler)) + (while (accept-process-output proc 0 nil t))) + (should-not (process-live-p proc))) - ;; Cleanup. - (ignore-errors (kill-process proc)) - (ignore-errors (delete-process proc)))))) + ;; Cleanup. + (ignore-errors (kill-process proc)) + (ignore-errors (delete-process proc))))))) (ert-deftest tramp-test31-list-system-processes () "Check `list-system-processes'." commit 3a541b25df5b46439d0cec33e9d276b210e6ca41 Author: Eli Zaretskii Date: Sat Jan 20 09:18:27 2024 +0200 Update Polish translation of tutorial * etc/tutorials/TUTORIAL.pl: Update text about scroll bar. New text by Christopher Yeleighton . (Bug#68599) Copyright-paperwork-exempt: yes diff --git a/etc/tutorials/TUTORIAL.pl b/etc/tutorials/TUTORIAL.pl index 6f2565f6855..462fdcd835e 100644 --- a/etc/tutorials/TUTORIAL.pl +++ b/etc/tutorials/TUTORIAL.pl @@ -218,17 +218,11 @@ To powinno było przewinąć ekran do góry o 8 linii. Jeśli chciałbyś przewinąć ekran w dół, to powinieneś podać argument przed poleceniem M-v. -Jeśli pracujesz w systemie z okienkowym trybem graficznym, jak X11 -lub MS-Windows, to prawdopodobnie po lewej stronie okna Emacsa znajduje -się prostokątny obszar nazywany po angielsku "scrollbar", a po polsku -suwakiem. Za jego pomocą możesz przewijać tekst, używając do tego myszy. +W środowisku graficznym, takim jak X lub Microsoft Windows, po jednej +stronie okna Emacs znajdzie się długi prostokątny obszar, nazywany +prowadnicą przewijacza.  Można przewijać treść, stukając myszą w prowadnicę. ->> Spróbuj nacisnąć środkowy klawisz myszy u góry podświetlonego - obszaru na suwaku. To powinno przewinąć tekst do miejsca - określonego przez wysokość, na której nacisnąłeś klawisz myszy. - ->> Przesuń mysz do miejsca oddalonego od górnego końca suwaka o mniej - więcej trzy linie i naciśnij lewy klawisz myszy kilka razy. +Można również używać kółeczka myszy do przewijania, jeśli jest dostępne. * GDY EMACS JEST ZABLOKOWANY commit 6df731431ada23e7ca6b0d76bc91766ab3b8b534 Author: Michael Albinus Date: Fri Jan 19 18:21:37 2024 +0100 * doc/misc/gnus.texi (Summary Mail Commands): Fix command name. diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi index a862b7afad0..232bb9ded3b 100644 --- a/doc/misc/gnus.texi +++ b/doc/misc/gnus.texi @@ -5832,7 +5832,7 @@ message to the mailing list, and include the original message @kindex S v @r{(Summary)} @findex gnus-summary-very-wide-reply Mail a very wide reply to the author of the current article -(@code{gnus-summary-wide-reply}). A @dfn{very wide reply} is a reply +(@code{gnus-summary-very-wide-reply}). A @dfn{very wide reply} is a reply that goes out to all people listed in the @code{To}, @code{From} (or @code{Reply-To}) and @code{Cc} headers in all the process/prefixed articles. This command uses the process/prefix convention. commit 409bb8eb24320f5c9924596841cc81e389617e29 Author: Manuel Giraud Date: Fri Jan 19 10:55:32 2024 +0100 ; * doc/misc/gnus.texi (Scoring): Typo (bug#68581). diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi index efbcb5b1294..a862b7afad0 100644 --- a/doc/misc/gnus.texi +++ b/doc/misc/gnus.texi @@ -19802,7 +19802,7 @@ locally stored articles. @chapter Scoring @cindex scoring -Other people use @dfn{kill files} (@pxref{Kill Files}, but we here at +Other people use @dfn{kill files} (@pxref{Kill Files}), but we here at Gnus Towers like scoring better than killing, so we'd rather switch than fight. Scoring and score files processing are more powerful and faster than processing of kill files. Scoring also does something commit 25734dd40c1833841dc6c4ddd4a210927e73b286 Author: Arash Esbati Date: Fri Jan 19 00:38:25 2024 +0100 ; Delete pre-release remainder in NEWS.27 diff --git a/etc/NEWS.27 b/etc/NEWS.27 index 2617e1a48f4..080568433c2 100644 --- a/etc/NEWS.27 +++ b/etc/NEWS.27 @@ -28,7 +28,6 @@ If set to a non-nil value which isn't a function, resize the mini frame using the new function 'fit-mini-frame-to-buffer' which won't skip leading or trailing empty lines of the buffer. -+++ ** Update IRC-related references to point to Libera.Chat. In June 2021, the Free Software Foundation and the GNU Project moved their official IRC channels from the Freenode network to Libera.Chat commit 4e500d9d5ab56e0345557e7ab251c997ebebf4c3 Author: Eli Zaretskii Date: Thu Jan 18 05:30:52 2024 -0500 Bump Emacs version to 29.2.50. * README: * configure.ac: * nt/README.W32: * msdos/sed2v2.inp: * etc/NEWS: Bump Emacs version to 29.2.50. diff --git a/README b/README index 1ec182e7497..a968b29f71c 100644 --- a/README +++ b/README @@ -2,7 +2,7 @@ Copyright (C) 2001-2024 Free Software Foundation, Inc. See the end of the file for license conditions. -This directory tree holds version 29.2 of GNU Emacs, the extensible, +This directory tree holds version 29.2.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 diff --git a/configure.ac b/configure.ac index 8c98e8153f2..78d5475f75a 100644 --- a/configure.ac +++ b/configure.ac @@ -23,7 +23,7 @@ dnl along with GNU Emacs. If not, see . AC_PREREQ([2.65]) dnl Note this is parsed by (at least) make-dist and lisp/cedet/ede/emacs.el. -AC_INIT([GNU Emacs], [29.2], [bug-gnu-emacs@gnu.org], [], +AC_INIT([GNU Emacs], [29.2.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, diff --git a/etc/NEWS b/etc/NEWS index 1a0e1f37366..06086e9bdfb 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -15,6 +15,33 @@ in older Emacs versions. You can narrow news to a specific version by calling 'view-emacs-news' with a prefix argument or by typing 'C-u C-h C-n'. + +* Installation Changes in Emacs 29.3 + + +* Startup Changes in Emacs 29.3 + + +* Changes in Emacs 29.3 + + +* Editing Changes in Emacs 29.3 + + +* Changes in Specialized Modes and Packages in Emacs 29.3 + + +* New Modes and Packages in Emacs 29.3 + + +* Incompatible Lisp Changes in Emacs 29.3 + + +* Lisp Changes in Emacs 29.3 + + +* Changes in Emacs 29.3 on Non-Free Operating Systems + * Installation Changes in Emacs 29.2 diff --git a/msdos/sed2v2.inp b/msdos/sed2v2.inp index 9790cf55f3d..8ca5bbf74d9 100644 --- a/msdos/sed2v2.inp +++ b/msdos/sed2v2.inp @@ -67,7 +67,7 @@ /^#undef PACKAGE_NAME/s/^.*$/#define PACKAGE_NAME ""/ /^#undef PACKAGE_STRING/s/^.*$/#define PACKAGE_STRING ""/ /^#undef PACKAGE_TARNAME/s/^.*$/#define PACKAGE_TARNAME ""/ -/^#undef PACKAGE_VERSION/s/^.*$/#define PACKAGE_VERSION "29.2"/ +/^#undef PACKAGE_VERSION/s/^.*$/#define PACKAGE_VERSION "29.2.50"/ /^#undef SYSTEM_TYPE/s/^.*$/#define SYSTEM_TYPE "ms-dos"/ /^#undef HAVE_DECL_GETENV/s/^.*$/#define HAVE_DECL_GETENV 1/ /^#undef SYS_SIGLIST_DECLARED/s/^.*$/#define SYS_SIGLIST_DECLARED 1/ diff --git a/nt/README.W32 b/nt/README.W32 index 00ec926ef7f..a450c2e84f0 100644 --- a/nt/README.W32 +++ b/nt/README.W32 @@ -1,7 +1,7 @@ Copyright (C) 2001-2024 Free Software Foundation, Inc. See the end of the file for license conditions. - Emacs version 29.2 for MS-Windows + Emacs version 29.2.50 for MS-Windows This README file describes how to set up and run a precompiled distribution of the latest version of GNU Emacs for MS-Windows. You commit ef01b634d219bcceda17dcd61024c7a12173b88c (tag: refs/tags/emacs-29.2) Author: Eli Zaretskii Date: Thu Jan 18 05:17:44 2024 -0500 ; Regenerate lisp/ldefs-boot.el and etc/AUTHORS for 29.2. diff --git a/etc/AUTHORS b/etc/AUTHORS index 5fc54f1909f..193a3db6760 100644 --- a/etc/AUTHORS +++ b/etc/AUTHORS @@ -45,7 +45,7 @@ Adam Hupp: changed emacs.py emacs2.py emacs3.py gud.el progmodes/python.el Adam Porter: changed tab-line.el cl-macs.el map.el control.texi - map-tests.el pcase-tests.el tab-bar.el + map-tests.el pcase-tests.el tab-bar.el variables.texi Adam Sjøgren: changed mml2015.el shr.el spam.el xterm.c blink.xpm braindamaged.xpm cry.xpm dead.xpm evil.xpm forced.xpm frown.xpm @@ -537,7 +537,7 @@ Aubrey Jaffer: changed info.el unexelf.c August Feng: changed bookmark.el -Augustin Chéneau: changed treesit.el +Augustin Chéneau: changed c-ts-mode.el treesit.el Augusto Stoffel: co-wrote ansi-osc.el and changed progmodes/python.el isearch.el eglot.el comint.el eldoc.el @@ -555,6 +555,8 @@ Axel Boldt: changed ehelp.el electric.el Axel Svensson: changed characters.el display.texi x-win.el +Aymeric Agon-Rambosson: changed indent.el + Bahodir Mansurov: changed quail/cyrillic.el Bake Timmons: changed gnus.texi mail-source.el @@ -984,7 +986,7 @@ Christoph Dittmann: changed ox-beamer.el Christophe de Dinechin: co-wrote ns-win.el -Christophe Deleuze: changed icalendar.el image-dired.el +Christophe Deleuze: changed ange-ftp.el icalendar.el image-dired.el Christoph Egger: changed configure.ac @@ -1016,7 +1018,8 @@ Christopher Thorne: changed dired.el progmodes/grep.el Christopher Wellons: changed emacs-lisp/cl-lib.el hashcash.el viper-cmd.el viper-ex.el viper-init.el viper.el -Christophe Troestler: changed gnus-icalendar.el epg.el newcomment.el +Christophe Troestler: changed rust-ts-mode.el gnus-icalendar.el epg.el + newcomment.el Christoph Göttschkes: changed make-mode.el @@ -1186,6 +1189,9 @@ Daniel LaLiberte: wrote edebug.el isearch.el and co-wrote hideif.el and changed cust-print.el mlconvert.el eval-region.el +Daniel Laurens Nicolai: changed doc-view.el facemenu.el files.el + misc.texi re-builder.el searching.texi + Daniel Lenski: changed speedbar.el Daniel Lopez: changed progmodes/compile.el @@ -1196,7 +1202,7 @@ Daniel Martín: changed c-ts-mode.el nsterm.m shortdoc.el ns-win.el simple.el diff-mode-tests.el erc.texi files.el files.texi indent.erts msdos-xtra.texi progmodes/python.el search.texi .lldbinit basic.texi c-ts-mode-tests.el cmacexp.el compilation.txt compile-tests.el - compile.texi configure.ac and 46 other files + compile.texi configure.ac and 47 other files Daniel McClanahan: changed lisp-mode.el @@ -1475,6 +1481,9 @@ and changed complete.el Denis Stünkel: changed ibuf-ext.el +Denis Zubarev: changed treesit-tests.el progmodes/python.el + python-tests.el treesit.c + Deniz Dogan: changed rcirc.el simple.el css-mode.el TUTORIAL.sv commands.texi erc-backend.el erc-log.el erc.el image.el iswitchb.el lisp-mode.el process.c progmodes/python.el quickurl.el rcirc.texi @@ -1564,10 +1573,10 @@ Dmitry Gorbik: changed org.el Dmitry Gutov: wrote elisp-mode-tests.el jit-lock-tests.el json-tests.el vc-hg-tests.el xref-tests.el and changed xref.el ruby-mode.el project.el vc-git.el ruby-ts-mode.el - elisp-mode.el etags.el ruby-mode-tests.el js.el vc.el package.el - vc-hg.el symref/grep.el dired-aux.el ruby-ts-mode-tests.el simple.el - progmodes/python.el treesit.el log-edit.el ruby-ts.rb rust-ts-mode.el - and 157 other files + elisp-mode.el js.el etags.el ruby-mode-tests.el vc.el package.el + vc-hg.el symref/grep.el treesit.el dired-aux.el progmodes/python.el + ruby-ts-mode-tests.el simple.el typescript-ts-mode.el log-edit.el + ruby-ts.rb and 158 other files Dmitry Kurochkin: changed isearch.el @@ -1668,7 +1677,7 @@ and co-wrote help-tests.el and changed xdisp.c display.texi w32.c msdos.c simple.el w32fns.c files.el fileio.c keyboard.c emacs.c text.texi configure.ac w32term.c dispnew.c frames.texi w32proc.c files.texi xfaces.c window.c - dispextern.h lisp.h and 1334 other files + dispextern.h lisp.h and 1341 other files Eliza Velasquez: changed server.el @@ -2087,6 +2096,8 @@ George D. Plymale Ii: changed esh-cmd.el George Kettleborough: changed org-clock.el org-timer.el +George Kuzler: changed calc.el + George McNinch: changed nnir.el Georges Brun-Cottan: wrote easy-mmode.el @@ -2172,7 +2183,7 @@ Gregor Schmid: changed intervals.c intervals.h tcl-mode.el textprop.c Gregory Chernov: changed nnslashdot.el -Gregory Heytings: changed xdisp.c editfns.c keyboard.c subr.el buffer.c +Gregory Heytings: changed xdisp.c editfns.c subr.el keyboard.c buffer.c dispextern.h lisp.h buffer.h display.texi efaq.texi files.el isearch.el minibuffer.el Makefile.in bytecode.c composite.c positions.texi bytecomp.el emake help-fns.el lread.c and 78 other files @@ -2556,11 +2567,10 @@ and changed gnus-score.el gnus-logic.el Jan Vroonhof: changed gnus-cite.el gnus-msg.el nntp.el -Jared Finder: changed menu-bar.el term.c commands.texi frame.c isearch.el - mouse.el tmm.el wid-edit.el xt-mouse.el artist.el dispnew.c - ediff-wind.el ediff.el faces.el foldout.el frames.texi keyboard.c - lread.c mouse-drag.el progmodes/compile.el ruler-mode.el - and 7 other files +Jared Finder: changed menu-bar.el term.c commands.texi xt-mouse.el + frame.c isearch.el mouse.el tmm.el wid-edit.el artist.el dired.el + dispnew.c ediff-wind.el ediff.el faces.el foldout.el frames.texi + keyboard.c lread.c mouse-drag.el progmodes/compile.el and 9 other files Jarek Czekalski: changed keyboard.c callproc.c mini.texi minibuf.c misc.texi server.el shell.el w32fns.c xgselect.c @@ -2626,7 +2636,7 @@ and changed idlw-rinfo.el idlw-toolbar.el comint.el idlwave.texi vc.el Jean Abou Samra: changed scheme.el -Jean-Christophe Helary: changed emacs-lisp-intro.texi ns-win.el +Jean-Christophe Helary: changed back.texi emacs-lisp-intro.texi ns-win.el package-tests.el package.el strings.texi subr-x.el ucs-normalize.el Jean Forget: changed cal-french.el @@ -2704,6 +2714,9 @@ Jérémie Courrèges-Anglas: changed kqueue.c org.texi ox-latex.el Jeremy Bertram Maitin-Shepard: changed erc.el erc-backend.el erc-button.el erc-track.el mml.el +Jeremy Bryant: changed abbrev.el cl-extra.el emacs-lisp/cl-lib.el + files.texi functions.texi simple.el + Jérémy Compostella: changed tramp-sh.el mml.el battery.el keyboard.c windmove.el window.el xdisp.c @@ -2767,7 +2780,7 @@ Jim Porter: changed eshell.texi esh-cmd.el esh-var-tests.el esh-util.el eshell-tests-helpers.el em-pred.el esh-arg.el esh-cmd-tests.el tramp.el em-pred-tests.el em-dirs-tests.el server.el em-basic.el em-extpipe-tests.el esh-opt-tests.el esh-opt.el - and 92 other files + and 93 other files Jim Radford: changed gnus-start.el @@ -3129,7 +3142,7 @@ Juri Linkov: wrote compose.el emoji.el files-x.el misearch.el and changed isearch.el simple.el info.el replace.el dired.el dired-aux.el progmodes/grep.el minibuffer.el window.el subr.el vc.el outline.el mouse.el diff-mode.el repeat.el image-mode.el files.el menu-bar.el - search.texi startup.el progmodes/compile.el and 473 other files + search.texi startup.el display.texi and 473 other files Jussi Lahdenniemi: changed w32fns.c ms-w32.h msdos.texi w32.c w32.h w32console.c w32heap.c w32inevt.c w32term.h @@ -3645,6 +3658,8 @@ Lute Kamstra: changed modes.texi emacs-lisp/debug.el generic-x.el Lynn Slater: wrote help-macro.el +Maciej Kalandyk: changed progmodes/python.el + Maciek Pasternacki: changed nnrss.el Madan Ramakrishnan: changed org-agenda.el @@ -3940,6 +3955,8 @@ Matthew Tromp: changed ielm.el Matthew White: changed buffer.c bookmark-tests.el bookmark.el test-list.bmk +Matthew Woodcraft: changed eglot.texi + Matthias Dahl: changed faces.el process.c process.h Matthias Förste: changed files.el @@ -3986,11 +4003,11 @@ Matt Simmons: changed message.el Matt Swift: changed dired.el editfns.c lisp-mode.el mm-decode.el outline.el progmodes/compile.el rx.el simple.el startup.el -Mauro Aranda: changed wid-edit.el cus-edit.el custom.el wid-edit-tests.el - widget.texi perl-mode.el custom-tests.el checkdoc-tests.el checkdoc.el - cperl-mode-tests.el cus-edit-tests.el cus-theme.el customize.texi - files.texi gnus.texi octave.el pong.el align.el auth-source.el - autorevert.el base.el and 56 other files +Mauro Aranda: changed wid-edit.el cus-edit.el widget.texi custom.el + wid-edit-tests.el perl-mode.el custom-tests.el checkdoc-tests.el + checkdoc.el cperl-mode-tests.el cus-edit-tests.el cus-theme.el + customize.texi files.texi gnus.texi octave.el pong.el align.el + auth-source.el autorevert.el base.el and 62 other files Maxime Edouard Robert Froumentin: changed gnus-art.el mml.el @@ -4013,7 +4030,7 @@ and co-wrote tramp-cache.el tramp-sh.el tramp.el and changed tramp.texi tramp-adb.el trampver.el trampver.texi dbusbind.c files.el ange-ftp.el files.texi file-notify-tests.el dbus.texi gitlab-ci.yml autorevert.el tramp-fish.el kqueue.c Dockerfile.emba - os.texi tramp-gw.el test/Makefile.in README shell.el files-tests.el + os.texi tramp-gw.el test/Makefile.in README files-x.el shell.el and 309 other files Michael Ben-Gershon: changed acorn.h configure.ac riscix1-1.h riscix1-2.h @@ -4197,8 +4214,8 @@ Mike Kazantsev: changed erc-dcc.el Mike Kupfer: changed mh-comp.el mh-e.el mh-mime.el mh-utils.el files.el ftcrfont.c mh-compat.el mh-utils-tests.el emacs-mime.texi files.texi - gnus-mh.el gnus.texi mh-acros.el mh-e.texi mh-identity.el mh-scan.el - xftfont.c + gnus-mh.el gnus.texi mh-acros.el mh-e.texi mh-funcs.el mh-identity.el + mh-scan.el xftfont.c Mike Lamb: changed em-unix.el esh-util.el pcmpl-unix.el @@ -4258,10 +4275,10 @@ Mohsin Kaleem: changed eglot.el Mon Key: changed animate.el imap.el syntax.el -Morgan J. Smith: changed gnus-group-tests.el +Morgan J. Smith: changed gnus-group-tests.el url-vars.el -Morgan Smith: changed image-dired.el minibuffer-tests.el minibuffer.el - vc-git.el window.el +Morgan Smith: changed image-dired.el doc-view.el minibuffer-tests.el + minibuffer.el vc-git.el window.el Morten Welinder: wrote [many MS-DOS files] arc-mode.el desktop.el dosfns.c internal.el msdos.h pc-win.el @@ -4341,6 +4358,8 @@ Nevin Kapur: changed nnmail.el gnus-sum.el nnimap.el gnus-group.el Nguyen Thai Ngoc Duy: co-wrote vnvni.el +Niall Dooley: changed eglot.el + Niall Mansfield: changed etags.c Nic Ferrier: changed ert.el tramp.el @@ -4455,7 +4474,8 @@ and changed rsz-mini.el emacs-buffer.gdb comint.el files.el Makefile Noah Lavine: changed tramp.el -Noah Peart: changed treesit.el +Noah Peart: changed typescript-ts-mode.el indent.erts js.el treesit.el + c-ts-mode.el js-tests.el js-ts-indents.erts Noah Swainland: changed calc.el goto-addr.el misc.texi @@ -4720,7 +4740,8 @@ Peter O'Gorman: changed configure.ac frame.h hpux10-20.h termhooks.h Peter Oliver: changed emacsclient.desktop emacsclient-mail.desktop Makefile.in emacs-mail.desktop server.el configure.ac emacs.desktop - emacs.metainfo.xml misc.texi perl-mode.el ruby-mode-tests.el vc-sccs.el + emacs.metainfo.xml emacsclient.1 misc.texi perl-mode.el + ruby-mode-tests.el vc-sccs.el Peter Povinec: changed term.el @@ -4760,7 +4781,7 @@ Petri Kaurinkoski: changed configure.ac iris4d.h irix6-0.h irix6-5.h Petr Salinger: changed configure.ac gnu-kfreebsd.h Petteri Hintsanen: changed sequences.texi Makefile.in emacs/Makefile.in - lispintro/Makefile.in lispref/Makefile.in misc/Makefile.in + lispintro/Makefile.in lispref/Makefile.in misc/Makefile.in tab-bar.el Phil Hagelberg: wrote ert-x-tests.el and changed package.el pcmpl-unix.el subr.el @@ -5495,6 +5516,8 @@ Simon Thum: changed ob-maxima.el Skip Collins: changed w32fns.c w32term.c w32term.h +Skykanin-: changed eglot.el + Sławomir Nowaczyk: changed emacs.py progmodes/python.el TUTORIAL.pl flyspell.el ls-lisp.el w32proc.c @@ -5527,7 +5550,7 @@ and co-wrote help-tests.el keymap-tests.el and changed image-dired.el efaq.texi package.el cperl-mode.el help.el subr.el checkdoc.el bookmark.el simple.el dired.el files.el gnus.texi dired-x.el keymap.c image-mode.el erc.el ediff-util.el speedbar.el - woman.el browse-url.el bytecomp-tests.el and 1678 other files + woman.el browse-url.el bytecomp-tests.el and 1683 other files Stefan Merten: co-wrote rst.el @@ -5581,7 +5604,7 @@ and changed wdired.el todo-mode.texi wdired-tests.el diary-lib.el dired.el dired-tests.el doc-view.el files.el info.el minibuffer.el outline.el todo-test-1.todo allout.el eww.el find-dired.el frames.texi hl-line.el menu-bar.el mouse.el otodo-mode.el simple.el - and 63 other files + and 64 other files Stephen C. Gilardi: changed configure.ac @@ -5791,10 +5814,10 @@ Theodore Jump: changed makefile.nt makefile.def w32-win.el w32faces.c Theodor Thornhill: changed typescript-ts-mode.el java-ts-mode.el c-ts-mode.el eglot.el csharp-mode.el js.el css-mode.el project.el - json-ts-mode.el treesit.el c-ts-common.el eglot-tests.el EGLOT-NEWS - README.md c-ts-mode-tests.el compile-tests.el go-ts-mode.el - indent-bsd.erts indent.erts maintaining.texi mwheel.el - and 5 other files + indent.erts json-ts-mode.el treesit.el c-ts-common.el eglot-tests.el + EGLOT-NEWS README.md c-ts-mode-tests.el compile-tests.el go-ts-mode.el + indent-bsd.erts java-ts-mode-tests.el maintaining.texi + and 8 other files Theresa O'Connor: wrote json.el and changed erc.el erc-viper.el erc-log.el erc-track.el viper.el @@ -6317,10 +6340,15 @@ W. Trevor King: changed xterm.el Xavier Maillard: changed gnus-faq.texi gnus-score.el mh-utils.el spam.el +Xiaoyue Chen: changed esh-proc.el + Xi Lu: changed etags.c htmlfontify.el ruby-mode.el CTAGS.good_crlf CTAGS.good_update Makefile TUTORIAL.cn crlf eww.el shortdoc.el tramp-sh.el +Xiyue Deng: changed emacs-lisp-intro.texi functions.texi strings.texi + symbols.texi + Xu Chunyang: changed eglot.el eww.el dom.el gud.el netrc.el Xue Fuqiao: changed display.texi emacs-lisp-intro.texi files.texi @@ -6383,11 +6411,11 @@ Yoshinari Nomura: changed ox-html.el ox.el Yoshinori Koseki: wrote iimage.el and changed fontset.el message.el nnheader.el nnmail.el -Yuan Fu: changed treesit.el treesit.c c-ts-mode.el parsing.texi +Yuan Fu: changed treesit.el c-ts-mode.el treesit.c parsing.texi progmodes/python.el modes.texi js.el treesit-tests.el indent.erts - typescript-ts-mode.el css-mode.el treesit.h configure.ac + typescript-ts-mode.el treesit.h css-mode.el configure.ac java-ts-mode.el print.c sh-script.el c-ts-common.el gdb-mi.el - rust-ts-mode.el go-ts-mode.el starter-guide and 54 other files + rust-ts-mode.el go-ts-mode.el starter-guide and 55 other files Yuanle Song: changed rng-xsd.el diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el index 82643a55508..16a9df2c92e 100644 --- a/lisp/ldefs-boot.el +++ b/lisp/ldefs-boot.el @@ -6613,6 +6613,13 @@ There is some minimal font-lock support (see vars (setq debugger 'debug) (autoload 'debug "debug" "\ Enter debugger. \\`\\[debugger-continue]' returns from the debugger. + +In interactive sessions, this switches to a backtrace buffer and shows +the Lisp backtrace of function calls there. In batch mode (more accurately, +when `noninteractive' is non-nil), it shows the Lisp backtrace on the +standard error stream (unless `backtrace-on-error-noninteractive' is nil), +and then kills Emacs, causing it to exit with a negative exit code. + Arguments are mainly for use when this is called from the internals of the evaluator. @@ -9201,14 +9208,14 @@ Edit a keyboard macro which has been given a name by `name-last-kbd-macro'. (fn &optional PREFIX)" t) (autoload 'read-kbd-macro "edmacro" "\ Read the region as a keyboard macro definition. -The region is interpreted as spelled-out keystrokes, e.g., \"M-x abc RET\". -See documentation for `edmacro-mode' for details. +The region between START and END is interpreted as spelled-out keystrokes, +e.g., \"M-x abc RET\". See documentation for `edmacro-mode' for details. Leading/trailing \"C-x (\" and \"C-x )\" in the text are allowed and ignored. The resulting macro is installed as the \"current\" keyboard macro. In Lisp, may also be called with a single STRING argument in which case the result is returned rather than being installed as the current macro. -The result will be a string if possible, otherwise an event vector. +The result is a vector of input events. Second argument NEED-VECTOR means to return an event vector always. (fn START &optional END)" t) @@ -9824,7 +9831,7 @@ This command prompts for an emoji name, with completion, and inserts it. It recognizes the Unicode Standard names of emoji, and also consults the `emoji-alternate-names' alist." t) (autoload 'emoji-list "emoji" "\ -List emojis and insert the one that's selected. +List emojis and allow selecting and inserting one of them. Select the emoji by typing \\\\[emoji-list-select] on its picture. The glyph will be inserted into the buffer that was current when the command was invoked." t) @@ -22498,7 +22505,7 @@ Coloring: ;;; Generated autoloads from org/org.el -(push (purecopy '(org 9 6 10)) package--builtin-versions) +(push (purecopy '(org 9 6 15)) package--builtin-versions) (autoload 'org-babel-do-load-languages "org" "\ Load the languages defined in `org-babel-load-languages'. @@ -32871,7 +32878,7 @@ Add archive file name handler to `file-name-handler-alist'." (when (and tramp-ar ;;; Generated autoloads from net/trampver.el -(push (purecopy '(tramp 2 6 2 -1)) package--builtin-versions) +(push (purecopy '(tramp 2 6 2 29 2)) package--builtin-versions) (register-definition-prefixes "trampver" '("tramp-")) @@ -34116,7 +34123,6 @@ Normalize arguments to delight. ;;; Generated autoloads from use-package/use-package-ensure-system-package.el -(push (purecopy '(use-package 0 2)) package--builtin-versions) (autoload 'use-package-normalize/:ensure-system-package "use-package-ensure-system-package" "\ Turn ARGS into a list of conses of the form (PACKAGE-NAME . INSTALL-COMMAND). commit b4baf0f8216b27a34a632f668cb9b02b1ac35b25 Author: Eli Zaretskii Date: Thu Jan 18 04:43:06 2024 -0500 ; Update ChangeLog.4 with latest changes. diff --git a/ChangeLog.4 b/ChangeLog.4 index 3600f764292..74d6887376b 100644 --- a/ChangeLog.4 +++ b/ChangeLog.4 @@ -2,6 +2,13 @@ * Version 29.2 released. + * ChangeLog.4: + * etc/HISTORY: Update for Emacs 29.2. + * README: + * configure.ac: + * nt/README.W32: + * msdos/sed2v2.inp: Bump Emacs version to 29.2. + 2024-01-17 Dmitry Gutov diff-mode: Support committing diff with file deletions commit c633c90993f069123c788900a39031ca32c8a1d9 Author: Eli Zaretskii Date: Thu Jan 18 04:39:57 2024 -0500 * Update etc/HISTORY and ChangeLog.4 for 29.2 release. diff --git a/ChangeLog.4 b/ChangeLog.4 index 70194a469cf..3600f764292 100644 --- a/ChangeLog.4 +++ b/ChangeLog.4 @@ -1,3 +1,1549 @@ +2024-01-18 Eli Zaretskii + + * Version 29.2 released. + +2024-01-17 Dmitry Gutov + + diff-mode: Support committing diff with file deletions + + * lisp/vc/diff-mode.el (diff-vc-deduce-fileset): + Remove nil elements from the result (bug#68443). + +2024-01-16 Juri Linkov + + * lisp/net/eww.el (eww-retrieve): Fix args of eww-render for sync (bug#68336). + + Suggested by Phil Sainty . + +2024-01-16 Mike Kupfer + + Fix folder creation error (Bug#67361) + + * lisp/mh-e/mh-funcs.el (mh-kill-folder) + * lisp/mh-e/mh-search.el (mh-index-new-folder) + * lisp/mh-e/mh-utils.el (mh-prompt-for-folder): + Check for existence of 'speedbar-buffer' rather than + 'mh-speed-folder-map'. The latter can exist if + 'mh-speed' has only been loaded but not displayed. + + (cherry picked from commit e6a2901b1be6b4aa01f8bf0d3c6e06344ce8d366) + +2024-01-15 Gregory Heytings + + Simplify 'without-restriction' + + This simplification is symmetrical to 01fb898420. + + * src/editfns.c: (Finternal__labeled_widen): Add a call to + 'Fwiden', and rename from 'internal--unlabel-restriction'. + (unwind_labeled_narrow_to_region): Use the renamed function, and + remove the call to 'Fwiden'. + (syms_of_editfns): Rename the symbol. + + * lisp/subr.el (internal--without-restriction): Use the renamed + function. + + (cherry picked from commit 9e9e11648d3d5514de85edfb69f0949a062f4716) + +2024-01-14 Gregory Heytings + + Fix blunder in labeled_narrow_to_region + + * src/editfns.c (labeled_narrow_to_region): Record point before, + instead of after, calling narrow-to-region; otherwise point may + already have been changed. Fixes bug#66764. + +2024-01-14 Daniel Martín + + Fix documentation of icon-elements + + * lisp/emacs-lisp/icons.el (icon-elements): The plist key it returns + is `image', not `display'. (Bug#68451) + +2024-01-14 Stefan Kangas + + Improve two docstrings in ox-latex + + * lisp/org/ox-latex.el (org-latex-src-block-backend) + (org-latex-engraved-theme): Improve docstring; mention that + engrave-faces is a GNU ELPA package. + +2024-01-14 Stefan Kangas + + Doc fix in auth-source-read-char-choice + + * lisp/auth-source.el (auth-source-read-char-choice): Don't + document 'dropdown-list', which was removed in 2011. + +2024-01-13 Eli Zaretskii + + Fix info-xref-tests + + * doc/lispintro/emacs-lisp-intro.texi (How let Binds Variables): + Fix cross-reference. (Bug#68428) + + * test/lisp/info-xref-tests.el (info-xref-test-write-file): Fix + test on MS-Windows when run from MSYS Bash. + +2024-01-13 Juri Linkov + + Add @kindex in manuals for existing keybindings on 'C-x x/w' (bug#13167) + + * doc/emacs/buffers.texi (Misc Buffer): Add @kindex for 'C-x x r', + 'C-x x u', 'C-x x i'. + + * doc/emacs/display.texi (Line Truncation): Add @kindex for 'C-x x t'. + + * doc/emacs/files.texi (Reverting): Add @kindex for 'C-x x g'. + + * doc/emacs/windows.texi (Change Window): Use new keybinding 'C-x w 0' + instead of 'M-x delete-windows-on'. + + * doc/misc/info.texi (Create Info buffer): Add @kindex for 'C-x x n'. + +2024-01-13 Eli Zaretskii + + Improve documentation of 'emacs_function' in modules + + * doc/lispref/internals.texi (Module Functions): Warn about + accessing the ARGS array in module functions. + +2024-01-12 Eli Zaretskii + + Improve documentation of Ispell commands + + * doc/emacs/fixit.texi (Spelling): Document "C-u M-$" and warn + against modifications in recursive-edit. (Bug#14192) + +2024-01-11 Stefan Kangas + + Don't recommend inverse-video for debugging + + * etc/DEBUG: Don't recommend 'inverse-video', which has been broken + for 20 years, give or take. (Bug#11430) + +2024-01-11 Xiyue Deng + + Fix typo in lispref "Creating Strings" section + + * doc/lispref/strings.texi (String Basics): Fix typo (bug#68375). + +2024-01-11 Xiyue Deng (tiny change) + + Fix count of no-op functions (bug#68375) + + It looks like there are actually three kinds of no-op functions. + + * doc/lispref/functions.texi (Calling Functions): Fix count and + plural of no-op functions. + +2024-01-11 Xiyue Deng (tiny change) + + Wrap @pxref of Abbrevs in parentheses (bug#68375) + + * doc/lispref/symbols.texi (Shorthands): Wrap `@pxref{Abbrevs}' in + parentheses. + +2024-01-10 Mauro Aranda + + Add examples to the Widget manual + + * doc/misc/widget.texi (Widget Gallery, Defining New Widgets): Add + examples. (Bug#66229) + +2024-01-10 Mauro Aranda + + Implement missing functions for custom-icon widget + + * lisp/cus-edit.el (custom-icon-reset-saved, custom-icon-mark-to-save) + (custom-icon-state-set-and-redraw, custom-icon-reset-standard) + (custom-icon-mark-to-reset-standard): New functions. + (custom-icon, custom-icon-extended-menu): Register and add them to the + menu. (Bug#66947) + +2024-01-10 Stephen Berman + + Fix fontification of cgroup2 in fstab (bug#68367) + + * lisp/generic-x.el (etc-fstab-generic-mode): Add cgroup2. + +2024-01-10 Philip Kaludercic + + Handle package versions that are not version strings + + * lisp/emacs-lisp/package.el (package-menu--version-predicate): Ignore + any errors raised by 'version-to-list', thus falling back to the + default version list. (Bug#68317) + + (cherry picked from commit eb913c7501489e1eae475cae843fccdf14cc24d8) + +2024-01-09 Jim Porter + + Introduce 'let' using lexical binding in the Lisp Introduction + + * doc/lispintro/emacs-lisp-intro.texi (Prevent confusion): Rework the + explanation to discuss how things work under lexical binding. + (How let Binds Variables): Describe the differences between lexical + and dynamic binding (including how to configure it). + (defvar): Mention that 'defvar' declares variables as always + dynamically-bound (bug#66756). + +2024-01-06 Eli Zaretskii + + Fix 'rmail-summary-by-thread' + + * lisp/mail/rmailsum.el (rmail-summary-by-thread): Call + 'rmail-new-summary' from the original buffer, not from + 'rmail-buffer' to avoid failing the logic in 'rmail-new-summary' + that decides whether to pop up a new window. Reported by Andrea + Monaco . + +2024-01-06 Jean-Christophe Helary + + * doc/emacs/back.texi: Fix a typo. + +2024-01-06 Eli Zaretskii + + Fix icons.el when icon does not exist as a file + + * lisp/emacs-lisp/icons.el (icons--create): Handle the case when + ICON is a file that doesn't exists or is unreadable. Suggested by + David Ponce . (Bug#66846) + +2024-01-05 Juri Linkov + + * lisp/isearch.el (isearch-search-and-update): Let-bind 'isearch-cmds'. + + When 'isearch-wrap-pause' is 'no' or 'no-ding', let-bind 'isearch-cmds' + to avoid changing it by 'isearch-push-state' in 'isearch-repeat', + so that a later DEL (isearch-delete-char) doesn't stop at the + intermediate failing state (bug#68158). + +2024-01-04 Andrea Corallo + + * src/comp.c (Fcomp__compile_ctxt_to_file): Fix hash table Qunbound use. + +2024-01-04 Eli Zaretskii + + Provide decent documentation for 'help-quick' + + * lisp/help.el (help-quick, help-quick-toggle): Doc fix. + + * doc/emacs/help.texi (Help Summary, Misc Help): Document + 'help-quick-toggle'. + +2024-01-02 Dmitry Gutov + + treesit--pre-syntax-ppss: Fix args-out-of-range in internal--syntax-propertize + + * lisp/treesit.el (treesit--pre-syntax-ppss): Make sure the lower + bound is still within the current restriction (bug#67977). + +2024-01-01 Mike Kupfer + + Fix mangled Subject header field when forwarding (Bug#67360) + + * lisp/mh-e/mh-comp.el (mh-forward): Overwrite subject when + forwarding. + +2024-01-01 Kyle Meyer + + Update to Org 9.6.15 + +2023-12-31 Eli Zaretskii + + * doc/emacs/custom.texi (Modifier Keys): Fix markup (bug#68164). + + Suggested by Jens Quade . + +2023-12-30 Stefan Kangas + + org-protocol: Minor copy-edits to Commentary + + * lisp/org/org-protocol.el: Minor copy-edits to Commentary. + +2023-12-30 Denis Zubarev + + Improve syntax highlighting for python-ts-mode + + Fix fontification of strings inside of f-strings interpolation, e.g. for + f"beg {'nested'}" - 'nested' was not fontified as string. Do not + override the face of builtin functions (all, bytes etc.) with the + function call face. Add missing assignment expressions (:= *=). + Fontify built-ins (dict,list,etc.) as types when they are used in type + hints. Highlight union types (type1|type2). Highlight base class names + in the class definition. Fontify class patterns in case statements. + Highlight the second argument as a type in isinstance/issubclass call. + Highlight dotted decorator names. + + * lisp/progmodes/python.el (python--treesit-keywords): Add compound + keyword "is not". + (python--treesit-builtin-types): New variable that stores all python + built-in types. + (python--treesit-type-regex): New variable. Regex matches if text is + either built-in type or text starts with capital letter. + (python--treesit-builtins): Extract built-in types to other variable. + (python--treesit-fontify-string): fix f-string interpolation. Enable + interpolation highlighting only if string-interpolation is presented + on the enabled levels of treesit-font-lock-feature-list. + (python--treesit-fontify-string-interpolation): Remove function. + (python--treesit-fontify-union-types): Fontify nested union types. + (python--treesit-fontify-union-types-strict): Fontify nested union + types, only if type identifier matches against + python--treesit-type-regex. + (python--treesit-fontify-dotted-decorator): Fontify all parts of + dotted decorator name. + (python--treesit-settings): Change/add rules. (Bug#67061) + + * test/lisp/progmodes/python-tests.el + (python-ts-tests-with-temp-buffer): Function for setting up test + buffer. + (python-ts-mode-compound-keywords-face) + (python-ts-mode-named-assignement-face-1) + (python-ts-mode-assignement-face-2) + (python-ts-mode-nested-types-face-1) + (python-ts-mode-union-types-face-1) + (python-ts-mode-union-types-face-2) + (python-ts-mode-types-face-1) + (python-ts-mode-types-face-2) + (python-ts-mode-types-face-3) + (python-ts-mode-isinstance-type-face-1) + (python-ts-mode-isinstance-type-face-2) + (python-ts-mode-isinstance-type-face-3) + (python-ts-mode-superclass-type-face) + (python-ts-mode-class-patterns-face) + (python-ts-mode-dotted-decorator-face-1) + (python-ts-mode-dotted-decorator-face-2) + (python-ts-mode-builtin-call-face) + (python-ts-mode-interpolation-nested-string) + (python-ts-mode-disabled-string-interpolation) + (python-ts-mode-interpolation-doc-string): Add tests. + +2023-12-29 Yuan Fu + + Revert "Fix treesit-node-field-name and friends (bug#66674)" + + This reverts commit 9874561f39e62c1c9fada6c2e013f93d9ea65729. + + See bug#67990. Basically our original code is correct, the error is + in libtree-sitter, which only manifests in certain cases. + + https://github.com/tree-sitter/tree-sitter/pull/2104 + +2023-12-25 Stefan Kangas + + Explain status "r" in `epa-list-keys` + + * lisp/epa.el (epa-list-keys): Add revoked status to description. + Suggested by CHENG Gao . + +2023-12-25 Jared Finder + + Fix mouse clicks on directory line in Dired + + The option 'dired-kill-when-opening-new-dired-buffer' should be + also honored when clicking the mouse to kill prev buffer. + * lisp/dired.el (dired--make-directory-clickable): Call + 'dired--find-possibly-alternative-file' instead of 'dired', in + the click callback. (Bug#67856) + +2023-12-25 Eli Zaretskii + + Fix 'split-root-window-right' and 'split-root-window-below' + + * lisp/window.el (split-root-window-right) + (split-root-window-below): Fix the 'interactive' spec to avoid + misbehaving when invoked with no prefix argument. (Bug#67452) + +2023-12-24 Stefan Kangas + + Mark icalendar.el as maintained by emacs-devel + + * lisp/calendar/icalendar.el: Mark emacs-devel as the maintainer. + Ref: https://debbugs.gnu.org/34315#152 + +2023-12-24 Xiyue Deng + + Fix usage of `setq-default' and offer more suggestions + + cd61af0 changed from default-major-mode to major-mode in the first + code sample but didn't change the rest. This patch fixes this and add + some explanations of why use `setq-default' instead of `setq'. In + addition, it gives background on suggesting using text-mode as default + mode and suggest other alternatives. + + * doc/lispintro/emacs-lisp-intro.texi (Text and Auto-fill): Fix usage + of `setq-default' and offer more suggestions. (Bug#67848) + +2023-12-23 Yuan Fu + + Fix python-ts-mode triple quote syntax (bug#67262) + + * lisp/progmodes/python.el (python--treesit-syntax-propertize): New function. + (python-ts-mode): Activate python--treesit-syntax-propertize. + +2023-12-23 Yuan Fu + + Increment parser timestamp when narrowing changes (bug#67977) + + When narrowing changes, parse reparses, so the timestamp should + definitely increment, just like in ts_record_changes. + + Failing to increment this timestamp, outdated nodes would think they + are still up-to-date, and try to print their type name. Printing + their type name involves accessing the old parse tree, which is + already freed during the last reparse. + + I also found that we don't increment timestamp when changing parser + ranges and fixed that as well. + + * src/treesit.c (treesit_sync_visible_region): + (Ftreesit_parser_set_included_ranges): Increment timestamp. + * src/treesit.h (Lisp_TS_Parser): Add some comments. + +2023-12-23 Dmitry Gutov + + ruby-ts-mode: Fix indentation for string_array closer + + * lisp/progmodes/ruby-ts-mode.el (ruby-ts--indent-rules): + Fix indentation for string_array closer. + +2023-12-23 Dmitry Gutov + + treesit-major-mode-setup: Use 'treesit--syntax-propertize-notifier' + + * lisp/treesit.el (treesit-major-mode-setup): Make sure + 'treesit--syntax-propertize-notifier' is used (bug#66732) + +2023-12-23 Dmitry Gutov + + ruby-ts-mode: Fix an out-of-bounds error with heredoc at eob + + * lisp/progmodes/ruby-ts-mode.el (ruby-ts--syntax-propertize): + Fix an out-of-bounds error with heredoc at eob. + +2023-12-23 Yuan Fu + + Correctly refontify changed region in tree-sitter modes (bug#66732) + + We already have treesit--font-lock-notifier that should mark changed + regions to be refontified, but it's called too late in the redsiplay & + fontification pipeline. Here we add treesit--pre-redisplay that + forces reparse and calls notifier functions in + pre-redisplay-functions, which is early enough for the marking to take + effect. + + Similarly, we force reparse in + syntax-propertize-extend-region-functions so syntax-ppss will have the + up-to-date syntax information when it scans the buffer text. We also + record the lowest start position of the affected regions, and make + sure next syntex-propertize starts from that position. + + * lisp/treesit.el (treesit--pre-redisplay-tick): + (treesit--syntax-propertize-start): New variable. + (treesit--syntax-propertize-notifier): + (treesit--pre-redisplay): + (treesit--pre-syntax-ppss): New functions. + (treesit-major-mode-setup): Add hooks. + + * lisp/progmodes/ruby-ts-mode.el (ruby-ts-mode): Remove notifier. + (ruby-ts--parser-after-change): Remove notifier function. + +2023-12-23 Michael Albinus + + * doc/man/emacsclient.1: Fix --tramp option. + +2023-12-23 Peter Oliver (tiny change) + + * doc/man/emacsclient.1: Add missing sections (bug#66598) + +2023-12-23 Xiyue Deng + + Add explanation for extra parentheses in ELisp Introduction + + * doc/lispintro/emacs-lisp-intro.texi (fwd-para while): Add + a note to explain the extra parentheses. (Bug#67820) + +2023-12-23 Xiyue Deng + + Add sample code to the "let*" section in "forward-paragraph" + + * doc/lispintro/emacs-lisp-intro.texi (fwd-para let): Add code + sample. (Bug#67817) + +2023-12-23 Denis Zubarev + + Fix treesit test (bug#67117) + + * test/src/treesit-tests.el (treesit-search-subtree-forward-1): + (treesit-search-subtree-backward-1): Replace treesit--thing-at with + treesit-query-capture (treesit--thing-at isn't available in Emacs 29). + +2023-12-23 Yuan Fu + + Fix c++-ts-mode indentation (bug#67975) + + * lisp/progmodes/c-ts-mode.el (c-ts-mode--indent-styles): Make indent + rule match precise so it doesn't match declaration_list. + +2023-12-22 Stefan Kangas + + Recommend customizing eglot for python-base-mode + + * doc/misc/eglot.texi (Project-specific configuration): Recommend + setting directory local variables for 'python-base-mode' instead of + 'python-mode'. This makes any customizations effective also for + 'python-ts-mode'. + +2023-12-22 Eli Zaretskii + + Improve documentation of new native-compilation commands + + * lisp/progmodes/elisp-mode.el (emacs-lisp-mode-menu) + (emacs-lisp-native-compile, emacs-lisp-native-compile-and-load): + Doc fixes. + + * doc/lispref/compile.texi (Native-Compilation Functions): + Document 'emacs-lisp-native-compile' and + 'emacs-lisp-native-compile-and-load'. + +2023-12-21 Stefan Monnier + + doc/lispintro: Don't mention `set` (bug#67734) + + * doc/lispintro/emacs-lisp-intro.texi (Using set): Delete. + (Using setq): Adjust accordingly. + (setq): Rename from "set & setq" and don't refer to `set` any more. + (Review): Don't mention `set` any more. + +2023-12-20 Eli Zaretskii + + Fix script for some characters + + * lisp/international/characters.el (char-script-table): Fix script + for 2 characters. + + * admin/unidata/blocks.awk: Fix script for Yijing Hexagram + Symbols. (Bug#67924) + +2023-12-18 Denis Zubarev + + Fix an issue when searching subtree backward (bug#67117) + + * src/treesit.c (treesit_traverse_child_helper): + Do not call treesit_traverse_sibling_helper when the named node is + required and the last child is the named node. + Otherwise treesit_traverse_sibling_helper will move cursor to the + previous sibling and last node will be skipped. + * test/src/treesit-tests.el (treesit-search-subtree-forward-1): + (treesit-search-subtree-backward-1): + Add tests. + +2023-12-18 Christophe Deleuze (tiny change) + + Fix passive mode for tnftp client in ange-ftp.el. + + * lisp/net/ange-ftp.el (ange-ftp-passive-mode): Fix passive mode + result string for tnftp client. (Bug#67865) + +2023-12-16 Stefan Kangas + + Fix using disabled command without a docstring + + * lisp/novice.el (disabled-command-function): Fix error when the + disable command has no docstring. (Bug#67835) + +2023-12-16 Eli Zaretskii + + Improve documentation of text properties handling when yanking + + * doc/lispref/text.texi (Text Properties): Mention special + handling of text properties while yanking. + +2023-12-16 skykanin <3789764+skykanin@users.noreply.github.com> (tiny change) + + Eglot: Add Uiua language server + + * lisp/progmodes/eglot.el (eglot-server-programs): Add Uiua language + server. (Bug#67850) + +2023-12-16 Eli Zaretskii + + Fix shaping of Sinhala text + + * lisp/language/sinhala.el (composition-function-table): Allow + U+200D U+0DCA as well as U+0DCA U+200D between consonants. + Suggested by Richard Wordingham . + (Bug#67828) + +2023-12-16 Jeremy Bryant + Eli Zaretskii + + Add use cases of (fn) documentation facility. + + * doc/lispref/functions.texi (Function Documentation): Add examples. + (Bug#67499) + +2023-12-16 Eli Zaretskii + + Fix pasting into terminal-mode on term.el + + * lisp/term.el (term--xterm-paste): Read pasted text from the + input event. Suggested by Jared Finder . + (Bug#49253) + +2023-12-16 Eli Zaretskii + + Fix opening directory trees from Filesets menu + + In bug#976, the code was fixed, but the cautious condition in + the original author's code, which catered to invoking + 'filelists-open' from the menu-bar menu, was omitted, which made + that invocation, which did work before, broken. + * lisp/filesets.el (filesets-get-filelist): Fix opening directory + trees from the Filesets menu-bar menu. (Bug#67658) + +2023-12-16 Niall Dooley (tiny change) + + Eglot: Add ruff-lsp as an alternative Python server + + ruff-lsp [1] is an LSP server for Ruff [2], [3], a fast Python linter + and code formatter. + + It supports surfacing Ruff diagnostics and providing Code Actions to + fix them, but is intended to be used alongside another Python LSP in + order to support features like navigation and autocompletion. + + [1]: https://github.com/astral-sh/ruff-lsp + [2]: https://github.com/astral-sh/ruff + [3]: https://docs.astral.sh/ruff/ + + * lisp/progmodes/eglot.el (eglot-server-programs): Add ruff-lsp. + +2023-12-14 Adam Porter + + Fix symbol name in Multisession Variables examples + + * doc/lispref/variables.texi (Multisession Variables): Fix symbol + name. (Bug#67823) + +2023-12-12 Dmitry Gutov + + js-ts-mode: Fix font-lock rules conflict + + * lisp/progmodes/js.el (js--treesit-font-lock-settings): Move + 'property' to after 'jsx'. Stop using predicate (bug#67684). + (js--treesit-property-not-function-p): Delete. + +2023-12-11 Noah Peart + + Add indentation rules for bracketless statements in js-ts-mode + + * lisp/progmodes/js.el (js--treesit-indent-rules): Add indentation + rules to handle bracketless statements (bug#67758). + * test/lisp/progmodes/js-tests.el (js-ts-mode-test-indentation): + New test for js-ts-mode indentation. + * test/lisp/progmodes/js-resources/js-ts-indents.erts: New file + with indentation tests for js-ts-mode. + +2023-12-10 Yuan Fu + + Fix c-ts-mode bracketless indentation for BSD style (bug#66152) + + * lisp/progmodes/c-ts-mode.el: + (c-ts-mode--indent-styles): Make sure the BSD rules only apply to + opening bracket (compound_statement), then bracketless statements will + fallback to common rules. + * test/lisp/progmodes/c-ts-mode-resources/indent-bsd.erts: Copy the + bracketless test from indent.erts to here. + +2023-12-10 Augustin Chéneau + + Add missing indent rules in c-ts-mode (bug#66152) + + Example: + + static myttype * + variable_name; + + * lisp/progmodes/c-ts-mode.el (c-ts-mode--indent-styles): Add rules. + +2023-12-10 Yuan Fu + + Fix treesit-default-defun-skipper (bug#66711) + + * lisp/treesit.el: + (treesit-default-defun-skipper): Add bol to the rx pattern. + +2023-12-10 Yuan Fu + + Fix treesit-node-field-name and friends (bug#66674) + + So turns out ts_node_field_name_for_child takes a named node index, + but we were passing it normal index that counts both named and + anonymous nodes. That's what makes the field name all wrong in + treesit explorer. + + * doc/lispref/parsing.texi: + (Accessing Node Information): Update docstring. + * lisp/treesit.el (treesit-node-index): Add some unrelated comment. + (treesit-node-field-name): Get named node index rather than all node + index. + * src/treesit.c (Ftreesit_node_field_name_for_child): Update + docstring, use ts_node_named_child_count. + +2023-12-10 Maciej Kalandyk + + python-ts-mode: Highlight default parameters + + * lisp/progmodes/python.el (python--treesit-settings): + Highlight default parameters (bug#67703). + +2023-12-10 Kyle Meyer + + Update to Org 9.6.13 + +2023-12-10 Yuan Fu + + Fix c-ts-mode indent heuristic (bug#67417) + + This is a continuation of the first two patches for bug#67417. The + c-ts-mode--prev-line-match heuristic we added is too broad, so for now + we are just adding a very specific heuristic for the else case. + + * lisp/progmodes/c-ts-mode.el: + (c-ts-mode--prev-line-match): Remove function. + (c-ts-mode--else-heuristic): New function. + (c-ts-mode--indent-styles): Use c-ts-mode--else-heuristic. + +2023-12-10 nverno + + Fix c-ts-mode indentation (bug#67357) + + 1. In a compund_statement, we indent the first sibling against the + parent, and the rest siblings against their previous sibling. But + this strategy falls apart when the first sibling is not on its own + line. We should regard the first sibling that is on its own line as + the "first sibling"", and indent it against the parent. + + 2. In linux style, in a do-while statement, if the do-body is + bracket-less, the "while" keyword is indented to the same level as the + do-body. It should be indented to align with the "do" keyword + instead. + + * lisp/progmodes/c-ts-mode.el: + (c-ts-mode--no-prev-standalone-sibling): New function. + (c-ts-mode--indent-styles): Use + c-ts-mode--no-prev-standalone-sibling. Add while keyword indent rule. + * test/lisp/progmodes/c-ts-mode-resources/indent.erts: New tests. + +2023-12-09 nverno + + Add font-locking for hash-bang lines in typescript-ts-mode. + + * lisp/progmodes/typescript-ts-mode.el + (typescript-ts-mode--font-lock-settings): + Add font-lock for hash bang line. + +2023-12-09 nverno + + Add font-locking for hash-bang lines in js-ts-mode + + * lisp/progmodes/js.el (js--treesit-font-lock-settings): + Add font-lock for hash bang line. + +2023-12-09 Dmitry Gutov + + ruby-mode: Better detect regexp vs division (bug#67569) + + * lisp/progmodes/ruby-mode.el (ruby-syntax-before-regexp-re): + Add grouping around methods from the whitelist. + (ruby-syntax-propertize): Also look for spaces around the slash. + +2023-12-09 Jared Finder + + Fix dragging mode line on text terminals with a mouse (bug#67457) + + * lisp/xt-mouse.el (xterm-mouse-translate-1): Fix the 'event-kind' + property of mouse-movement symbols emitted by xt-mouse. + * lisp/term/linux.el (terminal-init-linux): Call 'gpm-mouse-mode' + to set up the terminal for the mouse, if needed. + +2023-12-08 Christophe TROESTLER + + (rust-ts-mode): Set electric-indent-chars + + * lisp/progmodes/rust-ts-mode.el (rust-ts-mode): + Set electric-indent-chars (bug#67701). + +2023-12-07 Dmitry Gutov + + js-ts-mode: Highlight function parameters inside destructuring + + * lisp/progmodes/js.el (js--treesit-font-lock-settings): + Highlight function parameters declared using destructuring syntax. + +2023-12-07 Dmitry Gutov + + js-ts-mode: Highlight property shorthands in assignments + + * lisp/progmodes/js.el (js--treesit-lhs-identifier-query): Match + property shorthands (which turn into variable reference). + (js--treesit-fontify-assignment-lhs): Use the matches. + +2023-12-07 Dmitry Gutov + + (js--treesit-font-lock-settings): Highlight parameters in function expression + + * lisp/progmodes/js.el (js--treesit-font-lock-settings): + Highlight parameters in a function expression (the node type + 'function'). Make the matcher for 'formal_parameters' independent + of the parent, that just created duplication. + +2023-12-07 Dmitry Gutov + + (js--treesit-font-lock-settings): Remove some duplicates + + * lisp/progmodes/js.el (js--treesit-font-lock-settings): + Remove queries from 'function' that duplicate entries in + 'definition' (one of them with a typo). + +2023-12-04 Philipp Stephani + + Don't claim to signal an error when deleting a nonexisting file. + + The behavior has changed in commit + 1a65afb7ecc2a52127d6164bad19313440237f9d to no longer signal an error + on ENOENT. + + * doc/lispref/files.texi (Changing Files): Fix documentation about + error reporting. + +2023-12-04 Eli Zaretskii + + * lisp/indent.el (indent-rigidly): Improve prompt (bug#67620). + +2023-12-03 Christophe Troestler + + rust-ts-mode--comment-docstring: Handle block doc comments + + * lisp/progmodes/rust-ts-mode.el + (rust-ts-mode--comment-docstring): Handle block doc comments. + Inhibit match-data modification. + +2023-12-02 Christophe TROESTLER + + rust-ts-mode--comment-docstring: Fix/improve the previous change + + * lisp/progmodes/rust-ts-mode.el + (rust-ts-mode--comment-docstring): Match also "inner" line docs. + Stop rebinding 'end' and use the argument's value in the + 'treesit-fontify-with-override' call. + +2023-12-02 Eli Zaretskii + + Fix 'Info-goto-node-web' when NODE is given in various forms + + * lisp/info.el (Info-goto-node-web): Support all forms of node + input, per 'Info-read-node-name's documentation, and extract + FILENAME from NODE if given there. Default NODE to "Top" if not + provided by the user. (Bug#67531) + (Info-url-for-node): Support browsing the "Top" node. + +2023-12-02 Eli Zaretskii + + Fix setting cursor when the window's op line has 'line-prefix' + + * src/xdisp.c (set_cursor_from_row): Skip glyphs that come from a + string if their 'avoid_cursor_p' flag is set. (Bug#67486) + +2023-12-02 Xiyue Deng (tiny change) + + Drop extra parenthesis in example code in Emacs Lisp Introduction + + * doc/lispintro/emacs-lisp-intro.texi (Small buffer case): Drop + trailing unmatched parenthesis. (Bug#67576) + +2023-12-01 Christophe Troestler + + rust-ts-mode: appropriately fontify doc strings + + * lisp/progmodes/rust-ts-mode.el + (rust-ts-mode--comment-docstring): New function. + (rust-ts-mode--font-lock-settings): Use it + (https://lists.gnu.org/archive/html/emacs-devel/2023-12/msg00019.html). + +2023-12-01 Xiyue Deng (tiny change) + + Fix example code in Emacs Lisp Introduction manual + + * doc/lispintro/emacs-lisp-intro.texi (Optional Arguments): Fix + indentation in an example. (Bug#67559) + +2023-12-01 Eli Zaretskii + + Fix example in Emacs Lisp Intro manual + + * doc/lispintro/emacs-lisp-intro.texi (beginning-of-buffer opt + arg): Fix indentation in example. Reported by Xiyue Deng + . (Bug#67560) + +2023-12-01 Jeremy Bryant + + Elisp manual: Mention 'write-region' for saving the buffer + + * doc/emacs/files.texi (Save Commands): Mention + 'write-region'. (Bug#67313) + +2023-11-30 Michael Albinus + + Document, that PROCESS of signal-process can be a string + + * doc/lispref/processes.texi (Signals to Processes) [signal-process]: + * src/process.c (Fsignal_process): Document, that PROCESS can be a + string. + +2023-11-29 nverno + + Fix typescript-ts-mode indentation for switch statements + + * lisp/progmodes/typescript-ts-mode.el (typescript-ts-mode): Add + indentation rule for switch case and default keywords. (Bug#67488) + +2023-11-29 Aymeric Agon-Rambosson (tiny change) + + Repair `tab-first-completion` (bug#67158) + + + * lisp/indent.el (indent-for-tab-command): Use `syntax-class` to fix + longstanding thinko introduced back in 2020 in commit 64c851166442. + Rework the check for `syn` because TAB always completed when + `tab-first-completion` had value `word-or-paren` or `word-or-paren-or-punct`. + + (cherry picked from commit c20226a1ef5fbdfd3e71e2ef8654ee19994c0f2f) + +2023-11-29 Eli Zaretskii + + Fix behavior of 'split-root-window-*' with 'C-u' + + * lisp/window.el (split-root-window-below) + (split-root-window-right): Fix the 'interactive' form to work with + raw 'C-u' as well. (Bug#67459) + (split-window-below, split-window-right, split-root-window-below) + (split-root-window-right): Doc fix. + +2023-11-29 Xiyue Deng (tiny change) + + Add more text to clarify the behavior of 'with-current-buffer' + + * doc/lispintro/emacs-lisp-intro.texi (copy-to-buffer): Expand + description of 'with-current-buffer'. (Bug#67521) + +2023-11-27 Eli Zaretskii + + Fix example in Emacs user manual + + * doc/emacs/custom.texi (Init Rebinding): Fix syntax of example. + Reported by silarakta . (Bug#67474) + +2023-11-27 Michael Albinus + + Mention Titankey in Tramp, which has passed the tests + + * doc/misc/tramp.texi (Frequently Asked Questions): + * lisp/net/tramp.el (tramp-security-key-confirm-regexp): + Mention also Titankey. + +2023-11-26 Yuan Fu + + Fix c-ts-mode indentation after if/else (bug#67417) + + * lisp/progmodes/c-ts-mode.el: + (c-ts-mode--prev-line-match): New function. + (c-ts-mode--indent-styles): Add a rule for the empty line after + if/else/for/etc. + +2023-11-26 Yuan Fu + + Fix indentation for else clause in c-ts-mode (bug#67417) + + * lisp/progmodes/c-ts-mode.el: + (c-ts-mode--indent-styles): Add indentation for children of + else_clause. + * test/lisp/progmodes/c-ts-mode-resources/indent.erts: + (Name): Add test for else-break. Also make the test such that it + needs to indent correctly from scratch (rather than maintaining the + already correct indentation.) + +2023-11-26 Joseph Turner + + Ensure that directory is expanded in package-vc-checkout + + * lisp/emacs-lisp/package-vc.el (package-vc-checkout): Expand + DIRECTORY. (Bug#66115) + +2023-11-25 Ulrich Müller + + * etc/PROBLEMS: Add entry about pinentry with gpgsm. (Bug#67012) + +2023-11-24 nverno + + typescript-ts-mode: Add missing 'operator' to treesit-font-lock-features + + * lisp/progmodes/typescript-ts-mode.el (typescript-ts-mode): + Add operator to treesit-font-lock-feature-list (bug#67433). + +2023-11-24 Michael Albinus + + Extend D-Bus doc and test + + * doc/misc/dbus.texi (Register Objects): Adapt doc of + dbus-unregister-service. + + * test/lisp/net/dbus-tests.el (dbus--test-register-service): + Extend test. + +2023-11-24 Michael Albinus + + Do not unregister a D-Bus service which is a unique name + + * lisp/net/dbus.el (dbus-unregister-service): Check, whether + SERVICE is a known name. (Bug#67386) + +2023-11-24 Eli Zaretskii + + Fix byte-compilation warnings about 'sqlite-rollback' + + * lisp/sqlite.el (sqlite-transaction, sqlite-commit) + (sqlite-rollback): Declare. + * lisp/emacs-lisp/multisession.el (sqlite-commit) + (sqlite-transaction): Remove declaration. + +2023-11-23 Dmitry Gutov + + Make python-ts-mode's syntax-highlighting more standardized + + This was brought up in a Reddit discussion. + + * lisp/progmodes/python.el (python--treesit-fontify-variable): + Use font-lock-variable-use-face (since it applies to references). + (python-ts-mode): Move 'property' from 3rd to 4th + treesit-font-lock-level. + +2023-11-23 George Kuzler (tiny change) + + Fix "Text is read-only" on backspacing initial Calc input + + Immediately after `calc-mode' opens the minibuffer for input + (because you typed a digit, "e", etc), pressing backspace + should clear the minibuffer and return you to the *Calculator* + buffer. Instead, it leaves the minibuffer as-is and prints the + message "Text is read-only"; this is because the function used, + `erase-buffer', tries to erase the read-only minibuffer prompt. + Using `delete-minibuffer-contents' fixes this, since it doesn't + attempt to delete the prompt. + * lisp/calc/calc.el (calcDigit-backspace): Use + `delete-minibuffer-contents' instead of `erase-buffer'. (Bug#67395) + +2023-11-23 Jeremy Bryant + + Add a doc string to simple.el (bug#67355) + + * lisp/simple.el (kill-buffer--possibly-save): Add doc string. + +2023-11-23 Eli Zaretskii + + Mention "visual line" in user manual + + * doc/emacs/display.texi (Visual Line Mode): + * doc/emacs/basic.texi (Continuation Lines, Moving Point): Mention + "visual line". (Bug#67382) + +2023-11-23 Eli Zaretskii + + Allow listing Emoji from a read-only buffer + + * lisp/international/emoji.el (emoji-list): Don't barf here if the + original buffer is read-inly... + (emoji-list-select): ...barf here instead. (Bug#67400) + (emoji-list): Doc fix. + +2023-11-22 Michael Albinus + + Fix CRLF handling in Tramp (don't merge) + + * lisp/net/tramp-sh.el (tramp-send-command-and-read): Use 'space' + instead of 'blank' in rx expression, in order to handle also CR + and alike. Reported by Dominique Quatravaux + . + +2023-11-21 Dmitry Gutov + + Annotate java-ts-mode-test-movement with expected result + + Do not merge to master. + +2023-11-21 Theodor Thornhill + + Backport: Add more java indentation tests + + * test/lisp/progmodes/java-ts-mode-resources/indent.erts: Use default + indent offset, and tweak the indentation examples. + + (cherry picked from commit dbe7803aa1e8249bd70f67f25f19aedabeb9cc22) + +2023-11-21 Theodor Thornhill + + Backport: Add test for java indentation (bug#61115) + + * test/lisp/progmodes/java-ts-mode-resources/indent.erts: Add new test + case. + + (cherry picked from commit 229d0772e235f51812ed8020a31f9a8de366c7ba) + +2023-11-21 Noah Peart + + typescript-ts-mode: Support indentation for conditionals without braces + + * lisp/progmodes/typescript-ts-mode.el + (typescript-ts-mode--indent-rules): Support indentation for + conditionals without braces (bug#67031). + + * test/lisp/progmodes/typescript-ts-mode-resources/indent.erts + (Statement indentation without braces): New test. + +2023-11-21 Theodor Thornhill + + Backport: Add some basic tests for java-ts-mode and typescript-ts-mode + + * test/lisp/progmodes/java-ts-mode-resources/indent.erts: New file + with tests for indentation. + * test/lisp/progmodes/java-ts-mode-resources/movement.erts: New file + with tests for movement. + * test/lisp/progmodes/java-ts-mode-tests.el: New tests. + * test/lisp/progmodes/typescript-ts-mode-resources/indent.erts: New + file with tests for indentation. + * test/lisp/progmodes/typescript-ts-mode-tests.el: New tests. + + (cherry picked from commit c8dd37b16c574beda900d4ee48ac7b4ab4a2ee56) + +2023-11-21 Eli Zaretskii + + Fix 'with-sqlite-transaction' when BODY fails + + * lisp/sqlite.el (with-sqlite-transaction): Don't commit changes + if BODY errors out. Roll back the transaction if committing + fails. (Bug#67142) + + * etc/NEWS: + * doc/lispref/text.texi (Database): Document the error handling in + 'with-sqlite-transaction'. + +2023-11-19 Richard Stallman + + Fix wording in ELisp Intro manual + + * doc/lispintro/emacs-lisp-intro.texi (Lisp macro): Improve + wording in description of 'unless'. (Bug#67185) + +2023-11-18 Yuan Fu + + Add missing python-ts-mode keyword (bug#67015) + + * lisp/progmodes/python.el (python--treesit-keywords): Add "not in". + +2023-11-18 Dmitry Gutov + + Fix string-pixel-width with global setting of display-line-numbers + + * lisp/emacs-lisp/subr-x.el (string-pixel-width): + Instead of checking for display-line-numbers-mode, set the + display-line-numbers variable to nil (bug#67248). + +2023-11-18 Eli Zaretskii + + Document changes in 'edmacro-parse-keys' + + * lisp/edmacro.el (edmacro-parse-keys): Add a comment for forcing + output to be a vector. + (read-kbd-macro): Adjust the doc string to changes in + 'edmacro-parse-keys'. (Bug#67182) + +2023-11-18 Eli Zaretskii + + Add 2 SQLite extensions to allow-list. + + * src/sqlite.c (Fsqlite_load_extension): Add 2 Free Software + extensions to the allow-list. For the details, see + https://lists.gnu.org/archive/html/emacs-devel/2023-11/msg00234.html. + +2023-11-17 Michael Albinus + + * test/lisp/net/tramp-tests.el (tramp--test-timeout-handler): Be more verbose. + +2023-11-17 Michael Albinus + + Make Tramp aware of completion-regexp-list (don't merge) + + * lisp/net/tramp.el (tramp-skeleton-file-name-all-completions): + New defmacro. + (tramp-completion-handle-file-name-all-completions): + * lisp/net/tramp-adb.el (tramp-adb-handle-file-name-all-completions): + * lisp/net/tramp-crypt.el (tramp-crypt-handle-file-name-all-completions): + * lisp/net/tramp-fuse.el (tramp-fuse-handle-file-name-all-completions): + * lisp/net/tramp-gvfs.el (tramp-gvfs-handle-file-name-all-completions): + * lisp/net/tramp-sh.el (tramp-sh-handle-file-name-all-completions): + * lisp/net/tramp-smb.el (tramp-smb-handle-file-name-all-completions): + * lisp/net/tramp-sudoedit.el + (tramp-sudoedit-handle-file-name-all-completions): Use it. + +2023-11-17 Jeremy Bryant + + Add 5 docstrings to abbrev.el (bug#67153) + + * lisp/abbrev.el (prepare-abbrev-list-buffer, add-abbrev) + (inverse-add-abbrev, abbrev--describe) + (abbrev--possibly-save): Add doc strings. + +2023-11-15 Morgan Smith + + Fix CBZ file detection in doc-view-mode + + * lisp/doc-view.el (doc-view-set-doc-type): Fix CBZ file + detection. (Bug#67133) + + This fix is almost identical to the previous fix for ODF file + detection in bug#54947 which resulted in commit + b3ff4905388834994ff26d9d033d6bc62b094c1c + +2023-11-15 João Távora + + * lisp/progmodes/eglot.el (eglot-server-programs): Fix previous commit. + + (cherry picked from commit 58d9e735e721ecf0187a5e15eefc7641112ace0b) + +2023-11-14 João Távora + + Eglot: Send standard :language-id for typescript-language-server + + bug#67150 + + * lisp/progmodes/eglot.el (eglot-server-programs): Update + language-id for languages handled by typescript-language-server. + + (cherry picked from commit 1fe949888057b0275da041288709bd5690501974) + +2023-11-14 Zajcev Evgeny + + Typofix in the doc/lispref/modes.texi + +2023-11-14 Eli Zaretskii + + Fix spell-checking email message with citations + + This became broken 7 years ago, when the 'boundp condition was + removed, and with it an important unrelated part of the code. + * lisp/textmodes/ispell.el (ispell-message): Fix cite-regexp. + +2023-11-12 Xiaoyue Chen (tiny change) + + Pass only the local parts of Eshell's $PATH to 'tramp-remote-path' + + * lisp/eshell/esh-proc.el (eshell-gather-process-output): Get the + local part of the $PATH (bug#67126). + + Do not merge to master. + +2023-11-12 Jeremy Bryant + + Add two doc strings to cl-extra.el + + * lisp/emacs-lisp/cl-extra.el (cl--random-time) + (cl-find-class): Add docstrings. (Bug#66949) + +2023-11-11 Eli Zaretskii + + Improve documentation of read syntax and printed representation + + * doc/lispref/objects.texi (Syntax for Strings): Describe in more + detail how to specify special characters in string literals. + (Printed Representation, Character Type, Nonprinting Characters): + Improve information and add cross-references about printed + representation and read syntax. (Bug#67033) + +2023-11-09 Eli Zaretskii + + Improve documentation of signaling errors in batch mode + + * doc/lispref/control.texi (Signaling Errors) + (Processing of Errors): + * doc/lispref/os.texi (Batch Mode): + * doc/lispref/debugging.texi (Invoking the Debugger): + * lisp/emacs-lisp/debug.el (debug): + * src/eval.c (Fsignal): + * lisp/subr.el (error): Document more prominently that signaling + an unhandled error in batch mode kills Emacs. Better + documentation of backtrace in batch mode. + +2023-11-09 Yuan Fu + + Fix treesit-simple-indent-presets docstring (bug#67007) + + * lisp/treesit.el (treesit-simple-indent-presets): Fix docstring. + * doc/lispref/modes.texi (Parser-based Indentation): Fix example. + +2023-11-08 Stephen Berman + + Prevent an infinite loop in todo-mode (bug#66994) + + * lisp/calendar/todo-mode.el (todo-item-start): Moving an item to + a todo file (with `C-u m') that had not yet been read into a + buffer puts point at the beginning of the file, from where it is + impossible to reach todo-item-start by this function, so don't try + in that case. + +2023-11-08 Randy Taylor + + Fix cmake-ts-mode indentation (Bug#66845) + + * lisp/progmodes/cmake-ts-mode.el (cmake-ts-mode--indent-rules): + Support versions v0.3.0 and v0.4.0 of the grammar. + (cmake-ts-mode--font-lock-compatibility-fe9b5e0): Fix docstring. + +2023-11-05 Kyle Meyer + + Update to Org 9.6.11 + +2023-11-04 Mattias Engdegård + + Suggest alternative reason for ERT test duplication error + + * lisp/emacs-lisp/ert.el (ert-set-test): Amend error message; + maybe the redefinition was caused by a file loaded twice. + (Bug#66782) + + Suggested by Xiyue Deng. + + (cherry picked from commit 425d23fbeaede81ab4f50b4073949cc1c8a3fbd0) + +2023-11-04 Eli Zaretskii + + Fix description of 'Package-Requires' library header + + * doc/lispref/tips.texi (Library Headers): Update the description + of the 'Package-Requires' header. (Bug#66677) + +2023-10-30 Stefan Monnier + + * lisp/emacs-lisp/cl-lib.el (cl--defalias): Improve&fix docstring + +2023-10-30 Jeremy Bryant + + Add two docstrings in cl-lib.el + + * lisp/emacs-lisp/cl-lib.el (cl--set-buffer-substring) + (cl--defalias): Add docstrings. (Bug#66828) + +2023-10-27 Michael Albinus + + Fix Tramp (don't merge) + + * lisp/net/tramp.el (tramp-read-id-output): Identifiers can contain "-". + +2023-10-26 Michael Albinus + + * doc/misc/tramp.texi (Traces and Profiles): Fix indentation. (don't merge) + +2023-10-25 Michael Albinus + + * doc/misc/tramp.texi (Traces and Profiles): Fix indentation. (Don't merge) + +2023-10-25 Eli Zaretskii + + Fix guessing commands for zstandard archives in Dired + + * lisp/dired-aux.el (dired-guess-shell-alist-default): Fix + zstdandard commands. (Bug#66532) + +2023-10-25 Matthew Woodcraft (tiny change) + + Fix eglot.texi (JSONRPC objects in Elisp) example + + * doc/misc/eglot.texi (JSONRPC objects in Elisp): Correct the + example. (Bug#66569) + +2023-10-25 Michael Albinus + + * doc/man/emacsclient.1: Fix --tramp option. + +2023-10-24 Stefan Kangas + + Improve `nsm-protocol-check--3des-cipher` docstring + + * lisp/net/nsm.el (nsm-protocol-check--3des-cipher): Update + docstring to reflect current NIST policy. + +2023-10-24 Lassi Kortela + + Recognize backslash in `dns-mode` quoted values + + * lisp/textmodes/dns-mode.el (dns-mode-syntax-table): Recognize + backslash as an escape character. (Bug#66660) + + (cherry picked from commit e6f05e189db73a0f0b29f987381ffef61a409232) + +2023-10-24 Stefan Kangas + + Make `dns-mode` fontify quoted values correctly + + * lisp/textmodes/dns-mode.el (dns-mode-syntax-table): Fontify + quoted values correctly. (Bug#62214) + Suggested by Trent W. Buck . + + (cherry picked from commit c586d984f279aa61de4f5dfc4f6df660188dd0f6) + +2023-10-23 Stefan Kangas + + Change news.gmane.org to news.gmane.io + + * admin/notes/emba: + * doc/misc/gnus.texi (Group Parameters) + (Non-ASCII Group Names, Filling In Threads) + (Selection Groups, Spam Package Configuration Examples) + (Terminology): + * lisp/gnus/gnus-group.el (gnus-useful-groups): + * lisp/gnus/gnus-sum.el (gnus-fetch-old-headers): + * lisp/gnus/spam-report.el (spam-report-gmane-use-article-number) + (spam-report-gmane-internal): + * test/lisp/gnus/gnus-group-tests.el (gnus-short-group-name): + Change news.gmane.org to news.gmane.io. + Ref: https://news.gmane.io/ + +2023-10-23 Mauro Aranda + + Fix minor defcustom issues in Gnus (Bug#66715) + + * lisp/gnus/gnus-art.el (gnus-button-prefer-mid-or-mail): Allow + function and add :tag to const values. + * lisp/gnus/gnus-bookmark.el (gnus-bookmark-bookmark-inline-details): + Fix docstring. + * lisp/gnus/gnus-sum.el (gnus-simplify-subject-fuzzy-regexp): Allow a + single regexp as value. + * lisp/gnus/message.el (message-indent-citation-function): Allow a + single function as value. + (message-mail-alias-type): Allow for a list of options as value. + (message-dont-reply-to-names): Allow a function as value. + * lisp/gnus/spam-report.el (spam-report-url-ping-function): Fix + default value for the function widget. + +2023-10-23 Michael Albinus + + Minor connection-local variables fixes + + * doc/emacs/custom.texi (Connection Variables): Warn about + specifying the same variable twice. + + * lisp/files-x.el (connection-local-get-profiles): Normalize criteria. + +2023-10-23 Stefan Kangas + + Make Dired honor `insert-directory-program´ with globs + + Starting with commit 6f6639d6ed6c6314b2643f6c22498fc2e23d34c7 + (Bug#27631), Dired stopped respecting the value of + 'insert-directory-program' when using directory wildcards/globs. + + * lisp/dired.el (dired-insert-directory): Honor the value of + 'insert-directory-program' when using directory wildcards. + +2023-10-22 Morgan J. Smith + + Fix typo in url-privacy-level :type + + * lisp/url/url-vars.el (url-privacy-level): Fix typo in + :type. (Bug#66613) + +2023-10-22 Juri Linkov + + * lisp/vc/log-view.el (log-view-mode-menu): Quote derived modes (bug#66686). + +2023-10-22 Petteri Hintsanen + + * lisp/tab-bar.el: Fix the close button with auto-width (bug#66678). + + (tab-bar-auto-width): Take into account the length of tab-bar-close-button + more than one character: " x". + Don't merge to master. + +2023-10-22 Mauro Aranda + + Fix State button for customize-icon (Bug#66635) + + * lisp/cus-edit.el (custom-icon-action): New function. + (custom-icon): Use it as the :action. Otherwise, clicking the State + button is a noop. Remove irrelevant stuff from the docstring and + comment out some copy-pasta. + (custom-icon-extended-menu): New variable, the menu to show upon + :action. + (custom-icon-set): Really redraw the widget with the new settings. + Comment out strange call to custom-variable-backup-value. + (custom-icon-save): New function. + + * lisp/emacs-lisp/icons.el (icons--merge-spec): Fix call to plist-get + and avoid infloop. + +2023-10-22 Yuan Fu + + Fix the use of adaptive-fill-regexp in treesit indent preset + + * lisp/treesit.el (treesit-simple-indent-presets): + adaptive-fill-regexp don't have a capture group (the group in the + default value is supposed to be a non-capture group), so don't use the + group. Also, in the second diff hunk, replace looking-at with + looking-at-p so it doesn't override match data that we use later. + +2023-10-21 nverno + + Fix treesit-install-language-grammar (bug#66673) + + * lisp/treesit.el (treesit-install-language-grammar): Take out the + language symbol when storing the recipe. + +2023-10-21 Yuan Fu + + Fix treesit-explore-mode (bug#66431) + + * lisp/treesit.el (treesit-explore-mode): Reset + treesit--explorer-last-node before calling treesit--explorer-refresh, + so that in the rare case described in the bug report, the explorer + buffer don't show the outdated node. + +2023-10-21 Dmitry Gutov + + tsx-ts-mode--font-lock-compatibility-bb1f97b: Re-fix the previous fix + + * lisp/progmodes/typescript-ts-mode.el + (tsx-ts-mode--font-lock-compatibility-bb1f97b): Make sure the + tested query is actually valid in the new grammar (bug#66646). + +2023-10-19 Michael Albinus + + Update Tramp version (don't merge with master) + + * doc/misc/trampver.texi: + * lisp/net/trampver.el: Change version to "2.6.2.29.2". + (customize-package-emacs-version-alist): + Adapt Tramp version integrated in Emacs 29.2. + +2023-10-19 Eli Zaretskii + + Bump Emacs version + + * README: + * configure.ac: + * msdos/sed2v2.inp: + * nt/README.W32: Bump Emacs version to 29.1.90. + 2023-10-16 Po Lu Correctly register focus events concomitant with alpha changes @@ -119361,7 +120907,7 @@ This file records repository revisions from commit f2ae39829812098d8269eafbc0fcb98959ee5bb7 (exclusive) to -commit d9e1605122b4ba70a55f7b168505b7d7f8d2bdd6 (inclusive). +commit 92a7132bd6c76a43860fa01ca3363857d8dfc8f3 (inclusive). See ChangeLog.3 for earlier changes. ;; Local Variables: diff --git a/etc/HISTORY b/etc/HISTORY index f6df3e6fe60..afa14cb2350 100644 --- a/etc/HISTORY +++ b/etc/HISTORY @@ -233,6 +233,8 @@ Was not actually released. GNU Emacs 29.1 (2023-07-30) emacs-29.1 +GNU Emacs 29.2 (2024-01-18) emacs-29.2 + ---------------------------------------------------------------------- This file is part of GNU Emacs. commit 1ab88d8aa52453d2839435e495b47e74673a38c7 Author: Eli Zaretskii Date: Thu Jan 18 04:29:44 2024 -0500 Bump Emacs version to 29.2 * README: * configure.ac: * nt/README.W32: * msdos/sed2v2.inp: Bump Emacs version to 29.2. diff --git a/README b/README index 65629dd8e66..1ec182e7497 100644 --- a/README +++ b/README @@ -2,7 +2,7 @@ Copyright (C) 2001-2024 Free Software Foundation, Inc. See the end of the file for license conditions. -This directory tree holds version 29.1.90 of GNU Emacs, the extensible, +This directory tree holds version 29.2 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 diff --git a/configure.ac b/configure.ac index 42e99408199..8c98e8153f2 100644 --- a/configure.ac +++ b/configure.ac @@ -23,7 +23,7 @@ dnl along with GNU Emacs. If not, see . AC_PREREQ([2.65]) dnl Note this is parsed by (at least) make-dist and lisp/cedet/ede/emacs.el. -AC_INIT([GNU Emacs], [29.1.90], [bug-gnu-emacs@gnu.org], [], +AC_INIT([GNU Emacs], [29.2], [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, diff --git a/msdos/sed2v2.inp b/msdos/sed2v2.inp index da2031b4020..9790cf55f3d 100644 --- a/msdos/sed2v2.inp +++ b/msdos/sed2v2.inp @@ -67,7 +67,7 @@ /^#undef PACKAGE_NAME/s/^.*$/#define PACKAGE_NAME ""/ /^#undef PACKAGE_STRING/s/^.*$/#define PACKAGE_STRING ""/ /^#undef PACKAGE_TARNAME/s/^.*$/#define PACKAGE_TARNAME ""/ -/^#undef PACKAGE_VERSION/s/^.*$/#define PACKAGE_VERSION "29.1.90"/ +/^#undef PACKAGE_VERSION/s/^.*$/#define PACKAGE_VERSION "29.2"/ /^#undef SYSTEM_TYPE/s/^.*$/#define SYSTEM_TYPE "ms-dos"/ /^#undef HAVE_DECL_GETENV/s/^.*$/#define HAVE_DECL_GETENV 1/ /^#undef SYS_SIGLIST_DECLARED/s/^.*$/#define SYS_SIGLIST_DECLARED 1/ diff --git a/nt/README.W32 b/nt/README.W32 index 1f299d7f5d8..00ec926ef7f 100644 --- a/nt/README.W32 +++ b/nt/README.W32 @@ -1,7 +1,7 @@ Copyright (C) 2001-2024 Free Software Foundation, Inc. See the end of the file for license conditions. - Emacs version 29.1.90 for MS-Windows + Emacs version 29.2 for MS-Windows This README file describes how to set up and run a precompiled distribution of the latest version of GNU Emacs for MS-Windows. You commit 20125ad97b4592d7f9ae815aff2ca68cda7a4c31 Author: Eli Zaretskii Date: Thu Jan 18 04:23:04 2024 -0500 ; admin/authors.el (authors-aliases): Update for Emacs 29.2. diff --git a/admin/authors.el b/admin/authors.el index de1b6ec1d7f..083023a3dad 100644 --- a/admin/authors.el +++ b/admin/authors.el @@ -250,6 +250,8 @@ files.") ("Simen Heggestøyl" "simenheg@gmail\\.com") (nil "prime.wizard") ("Shun-ichi Goto" "Shun-ichi GOTO") + ;; The trailing dash is a kludge, so this contributor is not ignored. + ("skykanin-" "skykanin@users\\.noreply\\.github\\.com") ;; There are other Stefans. ;;; ("Stefan Monnier" "Stefan") (nil "ssnnoo") commit 92a7132bd6c76a43860fa01ca3363857d8dfc8f3 Author: Eli Zaretskii Date: Thu Jan 18 03:47:49 2024 -0500 ; * etc/NEWS: Clean up for Emacs 29.2. diff --git a/etc/NEWS b/etc/NEWS index 069661866ce..1a0e1f37366 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -15,12 +15,6 @@ in older Emacs versions. You can narrow news to a specific version by calling 'view-emacs-news' with a prefix argument or by typing 'C-u C-h C-n'. -Temporary note: -+++ indicates that all relevant manuals in doc/ have been updated. ---- means no change in the manuals is needed. -When you add a new item, use the appropriate mark if you are sure it -applies, and please also update docstrings as needed. - * Installation Changes in Emacs 29.2 @@ -43,36 +37,24 @@ more details. * Changes in Emacs 29.2 - -* Editing Changes in Emacs 29.2 +This is a bug-fix release with no new features. * Changes in Specialized Modes and Packages in Emacs 29.2 ** Tramp -+++ *** New user option 'tramp-show-ad-hoc-proxies'. When non-nil, ad-hoc definitions are kept in remote file names instead of showing the shortcuts. - -* New Modes and Packages in Emacs 29.2 - * Incompatible Lisp Changes in Emacs 29.2 -+++ ** 'with-sqlite-transaction' rolls back changes if its BODY fails. If the BODY of the macro signals an error, or committing the results of the transaction fails, the changes will now be rolled back. - -* Lisp Changes in Emacs 29.2 - - -* Changes in Emacs 29.2 on Non-Free Operating Systems - * Installation Changes in Emacs 29.1 commit 314ac2e4317650a5135b950374118bbc38e8207f Author: Eli Zaretskii Date: Thu Jan 18 08:29:34 2024 +0200 ; * lisp/mail/rmail.el (rmail-show-message-verbose-min): Doc fix (bug#68369). diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el index b6c36c2f76c..5747091c498 100644 --- a/lisp/mail/rmail.el +++ b/lisp/mail/rmail.el @@ -2684,7 +2684,9 @@ N defaults to the current message." (and (string-match text-regexp content-type-header) t))))) (defcustom rmail-show-message-verbose-min 200000 - "Message size at which to show progress messages for displaying it." + "Message size at which to show progress messages for displaying it. +Messages longer than this (in characters) will produce echo-area +messages when Rmail processes such a message for display." :type 'integer :group 'rmail :version "23.1") commit 2cb1b76696b56fe01eb70d623b602dfe00613511 Author: Dmitry Gutov Date: Thu Jan 18 01:25:24 2024 +0200 diff-mode: Support committing diff with file deletions * lisp/vc/diff-mode.el (diff-vc-deduce-fileset): Remove nil elements from the result (bug#68443). diff --git a/lisp/vc/diff-mode.el b/lisp/vc/diff-mode.el index 2b9d12a5756..4f150dc7f36 100644 --- a/lisp/vc/diff-mode.el +++ b/lisp/vc/diff-mode.el @@ -2955,7 +2955,7 @@ hunk text is not found in the source file." (goto-char (point-min)) (while (progn (diff-file-next) (not (eobp))) (push (diff-find-file-name nil t) files))) - (list backend (nreverse files) nil nil 'patch))) + (list backend (delete nil (nreverse files)) nil nil 'patch))) (defun diff--filter-substring (str) (when diff-font-lock-prettify commit b96aa528f642f69e2b42620807d53f8d9bbd9623 Author: Juri Linkov Date: Tue Jan 16 19:51:18 2024 +0200 * lisp/net/eww.el (eww-retrieve): Fix args of eww-render for sync (bug#68336). Suggested by Phil Sainty . diff --git a/lisp/net/eww.el b/lisp/net/eww.el index d127d819f26..7be65dc1e82 100644 --- a/lisp/net/eww.el +++ b/lisp/net/eww.el @@ -427,7 +427,7 @@ For more information, see Info node `(eww) Top'." ((eq eww-retrieve-command 'sync) (let ((data-buffer (url-retrieve-synchronously url))) (with-current-buffer data-buffer - (apply #'eww-render nil url cbargs)))) + (apply #'eww-render nil cbargs)))) (t (let ((buffer (generate-new-buffer " *eww retrieve*")) (error-buffer (generate-new-buffer " *eww error*"))) commit d4b9cb6b5b640e8d769c82289e4308407be12ba9 Author: Mike Kupfer Date: Mon Jan 15 11:47:43 2024 -0800 Fix folder creation error (Bug#67361) * lisp/mh-e/mh-funcs.el (mh-kill-folder) * lisp/mh-e/mh-search.el (mh-index-new-folder) * lisp/mh-e/mh-utils.el (mh-prompt-for-folder): Check for existence of 'speedbar-buffer' rather than 'mh-speed-folder-map'. The latter can exist if 'mh-speed' has only been loaded but not displayed. (cherry picked from commit e6a2901b1be6b4aa01f8bf0d3c6e06344ce8d366) diff --git a/lisp/mh-e/mh-funcs.el b/lisp/mh-e/mh-funcs.el index 2684722eb26..bb3e67467d5 100644 --- a/lisp/mh-e/mh-funcs.el +++ b/lisp/mh-e/mh-funcs.el @@ -108,7 +108,7 @@ folder. This is useful for folders that are easily regenerated." (window-config mh-previous-window-config)) (mh-set-folder-modified-p t) ; lock folder to kill it (mh-exec-cmd-daemon "rmf" 'mh-rmf-daemon folder) - (when (boundp 'mh-speed-folder-map) + (when (and (boundp 'speedbar-buffer) speedbar-buffer) (mh-speed-invalidate-map folder)) (mh-remove-from-sub-folders-cache folder) (mh-set-folder-modified-p nil) ; so kill-buffer doesn't complain diff --git a/lisp/mh-e/mh-search.el b/lisp/mh-e/mh-search.el index f475973631c..59dad161c11 100644 --- a/lisp/mh-e/mh-search.el +++ b/lisp/mh-e/mh-search.el @@ -1569,7 +1569,7 @@ If the folder returned doesn't exist then it is created." (save-excursion (mh-exec-cmd-quiet nil "rmf" chosen-name)) (mh-exec-cmd-quiet nil "folder" "-create" "-fast" chosen-name) (mh-remove-from-sub-folders-cache chosen-name) - (when (boundp 'mh-speed-folder-map) + (when (and (boundp 'speedbar-buffer) speedbar-buffer) (mh-speed-add-folder chosen-name)) chosen-name)) diff --git a/lisp/mh-e/mh-utils.el b/lisp/mh-e/mh-utils.el index 7943879d887..9d5711105ba 100644 --- a/lisp/mh-e/mh-utils.el +++ b/lisp/mh-e/mh-utils.el @@ -795,7 +795,7 @@ used in searching." (message "Creating %s" folder-name) (mh-exec-cmd-error nil "folder" folder-name) (mh-remove-from-sub-folders-cache folder-name) - (when (boundp 'mh-speed-folder-map) + (when (and (boundp 'speedbar-buffer) speedbar-buffer) (mh-speed-add-folder folder-name)) (message "Creating %s...done" folder-name)) (new-file-flag commit 53b5b77010117e2f58565dacf96fddeb734b6021 Author: Gregory Heytings Date: Wed Aug 16 15:58:29 2023 +0000 Simplify 'without-restriction' This simplification is symmetrical to 01fb898420. * src/editfns.c: (Finternal__labeled_widen): Add a call to 'Fwiden', and rename from 'internal--unlabel-restriction'. (unwind_labeled_narrow_to_region): Use the renamed function, and remove the call to 'Fwiden'. (syms_of_editfns): Rename the symbol. * lisp/subr.el (internal--without-restriction): Use the renamed function. (cherry picked from commit 9e9e11648d3d5514de85edfb69f0949a062f4716) diff --git a/lisp/subr.el b/lisp/subr.el index e8a6bb01c1e..d9df8d1a458 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -4013,8 +4013,9 @@ by `with-restriction' with the same LABEL argument are lifted. (defun internal--without-restriction (body &optional label) "Helper function for `without-restriction', which see." (save-restriction - (if label (internal--unlabel-restriction label)) - (widen) + (if label + (internal--labeled-widen label) + (widen)) (funcall body))) (defun find-tag-default-bounds () diff --git a/src/editfns.c b/src/editfns.c index 6ddee0840c2..85f7739df07 100644 --- a/src/editfns.c +++ b/src/editfns.c @@ -2684,7 +2684,7 @@ DEFUN ("delete-and-extract-region", Fdelete_and_extract_region, labeled restriction was entered (which may be a narrowing that was set by the user and is visible on display). This alist is used internally by narrow-to-region, internal--labeled-narrow-to-region, - widen, internal--unlabel-restriction and save-restriction. For + widen, internal--labeled-widen and save-restriction. For efficiency reasons, an alist is used instead of a buffer-local variable: otherwise reset_outermost_restrictions, which is called during each redisplay cycle, would have to loop through all live @@ -2860,8 +2860,7 @@ labeled_restrictions_restore (Lisp_Object buf_and_restrictions) static void unwind_labeled_narrow_to_region (Lisp_Object label) { - Finternal__unlabel_restriction (label); - Fwiden (); + Finternal__labeled_widen (label); } /* Narrow current_buffer to BEGV-ZV with a restriction labeled with @@ -2984,7 +2983,7 @@ argument. To gain access to other portions of the buffer, use DEFUN ("internal--labeled-narrow-to-region", Finternal__labeled_narrow_to_region, Sinternal__labeled_narrow_to_region, 3, 3, 0, - doc: /* Restrict editing in this buffer to START-END, and label the restriction with LABEL. + doc: /* Restrict this buffer to START-END, and label the restriction with LABEL. This is an internal function used by `with-restriction'. */) (Lisp_Object start, Lisp_Object end, Lisp_Object label) @@ -3002,9 +3001,9 @@ This is an internal function used by `with-restriction'. */) return Qnil; } -DEFUN ("internal--unlabel-restriction", Finternal__unlabel_restriction, - Sinternal__unlabel_restriction, 1, 1, 0, - doc: /* If the current restriction is labeled with LABEL, remove its label. +DEFUN ("internal--labeled-widen", Finternal__labeled_widen, + Sinternal__labeled_widen, 1, 1, 0, + doc: /* Remove the current restriction if it is labeled with LABEL, and widen. This is an internal function used by `without-restriction'. */) (Lisp_Object label) @@ -3012,6 +3011,7 @@ This is an internal function used by `without-restriction'. */) Lisp_Object buf = Fcurrent_buffer (); if (EQ (labeled_restrictions_peek_label (buf), label)) labeled_restrictions_pop (buf); + Fwiden (); return Qnil; } @@ -4951,7 +4951,7 @@ it to be non-nil. */); defsubr (&Swiden); defsubr (&Snarrow_to_region); defsubr (&Sinternal__labeled_narrow_to_region); - defsubr (&Sinternal__unlabel_restriction); + defsubr (&Sinternal__labeled_widen); defsubr (&Ssave_restriction); defsubr (&Stranspose_regions); }