commit dc653bf0636d481303f558e2034550648ee58947 (HEAD, refs/remotes/origin/master) Author: Juri Linkov Date: Mon Dec 30 09:23:05 2024 +0200 * lisp/treesit.el (treesit-show-paren-data--categorize): Improve. Instead of using only the immediate parent, try to search more levels using 'treesit-parent-until' (bug#75122). diff --git a/lisp/treesit.el b/lisp/treesit.el index b15e747ea87..50e510fa7db 100644 --- a/lisp/treesit.el +++ b/lisp/treesit.el @@ -3393,8 +3393,7 @@ For BOUND, MOVE, BACKWARD, LOOKING-AT, see the descriptions in (defun treesit-show-paren-data--categorize (pos &optional end-p) (let* ((pred 'sexp-list) - (parent (treesit-node-parent (treesit-node-at (if end-p (1- pos) pos)))) - (parent (when (treesit-node-match-p parent pred t) parent)) + (parent (treesit-parent-until (treesit-node-at (if end-p (1- pos) pos)) pred)) (first (when parent (treesit-node-child parent 0))) (first-start (when first (treesit-node-start first))) (first-end (when first (treesit-node-end first))) commit ce74534ef8cc46fd9fbdc9363da5994b1ae1cf58 Author: Eli Zaretskii Date: Sun Dec 29 21:54:59 2024 +0200 ; * etc/NEWS: Improve recently added entries for tree-sitter. diff --git a/etc/NEWS b/etc/NEWS index 03789251a10..85213cbaa6f 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -970,7 +970,7 @@ authorize the invoked D-Bus method (for example via polkit). ** The customization group 'wp' has been removed. It has been obsolete since Emacs 26.1. Use the group 'text' instead. -** Tree-sitter changes +** Changes in tree-sitter modes. +++ *** Indirect buffers can have their own parser list. @@ -1000,22 +1000,15 @@ Unlike the existing thing 'sexp' that defines both lists and atoms, 'sexp-list' defines only lists to be navigated by 'forward-sexp'. The new function 'treesit-forward-sexp-list' uses 'sexp-list' to move across lists. But to move across atoms inside the list -it uses `forward-sexp-default-function'. - -*** New function 'treesit-forward-list'. -Tree-sitter conditionally sets 'forward-list-function' for major modes -that have defined 'sexp-list' in 'treesit-thing-settings' to enable -the 'forward-list' motion command. - -*** New function 'treesit-down-list'. -Tree-sitter conditionally sets 'down-list-function' for major modes -that have defined 'sexp-list' in 'treesit-thing-settings' to enable -the 'down-list' motion command. - -*** New function 'treesit-up-list'. -Tree-sitter conditionally sets 'up-list-function' for major modes -that have defined 'sexp-list' in 'treesit-thing-settings' to enable -the 'up-list' motion command. +it uses 'forward-sexp-default-function'. + +*** New tree-sitter based functions for moving by sexp-lists. +If a major mode defines 'sexp-list' in 'treesit-thing-settings', +tree-sitter setup for these modes sets 'forward-list-function' to +'treesit-forward-list', 'up-list-function' to 'treesit-up-list', and +'down-list-function' to 'treesit-down-list'. This enables the +'forward-list', 'up-list', and 'down-list' motion commands for those +modes. *** Tree-sitter enabled modes now properly support 'show-paren-mode'. They do that by letting 'show-paren-mode' use the results of parsing by commit 2e8f875067bc7068f79cb3e249de9da68c54d210 Author: Eli Zaretskii Date: Sun Dec 29 21:44:58 2024 +0200 ; * etc/NEWS: Improve last change. diff --git a/etc/NEWS b/etc/NEWS index bb9a10252a9..03789251a10 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1018,6 +1018,10 @@ that have defined 'sexp-list' in 'treesit-thing-settings' to enable the 'up-list' motion command. *** Tree-sitter enabled modes now properly support 'show-paren-mode'. +They do that by letting 'show-paren-mode' use the results of parsing by +the tree-sitter library. The new function 'treesit-show-paren-data' is +used to communicate the tree-sitter parsing results to +'show-paren-mode'. +++ *** New function 'treesit-language-display-name'. commit d2c05c219ed1abbbda34f68489d21a0b2cd513e1 Author: Juri Linkov Date: Sun Dec 29 21:15:07 2024 +0200 ; * etc/NEWS: Remove implementation details of 'treesit-show-paren-data' diff --git a/etc/NEWS b/etc/NEWS index ebb2c2f571d..bb9a10252a9 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1017,9 +1017,7 @@ Tree-sitter conditionally sets 'up-list-function' for major modes that have defined 'sexp-list' in 'treesit-thing-settings' to enable the 'up-list' motion command. -*** New function 'treesit-show-paren-data'. -Tree-sitter sets 'show-paren-data-function' to this function -to support 'show-paren-mode'. +*** Tree-sitter enabled modes now properly support 'show-paren-mode'. +++ *** New function 'treesit-language-display-name'. commit 1addae07be1982a6cafc0e0b3955b59bd1fb481c Author: Juri Linkov Date: Sun Dec 29 20:08:11 2024 +0200 Treesit support for show-paren-mode (bug#75122) * lisp/treesit.el (treesit-show-paren-data--categorize): New internal function. (treesit-show-paren-data): New function. (treesit-major-mode-setup): Set 'show-paren-data-function' to 'treesit-show-paren-data'. diff --git a/etc/NEWS b/etc/NEWS index 11dfccd0c07..ebb2c2f571d 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1017,6 +1017,10 @@ Tree-sitter conditionally sets 'up-list-function' for major modes that have defined 'sexp-list' in 'treesit-thing-settings' to enable the 'up-list' motion command. +*** New function 'treesit-show-paren-data'. +Tree-sitter sets 'show-paren-data-function' to this function +to support 'show-paren-mode'. + +++ *** New function 'treesit-language-display-name'. This new function returns the display name of a language given the diff --git a/lisp/treesit.el b/lisp/treesit.el index 4441a038ae8..b15e747ea87 100644 --- a/lisp/treesit.el +++ b/lisp/treesit.el @@ -3389,6 +3389,49 @@ For BOUND, MOVE, BACKWARD, LOOKING-AT, see the descriptions in (setq level (1+ level))) (if (zerop level) 1 level))) +;;; Show paren mode + +(defun treesit-show-paren-data--categorize (pos &optional end-p) + (let* ((pred 'sexp-list) + (parent (treesit-node-parent (treesit-node-at (if end-p (1- pos) pos)))) + (parent (when (treesit-node-match-p parent pred t) parent)) + (first (when parent (treesit-node-child parent 0))) + (first-start (when first (treesit-node-start first))) + (first-end (when first (treesit-node-end first))) + (last (when parent (treesit-node-child parent -1))) + (last-start (when last (treesit-node-start last))) + (last-end (when last (treesit-node-end last))) + (dir (if show-paren-when-point-inside-paren + (cond + ((and first (<= first-start pos first-end)) 1) + ((and last (<= last-start pos last-end)) -1)) + (cond + ((and first (= first-start pos)) 1) + ((and last (= pos last-end)) -1))))) + (cond + ((eq dir 1) (list first-start first-end last-start last-end)) + ((eq dir -1) (list last-start last-end first-start first-end))))) + +(defun treesit-show-paren-data () + "A function suitable for `show-paren-data-function' (which see)." + (or (treesit-show-paren-data--categorize (point)) + (unless (bobp) (treesit-show-paren-data--categorize (point) t)) + (when show-paren-when-point-in-periphery + (let* ((ind-pos (save-excursion (back-to-indentation) (point))) + (eol-pos + (save-excursion + (end-of-line) (skip-chars-backward " \t" ind-pos) (point)))) + (cond + ((<= (point) ind-pos) + (or (treesit-show-paren-data--categorize ind-pos) + (unless (bobp) + (treesit-show-paren-data--categorize (1- eol-pos))))) + ((>= (point) eol-pos) + (unless (bobp) + (treesit-show-paren-data--categorize (1- eol-pos))))))) + ;; Fall back for parens in e.g. 'for_statement' + (show-paren--default))) + ;;; Activating tree-sitter (defun treesit-ready-p (language &optional quiet) @@ -3547,6 +3590,8 @@ before calling this function." (setq-local outline-search-function #'treesit-outline-search outline-level #'treesit-outline-level)) + (setq-local show-paren-data-function 'treesit-show-paren-data) + ;; Remove existing local parsers. (dolist (ov (overlays-in (point-min) (point-max))) (when-let* ((parser (overlay-get ov 'treesit-parser))) commit ec8dd27f008bca810209354a189d241479fe4d32 Author: Juri Linkov Date: Sun Dec 29 19:57:28 2024 +0200 Add new variable 'up-list-function' for 'treesit-up-list' * lisp/emacs-lisp/lisp.el (up-list-function): New variable (bug#73404). (up-list-default-function): New function. (up-list): Split part to 'up-list-default-function'. * lisp/treesit.el (treesit-up-list): New function. (treesit-major-mode-setup): Set 'up-list-function' to 'treesit-up-list'. diff --git a/etc/NEWS b/etc/NEWS index 5c01cf1e0de..11dfccd0c07 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1012,6 +1012,11 @@ Tree-sitter conditionally sets 'down-list-function' for major modes that have defined 'sexp-list' in 'treesit-thing-settings' to enable the 'down-list' motion command. +*** New function 'treesit-up-list'. +Tree-sitter conditionally sets 'up-list-function' for major modes +that have defined 'sexp-list' in 'treesit-thing-settings' to enable +the 'up-list' motion command. + +++ *** New function 'treesit-language-display-name'. This new function returns the display name of a language given the diff --git a/lisp/emacs-lisp/lisp.el b/lisp/emacs-lisp/lisp.el index 2f0561096a5..2d2a283da33 100644 --- a/lisp/emacs-lisp/lisp.el +++ b/lisp/emacs-lisp/lisp.el @@ -239,6 +239,10 @@ On error, location of point is unspecified." (interactive "^p\nd\nd") (up-list (- (or arg 1)) escape-strings no-syntax-crossing)) +(defvar up-list-function nil + "If non-nil, `up-list' delegates to this function. +Should take the same arguments and behave similarly to `up-list'.") + (defun up-list (&optional arg escape-strings no-syntax-crossing) "Move forward out of one level of parentheses. This command will also work on other parentheses-like expressions @@ -255,6 +259,12 @@ end of a list broken across multiple strings. On error, location of point is unspecified." (interactive "^p\nd\nd") + (if up-list-function + (funcall up-list-function arg escape-strings no-syntax-crossing) + (up-list-default-function arg escape-strings no-syntax-crossing))) + +(defun up-list-default-function (&optional arg escape-strings no-syntax-crossing) + "Default function for `up-list-function'." (or arg (setq arg 1)) (let ((inc (if (> arg 0) 1 -1)) (pos nil)) diff --git a/lisp/treesit.el b/lisp/treesit.el index d62d067868d..4441a038ae8 100644 --- a/lisp/treesit.el +++ b/lisp/treesit.el @@ -2571,6 +2571,33 @@ ARG is described in the docstring of `down-list'." (if pos (goto-char pos) (treesit--scan-error pred arg))) (setq arg (- arg inc))))) +(defun treesit-up-list (&optional arg _escape-strings _no-syntax-crossing) + "Move forward out of one level of parentheses. +What constitutes a level of parentheses is determined by +`sexp-list' in `treesit-thing-settings' that usually defines +parentheses-like expressions. + +This command is the tree-sitter variant of `up-list' +redefined by the variable `up-list-function'. + +ARG is described in the docstring of `up-list'." + (interactive "^p") + (let* ((pred 'sexp-list) + (arg (or arg 1)) + (inc (if (> arg 0) 1 -1))) + (while (/= arg 0) + (let ((node (treesit-thing-at (point) pred))) + (while (and node (eq (point) (if (> arg 0) + (treesit-node-end node) + (treesit-node-start node)))) + (setq node (treesit-parent-until node pred))) + (if node + (goto-char (if (> arg 0) + (treesit-node-end node) + (treesit-node-start node))) + (user-error "At top level"))) + (setq arg (- arg inc))))) + (defun treesit-transpose-sexps (&optional arg) "Tree-sitter `transpose-sexps' function. ARG is the same as in `transpose-sexps'. @@ -3497,7 +3524,8 @@ before calling this function." (when (treesit-thing-defined-p 'sexp-list nil) (setq-local forward-sexp-function #'treesit-forward-sexp-list) (setq-local forward-list-function #'treesit-forward-list) - (setq-local down-list-function #'treesit-down-list)) + (setq-local down-list-function #'treesit-down-list) + (setq-local up-list-function #'treesit-up-list)) (when (treesit-thing-defined-p 'sentence nil) (setq-local forward-sentence-function #'treesit-forward-sentence)) commit 3c50edb2b500c6ac18696e99c3f8df597dea54d4 Author: Juri Linkov Date: Sun Dec 29 19:51:18 2024 +0200 Add new variable 'down-list-function' for 'treesit-down-list' * lisp/emacs-lisp/lisp.el (down-list-default-function): New function. (down-list-function): New variable (bug#73404). (down-list): Move meat to 'down-list-default-function', and call 'down-list-function' when non-nil. Don't raise an error in strings or comments when 'down-list-function' is non-nil. * lisp/treesit.el (treesit--scan-error): New internal function. (treesit-forward-sexp, treesit-forward-list): Use 'treesit--scan-error'. (treesit-down-list): New function. (treesit-major-mode-setup): Set 'down-list-function' to 'treesit-down-list'. diff --git a/etc/NEWS b/etc/NEWS index a66899e83e0..5c01cf1e0de 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1007,6 +1007,11 @@ Tree-sitter conditionally sets 'forward-list-function' for major modes that have defined 'sexp-list' in 'treesit-thing-settings' to enable the 'forward-list' motion command. +*** New function 'treesit-down-list'. +Tree-sitter conditionally sets 'down-list-function' for major modes +that have defined 'sexp-list' in 'treesit-thing-settings' to enable +the 'down-list' motion command. + +++ *** New function 'treesit-language-display-name'. This new function returns the display name of a language given the diff --git a/lisp/emacs-lisp/lisp.el b/lisp/emacs-lisp/lisp.el index e45064a459b..2f0561096a5 100644 --- a/lisp/emacs-lisp/lisp.el +++ b/lisp/emacs-lisp/lisp.el @@ -187,6 +187,17 @@ report errors as appropriate for this kind of usage." (or arg (setq arg 1)) (forward-list (- arg) interactive)) +(defun down-list-default-function (&optional arg) + "Default function for `down-list-function'." + (let ((inc (if (> arg 0) 1 -1))) + (while (/= arg 0) + (goto-char (or (scan-lists (point) inc -1) (buffer-end arg))) + (setq arg (- arg inc))))) + +(defvar down-list-function nil + "If non-nil, `down-list' delegates to this function. +Should take the same arguments and behave similarly to `down-list'.") + (defun down-list (&optional arg interactive) "Move forward down one level of parentheses. This command will also work on other parentheses-like expressions @@ -194,20 +205,21 @@ defined by the current language mode. With ARG, do this that many times. A negative argument means move backward but still go down a level. This command assumes point is not in a string or comment. +Calls `down-list-function' to do the work, if that is non-nil. If INTERACTIVE is non-nil, as it is interactively, report errors as appropriate for this kind of usage." (interactive "^p\nd") - (when (ppss-comment-or-string-start (syntax-ppss)) + (when (and (null down-list-function) + (ppss-comment-or-string-start (syntax-ppss))) (user-error "This command doesn't work in strings or comments")) (if interactive (condition-case _ (down-list arg nil) (scan-error (user-error "At bottom level"))) (or arg (setq arg 1)) - (let ((inc (if (> arg 0) 1 -1))) - (while (/= arg 0) - (goto-char (or (scan-lists (point) inc -1) (buffer-end arg))) - (setq arg (- arg inc)))))) + (if down-list-function + (funcall down-list-function arg) + (down-list-default-function arg)))) (defun backward-up-list (&optional arg escape-strings no-syntax-crossing) "Move backward out of one level of parentheses. diff --git a/lisp/treesit.el b/lisp/treesit.el index 7ded154eba8..d62d067868d 100644 --- a/lisp/treesit.el +++ b/lisp/treesit.el @@ -2420,6 +2420,13 @@ delimits medium sized statements in the source code. It is, however, smaller in scope than sentences. This is used by `treesit-forward-sexp' and friends.") +(defun treesit--scan-error (pred arg) + (when-let* ((parent (treesit-thing-at (point) pred t)) + (boundary (treesit-node-child parent (if (> arg 0) -1 0)))) + (signal 'scan-error (list (format-message "No more %S to move across" pred) + (treesit-node-start boundary) + (treesit-node-end boundary))))) + (defun treesit-forward-sexp (&optional arg) "Tree-sitter implementation for `forward-sexp-function'. @@ -2460,13 +2467,7 @@ across atoms (such as symbols or words) inside the list." ;; the obstacle, like `forward-sexp' does. If we couldn't ;; find a parent, we simply return nil without moving point, ;; then functions like `up-list' will signal "at top level". - (when-let* ((parent (treesit-thing-at (point) pred t)) - (boundary (if (> arg 0) - (treesit-node-child parent -1) - (treesit-node-child parent 0)))) - (signal 'scan-error (list "No more sexp to move across" - (treesit-node-start boundary) - (treesit-node-end boundary))))))) + (treesit--scan-error pred arg)))) (defun treesit-forward-sexp-list (&optional arg) "Alternative tree-sitter implementation for `forward-sexp-function'. @@ -2541,13 +2542,34 @@ ARG is described in the docstring of `forward-list'." (or (if (> arg 0) (treesit-end-of-thing pred (abs arg) 'restricted) (treesit-beginning-of-thing pred (abs arg) 'restricted)) - (when-let* ((parent (treesit-thing-at (point) pred t)) - (boundary (if (> arg 0) - (treesit-node-child parent -1) - (treesit-node-child parent 0)))) - (signal 'scan-error (list "No more group to move across" - (treesit-node-start boundary) - (treesit-node-end boundary))))))) + (treesit--scan-error pred arg)))) + +(defun treesit-down-list (&optional arg) + "Move forward down one level of parentheses. +What constitutes a level of parentheses is determined by +`sexp-list' in `treesit-thing-settings' that usually defines +parentheses-like expressions. + +This command is the tree-sitter variant of `down-list' +redefined by the variable `down-list-function'. + +ARG is described in the docstring of `down-list'." + (interactive "^p") + (let* ((pred 'sexp-list) + (arg (or arg 1)) + (inc (if (> arg 0) 1 -1))) + (while (/= arg 0) + (let* ((node (if (> arg 0) + (treesit-thing-next (point) pred) + (treesit-thing-prev (point) pred))) + (child (when node + (treesit-node-child node (if (> arg 0) 0 -1)))) + (pos (when child + (if (> arg 0) + (treesit-node-end child) + (treesit-node-start child))))) + (if pos (goto-char pos) (treesit--scan-error pred arg))) + (setq arg (- arg inc))))) (defun treesit-transpose-sexps (&optional arg) "Tree-sitter `transpose-sexps' function. @@ -3474,7 +3496,8 @@ before calling this function." (when (treesit-thing-defined-p 'sexp-list nil) (setq-local forward-sexp-function #'treesit-forward-sexp-list) - (setq-local forward-list-function #'treesit-forward-list)) + (setq-local forward-list-function #'treesit-forward-list) + (setq-local down-list-function #'treesit-down-list)) (when (treesit-thing-defined-p 'sentence nil) (setq-local forward-sentence-function #'treesit-forward-sentence)) commit 3db984c72b8609c84f06a0fd62e59b4823ea0876 Author: Juri Linkov Date: Sun Dec 29 19:42:40 2024 +0200 Add new variable 'forward-list-function' for 'treesit-forward-list' * lisp/emacs-lisp/lisp.el (forward-list-default-function): New function. (forward-list-function): New variable (bug#73404). (forward-list): Move meat to 'forward-list-default-function', and call 'forward-list-function' when non-nil. * lisp/treesit.el (treesit-forward-list): Rewrite to not rely on 'treesit-forward-sexp'. (treesit-major-mode-setup): Set 'forward-list-function' to 'treesit-forward-list'. diff --git a/etc/NEWS b/etc/NEWS index ed17a7a2bb9..a66899e83e0 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1002,6 +1002,11 @@ The new function 'treesit-forward-sexp-list' uses 'sexp-list' to move across lists. But to move across atoms inside the list it uses `forward-sexp-default-function'. +*** New function 'treesit-forward-list'. +Tree-sitter conditionally sets 'forward-list-function' for major modes +that have defined 'sexp-list' in 'treesit-thing-settings' to enable +the 'forward-list' motion command. + +++ *** New function 'treesit-language-display-name'. This new function returns the display name of a language given the diff --git a/lisp/emacs-lisp/lisp.el b/lisp/emacs-lisp/lisp.el index c9e27e78c33..e45064a459b 100644 --- a/lisp/emacs-lisp/lisp.el +++ b/lisp/emacs-lisp/lisp.el @@ -143,6 +143,14 @@ This command assumes point is not in a string or comment." (point)) nil t)))) +(defun forward-list-default-function (&optional arg) + "Default function for `forward-list-function'." + (goto-char (or (scan-lists (point) arg 0) (buffer-end arg)))) + +(defvar forward-list-function nil + "If non-nil, `forward-list' delegates to this function. +Should take the same arguments and behave similarly to `forward-list'.") + (defun forward-list (&optional arg interactive) "Move forward across one balanced group of parentheses. This command will also work on other parentheses-like expressions @@ -150,6 +158,7 @@ defined by the current language mode. With ARG, do it that many times. Negative arg -N means move backward across N groups of parentheses. This command assumes point is not in a string or comment. +Calls `forward-list-function' to do the work, if that is non-nil. If INTERACTIVE is non-nil, as it is interactively, report errors as appropriate for this kind of usage." (interactive "^p\nd") @@ -160,7 +169,9 @@ report errors as appropriate for this kind of usage." "No next group" "No previous group")))) (or arg (setq arg 1)) - (goto-char (or (scan-lists (point) arg 0) (buffer-end arg))))) + (if forward-list-function + (funcall forward-list-function arg) + (forward-list-default-function arg)))) (defun backward-list (&optional arg interactive) "Move backward across one balanced group of parentheses. @@ -169,6 +180,7 @@ defined by the current language mode. With ARG, do it that many times. Negative arg -N means move forward across N groups of parentheses. This command assumes point is not in a string or comment. +Uses `forward-list' to do the work. If INTERACTIVE is non-nil, as it is interactively, report errors as appropriate for this kind of usage." (interactive "^p\nd") diff --git a/lisp/treesit.el b/lisp/treesit.el index eb3e26fff7e..7ded154eba8 100644 --- a/lisp/treesit.el +++ b/lisp/treesit.el @@ -2420,29 +2420,10 @@ delimits medium sized statements in the source code. It is, however, smaller in scope than sentences. This is used by `treesit-forward-sexp' and friends.") -(defun treesit-forward-list (&optional arg) - "Move forward across a list. -What constitutes a list is determined by `sexp-list' in -`treesit-thing-settings' that usually defines -parentheses-like expressions. - -Unlike `forward-sexp', this command moves only across a list, -but not across atoms (such as symbols or words) inside the list. - -This command is the tree-sitter variant of `forward-list'. But since -`forward-list' has no \"forward-list-function\" like there is -`forward-sexp-function' for `forward-sexp', this command -can be used on its own. - -ARG is described in the docstring of `forward-list'." - (interactive "^p") - (let ((treesit-sexp-type-regexp 'sexp-list)) - (treesit-forward-sexp arg))) - (defun treesit-forward-sexp (&optional arg) "Tree-sitter implementation for `forward-sexp-function'. -ARG is described in the docstring of `forward-sexp-function'. +ARG is described in the docstring of `forward-sexp'. If point is inside a text environment where tree-sitter is not supported, go forward a sexp using `forward-sexp-default-function'. @@ -2541,6 +2522,33 @@ ARG is described in the docstring of `forward-sexp-function'." (goto-char default-pos)) (treesit-forward-list arg)))) +(defun treesit-forward-list (&optional arg) + "Move forward across a list. +What constitutes a list is determined by `sexp-list' in +`treesit-thing-settings' that usually defines +parentheses-like expressions. + +Unlike `forward-sexp', this command moves only across a list, +but not across atoms (such as symbols or words) inside the list. + +This command is the tree-sitter variant of `forward-list' +redefined by the variable `forward-list-function'. + +ARG is described in the docstring of `forward-list'." + (interactive "^p") + (let ((arg (or arg 1)) + (pred 'sexp-list)) + (or (if (> arg 0) + (treesit-end-of-thing pred (abs arg) 'restricted) + (treesit-beginning-of-thing pred (abs arg) 'restricted)) + (when-let* ((parent (treesit-thing-at (point) pred t)) + (boundary (if (> arg 0) + (treesit-node-child parent -1) + (treesit-node-child parent 0)))) + (signal 'scan-error (list "No more group to move across" + (treesit-node-start boundary) + (treesit-node-end boundary))))))) + (defun treesit-transpose-sexps (&optional arg) "Tree-sitter `transpose-sexps' function. ARG is the same as in `transpose-sexps'. @@ -3465,7 +3473,8 @@ before calling this function." (setq-local transpose-sexps-function #'treesit-transpose-sexps)) (when (treesit-thing-defined-p 'sexp-list nil) - (setq-local forward-sexp-function #'treesit-forward-sexp-list)) + (setq-local forward-sexp-function #'treesit-forward-sexp-list) + (setq-local forward-list-function #'treesit-forward-list)) (when (treesit-thing-defined-p 'sentence nil) (setq-local forward-sentence-function #'treesit-forward-sentence)) commit c85d2e3519bf93837cead012a8281ee9bb4be9a8 Author: Stefan Monnier Date: Sun Dec 29 10:18:37 2024 -0500 (font-lock-set-defaults): Try and fix bug#74281 * lisp/font-lock.el (font-lock-set-defaults): Set `font-lock--syntax-table-affects-ppss` more carefully, and include ' among the "safe" syntaxes. diff --git a/lisp/font-lock.el b/lisp/font-lock.el index 4c519ede88a..22f04cc6423 100644 --- a/lisp/font-lock.el +++ b/lisp/font-lock.el @@ -1940,14 +1940,18 @@ Sets various variables using `font-lock-defaults' and (dolist (char (if (numberp (car selem)) (list (car selem)) (mapcar #'identity (car selem)))) - (unless (memq (car (aref font-lock-syntax-table char)) - '(1 2 3)) ;"." "w" "_" - (setq font-lock--syntax-table-affects-ppss t)) - (modify-syntax-entry char syntax font-lock-syntax-table) - (unless (memq (car (aref font-lock-syntax-table char)) - '(1 2 3)) ;"." "w" "_" - (setq font-lock--syntax-table-affects-ppss t)) - )))) + (let ((old-syntax (aref font-lock-syntax-table char))) + (modify-syntax-entry char syntax font-lock-syntax-table) + (let ((new-syntax (aref font-lock-syntax-table char))) + (unless (and (equal (cdr old-syntax) (cdr new-syntax)) + ;; Changes within the w/_/./' subset don't + ;; affect `syntax-ppss'. + (memq (logand (car old-syntax) 255) '(1 2 3 6)) + (memq (logand (car new-syntax) 255) '(1 2 3 6)) + ;; Check changes to the syntax flags. + (equal (ash (car old-syntax) -8) + (ash (car new-syntax) -8))) + (setq font-lock--syntax-table-affects-ppss t)))))))) ;; (nth 4 defaults) used to hold `font-lock-beginning-of-syntax-function', ;; but that was removed in 25.1, so if it's a cons cell, we assume that ;; it's part of the variable alist. commit 680906c136adfefda3a5d8be2b3ab7527521a449 Author: Michael Albinus Date: Sun Dec 29 12:26:05 2024 +0100 Some minor Tramp changes * lisp/net/tramp-sh.el (tramp-sh-handle-process-file): Do proper quoting. * lisp/net/tramp.el (tramp-string-empty-or-nil-p): Declare `tramp-suppress-trace' property. (tramp-skeleton-make-symbolic-link): Drop volume letter when flushing. * test/lisp/net/tramp-tests.el (tramp-test39-make-lock-file-name): Adapt test. (tramp-test42-utf8): Do not run expensive tests on MS Windows. diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el index 5535ed3ab60..7b82195ed68 100644 --- a/lisp/net/tramp-sh.el +++ b/lisp/net/tramp-sh.el @@ -3278,8 +3278,7 @@ will be used." (setq ret (tramp-send-command-and-check v (format "cd %s && %s" - (tramp-unquote-shell-quote-argument localname) - command) + (tramp-shell-quote-argument localname) command) t t t)) (unless (natnump ret) (setq ret 1)) ;; We should add the output anyway. @@ -5675,7 +5674,7 @@ Nonexistent directories are removed from spec." (dolist (cmd ;; Prefer GNU ls on *BSD and macOS. (if (tramp-check-remote-uname vec tramp-bsd-unames) - '( "gls" "ls" "gnuls") '("ls" "gnuls" "gls"))) + '("gls" "ls" "gnuls") '("ls" "gnuls" "gls"))) (let ((dl (tramp-get-remote-path vec)) result) (while (and dl (setq result (tramp-find-executable vec cmd dl t t))) diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index c23eed0bc1b..03e12471176 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -1888,8 +1888,14 @@ See `tramp-dissect-file-name' for details." ;;;###tramp-autoload (defsubst tramp-string-empty-or-nil-p (string) "Check whether STRING is empty or nil." + ;; (declare (tramp-suppress-trace t)) (or (null string) (string= string ""))) +;; We cannot use the `declare' form for `tramp-suppress-trace' in +;; autoloaded functions, because the tramp-loaddefs.el generation +;; would fail. +(function-put #'tramp-string-empty-or-nil-p 'tramp-suppress-trace t) + (defun tramp-buffer-name (vec) "A name for the connection buffer VEC." (declare (tramp-suppress-trace t)) @@ -3717,7 +3723,9 @@ on the same host. Otherwise, TARGET is quoted." (setf ,target (tramp-file-local-name (expand-file-name ,target)))) ;; There could be a cyclic link. (tramp-flush-file-properties - v (expand-file-name ,target (tramp-file-local-name default-directory)))) + v (tramp-drop-volume-letter + (expand-file-name + ,target (tramp-file-local-name default-directory))))) ;; If TARGET is still remote, quote it. (if (tramp-tramp-file-p ,target) diff --git a/test/lisp/net/tramp-tests.el b/test/lisp/net/tramp-tests.el index 91d0fd82788..5bd8b13bd13 100644 --- a/test/lisp/net/tramp-tests.el +++ b/test/lisp/net/tramp-tests.el @@ -6878,34 +6878,40 @@ INPUT, if non-nil, is a string sent to the process." (should-not (file-locked-p tmp-name1)) ;; `kill-buffer' removes the lock. - (lock-file tmp-name1) - (should (eq (file-locked-p tmp-name1) t)) - (with-temp-buffer - (set-visited-file-name tmp-name1) - (insert "foo") - (should (buffer-modified-p)) - (cl-letf (((symbol-function #'read-from-minibuffer) - (lambda (&rest _args) "yes"))) - (kill-buffer))) - (should-not (file-locked-p tmp-name1)) + ;; `kill-buffer--possibly-save' exists since Emacs 29.1. + (when (fboundp 'kill-buffer--possibly-save) + (lock-file tmp-name1) + (should (eq (file-locked-p tmp-name1) t)) + (with-temp-buffer + (set-visited-file-name tmp-name1) + (insert "foo") + (should (buffer-modified-p)) + ;; Modifying `read-from-minibuffer' doesn't work on MS Windows. + (cl-letf (((symbol-function #'kill-buffer--possibly-save) + #'always)) + (kill-buffer))) + (should-not (file-locked-p tmp-name1))) ;; `kill-buffer' should not remove the lock when the ;; connection is broken. See Bug#61663. - (lock-file tmp-name1) - (should (eq (file-locked-p tmp-name1) t)) - (with-temp-buffer - (set-visited-file-name tmp-name1) - (insert "foo") - (should (buffer-modified-p)) - (tramp-cleanup-connection - tramp-test-vec 'keep-debug 'keep-password) - (cl-letf (((symbol-function #'read-from-minibuffer) - (lambda (&rest _args) "yes"))) - (kill-buffer))) - ;; A new connection changes process id, and also the - ;; lock file contents. But it still exists. - (tramp-cleanup-connection tramp-test-vec 'keep-debug 'keep-password) - (should (stringp (file-locked-p tmp-name1))) + ;; `kill-buffer--possibly-save' exists since Emacs 29.1. + (when (fboundp 'kill-buffer--possibly-save) + (lock-file tmp-name1) + (should (eq (file-locked-p tmp-name1) t)) + (with-temp-buffer + (set-visited-file-name tmp-name1) + (insert "foo") + (should (buffer-modified-p)) + (tramp-cleanup-connection + tramp-test-vec 'keep-debug 'keep-password) + ;; Modifying `read-from-minibuffer' doesn't work on MS Windows. + (cl-letf (((symbol-function #'kill-buffer--possibly-save) + #'always)) + (kill-buffer))) + ;; A new connection changes process id, and also the + ;; lock file contents. But it still exists. + (tramp-cleanup-connection tramp-test-vec 'keep-debug 'keep-password) + (should (stringp (file-locked-p tmp-name1)))) ;; When `remote-file-name-inhibit-locks' is set, nothing happens. (tramp-cleanup-connection tramp-test-vec 'keep-debug 'keep-password) @@ -6928,34 +6934,41 @@ INPUT, if non-nil, is a string sent to the process." ;; Steal the file lock. (tramp-cleanup-connection tramp-test-vec 'keep-debug 'keep-password) - (cl-letf (((symbol-function #'read-char) (lambda (&rest _args) ?s))) + ;; Modifying `read-char' doesn't work on MS Windows. + (cl-letf (((symbol-function #'ask-user-about-lock) #'always)) (lock-file tmp-name1)) (should (eq (file-locked-p tmp-name1) t)) ;; Ignore the file lock. (tramp-cleanup-connection tramp-test-vec 'keep-debug 'keep-password) - (cl-letf (((symbol-function #'read-char) (lambda (&rest _args) ?p))) + ;; Modifying `read-char' doesn't work on MS Windows. + (cl-letf (((symbol-function #'ask-user-about-lock) #'ignore)) (lock-file tmp-name1)) (should (stringp (file-locked-p tmp-name1))) - ;; Quit the file lock machinery. - (tramp-cleanup-connection tramp-test-vec 'keep-debug 'keep-password) - (cl-letf (((symbol-function #'read-char) (lambda (&rest _args) ?q))) - (should-error - (lock-file tmp-name1) - :type 'file-locked) - ;; The same for `write-region'. - (should-error - (write-region "foo" nil tmp-name1) - :type 'file-locked) - (should-error - (write-region "foo" nil tmp-name1 nil nil tmp-name1) - :type 'file-locked) - ;; The same for `set-visited-file-name'. - (with-temp-buffer - (should-error - (set-visited-file-name tmp-name1) - :type 'file-locked))) + ;; Quit the file lock machinery. There are problems with + ;; "sftp" and "podman", so we test on Emacs 29.1 only. + (when (tramp--test-emacs29-p ) + (tramp-cleanup-connection tramp-test-vec 'keep-debug 'keep-password) + ;; Modifying `read-char' doesn't work on MS Windows. + (cl-letf (((symbol-function #'ask-user-about-lock) + (lambda (&rest args) + (signal 'file-locked args)))) + (should-error + (lock-file tmp-name1) + :type 'file-locked) + ;; The same for `write-region'. + (should-error + (write-region "foo" nil tmp-name1) + :type 'file-locked) + (should-error + (write-region "foo" nil tmp-name1 nil nil tmp-name1) + :type 'file-locked) + ;; The same for `set-visited-file-name'. + (with-temp-buffer + (should-error + (set-visited-file-name tmp-name1) + :type 'file-locked)))) (should (stringp (file-locked-p tmp-name1)))) ;; Cleanup. @@ -7647,7 +7660,7 @@ This requires restrictions of file name syntax." ;; to U+1FFFF). "🌈🍒👋") - (when (tramp--test-expensive-test-p) + (when (and (tramp--test-expensive-test-p) (not (tramp--test-windows-nt-p))) (delete-dups (mapcar ;; Use all available language specific snippets. commit 72eb5f8bedbe441f6a3952557b9aa3ef6fd6235d Author: Daniel Colascione Date: Mon Dec 23 13:34:11 2024 -0500 Make browser windows pop up when browsing URLs on Wayland When a user invokes browse-url, the browser window viewing the URL should be raised in the user's desktop environment. On X11, running xdg-open as a subprocess does the job. However, on Wayland, this approach doesn't work: xdg-open makes the web browser browse a URL all right, but doesn't raise the browser window in the GUI. Therefore, if the browser window is behind Emacs, browse-url appears to do nothing. Repeated invocations of browse-url cause the browser to load multiple tabs in the background, surprising the user when he gives up in frustration and manually switches to the browser window. There's no subprocess we can run to make the right thing happen. Wayland requires that we pass along event activation information to the browser using the xdg_activation_v1 protocol. This change adds x-gtk-launch-uri to invoke GTK-native URL-dispatch machinery. This machinery DTRT on both X11 and Wayland. We fall back to the default browser machinery if we're not on a GTK frame. The logic is more complicated than it has to be because the GTK URI launch mechanism requires that we launch with respect to a specific GTK window, and in some environments (e.g., running emacs -nw in a PGTK Emacs) we don't have a GTK window. We also want to preserve the effect of customizing browse-url-browser-function, so adding an entry to browse-url-default-handlers that preempts URI open when we happen to be on a GTK frame is the wrong thing to do. * lisp/net/browse-url.el (browse-url--browser-defcustom-type): (browse-url--inhibit-pgtk): avoid infinite recursion (browse-url-default-browser): use pgtk launch (x-gtk-launch-uri): new function (browse-url-default-gtk-browser): ues it * src/pgtkfns.c (unwind_gerror_ptr): new function (Fx_gtk_launch_uri): new function (syms_of_pgtkfns): register it * etc/NEWS: mention the new feature diff --git a/etc/NEWS b/etc/NEWS index b714f675a4b..ed17a7a2bb9 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -333,6 +333,13 @@ It has been obsolete since Emacs 28.1. *** Support for gnome-moz-remote has been removed. It has been obsolete since Emacs 25.1. +*** New GTK-native launch mode +For better Wayland support, the pgtk toolkit exposes a new +'x-gtk-launch-uri' browse-url handler and uses it by default when URLs +are browsed from a PGTK frame. For other frames, we fall back to the +default URL launch function. This change allows us to properly raise +browser windows under Wayland using the xdg_activation_v1 protocol. + ** CL-Lib +++ diff --git a/lisp/net/browse-url.el b/lisp/net/browse-url.el index 4f4196044d1..5ea7be29b60 100644 --- a/lisp/net/browse-url.el +++ b/lisp/net/browse-url.el @@ -179,6 +179,9 @@ ,@(when (eq system-type 'android) (list '(function-item :tag "Default Android browser" :value browse-url-default-android-browser))) + ,@(when (eq window-system 'pgtk) + (list '(function-item :tag "Default GTK browser" + :value browse-url-default-gtk-browser))) (function-item :tag "Default browser" :value browse-url-default-browser) (function :tag "Your own function") @@ -1085,6 +1088,8 @@ one showing the selected frame." (and (not (equal display (getenv "DISPLAY"))) display))) +(defvar browse-url--inhibit-pgtk nil) + (defun browse-url-default-browser (url &rest args) "Find a suitable browser and ask it to load URL. Default to the URL around or before point. @@ -1106,6 +1111,9 @@ instead of `browse-url-new-window-flag'." 'browse-url-default-haiku-browser) ((eq system-type 'android) 'browse-url-default-android-browser) + ((and (eq (frame-parameter nil 'window-system) 'pgtk) + (not browse-url--inhibit-pgtk)) + 'browse-url-default-gtk-browser) ((browse-url-can-use-xdg-open) 'browse-url-xdg-open) ((executable-find browse-url-firefox-program) 'browse-url-firefox) ((executable-find browse-url-chromium-program) 'browse-url-chromium) @@ -1425,6 +1433,23 @@ point." (function-put 'browse-url-default-android-browser 'browse-url-browser-kind 'external) +(declare-function x-gtk-launch-uri "pgtkfns.c") + +;;;###autoload +(defun browse-url-default-gtk-browser (url &optional new-window) + "Browse URL with GTK's idea of the default browser. +If the selected frame isn't a GTK frame, fall back to +`browse-url-default-browser'." + (interactive (browse-url-interactive-arg "URL: ")) + (let ((frame (selected-frame))) + (if (eq (frame-parameter frame 'window-system) 'pgtk) + (x-gtk-launch-uri frame url) + (let ((browse-url--inhibit-pgtk t)) + (browse-url-default-browser url new-window))))) + +(function-put 'browse-url-default-gtk-browser + 'browse-url-browser-kind 'external) + ;;;###autoload (defun browse-url-emacs (url &optional same-window) "Ask Emacs to load URL into a buffer and show it in another window. diff --git a/src/pgtkfns.c b/src/pgtkfns.c index 0ff3262cd11..1c2b8985ee8 100644 --- a/src/pgtkfns.c +++ b/src/pgtkfns.c @@ -3819,6 +3819,44 @@ DEFUN ("x-gtk-debug", Fx_gtk_debug, Sx_gtk_debug, 1, 1, 0, return NILP (enable) ? Qnil : Qt; } +static void +unwind_gerror_ptr (void* data) +{ + GError* error = *(GError**)data; + if (error) + g_error_free (error); +} + +DEFUN ("x-gtk-launch-uri", Fx_gtk_launch_uri, Sx_gtk_launch_uri, 2, 2, 0, + doc: /* launch URI */) + (Lisp_Object frame, Lisp_Object uri) +{ + CHECK_FRAME (frame); + + if (!FRAME_LIVE_P (XFRAME (frame)) || + !FRAME_PGTK_P (XFRAME (frame)) || + !FRAME_GTK_OUTER_WIDGET (XFRAME (frame))) + error ("GTK URI launch not available for this frame"); + + CHECK_STRING (uri); + guint32 timestamp = gtk_get_current_event_time (); + + GError *err = NULL; + specpdl_ref count = SPECPDL_INDEX (); + + record_unwind_protect_ptr (unwind_gerror_ptr, &err); + + gtk_show_uri_on_window (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (XFRAME (frame))), + SSDATA (uri), + timestamp, + &err); + + if (err) + error ("Failed to launch URI via GTK: %s", err->message); + + return unbind_to (count, Qnil); +} + void syms_of_pgtkfns (void) { @@ -3890,6 +3928,7 @@ syms_of_pgtkfns (void) defsubr (&Sx_close_connection); defsubr (&Sx_display_list); defsubr (&Sx_gtk_debug); + defsubr (&Sx_gtk_launch_uri); defsubr (&Sx_show_tip); defsubr (&Sx_hide_tip); commit 0334b0743f83a3e69d1d3a426efbba1d2a5f2cc6 Author: Alan Mackenzie Date: Sat Dec 28 17:16:04 2024 +0000 CC Mode: Minor corrections and tidy ups for cache invalidation These cache variables are c-lit-pos-cache-limit, c-semi-near-cache-limit, c-full-near-cache-limit, and c-state-cache-invalid-pos. * lisp/progmodes/cc-awk.el (c-awk-set-string-regexp-syntax-table-properties): Invalidate the caches after changing the 'syntax-table property. * lisp/progmodes/cc-defs.el (c-put-string-fence-trim-caches): New macro. (c-unmark-<-or->-as-paren): New name for c-unmark-<->-as-paren. (Also renamed throughout CC Mode) * lisp/progmodes/cc-engine.el (c-propertize-ml-string-opener): Add missing cache invalidation. * lisp/progmodes/cc-mode.el (c-neutralize-CPP-line): Remove syntax-table properties from < and > as needed. (c-put-syn-tab): Add missing cache invalidation. diff --git a/lisp/progmodes/cc-awk.el b/lisp/progmodes/cc-awk.el index a40999e6334..8ebd2168969 100644 --- a/lisp/progmodes/cc-awk.el +++ b/lisp/progmodes/cc-awk.el @@ -754,15 +754,15 @@ (if (eq (char-after beg) ?_) (setq beg (1+ beg))) ;; First put the properties on the delimiters. - (cond ((eq end (point-max)) ; string/regexp terminated by EOB - (c-put-string-fence beg)) + (cond ((eq end (point-max)) ; string/regexp terminated by EOB + (c-put-string-fence-trim-caches beg)) ((/= (char-after beg) (char-after end)) ; missing end delimiter - (c-put-string-fence beg) + (c-put-string-fence-trim-caches beg) (c-put-string-fence end)) ((eq (char-after beg) ?/) ; Properly bracketed regexp - (c-put-char-property beg 'syntax-table '(7)) ; (7) = "string" - (c-put-syntax-table-trim-caches end '(7))) - (t)) ; Properly bracketed string: Nothing to do. + (c-put-syntax-table-trim-caches beg '(7)) ; (7) = "string" + (c-put-char-property end 'syntax-table '(7))) + (t)) ; Properly bracketed string: Nothing to do. ;; Now change the properties of any escaped "s in the string to punctuation. (save-excursion (goto-char (1+ beg)) diff --git a/lisp/progmodes/cc-defs.el b/lisp/progmodes/cc-defs.el index 42dd6fffe53..768e13cf151 100644 --- a/lisp/progmodes/cc-defs.el +++ b/lisp/progmodes/cc-defs.el @@ -1267,6 +1267,14 @@ MODE is either a mode symbol or a list of mode symbols." (c-clear-char-property -pos- 'c-is-sws) (c-clear-char-property -pos- 'c-in-sws))) +(defmacro c-put-string-fence-trim-caches (pos) + ;; Put the string-fence syntax-table text property at POS, and invalidate + ;; the four caches from position POS. + (declare (debug t)) + `(let ((-pos- ,pos)) + (c-put-string-fence -pos-) + (c-truncate-lit-pos/state-cache -pos-))) + (eval-and-compile ;; Constant to decide at compilation time whether to use category ;; properties. Currently (2010-03) they're available only on GNU @@ -1859,8 +1867,8 @@ from the first position, if any, where a property was put." `(c-put-char-property ,pos 'category 'c->-as-paren-syntax) `(c-put-char-property ,pos 'syntax-table c->-as-paren-syntax))) -(defmacro c-unmark-<->-as-paren (pos) - ;; Unmark the "<" or "<" character at POS as an sexp list opener using the +(defmacro c-unmark-<-or->-as-paren (pos) + ;; Unmark the "<" or ">" character at POS as an sexp list opener using the ;; `syntax-table' property either directly or indirectly through a ;; `category' text property. ;; diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el index d880cdabaaa..831af4c8165 100644 --- a/lisp/progmodes/cc-engine.el +++ b/lisp/progmodes/cc-engine.el @@ -7037,9 +7037,9 @@ comment at the start of cc-engine.el for more info." (c-go-list-forward)) (when (equal (c-get-char-property (1- (point)) 'syntax-table) c->-as-paren-syntax) ; should always be true. - (c-unmark-<->-as-paren (1- (point))) + (c-unmark-<-or->-as-paren (1- (point))) (c-truncate-lit-pos/state-cache (1- (point)))) - (c-unmark-<->-as-paren pos) + (c-unmark-<-or->-as-paren pos) (c-truncate-lit-pos/state-cache pos)))) (defun c-clear->-pair-props (&optional pos) @@ -7056,9 +7056,9 @@ comment at the start of cc-engine.el for more info." (c-go-up-list-backward)) (when (equal (c-get-char-property (point) 'syntax-table) c-<-as-paren-syntax) ; should always be true. - (c-unmark-<->-as-paren (point)) + (c-unmark-<-or->-as-paren (point)) (c-truncate-lit-pos/state-cache (point))) - (c-unmark-<->-as-paren pos) + (c-unmark-<-or->-as-paren pos) (c-truncate-lit-pos/state-cache pos)))) (defun c-clear-<>-pair-props (&optional pos) @@ -7091,10 +7091,10 @@ comment at the start of cc-engine.el for more info." (when (and (>= (point) lim) (equal (c-get-char-property (1- (point)) 'syntax-table) c->-as-paren-syntax)) ; should always be true. - (c-unmark-<->-as-paren (1- (point))) - (c-unmark-<->-as-paren pos) + (c-unmark-<-or->-as-paren (1- (point))) + (c-unmark-<-or->-as-paren pos) (c-truncate-lit-pos/state-cache pos) - (point))))) + (point))))) (defun c-clear->-pair-props-if-match-before (lim &optional pos) ;; POS (default point) is at a > character. If it is both marked @@ -7113,9 +7113,9 @@ comment at the start of cc-engine.el for more info." (when (and (<= (point) lim) (equal (c-get-char-property (point) 'syntax-table) c-<-as-paren-syntax)) ; should always be true. - (c-unmark-<->-as-paren (point)) + (c-unmark-<-or->-as-paren (point)) (c-truncate-lit-pos/state-cache (point)) - (c-unmark-<->-as-paren pos) + (c-unmark-<-or->-as-paren pos) (point))))) ;; Set by c-common-init in cc-mode.el. @@ -8216,7 +8216,7 @@ multi-line strings (but not C++, for example)." (goto-char (cadr end-delim)) t) (c-put-syntax-table-trim-caches (cddr delim) '(1)) - (c-put-string-fence (1- (cadr delim))) + (c-put-string-fence-trim-caches (1- (cadr delim))) (when bound ;; In a CPP construct, we try to apply a generic-string ;; `syntax-table' text property to the last possible character in @@ -8244,9 +8244,7 @@ multi-line strings (but not C++, for example)." "\\(\\\\\n\\)*\\=")) ; 11 (cadr delim) t)) (if (match-beginning 10) - (progn - (c-put-string-fence (match-beginning 10)) - (c-truncate-lit-pos/state-cache (match-beginning 10))) + (c-put-string-fence-trim-caches (match-beginning 10)) (c-put-syntax-table-trim-caches (match-beginning 5) '(1)) (c-put-string-fence (1+ (match-beginning 5))))) (goto-char bound)) @@ -8949,7 +8947,7 @@ multi-line strings (but not C++, for example)." (and (c-go-list-backward) (eq (char-after) ?<) (c-truncate-lit-pos/state-cache (point)) - (c-unmark-<->-as-paren (point))))) + (c-unmark-<-or->-as-paren (point))))) (c-mark-<-as-paren start) (c-mark->-as-paren (1- (point))) (c-truncate-lit-pos/state-cache start)) diff --git a/lisp/progmodes/cc-mode.el b/lisp/progmodes/cc-mode.el index 6676219e702..bc87f0c388f 100644 --- a/lisp/progmodes/cc-mode.el +++ b/lisp/progmodes/cc-mode.el @@ -1126,16 +1126,20 @@ Note that the style variables are always made local to the buffer." (progn (setq s (parse-partial-sexp beg end -1)) (cond - ((< (nth 0 s) 0) ; found an unmated ),},] - (c-put-syntax-table-trim-caches (1- (point)) '(1)) + ((< (nth 0 s) 0) ; found an unmated ),},],> + (if (eq (char-before) ?>) + (c-clear->-pair-props (1- (point))) + (c-put-syntax-table-trim-caches (1- (point)) '(1))) t) ;; Unbalanced strings are now handled by ;; `c-before-change-check-unbalanced-strings', etc. ;; ((nth 3 s) ; In a string ;; (c-put-char-property (nth 8 s) 'syntax-table '(1)) ;; t) - ((> (nth 0 s) 0) ; In a (,{,[ - (c-put-syntax-table-trim-caches (nth 1 s) '(1)) + ((> (nth 0 s) 0) ; In a (,{,[,< + (if (eq (char-after (nth 1 s)) ?<) + (c-clear-<-pair-props (nth 1 s)) + (c-put-syntax-table-trim-caches (nth 1 s) '(1))) t) (t nil))))))) @@ -1284,7 +1288,7 @@ Note that the style variables are always made local to the buffer." ;; `(let ((-pos- ,pos) ;; (-value- ,value)) (if (equal value '(15)) - (c-put-string-fence pos) + (c-put-string-fence-trim-caches pos) (c-put-syntax-table-trim-caches pos value)) (c-put-char-property pos 'c-fl-syn-tab value) (cond @@ -2036,11 +2040,11 @@ This function is used solely as a member of (looking-at "\\s(") (looking-at "\\(<\\)[^>\n\r]*\\(>\\)?") (not (cdr (c-semi-pp-to-literal hash-pos)))) - (c-unmark-<->-as-paren (match-beginning 1)) + (c-unmark-<-or->-as-paren (match-beginning 1)) (when (< hash-pos c-new-BEG) (setq c-new-BEG hash-pos)) (when (match-beginning 2) - (c-unmark-<->-as-paren (match-beginning 2)) + (c-unmark-<-or->-as-paren (match-beginning 2)) (when (> (match-end 2) c-new-END) (setq c-new-END (match-end 2)))))))) commit e32484547d0813665334bfd34b741492dde0d374 Author: Michael Albinus Date: Sat Dec 28 15:53:08 2024 +0100 Add tramp-archive-local-file-name * lisp/net/tramp-archive.el (tramp-archive-file-name-p): Add ;;;###tramp-autoload cookie. (tramp-archive-local-file-name): New defun. diff --git a/lisp/net/tramp-archive.el b/lisp/net/tramp-archive.el index 3e6c483a47f..f77dcec3663 100644 --- a/lisp/net/tramp-archive.el +++ b/lisp/net/tramp-archive.el @@ -426,6 +426,7 @@ arguments to pass to the OPERATION." ;; File name conversions. +;;;###tramp-autoload (defun tramp-archive-file-name-p (name) "Return t if NAME is a string with archive file name syntax." (and (stringp name) @@ -581,6 +582,11 @@ offered." "Return NAME in GVFS syntax." (tramp-make-tramp-file-name (tramp-archive-dissect-file-name name))) +;; This is used in GNU ELPA package tramp-locproc.el. +(defun tramp-archive-local-file-name (filename) + "Return local mount name of FILENAME." + (tramp-gvfs-local-file-name (tramp-archive-gvfs-file-name filename))) + ;; File name primitives. commit af3bbc83600bec6c8621e1b04437dbfdeb329106 Merge: ad5c8f25b36 2ba6387d1d6 Author: Eli Zaretskii Date: Sat Dec 28 08:30:31 2024 -0500 Merge from origin/emacs-30 2ba6387d1d6 ; Fix inaccuracy in ELisp Reference manual 8ac6a178804 ; * etc/PROBLEMS: Mention problems with XPM support in GD... 624322d5f6a Add missing fontification matches for elixir-ts-mode 5bafb11b400 ; Fix copyright year 186ea407326 Don't start docstrings with "This function" or similar cb8ce2e68bb Enable indent-tabs-mode in obj-c-mode 54f35137096 Fix comment indent in 'lua-ts-mode' and old grammar 8b95549e908 * admin/nt/dist-build/build-dep-zips.py: (deps src) handl... 8064b2a6798 Document undocumented completion commands c29b798537e ; etc/w32-feature.el (harfbuzz): improve test 0e43e35f96e * admin/nt/dist-build/emacs.nsi: (Uninstall) delete only ... b83cd8a8fb0 ; * etc/tutorials/TUTORIAL.ko: Fix the beginning. 41caccc488b ; * etc/publicsuffix.txt: Update from upstream. e6fb18406ee ; Fix refcards 14e791f9ba2 ; Update acknowledgments for Emacs 30 861b7864fc4 ; Fix node name in emacs-lisp-intro.texi 77243ba5be8 ; Update version tags of defcustoms fe2ac33bae8 ;* doc/misc/efaq.texi (New in Emacs 30): Mention 'trusted... 8fb884f0dc0 ; * etc/NEWS: Fix wording. e281355a5e8 Improve D-Bus and Tramp manual # Conflicts: # doc/emacs/emacs.texi # etc/NEWS # lisp/erc/erc-log.el # lisp/eshell/esh-mode.el # lisp/which-key.el commit ad5c8f25b36aac71870ff26b6549014c452a2145 Merge: c9be6f731de 691c161a812 Author: Eli Zaretskii Date: Sat Dec 28 14:39:49 2024 +0200 Merge branch 'master' of git.savannah.gnu.org:/srv/git/emacs commit c9be6f731de12b1c9eda0c51e188953e56ba0767 Author: Eli Zaretskii Date: Sat Dec 28 14:38:55 2024 +0200 ; Fix last change * lisp/vc/ediff-util.el (ediff--delete-temp-files-on-kill-emacs): Add commentary explaining the precautions. (Bug#74881) diff --git a/lisp/vc/ediff-util.el b/lisp/vc/ediff-util.el index 87d6f7c4aec..33666535843 100644 --- a/lisp/vc/ediff-util.el +++ b/lisp/vc/ediff-util.el @@ -215,6 +215,10 @@ to invocation.") (defun ediff--delete-temp-files-on-kill-emacs () "Delete the temp-files associated with the ediff buffers." + ;; We inhibit interaction and ignore any errors to avoid the situation + ;; where this hook could prevent kill-emacs from shutting down Emacs, + ;; because user interaction is not possible (e.g., in a daemon), or + ;; if deleting these files signals an error. (ignore-errors (let ((inhibit-interaction t)) (dolist (b (buffer-list)) commit 691c161a81221905f7e2690ee747ba9163b1b645 Author: Alan Third Date: Fri Dec 27 11:46:45 2024 +0000 Make image cache aware of image-scaling-factor (bug#74725) * src/dispextern.h (struct image): Add scale so it can be compared in search_image_cache. * src/image.c (search_image_cache): Calculate the scale factor and compare with the cached value. (image_compute_scale): Compute the image's scale factor and optionally store it in the image struct. (compute_image_size): Move scale calculation code into image_compute_scale and use it. diff --git a/src/dispextern.h b/src/dispextern.h index ea7b0399adc..c876856717a 100644 --- a/src/dispextern.h +++ b/src/dispextern.h @@ -3257,6 +3257,9 @@ struct image /* Width and height of the image. */ int width, height; + /* The scale factor applied to the image. */ + double scale; + /* These values are used for the rectangles displayed for images that can't be loaded. */ #define DEFAULT_IMAGE_WIDTH 30 diff --git a/src/image.c b/src/image.c index 0012abcb451..7b34b24ada9 100644 --- a/src/image.c +++ b/src/image.c @@ -210,6 +210,9 @@ static void image_disable_image (struct frame *, struct image *); static void image_edge_detection (struct frame *, struct image *, Lisp_Object, Lisp_Object); +static double image_compute_scale (struct frame *f, Lisp_Object spec, + struct image *img); + static void init_color_table (void); static unsigned long lookup_rgb_color (struct frame *f, int r, int g, int b); #ifdef COLOR_TABLE_SUPPORT @@ -2222,9 +2225,12 @@ search_image_cache (struct frame *f, Lisp_Object spec, EMACS_UINT hash, image spec specifies :background. However, the extra memory usage is probably negligible in practice, so we don't bother. */ + double scale = image_compute_scale (f, spec, NULL); + for (img = c->buckets[i]; img; img = img->next) if (img->hash == hash && !NILP (Fequal (img->spec, spec)) + && scale == img->scale && (ignore_colors || (img->face_foreground == foreground && img->face_background == background && img->face_font_size == font_size @@ -2667,18 +2673,15 @@ image_get_dimension (struct image *img, Lisp_Object symbol) return -1; } -/* Compute the desired size of an image with native size WIDTH x HEIGHT, - which is to be displayed on F. Use IMG to deduce the size. Store - the desired size into *D_WIDTH x *D_HEIGHT. Store -1 x -1 if the - native size is OK. */ - -static void -compute_image_size (struct frame *f, double width, double height, - struct image *img, - int *d_width, int *d_height) +/* Calculate the scale of the image. IMG may be null as it is only + required when creating an image, and this function is called from + image cache related functions that do not have access to the image + structure. */ +static double +image_compute_scale (struct frame *f, Lisp_Object spec, struct image *img) { double scale = 1; - Lisp_Object value = image_spec_value (img->spec, QCscale, NULL); + Lisp_Object value = image_spec_value (spec, QCscale, NULL); if (EQ (value, Qdefault)) { @@ -2692,7 +2695,9 @@ compute_image_size (struct frame *f, double width, double height, { /* This is a tag with which callers of `clear_image_cache' can refer to this image and its likenesses. */ - img->dependencies = Fcons (Qauto, img->dependencies); + if (img) + img->dependencies = Fcons (Qauto, img->dependencies); + scale = (FRAME_COLUMN_WIDTH (f) > 10 ? (FRAME_COLUMN_WIDTH (f) / 10.0f) : 1); } @@ -2716,6 +2721,24 @@ compute_image_size (struct frame *f, double width, double height, scale = dval; } + if (img) + img->scale = scale; + + return scale; +} + +/* Compute the desired size of an image with native size WIDTH x HEIGHT, + which is to be displayed on F. Use IMG to deduce the size. Store + the desired size into *D_WIDTH x *D_HEIGHT. Store -1 x -1 if the + native size is OK. */ + +static void +compute_image_size (struct frame *f, double width, double height, + struct image *img, + int *d_width, int *d_height) +{ + double scale = image_compute_scale(f, img->spec, img); + /* If width and/or height is set in the display spec assume we want to scale to those values. If either h or w is unspecified, the unspecified should be calculated from the specified to preserve commit 2ba49f8a12ea378cc38cd1f0eacd88b6ef7e74e4 Author: Lin Sun Date: Sun Dec 15 06:52:17 2024 +0000 * lisp/vc/ediff-util.el: Remove temp Ediff files on kill-emacs (ediff--delete-temp-files-on-kill-emacs): New function. (ediff-setup): Install it in 'kill-emacs-hook'. (Bug#74881) diff --git a/lisp/vc/ediff-util.el b/lisp/vc/ediff-util.el index 6038f3eae30..87d6f7c4aec 100644 --- a/lisp/vc/ediff-util.el +++ b/lisp/vc/ediff-util.el @@ -213,6 +213,14 @@ to invocation.") (fset 'ediff-mode-map ediff-mode-map) (run-hooks 'ediff-keymap-setup-hook)) +(defun ediff--delete-temp-files-on-kill-emacs () + "Delete the temp-files associated with the ediff buffers." + (ignore-errors + (let ((inhibit-interaction t)) + (dolist (b (buffer-list)) + (with-current-buffer b + (when (eq major-mode 'ediff-mode) + (ediff-delete-temp-files))))))) ;;; Setup functions @@ -488,6 +496,7 @@ to invocation.") (if (ediff-buffer-live-p ediff-meta-buffer) (ediff-update-meta-buffer ediff-meta-buffer nil ediff-meta-session-number)) + (add-hook 'kill-emacs-hook #'ediff--delete-temp-files-on-kill-emacs) (run-hooks 'ediff-startup-hook) ) ; eval in control-buffer control-buffer)) commit 2ba6387d1d63072c5faaa7798c8ef7b00ca883c3 Author: Eli Zaretskii Date: Sat Dec 28 14:04:26 2024 +0200 ; Fix inaccuracy in ELisp Reference manual * doc/lispref/objects.texi (Basic Char Syntax): Fix inaccurate wording. (Bug#75113) diff --git a/doc/lispref/objects.texi b/doc/lispref/objects.texi index df9c2267cc4..c782256390f 100644 --- a/doc/lispref/objects.texi +++ b/doc/lispref/objects.texi @@ -445,7 +445,7 @@ characters which resemble the previously mentioned @acronym{ASCII} ones, to avoid confusing people reading your code. Emacs will highlight some non-escaped commonly confused characters such as @samp{‘} to encourage this. You can also add a backslash before whitespace -characters such as space, tab, newline and formfeed. However, it is +characters such as space and tab. However, it is cleaner to use one of the easily readable escape sequences, such as @samp{\t} or @samp{\s}, instead of an actual whitespace character such as a tab or a space. (If you do write backslash followed by a space, commit 8ac6a178804c36e92de7271a5eeb2c66909acb05 Author: Eli Zaretskii Date: Sat Dec 28 13:54:45 2024 +0200 ; * etc/PROBLEMS: Mention problems with XPM support in GDK (bug#75018). diff --git a/etc/PROBLEMS b/etc/PROBLEMS index 8de12a78613..c3b717c516f 100644 --- a/etc/PROBLEMS +++ b/etc/PROBLEMS @@ -485,6 +485,16 @@ running the just-built Emacs. * General runtime problems +** GTK+ problems + +*** Some tool-bar icons aren't displayed. + +This could be caused by lack of support for XPM image format in the +installed GTK packages. Some GNU/Linux distros no longer install +support for those formats by default, so you might need to install +additional support packages. E.g., on Fedora you need to install the +'gdk-pixbuf2-modules-extra' package. + ** Lisp problems *** Changes made to .el files do not take effect. commit 624322d5f6a8e92c641a5ce6087e3f6d91a44997 Author: Wilhelm Kirschbaum Date: Sun Sep 15 09:46:35 2024 +0200 Add missing fontification matches for elixir-ts-mode * lisp/progmodes/elixir-ts-mode.el (elixir-ts--font-lock-settings): Add matches for missing tokens and fix atom type face. (Bug#75156) diff --git a/lisp/progmodes/elixir-ts-mode.el b/lisp/progmodes/elixir-ts-mode.el index cacdb266298..1ce9a65a125 100644 --- a/lisp/progmodes/elixir-ts-mode.el +++ b/lisp/progmodes/elixir-ts-mode.el @@ -490,7 +490,8 @@ :language 'elixir :feature 'elixir-data-type - '([(atom) (alias)] @font-lock-type-face + '((alias) @font-lock-type-face + (atom) @elixir-ts-atom (keywords (pair key: (keyword) @elixir-ts-keyword-key)) [(keyword) (quoted_keyword)] @elixir-ts-atom [(boolean) (nil)] @elixir-ts-atom @@ -555,6 +556,10 @@ (unary_operator operand: (identifier) @font-lock-variable-use-face) (interpolation (identifier) @font-lock-variable-use-face) (do_block (identifier) @font-lock-variable-use-face) + (rescue_block (identifier) @font-lock-variable-use-face) + (catch_block (identifier) @font-lock-variable-use-face) + (else_block (identifier) @font-lock-variable-use-face) + (after_block (identifier) @font-lock-variable-use-face) (access_call target: (identifier) @font-lock-variable-use-face) (access_call "[" key: (identifier) @font-lock-variable-use-face "]")) commit 5bafb11b4002b0bfd94c67d2983ca217255f1013 Author: Stefan Kangas Date: Sat Dec 28 02:24:07 2024 +0100 ; Fix copyright year diff --git a/admin/nt/dist-build/build-dep-zips.py b/admin/nt/dist-build/build-dep-zips.py index c145cd3fc00..9df5d6703a8 100755 --- a/admin/nt/dist-build/build-dep-zips.py +++ b/admin/nt/dist-build/build-dep-zips.py @@ -1,6 +1,6 @@ #!/usr/bin/python3 -## Copyright (C) 2017-2023 Free Software Foundation, Inc. +## Copyright (C) 2017-2024 Free Software Foundation, Inc. ## This file is part of GNU Emacs. commit 186ea407326166ee4669ce6fe84871c1e16c657c Author: Stefan Kangas Date: Thu Dec 26 21:02:45 2024 +0100 Don't start docstrings with "This function" or similar * lisp/calculator.el (calculator-add-operators): * lisp/erc/erc-backend.el (erc-server-ping-handler): * lisp/erc/erc-log.el (erc-generate-log-file-name-with-date): (erc-generate-log-file-name-short): * lisp/erc/erc-track.el (erc-track-shorten-function): * lisp/eshell/em-smart.el (eshell-where-to-jump): * lisp/eshell/esh-mode.el (eshell-begin-on-new-line): * lisp/gnus/gnus-art.el (gnus-prompt-before-saving): * lisp/mail/supercite.el (sc-cite-region-limit): * lisp/net/nsm.el (network-security-protocol-checks): * lisp/org/org-element.el (org-element--cache-avoid-synchronous-headline-re-parsing): * lisp/progmodes/hideif.el (hif-merge-ifdef-region): * lisp/progmodes/modula2.el (m2-indent): * lisp/progmodes/xscheme.el (xscheme-running-p): (xscheme-control-g-disabled-p): * lisp/tab-bar.el (tab-bar--event-to-item): * lisp/which-key.el (which-key--hide-popup): Don't start docstrings with "This function" or "This variable". diff --git a/lisp/calculator.el b/lisp/calculator.el index ef1e6d8dbc3..5d1bb401f54 100644 --- a/lisp/calculator.el +++ b/lisp/calculator.el @@ -775,7 +775,7 @@ Defaults to 1." (or (nth 4 op) 1)) (defun calculator-add-operators (more-ops) - "This function handles operator addition. + "Handle operator addition. Adds MORE-OPS to `calculator-operator', called initially to handle `calculator-initial-operators' and `calculator-user-operators'." (let ((added-ops nil)) diff --git a/lisp/erc/erc-backend.el b/lisp/erc/erc-backend.el index 9aedc110067..0720e46ef6b 100644 --- a/lisp/erc/erc-backend.el +++ b/lisp/erc/erc-backend.el @@ -570,7 +570,7 @@ If this is set to nil, never try to reconnect." (integer :tag "Seconds"))) (defvar-local erc-server-ping-handler nil - "This variable holds the periodic ping timer.") + "The periodic server ping timer.") ;;;; Helper functions diff --git a/lisp/erc/erc-log.el b/lisp/erc/erc-log.el index 66420662c23..b37fa086a0e 100644 --- a/lisp/erc/erc-log.el +++ b/lisp/erc/erc-log.el @@ -352,13 +352,13 @@ The result is converted to lowercase, as IRC is case-insensitive." erc-log-channels-directory))))) (defun erc-generate-log-file-name-with-date (buffer &rest _ignore) - "This function computes a short log file name. + "Return a short log file name with the current date. The name of the log file is composed of BUFFER and the current date. This function is a possible value for `erc-generate-log-file-name-function'." (concat (buffer-name buffer) "-" (format-time-string "%Y-%m-%d") ".txt")) (defun erc-generate-log-file-name-short (buffer &rest _ignore) - "This function computes a short log file name. + "Return a short log file name. In fact, it only uses the buffer name of the BUFFER argument, so you can affect that using `rename-buffer' and the-like. This function is a possible value for diff --git a/lisp/erc/erc-track.el b/lisp/erc/erc-track.el index 39a4775ddca..6c91d88a168 100644 --- a/lisp/erc/erc-track.el +++ b/lisp/erc/erc-track.el @@ -140,7 +140,7 @@ This setting is used by `erc-track-shorten-names'." (const :tag "Max" max))) (defcustom erc-track-shorten-function 'erc-track-shorten-names - "This function will be used to reduce the channel names before display. + "Function used to reduce the channel names before display. It takes one argument, CHANNEL-NAMES which is a list of strings. It should return a list of strings of the same number of elements. If nil instead of a function, shortening is disabled." diff --git a/lisp/eshell/em-smart.el b/lisp/eshell/em-smart.el index 670b956476d..c49b6a9caa3 100644 --- a/lisp/eshell/em-smart.el +++ b/lisp/eshell/em-smart.el @@ -150,7 +150,7 @@ buffer using \\[end-of-buffer]." :group 'eshell-smart) (defcustom eshell-where-to-jump 'begin - "This variable indicates where point should jump to after a command. + "The location where point should jump to after a command. The options are `begin', `after' or `end'." :type '(radio (const :tag "Beginning of command" begin) (const :tag "After command word" after) diff --git a/lisp/eshell/esh-mode.el b/lisp/eshell/esh-mode.el index 34ce82cfbc4..30063fdacc9 100644 --- a/lisp/eshell/esh-mode.el +++ b/lisp/eshell/esh-mode.el @@ -534,7 +534,7 @@ Putting this function on `eshell-pre-command-hook' will mimic Plan 9's (eshell-interactive-filter nil string))) (defsubst eshell-begin-on-new-line () - "This function outputs a newline if not at beginning of line." + "Output a newline if not at beginning of line." (save-excursion (goto-char eshell-last-output-end) (or (bolp) diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el index 5151ad1c1b8..c2264d1f5d0 100644 --- a/lisp/gnus/gnus-art.el +++ b/lisp/gnus/gnus-art.el @@ -512,7 +512,7 @@ might have." :type 'boolean) (defcustom gnus-prompt-before-saving 'always - "This variable says how much prompting is to be done when saving articles. + "How much prompting to do when saving articles. If it is nil, no prompting will be done, and the articles will be saved to the default files. If this variable is `always', each and every article that is saved will be preceded by a prompt, even when diff --git a/lisp/mail/supercite.el b/lisp/mail/supercite.el index add1582d72a..a620a14af1e 100644 --- a/lisp/mail/supercite.el +++ b/lisp/mail/supercite.el @@ -236,7 +236,7 @@ See the variable `sc-cite-frame-alist' for details." :group 'supercite-frames) (defcustom sc-cite-region-limit t - "This variable controls automatic citation of yanked text. + "Size limit for automatic citation of yanked text. Valid values are: non-nil -- cite the entire region, regardless of its size diff --git a/lisp/net/nsm.el b/lisp/net/nsm.el index 3d0eacf4eb2..4c87ed4a126 100644 --- a/lisp/net/nsm.el +++ b/lisp/net/nsm.el @@ -155,17 +155,16 @@ unencrypted." (dhe-kx high) (rsa-kx high) (cbc-cipher high)) - "This variable specifies what TLS connection checks to perform. -It's an alist where the key is the name of the check, and the -value is the minimum security level the check should begin. - -Each check function is called with the parameters HOST PORT -STATUS SETTINGS. HOST is the host domain, PORT is a TCP port -number, STATUS is the peer status returned by -`gnutls-peer-status', and SETTINGS is the persistent and session -settings for the host HOST. Please refer to the contents of -`nsm-settings-file' for details. If a problem is found, the check -function is required to return an error message, and nil + "Alist of TLS connection checks to perform. +The key is the name of the check, and the value is the minimum security +level the check should begin. + +Each check function is called with the parameters HOST PORT STATUS +SETTINGS. HOST is the host domain, PORT is a TCP port number, STATUS is +the peer status returned by `gnutls-peer-status', and SETTINGS is the +persistent and session settings for the host HOST. Please refer to the +contents of `nsm-settings-file' for details. If a problem is found, the +check function is required to return an error message, and nil otherwise. See also: `nsm-check-tls-connection', `nsm-save-host-names', diff --git a/lisp/org/org-element.el b/lisp/org/org-element.el index a3fe427403a..64a28510d51 100644 --- a/lisp/org/org-element.el +++ b/lisp/org/org-element.el @@ -7259,7 +7259,7 @@ that range. See `after-change-functions' for more information." #'org-element--cache-after-change -1 t))) (defvar org-element--cache-avoid-synchronous-headline-re-parsing nil - "This variable controls how buffer changes are handled by the cache. + "How buffer changes are handled by the cache. By default (when this variable is nil), cache re-parses modified headlines immediately after modification preserving all the unaffected diff --git a/lisp/progmodes/hideif.el b/lisp/progmodes/hideif.el index 9bcac0d8dc5..27a02e9805f 100644 --- a/lisp/progmodes/hideif.el +++ b/lisp/progmodes/hideif.el @@ -400,7 +400,7 @@ If there is a marked region from START to END it only shows the symbols within." (end-of-line 2))) (defun hif-merge-ifdef-region (start end) - "This function merges nearby ifdef regions to form a bigger overlay. + "Merge nearby ifdef regions to form a bigger overlay. The region is defined by START and END. This will decrease the number of overlays created." ;; Generally there is no need to call itself recursively since there should diff --git a/lisp/progmodes/modula2.el b/lisp/progmodes/modula2.el index 2bb31988290..3950443c01e 100644 --- a/lisp/progmodes/modula2.el +++ b/lisp/progmodes/modula2.el @@ -97,7 +97,7 @@ "C-c C-c" #'m2-compile) (defcustom m2-indent 5 - "This variable gives the indentation in Modula-2 mode." + "Indentation in Modula-2 mode." :type 'integer :safe (lambda (v) (or (null v) (integerp v)))) diff --git a/lisp/progmodes/xscheme.el b/lisp/progmodes/xscheme.el index 598328dddea..b9c2ea95169 100644 --- a/lisp/progmodes/xscheme.el +++ b/lisp/progmodes/xscheme.el @@ -55,8 +55,8 @@ "The tail of the Scheme expressions ring whose car is the last thing yanked.") (defvar-local xscheme-running-p nil - "This variable, if nil, indicates that the scheme process is -waiting for input. Otherwise, it is busy evaluating something.") + "If nil, the scheme process is waiting for input. +Otherwise, it is busy evaluating something.") (defconst xscheme-control-g-synchronization-p t "If non-nil, insert markers in the scheme input stream to indicate when @@ -64,8 +64,8 @@ control-g interrupts were signaled. Do not allow more control-g's to be signaled until the scheme process acknowledges receipt.") (defvar-local xscheme-control-g-disabled-p nil - "This variable, if non-nil, indicates that a control-g is being processed -by the scheme process, so additional control-g's are to be ignored.") + "If non-nil, a control-g is being processed by the scheme process, so +additional control-g's are to be ignored.") (defvar xscheme-string-receiver nil "Procedure to send the string argument from the scheme process.") diff --git a/lisp/tab-bar.el b/lisp/tab-bar.el index e8c6b7f3bcc..2d530930649 100644 --- a/lisp/tab-bar.el +++ b/lisp/tab-bar.el @@ -298,7 +298,7 @@ For any other value of KEY, the value is t." (defvar tab-bar--dragging-in-progress) (defun tab-bar--event-to-item (posn) - "This function extracts extra info from the mouse event at position POSN. + "Extract extra info from the mouse event at position POSN. It returns a list of the form (KEY KEY-BINDING CLOSE-P), where: KEY is a symbol representing a tab, such as \\='tab-1 or \\='current-tab; KEY-BINDING is the binding of KEY; diff --git a/lisp/which-key.el b/lisp/which-key.el index 0118c0f74ef..f91ff78849b 100644 --- a/lisp/which-key.el +++ b/lisp/which-key.el @@ -1220,7 +1220,7 @@ total height." ;;; Show/hide which-key buffer (defun which-key--hide-popup () - "This function is called to hide the which-key buffer." + "Hide the which-key buffer." (unless (or which-key-persistent-popup (member real-this-command which-key--paging-functions)) (setq which-key--last-try-2-loc nil) commit cb8ce2e68bb68844971695e139ae93bd320bc0d8 Author: Stefan Kangas Date: Thu Dec 26 16:07:08 2024 +0100 Enable indent-tabs-mode in obj-c-mode * .dir-locals.el (obj-c-mode): Enable indent-tabs-mode. diff --git a/.dir-locals.el b/.dir-locals.el index c74da88a811..06ebedb7a49 100644 --- a/.dir-locals.el +++ b/.dir-locals.el @@ -33,6 +33,7 @@ (objc-mode . ((c-file-style . "GNU") (electric-quote-comment . nil) (electric-quote-string . nil) + (indent-tabs-mode . t) (mode . bug-reference-prog))) (c-ts-mode . ((c-ts-mode-indent-style . gnu))) ;Inherits `c-mode' settings. (log-edit-mode . ((log-edit-font-lock-gnu-style . t) commit 54f35137096c8120df13653f287a92755d5036b6 Author: john muhl Date: Wed Dec 25 18:03:50 2024 -0600 Fix comment indent in 'lua-ts-mode' and old grammar * lisp/progmodes/lua-ts-mode.el (lua-ts--simple-indent-rules): Improve multi-line comment indention for pre-0.0.19 grammars that used a different structure for comment start/end markers. (Bug#75107) diff --git a/lisp/progmodes/lua-ts-mode.el b/lisp/progmodes/lua-ts-mode.el index 641ea4261b0..3f8bfaae6d5 100644 --- a/lisp/progmodes/lua-ts-mode.el +++ b/lisp/progmodes/lua-ts-mode.el @@ -293,7 +293,7 @@ values of OVERRIDE." lua-ts--multi-line-comment-start (parent-is "comment_content") (parent-is "string_content") - (node-is "]]")) + (or (node-is "]]") (node-is "comment_end"))) no-indent 0) ((and (n-p-gp "field" "table_constructor" "arguments") lua-ts--multi-arg-function-call-matcher commit 8b95549e9087fc54be3d849470652d38ec64cbff Author: Corwin Brust Date: Tue Dec 24 23:55:21 2024 -0600 * admin/nt/dist-build/build-dep-zips.py: (deps src) handle zst This patch fixes various problems preventing this script from working. The job of this script is to collect Emacs' dependanicies and the (MSYS2/MinGW64) source archives for dependancies (including 2nd etc. order dependancies) into zip archives. GPL requires distributing such archives (along with Emacs' own sources) when distributing GPL binaries. Most principle of the changes is support for MSYS2 "w64" source archives in zst format; previously this script assumed all sources were available as tar.gz files. Additionaly several DLLs are added to list of required, including sqllite3 and tree-sitter. In general this is a maintaince fix to ensure others have access to the code used to create pretest (and, presumably release) version of Emacs 30. Additional changes are required to progmatically identify changes in Emacs' dependancies (e.g. after building a new Emacs binary for distribution). There is commented out code to this effect in the changes I've installed which did work, for a brief period in time; I suspect some changes in MSYS2 made it more difficult (or impossible?) to invoke the MSYS2 shell (under which this python script must run) from the MINGW64 (under which Emacs is built). I may resort to a powershell script as a way to orchistrate/invoke both MSYS2 and MING64 but I'm currently still messing with a Makefile based approach (which would run under MINGW64), in any event I believe we're all agreed this script must interigate Emacs to create the "starting list" of dependancies to include as a way to resolve this issue (missing/incorrect deps are frequent source of broken binary releases). (bug#65206) diff --git a/admin/nt/dist-build/build-dep-zips.py b/admin/nt/dist-build/build-dep-zips.py index 0b1cc4d8695..c145cd3fc00 100755 --- a/admin/nt/dist-build/build-dep-zips.py +++ b/admin/nt/dist-build/build-dep-zips.py @@ -1,6 +1,6 @@ #!/usr/bin/python3 -## Copyright (C) 2017-2024 Free Software Foundation, Inc. +## Copyright (C) 2017-2023 Free Software Foundation, Inc. ## This file is part of GNU Emacs. @@ -20,41 +20,56 @@ import os import shutil import re -import functools -import operator +import subprocess from subprocess import check_output ## Constants -EMACS_MAJOR_VERSION="28" +EMACS_MAJOR_VERSION= os.getenv('EMACS_MAJOR_VERSION') or "30" -# This list derives from the features we want Emacs to compile with. +# Base URI for the package sources mapped in PKG_REQ +SRC_REPO="https://repo.msys2.org/mingw/sources" + +# Map items in `dynamic-library-alist' to source pakages PKG_REQ='''mingw-w64-x86_64-giflib mingw-w64-x86_64-gnutls mingw-w64-x86_64-harfbuzz +mingw-w64-x86_64-jansson mingw-w64-x86_64-lcms2 mingw-w64-x86_64-libjpeg-turbo mingw-w64-x86_64-libpng mingw-w64-x86_64-librsvg +mingw-w64-x86_64-libwebp mingw-w64-x86_64-libtiff mingw-w64-x86_64-libxml2 -mingw-w64-x86_64-xpm-nox'''.split() - -DLL_REQ='''libgif -libgnutls -libharfbuzz -liblcms2 -libturbojpeg -libpng -librsvg -libtiff -libxml -libXpm'''.split() - +mingw-w64-x86_64-gmp +mingw-w64-x86_64-xpm-nox +mingw-w64-x86_64-tree-sitter +mingw-w64-x86_64-sqlite3'''.split() + +# Emacs style path to dependancy DLLs on build system +DLL_SRC="c:/msys64/mingw64/bin" + +# libraries we never include +DLL_SKIP=["libgccjit-0.dll"] + +# Report first existing file for entries in dynamic-library-alist +# ELISP_PROG=""" +# (message "%s" (mapconcat 'identity (remove nil +# (mapcar (lambda(lib) +# (seq-find +# (lambda(file) +# (file-exists-p +# (file-name-concat "{}" +# file))) +# (cdr lib))) +# dynamic-library-alist) +# ) "\\n")) +# """.format(DLL_SRC) ## Options DRY_RUN=False - +# NEW_EMACS="bin/emacs.exe" def check_output_maybe(*args,**kwargs): if(DRY_RUN): @@ -62,31 +77,76 @@ def check_output_maybe(*args,**kwargs): else: return check_output(*args,**kwargs) +#################### ## DLL Capture + +# entry point def gather_deps(): os.mkdir("x86_64") os.chdir("x86_64") - for dep in full_dll_dependency(): - check_output_maybe(["cp /mingw64/bin/{}*.dll .".format(dep)], - shell=True) - - print("Zipping") - check_output_maybe("zip -9r ../emacs-{}-{}deps.zip *" - .format(EMACS_MAJOR_VERSION, DATE), - shell=True) + #full=full_dll_dependency(init_deps()) + #filtered=filter(lambda x: x not in DLL_SKIP, full) + #print("full:",full.len(), " filtered:",filtered.len()) + #exit + + for dep in full_dll_dependency(init_deps()): + if dep not in DLL_SKIP: + if args.l != True: + print("Adding dep", dep) + check_output_maybe(["cp /mingw64/bin/{} .".format(dep)], shell=True) + else: + if args.l != True: + print("Skipping dep", dep) + + zipfile="../emacs-{}-{}deps.zip".format(EMACS_MAJOR_VERSION, DATE) + tmpfile="{}.tmp".format(zipfile) + print("Zipping deps in", os.getcwd(), "as", tmpfile) + check_output_maybe("zip -9vr {} *.dll".format(tmpfile), shell=True) + if os.path.isfile(zipfile): + os.remove(zipfile) + os.rename(tmpfile, zipfile) + print("Deps updated in", os.getcwd(), "as", zipfile) os.chdir("../") -## Return all Emacs dependencies -def full_dll_dependency(): - deps = [dll_dependency(dep) for dep in DLL_REQ] - return set(sum(deps, []) + DLL_REQ) - -## Dependencies for a given DLL +# Return dependancies listed in Emacs +def init_deps(): + return '''libXpm-nox4.dll +libpng16-16.dll +libjpeg-8.dll +libgif-7.dll +librsvg-2-2.dll +libwebp-7.dll +libwebpdemux-2.dll +libsqlite3-0.dll +libgdk_pixbuf-2.0-0.dll +libglib-2.0-0.dll +libgio-2.0-0.dll +libgobject-2.0-0.dll +libgnutls-30.dll +libxml2-2.dll +zlib1.dll +liblcms2-2.dll +libgccjit-0.dll +libtree-sitter.dll'''.split() + # job_args=[NEW_EMACS, "--batch", "--eval", ELISP_PROG] + # #print("args: ", job_args) + # return subprocess.check_output(job_args, stderr=subprocess.STDOUT + # ).decode('utf-8').splitlines() + +# Return all second order dependencies +def full_dll_dependency(dlls): + deps = [dll_dependency(dep) for dep in dlls] + return set(sum(deps, []) + dlls) + +#xs = filter(lambda x: x.attribute == value, xs) + +# Dependencies for a given DLL def dll_dependency(dll): output = check_output(["/mingw64/bin/ntldd", "--recursive", - "/mingw64/bin/{}*.dll".format(dll)]).decode("utf-8") + "/mingw64/bin/{}".format(dll)] + ).decode("utf-8") ## munge output return ntldd_munge(output) @@ -101,9 +161,8 @@ def ntldd_munge(out): ## if it's the former, we want it, if its the later we don't splt = dep.split() - if len(splt) > 2 and "msys64" in splt[2]: - print("Adding dep", splt[0]) - rtn.append(splt[0].split(".")[0]) + if len(splt) > 2 and "mingw64" in splt[2]: + rtn.append(splt[0]) return rtn @@ -112,26 +171,92 @@ def ntldd_munge(out): ## Packages to fiddle with ## Source for gcc-libs is part of gcc SKIP_SRC_PKGS=["mingw-w64-gcc-libs"] -SKIP_DEP_PKGS=frozenset(["mingw-w64-x86_64-glib2"]) -MUNGE_SRC_PKGS={"mingw-w64-libwinpthread-git":"mingw-w64-winpthreads-git"} +SKIP_DEP_PKGS=["mingw-w64-glib2", "mingw-w64-ca-certificates-20211016-3"] +MUNGE_SRC_PKGS={ + "mingw-w64-libwinpthread-git":"mingw-w64-winpthreads-git", + "mingw-w64-gettext-runtime":"mingw-w64-gettext" +} MUNGE_DEP_PKGS={ "mingw-w64-x86_64-libwinpthread":"mingw-w64-x86_64-libwinpthread-git", "mingw-w64-x86_64-libtre": "mingw-w64-x86_64-libtre-git", } +SRC_EXT={ + "mingw-w64-freetype": ".src.tar.zst", + "mingw-w64-fribidi": ".src.tar.zst", + "mingw-w64-glib2": ".src.tar.zst", + "mingw-w64-harfbuzz": ".src.tar.zst", + "mingw-w64-libunistring": ".src.tar.zst", + "mingw-w64-winpthreads-git": ".src.tar.zst", + "mingw-w64-ca-certificates": ".src.tar.zst", + "mingw-w64-libxml2": ".src.tar.zst", + "mingw-w64-ncurses": ".src.tar.zst", + "mingw-w64-openssl": ".src.tar.zst", + "mingw-w64-pango": ".src.tar.zst", + "mingw-w64-python": ".src.tar.zst", + "mingw-w64-sqlite3": ".src.tar.zst", + "mingw-w64-xpm-nox": ".src.tar.zst", + "mingw-w64-xz": ".src.tar.zst", + "mingw-w64-bzip2": ".src.tar.zst", + "mingw-w64-cairo": ".src.tar.zst", + "mingw-w64-expat": ".src.tar.zst", + "mingw-w64-fontconfig": ".src.tar.zst", + "mingw-w64-gdk-pixbuf2": ".src.tar.zst", + "mingw-w64-giflib": ".src.tar.zst", + "mingw-w64-gmp": ".src.tar.zst", + "mingw-w64-gnutls": ".src.tar.zst", + "mingw-w64-graphite2": ".src.tar.zst", + "mingw-w64-jbigkit": ".src.tar.zst", + "mingw-w64-lcms2": ".src.tar.zst", + "mingw-w64-lerc": ".src.tar.zst", + "mingw-w64-libdatrie": ".src.tar.zst", + "mingw-w64-libffi": ".src.tar.zst", + "mingw-w64-libiconv": ".src.tar.zst", + "mingw-w64-libiconv": ".src.tar.zst", + "mingw-w64-libpng": ".src.tar.zst", + "mingw-w64-librsvg": ".src.tar.zst", + "mingw-w64-libsystre": ".src.tar.zst", + "mingw-w64-libtasn": ".src.tar.zst", + "mingw-w64-libthai": ".src.tar.zst", + "mingw-w64-libtiff": ".src.tar.zst", + "mingw-w64-libtre-git": ".src.tar.zst", + "mingw-w64-libwebp": ".src.tar.zst", + "mingw-w64-mpdecimal": ".src.tar.zst", + "mingw-w64-nettle": ".src.tar.zst", + "mingw-w64-p11-kit": ".src.tar.zst", + "mingw-w64-pcre": ".src.tar.zst", + "mingw-w64-pixman": ".src.tar.zst", + "mingw-w64-python-packaging": ".src.tar.zst", + "mingw-w64-readline": ".src.tar.zst", + "mingw-w64-tcl": ".src.tar.zst", + "mingw-w64-termcap": ".src.tar.zst", + "mingw-w64-tk": ".src.tar.zst", + "mingw-w64-tree-sitter": ".src.tar.zst", + "mingw-w64-tzdata": ".src.tar.zst", + "mingw-w64-wineditline": ".src.tar.zst", + "mingw-w64-zlib": ".src.tar.zst", + "mingw-w64-zstd": ".src.tar.zst", + "mingw-w64-brotli": ".src.tar.zst", + "mingw-w64-gettext": ".src.tar.zst", + "mingw-w64-libdeflate": ".src.tar.zst", + "mingw-w64-libidn2": ".src.tar.zst", + "mingw-w64-libjpeg-turbo": ".src.tar.zst", + "mingw-w64-libtasn1": ".src.tar.zst", + "mingw-w64-pcre2": ".src.tar.zst", +} ## Currently no packages seem to require this! ARCH_PKGS=[] -SRC_REPO="https://repo.msys2.org/mingw/sources" +def immediate_deps(pkg): + package_info = check_output(["pacman", "-Si", pkg]).decode("utf-8").split("\n") -def immediate_deps(pkgs): - package_info = check_output(["pacman", "-Si"] + pkgs).decode("utf-8").splitlines() + ## Extract the "Depends On" line + depends_on = [x for x in package_info if x.startswith("Depends On")][0] + ## Remove "Depends On" prefix + dependencies = depends_on.split(":")[1] - ## Extract the packages listed for "Depends On:" lines. - dependencies = [line.split(":")[1].split() for line in package_info - if line.startswith("Depends On")] - ## Flatten dependency lists from multiple packages into one list. - dependencies = functools.reduce(operator.iconcat, dependencies, []) + ## Split into dependencies + dependencies = dependencies.strip().split(" ") ## Remove > signs TODO can we get any other punctuation here? dependencies = [d.split(">")[0] for d in dependencies if d] @@ -147,18 +272,16 @@ def extract_deps(): print( "Extracting deps" ) # Get a list of all dependencies needed for packages mentioned above. - pkgs = set(PKG_REQ) - newdeps = pkgs - print("adding...") - while True: - subdeps = frozenset(immediate_deps(list(newdeps))) - newdeps = subdeps - SKIP_DEP_PKGS - pkgs - if not newdeps: - break - print('\n'.join(newdeps)) - pkgs |= newdeps + pkgs = PKG_REQ[:] + n = 0 + while n < len(pkgs): + subdeps = immediate_deps(pkgs[n]) + for p in subdeps: + if not (p in pkgs or p in SKIP_DEP_PKGS): + pkgs.append(p) + n = n + 1 - return list(pkgs) + return sorted(pkgs) def download_source(tarball): @@ -206,14 +329,24 @@ def gather_source(deps): ## Switch names if necessary pkg_name = MUNGE_SRC_PKGS.get(pkg_name,pkg_name) - tarball = "{}-{}.src.tar.gz".format(pkg_name,pkg_version) + ## src archive is usually a .tar.gz + if pkg_name in SRC_EXT.keys(): + src_ext = SRC_EXT[pkg_name] + else: + src_ext = ".src.tar.gz" + + tarball = "{}-{}{}".format(pkg_name,pkg_version,src_ext) download_source(tarball) - print("Zipping") - check_output_maybe("zip -9 ../emacs-{}-{}deps-mingw-w64-src.zip *" - .format(EMACS_MAJOR_VERSION,DATE), - shell=True) + srczip="../emacs-{}-{}deps-mingw-w64-src.zip".format(EMACS_MAJOR_VERSION,DATE) + tmpzip="{}.tmp".format(srczip) + print("Zipping Dsrc in", os.getcwd(), "as", tmpzip) + check_output_maybe("zip -9 {} *".format(tmpzip), shell=True) + if os.path.isfile(srczip): + os.remove(srczip) + os.rename(tmpzip, srczip) + print("Dsrc updated in", os.getcwd(), "as", srczip) os.chdir("..") @@ -231,6 +364,9 @@ def clean(): parser = argparse.ArgumentParser() + +#parser.add_argument("emacs", help="emacs executable") + parser.add_argument("-s", help="snapshot build", action="store_true") @@ -243,19 +379,29 @@ def clean(): parser.add_argument("-d", help="dry run", action="store_true") -parser.add_argument("-l", help="list dependencies only", +parser.add_argument("-l", help="list dependencies", + action="store_true") + +parser.add_argument("-e", help="extract direct dependancies", action="store_true") args = parser.parse_args() do_all=not (args.c or args.r) - +#NEW_EMACS=args.emacs DRY_RUN=args.d +if( args.e ): + print("\n".join(init_deps())) + if( args.l ): - print("List of dependencies") - print( deps ) + print("List of dependencies:") + print(full_dll_dependency(init_deps())) + print("List of source packages:") + print( extract_deps() ) + +if( args.e or args.l ): exit(0) if args.s: commit 8064b2a67988e815c52e289fe2a235ce1008776f Author: Eli Zaretskii Date: Tue Dec 24 21:25:02 2024 +0200 Document undocumented completion commands * src/minibuf.c (Fread_from_minibuffer): * lisp/minibuffer.el (minibuffer-complete-history) (minibuffer-complete-defaults): Doc fixes. * doc/emacs/mini.texi (Completion Commands): Fix markup, style of describing commands, and indexing. Document 'C-x UP' and 'C-x DOWN'. diff --git a/doc/emacs/mini.texi b/doc/emacs/mini.texi index b1361695211..7247918bc21 100644 --- a/doc/emacs/mini.texi +++ b/doc/emacs/mini.texi @@ -343,18 +343,44 @@ when completion is allowed. @table @kbd @item @key{TAB} Complete the text in the minibuffer as much as possible; if unable to -complete, display a list of possible completions -(@code{minibuffer-complete}). +complete, display a list of possible completions. @item @key{SPC} -Complete up to one word from the minibuffer text before point -(@code{minibuffer-complete-word}). This command is not available for -arguments that often include spaces, such as file names. +Complete up to one word from the minibuffer text before point. +@item C-x @key{UP} +Complete the text in the minibuffer using minibuffer history. +@item C-x @key{DOWN} +Complete the text in the minibuffer using minibuffer defaults. @item @key{RET} Submit the text in the minibuffer as the argument, possibly completing -first (@code{minibuffer-complete-and-exit}). @xref{Completion Exit}. +first. @xref{Completion Exit}. @item ? Display a list of completions and a few useful key bindings (@code{minibuffer-completion-help}). +@item M-@key{DOWN} +@itemx M-@key{UP} +Navigate through list of completions. +@item M-v +@itemx M-g M-c +@itemx @key{PageUp} +@itemx @key{prior} +While in the minibuffer, select the window showing the completion list. +@item @key{RET} +In the completions buffer, choose the completion at point. +@item mouse-1 +@itemx mouse-2 +In the completions buffer, choose the completion at mouse click. +@item @key{TAB} +@itemx @key{RIGHT} +@itemx @key{n} +In the completions buffer, move to the following completion candidate. +@item @key{S-TAB} +@itemx @key{LEFT} +@itemx @key{p} +In the completions buffer, move to the previous completion candidate. +@item q +Quit the completions window and switch to the minibuffer window. +@item z +Kill the completions buffer and delete the window showing it. @end table @kindex TAB @r{(completion)} @@ -372,7 +398,8 @@ are chosen. @samp{auto-f} in the minibuffer and type @key{SPC}, it finds that the completion is @samp{auto-fill-mode}, but it only inserts @samp{ill-}, giving @samp{auto-fill-}. Another @key{SPC} at this point completes -all the way to @samp{auto-fill-mode}. +all the way to @samp{auto-fill-mode}. This command is not available for +arguments that often include spaces, such as file names. @kindex ? @r{(completion)} @cindex completion list @@ -383,7 +410,6 @@ can display the same completion list and help with @kbd{?} (@code{minibuffer-completion-help}). The following commands can be used with the completion list: -@table @kbd @vindex minibuffer-completion-auto-choose @kindex M-DOWN @kindex M-UP @@ -391,12 +417,10 @@ with the completion list: @findex minibuffer-next-completion @findex minibuffer-previous-completion @findex minibuffer-choose-completion -@item M-@key{DOWN} -@itemx M-@key{UP} While in the minibuffer or in the completion list buffer, @kbd{M-@key{DOWN}} (@code{minibuffer-next-completion} and @kbd{M-@key{UP}} (@code{minibuffer-previous-completion}) navigate through the -completions and displayed in the completions buffer. When +completions displayed in the completions buffer. When @code{minibuffer-completion-auto-choose} is non-@code{nil} (which is the default), using these commands also inserts the current completion candidate into the minibuffer. If @@ -408,9 +432,6 @@ M-@key{RET}} inserts the currently active candidate without exiting the minibuffer. @findex switch-to-completions -@item M-v -@itemx @key{PageUp} -@itemx @key{prior} Typing @kbd{M-v}, while in the minibuffer, selects the window showing the completion list (@code{switch-to-completions}). This paves the way for using the commands below. @key{PageUp}, @key{prior} and @@ -418,39 +439,38 @@ way for using the commands below. @key{PageUp}, @key{prior} and ways (@pxref{Windows}). @findex choose-completion -@item @key{RET} -@itemx mouse-1 -@itemx mouse-2 -While in the completion list buffer, this chooses the completion at -point (@code{choose-completion}). With a prefix argument, @kbd{C-u -@key{RET}} inserts the completion at point into the minibuffer, but -doesn't exit the minibuffer---thus, you can change your mind and -choose another candidate. +While in the completion list buffer, @kbd{@key{RET}} chooses the completion +candidate at point (@code{choose-completion}) and @kbd{mouse-1} and +@kbd{mouse-2} choose the completion at mouse click. With a prefix +argument, @kbd{C-u @key{RET}} inserts the completion at point into the +minibuffer, but doesn't exit the minibuffer---thus, you can change your +mind and choose another candidate. @findex next-completion -@item @key{TAB} -@item @key{RIGHT} -@item @key{n} -While in the completion list buffer, these keys move point to the -following completion alternative (@code{next-completion}). - -@findex previous-completion -@item @key{S-TAB} -@item @key{LEFT} -@item @key{p} -While in the completion list buffer, these keys move point to the -previous completion alternative (@code{previous-completion}). +While in the completion list buffer, you can use @kbd{@key{TAB}}, +@kbd{@key{RIGHT}}, or @kbd{n} to move point to the following completion +candidate (@code{next-completion}). You can also use @kbd{@key{S-TAB}}, +@kbd{@key{LEFT}}, and @kbd{p} to move point to the previous completion +alternative (@code{previous-completion}). + +@findex minibuffer-complete-history +@findex minibuffer-complete-defaults +@kindex C-x UP @r{(completion)} +@kindex C-x DOWN @r{(completion)} +You can also complete using the history of minibuffer inputs for the +command which prompted you. @kbd{C-x @key{UP}} +(@code{minibuffer-complete-history}) works like @kbd{@key{TAB}}, but +completes using minibuffer history instead of the usual completion +candidates. A similar command @kbd{C-x @key{DOWN}} +(@code{minibuffer-complete-defaults}) completes using the default input +items provided by the prompting command. @findex quit-window -@item @kbd{q} -While in the completion list buffer, this quits the window showing it -and selects the window showing the minibuffer (@code{quit-window}). - @findex kill-current-buffer -@item @kbd{z} -While in the completion list buffer, kill it and delete the window -showing it (@code{kill-current-buffer}). -@end table +Finally, @kbd{q} quits the window showing it and selects the window +showing the minibuffer (@code{quit-window}), and @kbd{z} kills the +completion buffer and delete the window showing it +(@code{kill-current-buffer}). @vindex minibuffer-visible-completions If the variable @code{minibuffer-visible-completions} is customized to diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index fef8e1df86e..6d927501886 100644 --- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el @@ -4927,9 +4927,9 @@ contents." (error (minibuffer-complete-and-exit)))) (defun minibuffer-complete-history () - "Complete the minibuffer history as far as possible. -Like `minibuffer-complete' but completes on the history items -instead of the default completion table." + "Complete as far as possible using the minibuffer history. +Like `minibuffer-complete' but completes using the history of minibuffer +inputs for the prompting command, instead of the default completion table." (interactive) (let* ((history (symbol-value minibuffer-history-variable)) (completions @@ -4952,9 +4952,9 @@ instead of the default completion table." (complete-with-action action completions string pred))))))) (defun minibuffer-complete-defaults () - "Complete minibuffer defaults as far as possible. -Like `minibuffer-complete' but completes on the default items -instead of the completion table." + "Complete as far as possible using the minibuffer defaults. +Like `minibuffer-complete' but completes using the default items +provided by the prompting command, instead of the completion table." (interactive) (when (and (not minibuffer-default-add-done) (functionp minibuffer-default-add-function)) diff --git a/src/minibuf.c b/src/minibuf.c index f16880011f7..83b1fa024f8 100644 --- a/src/minibuf.c +++ b/src/minibuf.c @@ -1293,6 +1293,11 @@ barf_if_interaction_inhibited (void) DEFUN ("read-from-minibuffer", Fread_from_minibuffer, Sread_from_minibuffer, 1, 7, 0, doc: /* Read a string from the minibuffer, prompting with string PROMPT. +While in the minibuffer, you can use \\\\[minibuffer-complete] and \\[minibuffer-complete-word] to complete your input. +You can also use \\\\[minibuffer-complete-history] to complete using history items in the +input history HIST, and you can use \\[minibuffer-complete-defaults] to complete using +the default items in DEFAULT-VALUE. + The optional second arg INITIAL-CONTENTS is an obsolete alternative to DEFAULT-VALUE. It normally should be nil in new code, except when HIST is a cons. It is discussed in more detail below. commit c29b798537eb9573b8f34fa2e91c0e136a095fb4 Author: Corwin Brust Date: Sat Feb 3 20:54:29 2024 -0600 ; etc/w32-feature.el (harfbuzz): improve test This enable the tests to be used with batch (Bug#68919), e.g. emacs.exe -l etc/w32-feature.el --batch -eval \ '(ert-run-tests-batch-and-exit)' diff --git a/etc/w32-feature.el b/etc/w32-feature.el index 8d36e32e0fb..08124d396cb 100644 --- a/etc/w32-feature.el +++ b/etc/w32-feature.el @@ -46,9 +46,7 @@ (ert-deftest feature-harfbuzz () (should - (eq - 'harfbuzz - (car (frame-parameter nil 'font-backend))))) + (eq 'harfbuzz (get 'uniscribe 'font-driver-superseded-by)))) (ert-deftest feature-gnutls () (should (gnutls-available-p))) commit 0e43e35f96e5c3c10a200ebe8fe77c60e0db7c4a Author: Corwin Brust Date: Sun Dec 22 23:08:08 2024 -0600 * admin/nt/dist-build/emacs.nsi: (Uninstall) delete only one Emacs Previously, the uninstaller would recursively, unconditionally, remove the parent folder in which Emacs was installed (the folder selected by when running the installer), into which the installer places a folder named for the given release (e.g. emacs-30.1). This was a problem during uinstalation when the selected folder contained other versions of Emacs the user did not wish to remove. Additionally, deleting Start Menu short-cuts did not work (bug#68756). Some installer language now better reflects that users are not required to "Accept" the GNU Public License in order to use (etc.) Emacs (bug#67667). Users selections related to where to create (or not create) Start Menu shortcuts are no longer ignored. (bug#75013) Emacs (as installed by the installer) can now be uninstalled via Windows' Add/Remove Progrms Control Panel. The uninstaller will now remove (empty) parent folders, both under Program Files and (when creation of shortcuts is enabled) under the select Start Menu location. diff --git a/admin/nt/dist-build/emacs.nsi b/admin/nt/dist-build/emacs.nsi index 557bb106dde..b8226d69423 100644 --- a/admin/nt/dist-build/emacs.nsi +++ b/admin/nt/dist-build/emacs.nsi @@ -8,7 +8,10 @@ Outfile "emacs-${OUT_VERSION}-installer.exe" SetCompressor /solid lzma Var StartMenuFolder +Var UninstallerPath +!define UNINST_KEY \ + "Software\Microsoft\Windows\CurrentVersion\Uninstall\emacs-${VERSION_BRANCH}" !define MUI_WELCOMEPAGE_TITLE "Emacs" !define MUI_WELCOMEPAGE_TITLE_3LINES @@ -20,16 +23,27 @@ Var StartMenuFolder !insertmacro MUI_PAGE_WELCOME - -!define MUI_LICENSEPAGE_TEXT_TOP "The GNU General Public License" +# licensing/about click-though page +!define MUI_PAGE_HEADER_TEXT "Emacs is Free Software" +!define MUI_PAGE_HEADER_SUBTEXT "A component of the GNU operating system." +!define MUI_LICENSEPAGE_TEXT_TOP "This program is free software." +!define MUI_LICENSEPAGE_TEXT_BOTTOM "You can redistribute this program 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 (as above), or (at your option) any later version." +!define MUI_LICENSEPAGE_BUTTON "OK" !insertmacro MUI_PAGE_LICENSE "emacs-${VERSION_BRANCH}\share\emacs\${EMACS_VERSION}\lisp\COPYING" +# user option page: installation path !insertmacro MUI_PAGE_DIRECTORY -!insertmacro MUI_PAGE_INSTFILES +# user option page: start menu shortcut !insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder +# user option confirm/begin install +!insertmacro MUI_PAGE_INSTFILES + +# uninstaller confirmation/options (no options) !insertmacro MUI_UNPAGE_CONFIRM + +# uninstaller begin !insertmacro MUI_UNPAGE_INSTFILES !insertmacro MUI_LANGUAGE "English" @@ -39,23 +53,35 @@ function .onInit StrCpy $INSTDIR "$PROGRAMFILES64\Emacs" functionend - +# main section logic, run after confirming installation Section - SetOutPath $INSTDIR + # insisting on installing shortcuts for "all users" + # might ensure uninstall can remove shortcuts we created + # SetShellVarContext all + # extract program files + SetOutPath $INSTDIR File /r emacs-${VERSION_BRANCH} # define uninstaller name - WriteUninstaller $INSTDIR\Uninstall.exe + StrCpy $UninstallerPath "$INSTDIR\Uninstall-${VERSION_BRANCH}.exe" + + # create uninstaller + WriteUninstaller "$UninstallerPath" + + # add registry key to enable uninstall from control panel + WriteRegStr HKLM "${UNINST_KEY}" "DisplayName" "GNU Emacs ${VERSION_BRANCH}" + WriteRegStr HKLM "${UNINST_KEY}" "UninstallString" "$\"$UninstallerPath$\"" - !insertmacro MUI_STARTMENU_WRITE_BEGIN Application ;Create shortcuts + !insertmacro MUI_STARTMENU_WRITE_BEGIN Application CreateDirectory "$SMPROGRAMS\$StartMenuFolder" - CreateShortcut "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" "$INSTDIR\Uninstall.exe" - + CreateShortcut "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" \ + "$UninstallerPath" + CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Emacs.lnk" \ + "$INSTDIR\emacs-${VERSION_BRANCH}\bin\runemacs.exe" !insertmacro MUI_STARTMENU_WRITE_END - CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Emacs.lnk" "$INSTDIR\emacs-${VERSION_BRANCH}\bin\runemacs.exe" SectionEnd @@ -63,15 +89,50 @@ SectionEnd # the section will always be named "Uninstall" Section "Uninstall" - # Always delete uninstaller first - Delete "$INSTDIR\Uninstall.exe" + # remove All Users shortcuts only + # SetShellVarContext all + + # retreive/recalculate uninstaller location + StrCpy $UninstallerPath "$INSTDIR\Uninstall-${VERSION_BRANCH}.exe" + + # remove registry key + DeleteRegKey HKLM "${UNINST_KEY}" - # now delete installed directory - RMDir /r "$INSTDIR" - RMDir "$INSTDIR" + # delete uninstaller + Delete "$INSTDIR\Uninstall-${VERSION_BRANCH}.exe" + # retreive/reclculate startmenu shortcuts location !insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder + StrCpy $StartMenuFolder "$SMPROGRAMS\$StartMenuFolder" + + # remove Start Menu Program shortcuts + Delete "$StartMenuFolder\Emacs.lnk" + Delete "$StartMenuFolder\Uninstall.lnk" + + # remove empty startmenu parents up to $SMPROGRAMS + startMenuDeleteLoop: + ClearErrors + RMDir $StartMenuFolder + GetFullPathName $StartMenuFolder "$StartMenuFolder\.." + IfErrors startMenuDeleteLoopDone + StrCmp $StartMenuFolder $SMPROGRAMS startMenuDeleteLoopDone startMenuDeleteLoop + + # we're basically using GOTO, above, so we should get here.. + startMenuDeleteLoopDone: + + # next we remove stuff from program-files/instalation path + # start with recursive delete of the Emacs we installed + RMDir /r "$INSTDIR\emacs-${VERSION_BRANCH}" + + # now walk parents of installation directory, deleting if empty + instDirDeleteLoop: + ClearErrors + RMDir $INSTDIR + GetFullPathName $INSTDIR "$INSTDIR\.." + IfErrors instDirDeleteLoopDone + StrCmp $INSTDIR $PROGRAMFILES64 instDirDeleteLoopDone instDirDeleteLoop + + # final clean-up (after removing from startmenu and progfiles) + instDirDeleteLoopDone: - Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" - RMDir "$SMPROGRAMS\$StartMenuFolder" SectionEnd commit b83cd8a8fb0e24057d6ab66afa53b25699e34bf1 Author: Eli Zaretskii Date: Sun Dec 22 14:02:25 2024 +0200 ; * etc/tutorials/TUTORIAL.ko: Fix the beginning. diff --git a/etc/tutorials/TUTORIAL.ko b/etc/tutorials/TUTORIAL.ko index a8c97e8db9c..edb21c2bf60 100644 --- a/etc/tutorials/TUTORIAL.ko +++ b/etc/tutorials/TUTORIAL.ko @@ -1,6 +1,5 @@ -이맥스(Emacs) 지침서입니다. -끝에는 복사 조건이 -있습니다. 지금 읽고 있는 이 글은 이맥스(Emacs) 지침서입니다. +이맥스(Emacs) 지침서입니다. 끝에는 복사 조건이 있습니다. +지금 읽고 있는 이 글은 이맥스(Emacs) 지침서입니다. 이맥스 명령들은 대개 제어쇠 (CTRL이나 CTL이라고도 표시) 혹은 META쇠 (EDIT이나 ALT라고도 표시)를 사용합니다. 이런 글쇠를 매번 다 commit 41caccc488b6fa23220e8dc41e0818fea705ae04 Author: Eli Zaretskii Date: Sun Dec 22 13:50:41 2024 +0200 ; * etc/publicsuffix.txt: Update from upstream. diff --git a/etc/publicsuffix.txt b/etc/publicsuffix.txt index 3e8f934322a..a1bc5ea6c06 100644 --- a/etc/publicsuffix.txt +++ b/etc/publicsuffix.txt @@ -5,6 +5,9 @@ // Please pull this list from, and only from https://publicsuffix.org/list/public_suffix_list.dat, // rather than any other VCS sites. Pulling from any other URL is not guaranteed to be supported. +// VERSION: 2024-12-20_13-01-30_UTC +// COMMIT: 9e89e8b8a64027217dc22dda2e7c9dacd3d6ee6c + // Instructions on pulling and using this list can be found at https://publicsuffix.org/list/. // ===BEGIN ICANN DOMAINS=== @@ -14,40 +17,48 @@ ac com.ac edu.ac gov.ac -net.ac mil.ac +net.ac org.ac -// ad : https://en.wikipedia.org/wiki/.ad +// ad : https://www.iana.org/domains/root/db/ad.html +// Confirmed by Amadeu Abril i Abril (CORE) 2024-11-17 ad -nom.ad // ae : https://tdra.gov.ae/en/aeda/ae-policies ae +ac.ae co.ae +gov.ae +mil.ae net.ae org.ae sch.ae -ac.ae -gov.ae -mil.ae -// aero : see https://www.information.aero/index.php?id=66 +// aero : https://information.aero/registration/policies/dmp aero +// 2LDs +airline.aero +airport.aero +// 2LDs (currently not accepting registration, seemingly never have) +// As of 2024-07, these are marked as reserved for potential 3LD +// registrations (clause 11 "allocated subdomains" in the 2006 TLD +// policy), but the relevant industry partners have not opened them up +// for registration. Current status can be determined from the TLD's +// policy document: 2LDs that are open for registration must list +// their policy in the TLD's policy. Any 2LD without such a policy is +// not open for registrations. accident-investigation.aero accident-prevention.aero aerobatic.aero aeroclub.aero aerodrome.aero agents.aero -aircraft.aero -airline.aero -airport.aero air-surveillance.aero -airtraffic.aero air-traffic-control.aero +aircraft.aero +airtraffic.aero ambulance.aero -amusement.aero association.aero author.aero ballooning.aero @@ -78,6 +89,7 @@ exchange.aero express.aero federation.aero flight.aero +freight.aero fuel.aero gliding.aero government.aero @@ -92,6 +104,7 @@ leasing.aero logistics.aero magazine.aero maintenance.aero +marketplace.aero media.aero microlight.aero modelling.aero @@ -114,6 +127,7 @@ show.aero skydiving.aero software.aero student.aero +taxi.aero trader.aero trading.aero trainer.aero @@ -121,27 +135,27 @@ union.aero workinggroup.aero works.aero -// af : http://www.nic.af/help.jsp +// af : https://www.nic.af/domain-price af -gov.af com.af -org.af -net.af edu.af +gov.af +net.af +org.af // ag : http://www.nic.ag/prices.htm ag +co.ag com.ag -org.ag net.ag -co.ag nom.ag +org.ag // ai : http://nic.com.ai/ ai -off.ai com.ai net.ai +off.ai org.ai // al : http://www.ert.gov.al/ert_alb/faq_det.html?Id=31 @@ -154,6 +168,7 @@ net.al org.al // am : https://www.amnic.net/policy/en/Policy_EN.pdf +// Confirmed by ISOC AM 2024-11-18 am co.am com.am @@ -161,17 +176,20 @@ commune.am net.am org.am -// ao : https://en.wikipedia.org/wiki/.ao -// http://www.dns.ao/REGISTR.DOC +// ao : https://www.iana.org/domains/root/db/ao.html +// https://www.dns.ao/ao/ ao +co.ao ed.ao +edu.ao +gov.ao gv.ao +it.ao og.ao -co.ao +org.ao pb.ao -it.ao -// aq : https://en.wikipedia.org/wiki/.aq +// aq : https://www.iana.org/domains/root/db/aq.html aq // ar : https://nic.ar/es/nic-argentina/normativa @@ -191,45 +209,46 @@ org.ar senasa.ar tur.ar -// arpa : https://en.wikipedia.org/wiki/.arpa +// arpa : https://www.iana.org/domains/root/db/arpa.html // Confirmed by registry 2008-06-18 arpa e164.arpa +home.arpa in-addr.arpa ip6.arpa iris.arpa uri.arpa urn.arpa -// as : https://en.wikipedia.org/wiki/.as +// as : https://www.iana.org/domains/root/db/as.html as gov.as -// asia : https://en.wikipedia.org/wiki/.asia +// asia : https://www.iana.org/domains/root/db/asia.html asia -// at : https://en.wikipedia.org/wiki/.at +// at : https://www.iana.org/domains/root/db/at.html // Confirmed by registry 2008-06-17 at ac.at +sth.ac.at co.at gv.at or.at -sth.ac.at -// au : https://en.wikipedia.org/wiki/.au +// au : https://www.iana.org/domains/root/db/au.html // http://www.auda.org.au/ +// Confirmed by registry 2024-11-17 au // 2LDs +asn.au com.au -net.au -org.au edu.au gov.au -asn.au id.au +net.au +org.au // Historic 2LDs (closed to new registration, but sites still exist) -info.au conf.au oz.au // CGDNs - http://www.cgdn.org.au/ @@ -264,27 +283,31 @@ wa.gov.au // education.tas.edu.au - Removed at the request of the Department of Education Tasmania schools.nsw.edu.au -// aw : https://en.wikipedia.org/wiki/.aw +// aw : https://www.iana.org/domains/root/db/aw.html aw com.aw -// ax : https://en.wikipedia.org/wiki/.ax +// ax : https://www.iana.org/domains/root/db/ax.html ax -// az : https://en.wikipedia.org/wiki/.az +// az : https://www.iana.org/domains/root/db/az.html +// Confirmed via https://whois.az/?page_id=10 2024-12-11 az +biz.az +co.az com.az -net.az -int.az -gov.az -org.az edu.az +gov.az info.az -pp.az +int.az mil.az name.az +net.az +org.az +pp.az +// No longer available for registration, however domains exist as of 2024-12-11 +// see https://whois.az/?page_id=783 pro.az -biz.az // ba : http://nic.ba/users_data/files/pravilnik_o_registraciji.pdf ba @@ -295,7 +318,7 @@ mil.ba net.ba org.ba -// bb : https://en.wikipedia.org/wiki/.bb +// bb : https://www.iana.org/domains/root/db/bb.html bb biz.bb co.bb @@ -308,21 +331,31 @@ org.bb store.bb tv.bb -// bd : https://en.wikipedia.org/wiki/.bd +// bd : https://www.iana.org/domains/root/db/bd.html *.bd -// be : https://en.wikipedia.org/wiki/.be +// be : https://www.iana.org/domains/root/db/be.html // Confirmed by registry 2008-06-08 be ac.be -// bf : https://en.wikipedia.org/wiki/.bf +// bf : https://www.iana.org/domains/root/db/bf.html bf gov.bf -// bg : https://en.wikipedia.org/wiki/.bg +// bg : https://www.iana.org/domains/root/db/bg.html // https://www.register.bg/user/static/rules/en/index.html bg +0.bg +1.bg +2.bg +3.bg +4.bg +5.bg +6.bg +7.bg +8.bg +9.bg a.bg b.bg c.bg @@ -349,26 +382,16 @@ w.bg x.bg y.bg z.bg -0.bg -1.bg -2.bg -3.bg -4.bg -5.bg -6.bg -7.bg -8.bg -9.bg -// bh : https://en.wikipedia.org/wiki/.bh +// bh : https://www.iana.org/domains/root/db/bh.html bh com.bh edu.bh +gov.bh net.bh org.bh -gov.bh -// bi : https://en.wikipedia.org/wiki/.bi +// bi : https://www.iana.org/domains/root/db/bi.html // http://whois.nic.bi/ bi co.bi @@ -377,7 +400,7 @@ edu.bi or.bi org.bi -// biz : https://en.wikipedia.org/wiki/.biz +// biz : https://www.iana.org/domains/root/db/biz.html biz // bj : https://nic.bj/bj-suffixes.txt @@ -399,12 +422,12 @@ money.bj net.bj org.bj ote.bj -resto.bj restaurant.bj +resto.bj tourism.bj univ.bj -// bm : http://www.bermudanic.bm/dnr-text.txt +// bm : https://www.bermudanic.bm/domain-registration/index.php bm com.bm edu.bm @@ -420,15 +443,16 @@ gov.bn net.bn org.bn -// bo : https://nic.bo/delegacion2015.php#h-1.10 +// bo : https://nic.bo +// Confirmed by registry 2024-11-19 bo com.bo edu.bo gob.bo int.bo -org.bo -net.bo mil.bo +net.bo +org.bo tv.bo web.bo // Social Domains @@ -454,9 +478,9 @@ natural.bo nombre.bo noticias.bo patria.bo +plurinacional.bo politica.bo profesional.bo -plurinacional.bo pueblo.bo revista.bo salud.bo @@ -484,6 +508,7 @@ ato.br b.br barueri.br belem.br +bet.br bhz.br bib.br bio.br @@ -571,6 +596,7 @@ joinville.br jor.br jus.br leg.br +leilao.br lel.br log.br londrina.br @@ -641,12 +667,12 @@ zlg.br // bs : http://www.nic.bs/rules.html bs com.bs -net.bs -org.bs edu.bs gov.bs +net.bs +org.bs -// bt : https://en.wikipedia.org/wiki/.bt +// bt : https://www.iana.org/domains/root/db/bt.html bt com.bt edu.bt @@ -658,14 +684,16 @@ org.bt // Submitted by registry bv -// bw : https://en.wikipedia.org/wiki/.bw -// http://www.gobin.info/domainname/bw.doc -// list of other 2nd level tlds ? +// bw : https://www.iana.org/domains/root/db/bw.html +// https://nic.net.bw/bw-name-structure bw +ac.bw co.bw +gov.bw +net.bw org.bw -// by : https://en.wikipedia.org/wiki/.by +// by : https://www.iana.org/domains/root/db/by.html // http://tld.by/rules_2006_en.html // list of other 2nd level tlds ? by @@ -678,16 +706,17 @@ com.by // http://hoster.by/ of.by -// bz : https://en.wikipedia.org/wiki/.bz +// bz : https://www.iana.org/domains/root/db/bz.html // http://www.belizenic.bz/ bz +co.bz com.bz -net.bz -org.bz edu.bz gov.bz +net.bz +org.bz -// ca : https://en.wikipedia.org/wiki/.ca +// ca : https://www.iana.org/domains/root/db/ca.html ca // ca geographical names ab.ca @@ -708,46 +737,43 @@ yk.ca // see also: http://registry.gc.ca/en/SubdomainFAQ gc.ca -// cat : https://en.wikipedia.org/wiki/.cat +// cat : https://www.iana.org/domains/root/db/cat.html cat -// cc : https://en.wikipedia.org/wiki/.cc +// cc : https://www.iana.org/domains/root/db/cc.html cc -// cd : https://en.wikipedia.org/wiki/.cd -// see also: https://www.nic.cd/domain/insertDomain_2.jsp?act=1 +// cd : https://www.iana.org/domains/root/db/cd.html +// https://www.nic.cd cd gov.cd -// cf : https://en.wikipedia.org/wiki/.cf +// cf : https://www.iana.org/domains/root/db/cf.html cf -// cg : https://en.wikipedia.org/wiki/.cg +// cg : https://www.iana.org/domains/root/db/cg.html cg -// ch : https://en.wikipedia.org/wiki/.ch +// ch : https://www.iana.org/domains/root/db/ch.html ch -// ci : https://en.wikipedia.org/wiki/.ci -// http://www.nic.ci/index.php?page=charte +// ci : https://www.iana.org/domains/root/db/ci.html ci -org.ci -or.ci -com.ci +ac.ci +aéroport.ci +asso.ci co.ci -edu.ci +com.ci ed.ci -ac.ci -net.ci +edu.ci go.ci -asso.ci -aéroport.ci -int.ci -presse.ci -md.ci gouv.ci +int.ci +net.ci +or.ci +org.ci -// ck : https://en.wikipedia.org/wiki/.ck +// ck : https://www.iana.org/domains/root/db/ck.html *.ck !www.ck @@ -759,26 +785,26 @@ gob.cl gov.cl mil.cl -// cm : https://en.wikipedia.org/wiki/.cm plus bug 981927 +// cm : https://www.iana.org/domains/root/db/cm.html plus bug 981927 cm co.cm com.cm gov.cm net.cm -// cn : https://en.wikipedia.org/wiki/.cn +// cn : https://www.iana.org/domains/root/db/cn.html // Submitted by registry cn ac.cn com.cn edu.cn gov.cn +mil.cn net.cn org.cn -mil.cn 公司.cn -网络.cn 網絡.cn +网络.cn // cn geographic names ah.cn bj.cn @@ -786,18 +812,20 @@ cq.cn fj.cn gd.cn gs.cn -gz.cn gx.cn +gz.cn ha.cn hb.cn he.cn hi.cn +hk.cn hl.cn hn.cn jl.cn js.cn jx.cn ln.cn +mo.cn nm.cn nx.cn qh.cn @@ -807,38 +835,32 @@ sh.cn sn.cn sx.cn tj.cn +tw.cn xj.cn xz.cn yn.cn zj.cn -hk.cn -mo.cn -tw.cn -// co : https://en.wikipedia.org/wiki/.co -// Submitted by registry +// co : https://www.iana.org/domains/root/db/co.html +// https://www.cointernet.com.co/registra +// https://www.cointernet.com.co/como-funciona-un-dominio-restringido +// Confirmed by registry 2024-11-18 co -arts.co com.co edu.co -firm.co gov.co -info.co -int.co mil.co net.co nom.co org.co -rec.co -web.co -// com : https://en.wikipedia.org/wiki/.com +// com : https://www.iana.org/domains/root/db/com.html com -// coop : https://en.wikipedia.org/wiki/.coop +// coop : https://www.iana.org/domains/root/db/coop.html coop -// cr : http://www.nic.cr/niccr_publico/showRegistroDominiosScreen.do +// cr : https://nic.cr/capitulo-1-registro-de-un-nombre-de-dominio/ cr ac.cr co.cr @@ -848,40 +870,45 @@ go.cr or.cr sa.cr -// cu : https://en.wikipedia.org/wiki/.cu +// cu : https://www.iana.org/domains/root/db/cu.html cu com.cu edu.cu -org.cu -net.cu -gov.cu +gob.cu inf.cu +nat.cu +net.cu +org.cu -// cv : https://en.wikipedia.org/wiki/.cv -// cv : http://www.dns.cv/tldcv_portal/do?com=DS;5446457100;111;+PAGE(4000018)+K-CAT-CODIGO(RDOM)+RCNT(100); <- registration rules +// cv : https://www.iana.org/domains/root/db/cv.html +// https://ola.cv/domain-extensions-under-cv/ +// Confirmed by registry 2024-11-26 cv com.cv edu.cv +id.cv int.cv +net.cv nome.cv org.cv +publ.cv -// cw : http://www.una.cw/cw_registry/ -// Confirmed by registry 2013-03-26 +// cw : https://www.uoc.cw/cw-registry +// Confirmed by registry 2024-11-19 cw com.cw edu.cw net.cw org.cw -// cx : https://en.wikipedia.org/wiki/.cx +// cx : https://www.iana.org/domains/root/db/cx.html // list of other 2nd level tlds ? cx gov.cx // cy : http://www.nic.cy/ -// Submitted by registry Panayiotou Fotia -// namespace policies URL https://www.nic.cy/portal//sites/default/files/symfonia_gia_eggrafi.pdf +// Submitted by Panayiotou Fotia +// https://nic.cy/wp-content/uploads/2024/01/Create-Request-for-domain-name-registration-1.pdf cy ac.cy biz.cy @@ -896,30 +923,33 @@ press.cy pro.cy tm.cy -// cz : https://en.wikipedia.org/wiki/.cz +// cz : https://www.iana.org/domains/root/db/cz.html cz -// de : https://en.wikipedia.org/wiki/.de +// de : https://www.iana.org/domains/root/db/de.html // Confirmed by registry (with technical // reservations) 2008-07-01 de -// dj : https://en.wikipedia.org/wiki/.dj +// dj : https://www.iana.org/domains/root/db/dj.html dj -// dk : https://en.wikipedia.org/wiki/.dk +// dk : https://www.iana.org/domains/root/db/dk.html // Confirmed by registry 2008-06-17 dk -// dm : https://en.wikipedia.org/wiki/.dm +// dm : https://www.iana.org/domains/root/db/dm.html +// https://nic.dm/policies/pdf/DMRulesandGuidelines2024v1.pdf +// Confirmed by registry 2024-11-19 dm +co.dm com.dm -net.dm -org.dm edu.dm gov.dm +net.dm +org.dm -// do : https://en.wikipedia.org/wiki/.do +// do : https://www.iana.org/domains/root/db/do.html do art.do com.do @@ -939,88 +969,93 @@ asso.dz com.dz edu.dz gov.dz -org.dz net.dz +org.dz pol.dz soc.dz tm.dz -// ec : http://www.nic.ec/reg/paso1.asp +// ec : https://www.nic.ec/ // Submitted by registry ec com.ec -info.ec -net.ec +edu.ec fin.ec +gob.ec +gov.ec +info.ec k12.ec med.ec -pro.ec -org.ec -edu.ec -gov.ec -gob.ec mil.ec +net.ec +org.ec +pro.ec -// edu : https://en.wikipedia.org/wiki/.edu +// edu : https://www.iana.org/domains/root/db/edu.html edu -// ee : http://www.eenet.ee/EENet/dom_reeglid.html#lisa_B +// ee : https://www.internet.ee/domains/general-domains-and-procedure-for-registration-of-sub-domains-under-general-domains ee +aip.ee +com.ee edu.ee +fie.ee gov.ee -riik.ee lib.ee med.ee -com.ee -pri.ee -aip.ee org.ee -fie.ee +pri.ee +riik.ee -// eg : https://en.wikipedia.org/wiki/.eg +// eg : https://www.iana.org/domains/root/db/eg.html +// https://domain.eg/en/domain-rules/subdomain-names-types/ eg +ac.eg com.eg edu.eg eun.eg gov.eg +info.eg +me.eg mil.eg name.eg net.eg org.eg sci.eg +sport.eg +tv.eg -// er : https://en.wikipedia.org/wiki/.er +// er : https://www.iana.org/domains/root/db/er.html *.er -// es : https://www.nic.es/site_ingles/ingles/dominios/index.html +// es : https://www.dominios.es/en es com.es +edu.es +gob.es nom.es org.es -gob.es -edu.es -// et : https://en.wikipedia.org/wiki/.et +// et : https://www.iana.org/domains/root/db/et.html et +biz.et com.et -gov.et -org.et edu.et -biz.et -name.et +gov.et info.et +name.et net.et +org.et -// eu : https://en.wikipedia.org/wiki/.eu +// eu : https://www.iana.org/domains/root/db/eu.html eu -// fi : https://en.wikipedia.org/wiki/.fi +// fi : https://www.iana.org/domains/root/db/fi.html fi -// aland.fi : https://en.wikipedia.org/wiki/.ax +// aland.fi : https://www.iana.org/domains/root/db/ax.html // This domain is being phased out in favor of .ax. As there are still many // domains under aland.fi, we still keep it on the list until aland.fi is // completely removed. -// TODO: Check for updates (expected to be phased out around Q1/2009) aland.fi // fj : http://domains.fj/ @@ -1037,17 +1072,17 @@ net.fj org.fj pro.fj -// fk : https://en.wikipedia.org/wiki/.fk +// fk : https://www.iana.org/domains/root/db/fk.html *.fk -// fm : https://en.wikipedia.org/wiki/.fm +// fm : https://www.iana.org/domains/root/db/fm.html +fm com.fm edu.fm net.fm org.fm -fm -// fo : https://en.wikipedia.org/wiki/.fo +// fo : https://www.iana.org/domains/root/db/fo.html fo // fr : https://www.afnic.fr/ https://www.afnic.fr/wp-media/uploads/2022/12/afnic-naming-policy-2023-01-01.pdf @@ -1064,59 +1099,60 @@ cci.fr greta.fr huissier-justice.fr -// ga : https://en.wikipedia.org/wiki/.ga +// ga : https://www.iana.org/domains/root/db/ga.html ga // gb : This registry is effectively dormant // Submitted by registry gb -// gd : https://en.wikipedia.org/wiki/.gd +// gd : https://www.iana.org/domains/root/db/gd.html +gd edu.gd gov.gd -gd -// ge : http://www.nic.net.ge/policy_en.pdf +// ge : https://nic.ge/en/administrator/the-ge-domain-regulations +// Confirmed by registry 2024-11-20 ge com.ge edu.ge gov.ge -org.ge -mil.ge net.ge +org.ge pvt.ge +school.ge -// gf : https://en.wikipedia.org/wiki/.gf +// gf : https://www.iana.org/domains/root/db/gf.html gf -// gg : http://www.channelisles.net/register-domains/ +// gg : https://www.channelisles.net/register-1/register-direct // Confirmed by registry 2013-11-28 gg co.gg net.gg org.gg -// gh : https://en.wikipedia.org/wiki/.gh -// see also: http://www.nic.gh/reg_now.php +// gh : https://www.iana.org/domains/root/db/gh.html +// https://www.nic.gh/ // Although domains directly at second level are not possible at the moment, // they have been possible for some time and may come back. gh com.gh edu.gh gov.gh -org.gh mil.gh +org.gh // gi : http://www.nic.gi/rules.html gi com.gi -ltd.gi +edu.gi gov.gi +ltd.gi mod.gi -edu.gi org.gi -// gl : https://en.wikipedia.org/wiki/.gl +// gl : https://www.iana.org/domains/root/db/gl.html // http://nic.gl gl co.gl @@ -1135,22 +1171,22 @@ ac.gn com.gn edu.gn gov.gn -org.gn net.gn +org.gn -// gov : https://en.wikipedia.org/wiki/.gov +// gov : https://www.iana.org/domains/root/db/gov.html gov // gp : http://www.nic.gp/index.php?lang=en gp +asso.gp com.gp -net.gp -mobi.gp edu.gp +mobi.gp +net.gp org.gp -asso.gp -// gq : https://en.wikipedia.org/wiki/.gq +// gq : https://www.iana.org/domains/root/db/gq.html gq // gr : https://grweb.ics.forth.gr/english/1617-B-2005.html @@ -1158,11 +1194,11 @@ gq gr com.gr edu.gr +gov.gr net.gr org.gr -gov.gr -// gs : https://en.wikipedia.org/wiki/.gs +// gs : https://www.iana.org/domains/root/db/gs.html gs // gt : https://www.gt/sitio/registration_policy.php?lang=en @@ -1188,11 +1224,11 @@ net.gu org.gu web.gu -// gw : https://en.wikipedia.org/wiki/.gw +// gw : https://www.iana.org/domains/root/db/gw.html // gw : https://nic.gw/regras/ gw -// gy : https://en.wikipedia.org/wiki/.gy +// gy : https://www.iana.org/domains/root/db/gy.html // http://registry.gy/ gy co.gy @@ -1211,92 +1247,92 @@ gov.hk idv.hk net.hk org.hk +个人.hk +個人.hk 公司.hk -教育.hk -敎育.hk 政府.hk -個人.hk -个人.hk +敎育.hk +教育.hk 箇人.hk +組織.hk +組织.hk +網絡.hk 網络.hk -网络.hk 组織.hk -網絡.hk -网絡.hk 组织.hk -組織.hk -組织.hk +网絡.hk +网络.hk -// hm : https://en.wikipedia.org/wiki/.hm +// hm : https://www.iana.org/domains/root/db/hm.html hm // hn : http://www.nic.hn/politicas/ps02,,05.html hn com.hn edu.hn -org.hn -net.hn -mil.hn gob.hn +mil.hn +net.hn +org.hn // hr : http://www.dns.hr/documents/pdf/HRTLD-regulations.pdf hr -iz.hr +com.hr from.hr +iz.hr name.hr -com.hr // ht : http://www.nic.ht/info/charte.cfm ht +adult.ht +art.ht +asso.ht com.ht -shop.ht +coop.ht +edu.ht firm.ht +gouv.ht info.ht -adult.ht +med.ht net.ht -pro.ht org.ht -med.ht -art.ht -coop.ht +perso.ht pol.ht -asso.ht -edu.ht +pro.ht rel.ht -gouv.ht -perso.ht +shop.ht // hu : http://www.domain.hu/domain/English/sld.html // Confirmed by registry 2008-06-12 hu -co.hu -info.hu -org.hu -priv.hu -sport.hu -tm.hu 2000.hu agrar.hu bolt.hu casino.hu city.hu +co.hu erotica.hu erotika.hu film.hu forum.hu games.hu hotel.hu +info.hu ingatlan.hu jogasz.hu konyvelo.hu lakas.hu media.hu news.hu +org.hu +priv.hu reklam.hu sex.hu shop.hu +sport.hu suli.hu szex.hu +tm.hu tozsde.hu utazas.hu video.hu @@ -1316,7 +1352,7 @@ ponpes.id sch.id web.id -// ie : https://en.wikipedia.org/wiki/.ie +// ie : https://www.iana.org/domains/root/db/ie.html ie gov.ie @@ -1348,15 +1384,15 @@ org.il im ac.im co.im -com.im ltd.co.im +plc.co.im +com.im net.im org.im -plc.co.im tt.im tv.im -// in : https://en.wikipedia.org/wiki/.in +// in : https://www.iana.org/domains/root/db/in.html // see also: https://registry.in/policies // Please note, that nic.in is not an official eTLD, but used by most // government institutions. @@ -1403,27 +1439,33 @@ uk.in up.in us.in -// info : https://en.wikipedia.org/wiki/.info +// info : https://www.iana.org/domains/root/db/info.html info -// int : https://en.wikipedia.org/wiki/.int +// int : https://www.iana.org/domains/root/db/int.html // Confirmed by registry 2008-06-18 int eu.int // io : http://www.nic.io/rules.htm -// list of other 2nd level tlds ? io +co.io com.io +edu.io +gov.io +mil.io +net.io +nom.io +org.io // iq : http://www.cmc.iq/english/iq/iqregister1.htm iq -gov.iq +com.iq edu.iq +gov.iq mil.iq -com.iq -org.iq net.iq +org.iq // ir : http://www.nic.ir/Terms_and_Conditions_ir,_Appendix_1_Domain_Rules // Also see http://www.nic.ir/Internationalized_Domain_Names @@ -1442,22 +1484,16 @@ sch.ir ايران.ir // is : http://www.isnic.is/domain/rules.php -// Confirmed by registry 2008-12-06 +// Confirmed by registry 2024-11-17 is -net.is -com.is -edu.is -gov.is -org.is -int.is - -// it : https://en.wikipedia.org/wiki/.it + +// it : https://www.iana.org/domains/root/db/it.html +// https://www.nic.it/ it -gov.it edu.it -// Reserved geo-names (regions and provinces): -// https://www.nic.it/sites/default/files/archivio/docs/Regulation_assignation_v7.1.pdf -// Regions +gov.it +// Regions (3.3.1) +// https://www.nic.it/en/manage-your-it/forms-and-docs -> "Assignment and Management of domain names" abr.it abruzzo.it aosta-valley.it @@ -1516,6 +1552,7 @@ trentin-sudtirol.it trentin-südtirol.it trentin-sued-tirol.it trentin-suedtirol.it +trentino.it trentino-a-adige.it trentino-aadige.it trentino-alto-adige.it @@ -1528,7 +1565,6 @@ trentino-sudtirol.it trentino-südtirol.it trentino-sued-tirol.it trentino-suedtirol.it -trentino.it trentinoa-adige.it trentinoaadige.it trentinoalto-adige.it @@ -1572,7 +1608,7 @@ vao.it vda.it ven.it veneto.it -// Provinces +// Provinces (3.3.2) ag.it agrigento.it al.it @@ -1600,10 +1636,10 @@ at.it av.it avellino.it ba.it +balsan.it balsan-sudtirol.it balsan-südtirol.it balsan-suedtirol.it -balsan.it bari.it barletta-trani-andria.it barlettatraniandria.it @@ -1617,21 +1653,21 @@ bl.it bn.it bo.it bologna.it -bolzano-altoadige.it bolzano.it +bolzano-altoadige.it +bozen.it bozen-sudtirol.it bozen-südtirol.it bozen-suedtirol.it -bozen.it br.it brescia.it brindisi.it bs.it bt.it +bulsan.it bulsan-sudtirol.it bulsan-südtirol.it bulsan-suedtirol.it -bulsan.it bz.it ca.it cagliari.it @@ -1733,9 +1769,9 @@ milano.it mn.it mo.it modena.it +monza.it monza-brianza.it monza-e-della-brianza.it -monza.it monzabrianza.it monzaebrianza.it monzaedellabrianza.it @@ -1814,8 +1850,8 @@ sondrio.it sp.it sr.it ss.it -suedtirol.it südtirol.it +suedtirol.it sv.it ta.it taranto.it @@ -1874,23 +1910,30 @@ org.je // jm : http://www.com.jm/register.html *.jm -// jo : http://www.dns.jo/Registration_policy.aspx +// jo : https://www.dns.jo/JoFamily.aspx +// Confirmed by registry 2024-11-17 jo +agri.jo +ai.jo com.jo -org.jo -net.jo edu.jo -sch.jo +eng.jo +fm.jo gov.jo mil.jo -name.jo +net.jo +org.jo +per.jo +phd.jo +sch.jo +tv.jo -// jobs : https://en.wikipedia.org/wiki/.jobs +// jobs : https://www.iana.org/domains/root/db/jobs.html jobs -// jp : https://en.wikipedia.org/wiki/.jp +// jp : https://www.iana.org/domains/root/db/jp.html // http://jprs.co.jp/en/jpdomain.html -// Submitted by registry +// Confirmed by registry 2024-11-22 jp // jp organizational type names ac.jp @@ -1903,6 +1946,9 @@ lg.jp ne.jp or.jp // jp prefecture type names +// 2024-11-22: JPRS confirmed that regional .jp suffixes no longer accept new registrations. +// Once all existing registrations expire (marking full discontinuation), these suffixes +// will be removed from the PSL. aichi.jp akita.jp aomori.jp @@ -1950,26 +1996,14 @@ wakayama.jp yamagata.jp yamaguchi.jp yamanashi.jp -栃木.jp -愛知.jp -愛媛.jp +三重.jp +京都.jp +佐賀.jp 兵庫.jp -熊本.jp -茨城.jp 北海道.jp 千葉.jp 和歌山.jp -長崎.jp -長野.jp -新潟.jp -青森.jp -静岡.jp -東京.jp -石川.jp 埼玉.jp -三重.jp -京都.jp -佐賀.jp 大分.jp 大阪.jp 奈良.jp @@ -1979,20 +2013,32 @@ yamanashi.jp 山口.jp 山形.jp 山梨.jp -岩手.jp 岐阜.jp 岡山.jp +岩手.jp 島根.jp 広島.jp 徳島.jp +愛媛.jp +愛知.jp +新潟.jp +東京.jp +栃木.jp 沖縄.jp 滋賀.jp +熊本.jp +石川.jp 神奈川.jp 福井.jp 福岡.jp 福島.jp 秋田.jp 群馬.jp +茨城.jp +長崎.jp +長野.jp +青森.jp +静岡.jp 香川.jp 高知.jp 鳥取.jp @@ -2000,18 +2046,18 @@ yamanashi.jp // jp geographic type names // http://jprs.jp/doc/rule/saisoku-1.html *.kawasaki.jp -*.kitakyushu.jp -*.kobe.jp -*.nagoya.jp -*.sapporo.jp -*.sendai.jp -*.yokohama.jp !city.kawasaki.jp +*.kitakyushu.jp !city.kitakyushu.jp +*.kobe.jp !city.kobe.jp +*.nagoya.jp !city.nagoya.jp +*.sapporo.jp !city.sapporo.jp +*.sendai.jp !city.sendai.jp +*.yokohama.jp !city.yokohama.jp // 4th level registration aisai.aichi.jp @@ -3702,56 +3748,56 @@ sc.ke // kg : http://www.domain.kg/dmn_n.html kg -org.kg -net.kg com.kg edu.kg gov.kg mil.kg +net.kg +org.kg // kh : http://www.mptc.gov.kh/dns_registration.htm *.kh // ki : http://www.ki/dns/index.html ki -edu.ki biz.ki -net.ki -org.ki +com.ki +edu.ki gov.ki info.ki -com.ki +net.ki +org.ki -// km : https://en.wikipedia.org/wiki/.km +// km : https://www.iana.org/domains/root/db/km.html // http://www.domaine.km/documents/charte.doc km -org.km -nom.km +ass.km +com.km +edu.km gov.km +mil.km +nom.km +org.km prd.km tm.km -edu.km -mil.km -ass.km -com.km // These are only mentioned as proposed suggestions at domaine.km, but -// https://en.wikipedia.org/wiki/.km says they're available for registration: -coop.km +// https://www.iana.org/domains/root/db/km.html says they're available for registration: asso.km -presse.km +coop.km +gouv.km medecin.km notaires.km pharmaciens.km +presse.km veterinaire.km -gouv.km -// kn : https://en.wikipedia.org/wiki/.kn +// kn : https://www.iana.org/domains/root/db/kn.html // http://www.dot.kn/domainRules.html kn -net.kn -org.kn edu.kn gov.kn +net.kn +org.kn // kp : http://www.kcce.kp/en_index.php kp @@ -3762,7 +3808,7 @@ org.kp rep.kp tra.kp -// kr : https://en.wikipedia.org/wiki/.kr +// kr : https://www.iana.org/domains/root/db/kr.html // see also: http://domain.nida.or.kr/eng/registration.jsp kr ac.kr @@ -3815,29 +3861,29 @@ edu.ky net.ky org.ky -// kz : https://en.wikipedia.org/wiki/.kz +// kz : https://www.iana.org/domains/root/db/kz.html // see also: http://www.nic.kz/rules/index.jsp kz -org.kz +com.kz edu.kz -net.kz gov.kz mil.kz -com.kz +net.kz +org.kz -// la : https://en.wikipedia.org/wiki/.la +// la : https://www.iana.org/domains/root/db/la.html // Submitted by registry la -int.la -net.la -info.la +com.la edu.la gov.la -per.la -com.la +info.la +int.la +net.la org.la +per.la -// lb : https://en.wikipedia.org/wiki/.lb +// lb : https://www.iana.org/domains/root/db/lb.html // Submitted by registry lb com.lb @@ -3846,36 +3892,36 @@ gov.lb net.lb org.lb -// lc : https://en.wikipedia.org/wiki/.lc +// lc : https://www.iana.org/domains/root/db/lc.html // see also: http://www.nic.lc/rules.htm lc -com.lc -net.lc co.lc -org.lc +com.lc edu.lc gov.lc +net.lc +org.lc -// li : https://en.wikipedia.org/wiki/.li +// li : https://www.iana.org/domains/root/db/li.html li // lk : https://www.nic.lk/index.php/domain-registration/lk-domain-naming-structure lk -gov.lk -sch.lk -net.lk -int.lk +ac.lk +assn.lk com.lk -org.lk edu.lk +gov.lk +grp.lk +hotel.lk +int.lk +ltd.lk +net.lk ngo.lk +org.lk +sch.lk soc.lk web.lk -ltd.lk -assn.lk -grp.lk -hotel.lk -ac.lk // lr : http://psg.com/dns/lr/lr.txt // Submitted by registry @@ -3883,8 +3929,8 @@ lr com.lr edu.lr gov.lr -org.lr net.lr +org.lr // ls : http://www.nic.ls/ // Confirmed by registry @@ -3899,7 +3945,7 @@ net.ls org.ls sc.ls -// lt : https://en.wikipedia.org/wiki/.lt +// lt : https://www.iana.org/domains/root/db/lt.html lt // gov.lt : http://www.gov.lt/index_en.php gov.lt @@ -3909,88 +3955,87 @@ lu // lv : http://www.nic.lv/DNS/En/generic.php lv +asn.lv com.lv +conf.lv edu.lv gov.lv -org.lv -mil.lv id.lv +mil.lv net.lv -asn.lv -conf.lv +org.lv // ly : http://www.nic.ly/regulations.php ly com.ly -net.ly -gov.ly -plc.ly edu.ly -sch.ly +gov.ly +id.ly med.ly +net.ly org.ly -id.ly +plc.ly +sch.ly -// ma : https://en.wikipedia.org/wiki/.ma +// ma : https://www.iana.org/domains/root/db/ma.html // http://www.anrt.ma/fr/admin/download/upload/file_fr782.pdf ma +ac.ma co.ma -net.ma gov.ma +net.ma org.ma -ac.ma press.ma // mc : http://www.nic.mc/ mc -tm.mc asso.mc +tm.mc -// md : https://en.wikipedia.org/wiki/.md +// md : https://www.iana.org/domains/root/db/md.html md -// me : https://en.wikipedia.org/wiki/.me +// me : https://www.iana.org/domains/root/db/me.html me +ac.me co.me -net.me -org.me edu.me -ac.me gov.me its.me +net.me +org.me priv.me -// mg : http://nic.mg/nicmg/?page_id=39 +// mg : https://nic.mg mg -org.mg -nom.mg -gov.mg -prd.mg -tm.mg +co.mg +com.mg edu.mg +gov.mg mil.mg -com.mg -co.mg +nom.mg +org.mg +prd.mg -// mh : https://en.wikipedia.org/wiki/.mh +// mh : https://www.iana.org/domains/root/db/mh.html mh -// mil : https://en.wikipedia.org/wiki/.mil +// mil : https://www.iana.org/domains/root/db/mil.html mil -// mk : https://en.wikipedia.org/wiki/.mk +// mk : https://www.iana.org/domains/root/db/mk.html // see also: http://dns.marnet.net.mk/postapka.php mk com.mk -org.mk -net.mk edu.mk gov.mk inf.mk name.mk +net.mk +org.mk // ml : http://www.gobin.info/domainname/ml-template.doc -// see also: https://en.wikipedia.org/wiki/.ml +// see also: https://www.iana.org/domains/root/db/ml.html ml com.ml edu.ml @@ -4000,34 +4045,34 @@ net.ml org.ml presse.ml -// mm : https://en.wikipedia.org/wiki/.mm +// mm : https://www.iana.org/domains/root/db/mm.html *.mm -// mn : https://en.wikipedia.org/wiki/.mn +// mn : https://www.iana.org/domains/root/db/mn.html mn -gov.mn edu.mn +gov.mn org.mn // mo : http://www.monic.net.mo/ mo com.mo -net.mo -org.mo edu.mo gov.mo +net.mo +org.mo -// mobi : https://en.wikipedia.org/wiki/.mobi +// mobi : https://www.iana.org/domains/root/db/mobi.html mobi // mp : http://www.dot.mp/ // Confirmed by registry 2008-06-17 mp -// mq : https://en.wikipedia.org/wiki/.mq +// mq : https://www.iana.org/domains/root/db/mq.html mq -// mr : https://en.wikipedia.org/wiki/.mr +// mr : https://www.iana.org/domains/root/db/mr.html mr gov.mr @@ -4047,20 +4092,20 @@ edu.mt net.mt org.mt -// mu : https://en.wikipedia.org/wiki/.mu +// mu : https://www.iana.org/domains/root/db/mu.html mu -com.mu -net.mu -org.mu -gov.mu ac.mu co.mu +com.mu +gov.mu +net.mu or.mu +org.mu // museum : https://welcome.museum/wp-content/uploads/2018/05/20180525-Registration-Policy-MUSEUM-EN_VF-2.pdf https://welcome.museum/buy-your-dot-museum-2/ museum -// mv : https://en.wikipedia.org/wiki/.mv +// mv : https://www.iana.org/domains/root/db/mv.html // "mv" included because, contra Wikipedia, google.mv exists. mv aero.mv @@ -4088,7 +4133,6 @@ coop.mw edu.mw gov.mw int.mw -museum.mw net.mw org.mw @@ -4096,10 +4140,10 @@ org.mw // Submitted by registry mx com.mx -org.mx -gob.mx edu.mx +gob.mx net.mx +org.mx // my : http://www.mynic.my/ // Available strings: https://mynic.my/resources/domains/buying-a-domain/ @@ -4126,27 +4170,16 @@ net.mz org.mz // na : http://www.na-nic.com.na/ -// http://www.info.na/domain/ na -info.na -pro.na -name.na -school.na -or.na -dr.na -us.na -mx.na -ca.na -in.na -cc.na -tv.na -ws.na -mobi.na +alt.na co.na com.na +gov.na +net.na org.na -// name : has 2nd-level tlds, but there's no list of them +// name : http://www.nic.name/ +// Regarding 2LDs: https://github.com/publicsuffix/list/issues/2306 name // nc : http://www.cctld.nc/ @@ -4154,24 +4187,24 @@ nc asso.nc nom.nc -// ne : https://en.wikipedia.org/wiki/.ne +// ne : https://www.iana.org/domains/root/db/ne.html ne -// net : https://en.wikipedia.org/wiki/.net +// net : https://www.iana.org/domains/root/db/net.html net -// nf : https://en.wikipedia.org/wiki/.nf +// nf : https://www.iana.org/domains/root/db/nf.html nf -com.nf -net.nf -per.nf -rec.nf -web.nf arts.nf +com.nf firm.nf info.nf +net.nf other.nf +per.nf +rec.nf store.nf +web.nf // ng : http://www.nira.org.ng/index.php/join-us/register-ng-domain/189-nira-slds ng @@ -4203,7 +4236,7 @@ nom.ni org.ni web.ni -// nl : https://en.wikipedia.org/wiki/.nl +// nl : https://www.iana.org/domains/root/db/nl.html // https://www.sidn.nl/ // ccTLD for the Netherlands nl @@ -4216,18 +4249,18 @@ nl no // Norid category second level domains : https://www.norid.no/en/om-domenenavn/regelverk-for-no/vedlegg-c/ fhs.no -vgs.no -fylkesbibl.no folkebibl.no -museum.no +fylkesbibl.no idrett.no +museum.no priv.no +vgs.no // Norid category second-level domains managed by parties other than Norid : https://www.norid.no/en/om-domenenavn/regelverk-for-no/vedlegg-d/ -mil.no -stat.no dep.no -kommune.no herad.no +kommune.no +mil.no +stat.no // Norid geographical second level domains : https://www.norid.no/en/om-domenenavn/regelverk-for-no/vedlegg-b/ // counties aa.no @@ -4279,10 +4312,10 @@ akrehamn.no algard.no ålgård.no arna.no -brumunddal.no -bryne.no bronnoysund.no brønnøysund.no +brumunddal.no +bryne.no drobak.no drøbak.no egersund.no @@ -4326,27 +4359,32 @@ tananger.no tranby.no vossevangen.no // communities +aarborte.no +aejrie.no afjord.no åfjord.no agdenes.no +nes.akershus.no +aknoluokta.no +ákŋoluokta.no al.no ål.no +alaheadju.no +álaheadju.no alesund.no ålesund.no alstahaug.no alta.no áltá.no -alaheadju.no -álaheadju.no alvdal.no amli.no åmli.no amot.no åmot.no +andasuolo.no andebu.no andoy.no andøy.no -andasuolo.no ardal.no årdal.no aremark.no @@ -4356,9 +4394,9 @@ aseral.no åseral.no asker.no askim.no -askvoll.no askoy.no askøy.no +askvoll.no asnes.no åsnes.no audnedaln.no @@ -4371,27 +4409,37 @@ austevoll.no austrheim.no averoy.no averøy.no -balestrand.no -ballangen.no +badaddja.no +bådåddjå.no +bærum.no +bahcavuotna.no +báhcavuotna.no +bahccavuotna.no +báhccavuotna.no +baidar.no +báidár.no +bajddar.no +bájddar.no balat.no bálát.no +balestrand.no +ballangen.no balsfjord.no -bahccavuotna.no -báhccavuotna.no bamble.no bardu.no +barum.no +batsfjord.no +båtsfjord.no +bearalvahki.no +bearalváhki.no beardu.no beiarn.no -bajddar.no -bájddar.no -baidar.no -báidár.no berg.no bergen.no berlevag.no berlevåg.no -bearalvahki.no -bearalváhki.no +bievat.no +bievát.no bindal.no birkenes.no bjarkoy.no @@ -4400,36 +4448,32 @@ bjerkreim.no bjugn.no bodo.no bodø.no -badaddja.no -bådåddjå.no -budejju.no bokn.no +bomlo.no +bømlo.no bremanger.no bronnoy.no brønnøy.no +budejju.no +nes.buskerud.no bygland.no bykle.no -barum.no -bærum.no -bo.telemark.no -bø.telemark.no -bo.nordland.no -bø.nordland.no -bievat.no -bievát.no -bomlo.no -bømlo.no -batsfjord.no -båtsfjord.no -bahcavuotna.no -báhcavuotna.no +cahcesuolo.no +čáhcesuolo.no +davvenjarga.no +davvenjárga.no +davvesiida.no +deatnu.no +dielddanuorri.no +divtasvuodna.no +divttasvuotna.no +donna.no +dønna.no dovre.no drammen.no drangedal.no dyroy.no dyrøy.no -donna.no -dønna.no eid.no eidfjord.no eidsberg.no @@ -4441,14 +4485,12 @@ enebakk.no engerdal.no etne.no etnedal.no -evenes.no evenassi.no evenášši.no +evenes.no evje-og-hornnes.no farsund.no fauske.no -fuossko.no -fuoisku.no fedje.no fet.no finnoy.no @@ -4456,33 +4498,40 @@ finnøy.no fitjar.no fjaler.no fjell.no +fla.no +flå.no flakstad.no flatanger.no flekkefjord.no flesberg.no flora.no -fla.no -flå.no folldal.no +forde.no +førde.no forsand.no fosnes.no +fræna.no +frana.no frei.no frogn.no froland.no frosta.no -frana.no -fræna.no froya.no frøya.no +fuoisku.no +fuossko.no fusa.no fyresdal.no -forde.no -førde.no +gaivuotna.no +gáivuotna.no +galsa.no +gálsá.no gamvik.no gangaviika.no gáŋgaviika.no gaular.no gausdal.no +giehtavuoatna.no gildeskal.no gildeskål.no giske.no @@ -4500,38 +4549,37 @@ granvin.no gratangen.no grimstad.no grong.no -kraanghke.no -kråanghke.no grue.no gulen.no +guovdageaidnu.no +ha.no +hå.no +habmer.no +hábmer.no hadsel.no +hægebostad.no +hagebostad.no halden.no halsa.no hamar.no hamaroy.no -habmer.no -hábmer.no -hapmir.no -hápmir.no -hammerfest.no hammarfeasta.no hámmárfeasta.no +hammerfest.no +hapmir.no +hápmir.no haram.no hareid.no harstad.no hasvik.no -aknoluokta.no -ákŋoluokta.no hattfjelldal.no -aarborte.no haugesund.no +os.hedmark.no +valer.hedmark.no +våler.hedmark.no hemne.no hemnes.no hemsedal.no -heroy.more-og-romsdal.no -herøy.møre-og-romsdal.no -heroy.nordland.no -herøy.nordland.no hitra.no hjartdal.no hjelmeland.no @@ -4543,96 +4591,95 @@ hole.no holmestrand.no holtalen.no holtålen.no +os.hordaland.no hornindal.no horten.no -hurdal.no -hurum.no -hvaler.no -hyllestad.no -hagebostad.no -hægebostad.no hoyanger.no høyanger.no hoylandet.no høylandet.no -ha.no -hå.no +hurdal.no +hurum.no +hvaler.no +hyllestad.no ibestad.no inderoy.no inderøy.no iveland.no +ivgu.no jevnaker.no -jondal.no jolster.no jølster.no -karasjok.no +jondal.no +kafjord.no +kåfjord.no karasjohka.no kárášjohka.no +karasjok.no karlsoy.no -galsa.no -gálsá.no karmoy.no karmøy.no kautokeino.no -guovdageaidnu.no -klepp.no klabu.no klæbu.no +klepp.no kongsberg.no kongsvinger.no +kraanghke.no +kråanghke.no kragero.no kragerø.no kristiansand.no kristiansund.no krodsherad.no krødsherad.no +kvæfjord.no +kvænangen.no +kvafjord.no kvalsund.no -rahkkeravju.no -ráhkkerávju.no kvam.no +kvanangen.no kvinesdal.no kvinnherad.no kviteseid.no kvitsoy.no kvitsøy.no -kvafjord.no -kvæfjord.no -giehtavuoatna.no -kvanangen.no -kvænangen.no -navuotna.no -návuotna.no -kafjord.no -kåfjord.no -gaivuotna.no -gáivuotna.no +laakesvuemie.no +lærdal.no +lahppi.no +láhppi.no +lardal.no larvik.no -lavangen.no lavagis.no -loabat.no -loabát.no +lavangen.no +leangaviika.no +leaŋgaviika.no lebesby.no -davvesiida.no leikanger.no leirfjord.no leka.no leksvik.no lenvik.no -leangaviika.no -leaŋgaviika.no +lerdal.no lesja.no levanger.no lier.no lierne.no lillehammer.no lillesand.no -lindesnes.no lindas.no lindås.no +lindesnes.no +loabat.no +loabát.no +lodingen.no +lødingen.no lom.no loppa.no -lahppi.no -láhppi.no +lorenskog.no +lørenskog.no +loten.no +løten.no lund.no lunner.no luroy.no @@ -4640,25 +4687,19 @@ lurøy.no luster.no lyngdal.no lyngen.no -ivgu.no -lardal.no -lerdal.no -lærdal.no -lodingen.no -lødingen.no -lorenskog.no -lørenskog.no -loten.no -løten.no +malatvuopmi.no +málatvuopmi.no +malselv.no +målselv.no malvik.no -masoy.no -måsøy.no -muosat.no -muosát.no mandal.no marker.no marnardal.no masfjorden.no +masoy.no +måsøy.no +matta-varjjat.no +mátta-várjjat.no meland.no meldal.no melhus.no @@ -4666,39 +4707,39 @@ meloy.no meløy.no meraker.no meråker.no -moareke.no -moåreke.no midsund.no midtre-gauldal.no +moareke.no +moåreke.no modalen.no modum.no molde.no +heroy.more-og-romsdal.no +sande.more-og-romsdal.no +herøy.møre-og-romsdal.no +sande.møre-og-romsdal.no moskenes.no moss.no mosvik.no -malselv.no -målselv.no -malatvuopmi.no -málatvuopmi.no +muosat.no +muosát.no +naamesjevuemie.no +nååmesjevuemie.no +nærøy.no namdalseid.no -aejrie.no namsos.no namsskogan.no -naamesjevuemie.no -nååmesjevuemie.no -laakesvuemie.no nannestad.no -narvik.no +naroy.no narviika.no +narvik.no naustdal.no +navuotna.no +návuotna.no nedre-eiker.no -nes.akershus.no -nes.buskerud.no nesna.no nesodden.no nesseby.no -unjarga.no -unjárga.no nesset.no nissedal.no nittedal.no @@ -4707,21 +4748,20 @@ nord-fron.no nord-odal.no norddal.no nordkapp.no -davvenjarga.no -davvenjárga.no +bo.nordland.no +bø.nordland.no +heroy.nordland.no +herøy.nordland.no nordre-land.no nordreisa.no -raisa.no -ráisa.no nore-og-uvdal.no notodden.no -naroy.no -nærøy.no notteroy.no nøtterøy.no odda.no oksnes.no øksnes.no +omasvuotna.no oppdal.no oppegard.no oppegård.no @@ -4732,11 +4772,11 @@ orskog.no ørskog.no orsta.no ørsta.no -os.hedmark.no -os.hordaland.no osen.no osteroy.no osterøy.no +valer.ostfold.no +våler.østfold.no ostre-toten.no østre-toten.no overhalla.no @@ -4752,11 +4792,18 @@ porsanger.no porsangu.no porsáŋgu.no porsgrunn.no +rade.no +råde.no radoy.no radøy.no +rælingen.no +rahkkeravju.no +ráhkkerávju.no +raisa.no +ráisa.no rakkestad.no +ralingen.no rana.no -ruovat.no randaberg.no rauma.no rendalen.no @@ -4767,16 +4814,14 @@ rindal.no ringebu.no ringerike.no ringsaker.no -rissa.no risor.no risør.no +rissa.no roan.no -rollag.no -rygge.no -ralingen.no -rælingen.no rodoy.no rødøy.no +rollag.no +romsa.no romskog.no rømskog.no roros.no @@ -4787,18 +4832,14 @@ royken.no røyken.no royrvik.no røyrvik.no -rade.no -råde.no +ruovat.no +rygge.no salangen.no -siellak.no -saltdal.no salat.no -sálát.no sálat.no +sálát.no +saltdal.no samnanger.no -sande.more-og-romsdal.no -sande.møre-og-romsdal.no -sande.vestfold.no sandefjord.no sandnes.no sandoy.no @@ -4810,39 +4851,60 @@ sel.no selbu.no selje.no seljord.no +siellak.no sigdal.no siljan.no sirdal.no +skanit.no +skánit.no +skanland.no +skånland.no skaun.no skedsmo.no ski.no skien.no -skiptvet.no -skjervoy.no -skjervøy.no skierva.no skiervá.no +skiptvet.no skjak.no skjåk.no +skjervoy.no +skjervøy.no skodje.no -skanland.no -skånland.no -skanit.no -skánit.no smola.no smøla.no -snillfjord.no +snaase.no +snåase.no snasa.no snåsa.no +snillfjord.no snoasa.no -snaase.no -snåase.no sogndal.no +sogne.no +søgne.no sokndal.no sola.no solund.no +somna.no +sømna.no +sondre-land.no +søndre-land.no songdalen.no +sor-aurdal.no +sør-aurdal.no +sor-fron.no +sør-fron.no +sor-odal.no +sør-odal.no +sor-varanger.no +sør-varanger.no +sorfold.no +sørfold.no +sorreisa.no +sørreisa.no sortland.no +sorum.no +sørum.no spydeberg.no stange.no stavanger.no @@ -4855,7 +4917,6 @@ stor-elvdal.no stord.no stordal.no storfjord.no -omasvuotna.no strand.no stranda.no stryn.no @@ -4867,72 +4928,55 @@ surnadal.no sveio.no svelvik.no sykkylven.no -sogne.no -søgne.no -somna.no -sømna.no -sondre-land.no -søndre-land.no -sor-aurdal.no -sør-aurdal.no -sor-fron.no -sør-fron.no -sor-odal.no -sør-odal.no -sor-varanger.no -sør-varanger.no -matta-varjjat.no -mátta-várjjat.no -sorfold.no -sørfold.no -sorreisa.no -sørreisa.no -sorum.no -sørum.no tana.no -deatnu.no +bo.telemark.no +bø.telemark.no time.no tingvoll.no tinn.no tjeldsund.no -dielddanuorri.no tjome.no tjøme.no tokke.no tolga.no +tonsberg.no +tønsberg.no torsken.no +træna.no +trana.no tranoy.no tranøy.no +troandin.no +trogstad.no +trøgstad.no +tromsa.no tromso.no tromsø.no -tromsa.no -romsa.no trondheim.no -troandin.no trysil.no -trana.no -træna.no -trogstad.no -trøgstad.no tvedestrand.no tydal.no tynset.no tysfjord.no -divtasvuodna.no -divttasvuotna.no tysnes.no -tysvar.no tysvær.no -tonsberg.no -tønsberg.no +tysvar.no ullensaker.no ullensvang.no ulvik.no +unjarga.no +unjárga.no utsira.no +vaapste.no vadso.no vadsø.no -cahcesuolo.no -čáhcesuolo.no +værøy.no +vaga.no +vågå.no +vagan.no +vågan.no +vagsoy.no +vågsøy.no vaksdal.no valle.no vang.no @@ -4941,8 +4985,8 @@ vardo.no vardø.no varggat.no várggát.no +varoy.no vefsn.no -vaapste.no vega.no vegarshei.no vegårshei.no @@ -4950,6 +4994,7 @@ vennesla.no verdal.no verran.no vestby.no +sande.vestfold.no vestnes.no vestre-slidre.no vestre-toten.no @@ -4959,21 +5004,9 @@ vevelstad.no vik.no vikna.no vindafjord.no +voagat.no volda.no voss.no -varoy.no -værøy.no -vagan.no -vågan.no -voagat.no -vagsoy.no -vågsøy.no -vaga.no -vågå.no -valer.ostfold.no -våler.østfold.no -valer.hedmark.no -våler.hedmark.no // np : http://www.mos.com.np/register.html *.np @@ -4982,17 +5015,17 @@ våler.hedmark.no // Submitted by registry nr biz.nr -info.nr -gov.nr +com.nr edu.nr -org.nr +gov.nr +info.nr net.nr -com.nr +org.nr -// nu : https://en.wikipedia.org/wiki/.nu +// nu : https://www.iana.org/domains/root/db/nu.html nu -// nz : https://en.wikipedia.org/wiki/.nz +// nz : https://www.iana.org/domains/root/db/nz.html // Submitted by registry nz ac.nz @@ -5005,14 +5038,14 @@ health.nz iwi.nz kiwi.nz maori.nz -mil.nz māori.nz +mil.nz net.nz org.nz parliament.nz school.nz -// om : https://en.wikipedia.org/wiki/.om +// om : https://www.iana.org/domains/root/db/om.html om co.om com.om @@ -5027,82 +5060,87 @@ pro.om // onion : https://tools.ietf.org/html/rfc7686 onion -// org : https://en.wikipedia.org/wiki/.org +// org : https://www.iana.org/domains/root/db/org.html org // pa : http://www.nic.pa/ // Some additional second level "domains" resolve directly as hostnames, such as // pannet.pa, so we add a rule for "pa". pa +abo.pa ac.pa -gob.pa com.pa -org.pa -sld.pa edu.pa -net.pa +gob.pa ing.pa -abo.pa med.pa +net.pa nom.pa +org.pa +sld.pa // pe : https://www.nic.pe/InformeFinalComision.pdf pe +com.pe edu.pe gob.pe -nom.pe mil.pe -org.pe -com.pe net.pe +nom.pe +org.pe // pf : http://www.gobin.info/domainname/formulaire-pf.pdf pf com.pf -org.pf edu.pf +org.pf -// pg : https://en.wikipedia.org/wiki/.pg +// pg : https://www.iana.org/domains/root/db/pg.html *.pg // ph : http://www.domains.ph/FAQ2.asp // Submitted by registry ph com.ph -net.ph -org.ph -gov.ph edu.ph -ngo.ph -mil.ph +gov.ph i.ph +mil.ph +net.ph +ngo.ph +org.ph + +// pk : https://pknic.net.pk +// pk : http://pk5.pknic.net.pk/pk5/msgNamepk.PK + grandfathered old gon.pk +// Contact Email: staff@pknic.net.pk PKNIC .PK Registry -// pk : http://pk5.pknic.net.pk/pk5/msgNamepk.PK pk +ac.pk +biz.pk com.pk -net.pk edu.pk -org.pk fam.pk -biz.pk -web.pk -gov.pk +gkp.pk gob.pk +gog.pk gok.pk gon.pk gop.pk gos.pk -info.pk +gov.pk +net.pk +org.pk +web.pk -// pl http://www.dns.pl/english/index.html -// Submitted by registry +// pl : https://www.dns.pl/en/ +// Confirmed by registry 2024-11-18 pl com.pl net.pl org.pl -// pl functional domains (http://www.dns.pl/english/index.html) -aid.pl +// pl functional domains : https://www.dns.pl/en/list_of_functional_domain_names agro.pl +aid.pl atm.pl auto.pl biz.pl @@ -5111,8 +5149,8 @@ gmina.pl gsm.pl info.pl mail.pl -miasta.pl media.pl +miasta.pl mil.pl nieruchomosci.pl nom.pl @@ -5131,7 +5169,8 @@ tm.pl tourism.pl travel.pl turystyka.pl -// Government domains +// Government domains : https://www.dns.pl/informacje_o_rejestracji_domen_gov_pl +// In accordance with the .gov.pl Domain Name Regulations : https://www.dns.pl/regulamin_gov_pl gov.pl ap.gov.pl griw.gov.pl @@ -5188,7 +5227,7 @@ wuoz.gov.pl wzmiuw.gov.pl zp.gov.pl zpisdn.gov.pl -// pl regional domains (http://www.dns.pl/english/index.html) +// pl regional domains : https://www.dns.pl/en/list_of_regional_domain_names augustow.pl babia-gora.pl bedzin.pl @@ -5215,11 +5254,11 @@ jaworzno.pl jelenia-gora.pl jgora.pl kalisz.pl -kazimierz-dolny.pl karpacz.pl kartuzy.pl kaszuby.pl katowice.pl +kazimierz-dolny.pl kepno.pl ketrzyn.pl klodzko.pl @@ -5262,8 +5301,8 @@ pisz.pl podhale.pl podlasie.pl polkowice.pl -pomorze.pl pomorskie.pl +pomorze.pl prochowice.pl pruszkow.pl przeworsk.pl @@ -5274,11 +5313,11 @@ rybnik.pl rzeszow.pl sanok.pl sejny.pl +skoczow.pl slask.pl slupsk.pl sosnowiec.pl stalowa-wola.pl -skoczow.pl starachowice.pl stargard.pl suwalki.pl @@ -5314,31 +5353,31 @@ pm // pn : http://www.government.pn/PnRegistry/policies.htm pn -gov.pn co.pn -org.pn edu.pn +gov.pn net.pn +org.pn -// post : https://en.wikipedia.org/wiki/.post +// post : https://www.iana.org/domains/root/db/post.html post // pr : http://www.nic.pr/index.asp?f=1 pr +biz.pr com.pr -net.pr -org.pr -gov.pr edu.pr -isla.pr -pro.pr -biz.pr +gov.pr info.pr +isla.pr name.pr -// these aren't mentioned on nic.pr, but on https://en.wikipedia.org/wiki/.pr +net.pr +org.pr +pro.pr +// these aren't mentioned on nic.pr, but on https://www.iana.org/domains/root/db/pr.html +ac.pr est.pr prof.pr -ac.pr // pro : http://registry.pro/get-pro pro @@ -5354,36 +5393,32 @@ law.pro med.pro recht.pro -// ps : https://en.wikipedia.org/wiki/.ps +// ps : https://www.iana.org/domains/root/db/ps.html // http://www.nic.ps/registration/policy.html#reg ps +com.ps edu.ps gov.ps -sec.ps -plo.ps -com.ps -org.ps net.ps +org.ps +plo.ps +sec.ps // pt : https://www.dns.pt/en/domain/pt-terms-and-conditions-registration-rules/ pt -net.pt +com.pt +edu.pt gov.pt +int.pt +net.pt +nome.pt org.pt -edu.pt -int.pt publ.pt -com.pt -nome.pt -// pw : https://en.wikipedia.org/wiki/.pw +// pw : https://www.iana.org/domains/root/db/pw.html +// Confirmed by registry in private correspondence with @dnsguru 2024-12-09 pw -co.pw -ne.pw -or.pw -ed.pw -go.pw -belau.pw +gov.pw // py : http://www.nic.py/pautas.html#seccion_9 // Submitted by registry @@ -5408,10 +5443,11 @@ org.qa sch.qa // re : https://www.afnic.fr/wp-media/uploads/2022/12/afnic-naming-policy-2023-01-01.pdf +// Confirmed by registry 2024-11-18 re +// Closed for registration on 2013-03-15 but domains are still maintained asso.re com.re -nom.re // ro : http://www.rotld.ro/ ro @@ -5453,12 +5489,12 @@ org.rw // sa : http://www.nic.net.sa/ sa com.sa -net.sa -org.sa +edu.sa gov.sa med.sa +net.sa +org.sa pub.sa -edu.sa sch.sa // sb : http://www.sbnic.net.sb/ @@ -5473,25 +5509,26 @@ org.sb // sc : http://www.nic.sc/ sc com.sc +edu.sc gov.sc net.sc org.sc -edu.sc // sd : http://www.isoc.sd/sudanic.isoc.sd/billing_pricing.htm // Submitted by registry sd com.sd -net.sd -org.sd edu.sd -med.sd -tv.sd gov.sd info.sd +med.sd +net.sd +org.sd +tv.sd -// se : https://en.wikipedia.org/wiki/.se -// Submitted by registry +// se : https://www.iana.org/domains/root/db/se.html +// https://data.internetstiftelsen.se/barred_domains_list.txt -> Second level domains & Sub-domains +// Confirmed by Registry Services 2024-11-20 se a.se ac.se @@ -5533,47 +5570,46 @@ x.se y.se z.se -// sg : http://www.nic.net.sg/page/registration-policies-procedures-and-guidelines +// sg : https://www.sgnic.sg/domain-registration/sg-categories-rules +// Confirmed by registry 2024-11-19 sg com.sg +edu.sg +gov.sg net.sg org.sg -gov.sg -edu.sg -per.sg // sh : http://nic.sh/rules.htm sh com.sh -net.sh gov.sh -org.sh mil.sh +net.sh +org.sh -// si : https://en.wikipedia.org/wiki/.si +// si : https://www.iana.org/domains/root/db/si.html si // sj : No registrations at this time. // Submitted by registry sj -// sk : https://en.wikipedia.org/wiki/.sk -// list of 2nd level domains ? +// sk : https://www.iana.org/domains/root/db/sk.html sk // sl : http://www.nic.sl // Submitted by registry sl com.sl -net.sl edu.sl gov.sl +net.sl org.sl -// sm : https://en.wikipedia.org/wiki/.sm +// sm : https://www.iana.org/domains/root/db/sm.html sm -// sn : https://en.wikipedia.org/wiki/.sn +// sn : https://www.iana.org/domains/root/db/sn.html sn art.sn com.sn @@ -5592,13 +5628,14 @@ me.so net.so org.so -// sr : https://en.wikipedia.org/wiki/.sr +// sr : https://www.iana.org/domains/root/db/sr.html sr // ss : https://registry.nic.ss/ // Submitted by registry ss biz.ss +co.ss com.ss edu.ss gov.ss @@ -5621,7 +5658,7 @@ principe.st saotome.st store.st -// su : https://en.wikipedia.org/wiki/.su +// su : https://www.iana.org/domains/root/db/su.html su // sv : http://www.svnet.org.sv/niveldos.pdf @@ -5632,46 +5669,46 @@ gob.sv org.sv red.sv -// sx : https://en.wikipedia.org/wiki/.sx +// sx : https://www.iana.org/domains/root/db/sx.html // Submitted by registry sx gov.sx -// sy : https://en.wikipedia.org/wiki/.sy +// sy : https://www.iana.org/domains/root/db/sy.html // see also: http://www.gobin.info/domainname/sy.doc sy +com.sy edu.sy gov.sy -net.sy mil.sy -com.sy +net.sy org.sy -// sz : https://en.wikipedia.org/wiki/.sz +// sz : https://www.iana.org/domains/root/db/sz.html // http://www.sispa.org.sz/ sz -co.sz ac.sz +co.sz org.sz -// tc : https://en.wikipedia.org/wiki/.tc +// tc : https://www.iana.org/domains/root/db/tc.html tc -// td : https://en.wikipedia.org/wiki/.td +// td : https://www.iana.org/domains/root/db/td.html td -// tel: https://en.wikipedia.org/wiki/.tel +// tel: https://www.iana.org/domains/root/db/tel.html // http://www.telnic.org/ tel // tf : https://www.afnic.fr/wp-media/uploads/2022/12/afnic-naming-policy-2023-01-01.pdf tf -// tg : https://en.wikipedia.org/wiki/.tg +// tg : https://www.iana.org/domains/root/db/tg.html // http://www.nic.tg/ tg -// th : https://en.wikipedia.org/wiki/.th +// th : https://www.iana.org/domains/root/db/th.html // Submitted by registry th ac.th @@ -5700,23 +5737,24 @@ org.tj test.tj web.tj -// tk : https://en.wikipedia.org/wiki/.tk +// tk : https://www.iana.org/domains/root/db/tk.html tk -// tl : https://en.wikipedia.org/wiki/.tl +// tl : https://www.iana.org/domains/root/db/tl.html tl gov.tl -// tm : http://www.nic.tm/local.html +// tm : https://www.nic.tm/local.html +// Confirmed by registry - 2024-11-19 tm -com.tm co.tm -org.tm -net.tm -nom.tm +com.tm +edu.tm gov.tm mil.tm -edu.tm +net.tm +nom.tm +org.tm // tn : http://www.registre.tn/fr/ // https://whois.ati.tn/ @@ -5735,15 +5773,15 @@ org.tn perso.tn tourism.tn -// to : https://en.wikipedia.org/wiki/.to +// to : https://www.iana.org/domains/root/db/to.html // Submitted by registry to com.to +edu.to gov.to +mil.to net.to org.to -edu.to -mil.to // tr : https://nic.tr/ // https://nic.tr/forms/eng/policies.pdf @@ -5759,9 +5797,9 @@ edu.tr gen.tr gov.tr info.tr -mil.tr k12.tr kep.tr +mil.tr name.tr net.tr org.tr @@ -5775,46 +5813,40 @@ nc.tr // Used by government agencies of Northern Cyprus gov.nc.tr -// tt : http://www.nic.tt/ +// tt : https://www.nic.tt/ +// Confirmed by registry - 2024-11-19 tt +biz.tt co.tt com.tt -org.tt -net.tt -biz.tt +edu.tt +gov.tt info.tt -pro.tt -int.tt -coop.tt -jobs.tt -mobi.tt -travel.tt -museum.tt -aero.tt +mil.tt name.tt -gov.tt -edu.tt +net.tt +org.tt +pro.tt -// tv : https://en.wikipedia.org/wiki/.tv +// tv : https://www.iana.org/domains/root/db/tv.html // Not listing any 2LDs as reserved since none seem to exist in practice, // Wikipedia notwithstanding. tv -// tw : https://en.wikipedia.org/wiki/.tw +// tw : https://www.iana.org/domains/root/db/tw.html +// https://twnic.tw/dnservice_catag.php +// Confirmed by registry 2024-11-26 tw +club.tw +com.tw +ebiz.tw edu.tw +game.tw gov.tw +idv.tw mil.tw -com.tw net.tw org.tw -idv.tw -game.tw -ebiz.tw -club.tw -網路.tw -組織.tw -商業.tw // tz : http://www.tznic.or.tz/index.php/domains // Submitted by registry @@ -5920,16 +5952,16 @@ zt.ua // ug : https://www.registry.co.ug/ ug -co.ug -or.ug ac.ug -sc.ug +co.ug +com.ug go.ug ne.ug -com.ug +or.ug org.ug +sc.ug -// uk : https://en.wikipedia.org/wiki/.uk +// uk : https://www.iana.org/domains/root/db/uk.html // Submitted by registry uk ac.uk @@ -5944,14 +5976,13 @@ plc.uk police.uk *.sch.uk -// us : https://en.wikipedia.org/wiki/.us +// us : https://www.iana.org/domains/root/db/us.html +// Confirmed via the .us zone file by William Harrison - 2024-12-10 us dni.us -fed.us isa.us -kids.us nsn.us -// us geographic names +// Geographic Names ak.us al.us ar.us @@ -6000,9 +6031,9 @@ sd.us tn.us tx.us ut.us +va.us vi.us vt.us -va.us wa.us wi.us wv.us @@ -6060,22 +6091,30 @@ k12.sc.us k12.tn.us k12.tx.us k12.ut.us +k12.va.us k12.vi.us k12.vt.us -k12.va.us k12.wa.us k12.wi.us // k12.wv.us Bug 947705 - Removed at request of Verne Britton -k12.wy.us cc.ak.us +lib.ak.us cc.al.us +lib.al.us cc.ar.us +lib.ar.us cc.as.us +lib.as.us cc.az.us +lib.az.us cc.ca.us +lib.ca.us cc.co.us +lib.co.us cc.ct.us +lib.ct.us cc.dc.us +lib.dc.us cc.de.us cc.fl.us cc.ga.us @@ -6115,22 +6154,14 @@ cc.sd.us cc.tn.us cc.tx.us cc.ut.us +cc.va.us cc.vi.us cc.vt.us -cc.va.us cc.wa.us cc.wi.us cc.wv.us cc.wy.us -lib.ak.us -lib.al.us -lib.ar.us -lib.as.us -lib.az.us -lib.ca.us -lib.co.us -lib.ct.us -lib.dc.us +k12.wy.us // lib.de.us Issue #243 - Moved to Private section at request of Ed Moore lib.fl.us lib.ga.us @@ -6170,23 +6201,23 @@ lib.sd.us lib.tn.us lib.tx.us lib.ut.us +lib.va.us lib.vi.us lib.vt.us -lib.va.us lib.wa.us lib.wi.us // lib.wv.us Bug 941670 - Removed at request of Larry W Arnold lib.wy.us // k12.ma.us contains school districts in Massachusetts. The 4LDs are -// managed independently except for private (PVT), charter (CHTR) and -// parochial (PAROCH) schools. Those are delegated directly to the -// 5LD operators. -pvt.k12.ma.us +// managed independently except for private (PVT), charter (CHTR) and +// parochial (PAROCH) schools. Those are delegated directly to the +// 5LD operators. chtr.k12.ma.us paroch.k12.ma.us +pvt.k12.ma.us // Merit Network, Inc. maintains the registry for =~ /(k12|cc|lib).mi.us/ and the following -// see also: http://domreg.merit.edu -// see also: whois -h whois.domreg.merit.edu help +// see also: https://domreg.merit.edu : domreg@merit.edu +// see also: whois -h whois.domreg.merit.edu help ann-arbor.mi.us cog.mi.us dst.mi.us @@ -6212,18 +6243,18 @@ com.uz net.uz org.uz -// va : https://en.wikipedia.org/wiki/.va +// va : https://www.iana.org/domains/root/db/va.html va -// vc : https://en.wikipedia.org/wiki/.vc +// vc : https://www.iana.org/domains/root/db/vc.html // Submitted by registry vc com.vc -net.vc -org.vc +edu.vc gov.vc mil.vc -edu.vc +net.vc +org.vc // ve : https://registro.nic.ve/ // Submitted by registry nic@nic.ve and nicve@conatel.gob.ve @@ -6249,7 +6280,7 @@ store.ve tec.ve web.ve -// vg : https://en.wikipedia.org/wiki/.vg +// vg : https://www.iana.org/domains/root/db/vg.html vg // vi : http://www.nic.vi/newdomainform.htm @@ -6347,7 +6378,7 @@ vinhlong.vn vinhphuc.vn yenbai.vn -// vu : https://en.wikipedia.org/wiki/.vu +// vu : https://www.iana.org/domains/root/db/vu.html // http://www.vunic.vu/ vu com.vu @@ -6358,14 +6389,14 @@ org.vu // wf : https://www.afnic.fr/wp-media/uploads/2022/12/afnic-naming-policy-2023-01-01.pdf wf -// ws : https://en.wikipedia.org/wiki/.ws +// ws : https://www.iana.org/domains/root/db/ws.html // http://samoanic.ws/index.dhtml ws com.ws +edu.ws +gov.ws net.ws org.ws -gov.ws -edu.ws // yt : https://www.afnic.fr/wp-media/uploads/2022/12/afnic-naming-policy-2023-01-01.pdf yt @@ -6400,12 +6431,12 @@ yt // xn--fiqs8s ("Zhongguo/China", Chinese, Simplified) : CN // CNNIC -// http://cnnic.cn/html/Dir/2005/10/11/3218.htm +// https://www.cnnic.cn/11/192/index.html 中国 // xn--fiqz9s ("Zhongguo/China", Chinese, Traditional) : CN // CNNIC -// http://cnnic.cn/html/Dir/2005/10/11/3218.htm +// https://www.cnnic.com.cn/AU/MediaC/Announcement/201609/t20160905_54470.htm 中國 // xn--lgbbat1ad8j ("Algeria/Al Jazair", Arabic) : DZ @@ -6438,12 +6469,12 @@ yt // Submitted by registry // https://www.hkirc.hk/content.jsp?id=30#!/34 香港 +個人.香港 公司.香港 -教育.香港 政府.香港 -個人.香港 -網絡.香港 +教育.香港 組織.香港 +網絡.香港 // xn--2scrj9c ("Bharat", Kannada) : IN // India @@ -6574,12 +6605,12 @@ yt // xn--90a3ac ("srb", Cyrillic) : RS // https://www.rnids.rs/en/domains/national-domains срб -пр.срб -орг.срб +ак.срб обр.срб од.срб +орг.срб +пр.срб упр.срб -ак.срб // xn--p1ai ("rf", Russian-Cyrillic) : RU // https://cctld.ru/files/pdf/docs/en/rules_ru-rf.pdf @@ -6622,11 +6653,11 @@ yt // xn--o3cw4h ("Thai", Thai) : TH // http://www.thnic.co.th ไทย -ศึกษา.ไทย -ธุรกิจ.ไทย -รัฐบาล.ไทย ทหาร.ไทย +ธุรกิจ.ไทย เน็ต.ไทย +รัฐบาล.ไทย +ศึกษา.ไทย องค์กร.ไทย // xn--pgbs0dh ("Tunisia", Arabic) : TN @@ -6634,7 +6665,7 @@ yt تونس // xn--kpry57d ("Taiwan", Chinese, Traditional) : TW -// http://www.twnic.net/english/dn/dn_07a.htm +// https://twnic.tw/dnservice_catag.php 台灣 // xn--kprw13d ("Taiwan", Chinese, Simplified) : TW @@ -6658,8 +6689,8 @@ ye com.ye edu.ye gov.ye -net.ye mil.ye +net.ye org.ye // za : https://www.zadna.org.za/content/page/domain-information/ @@ -6706,10 +6737,9 @@ gov.zw mil.zw org.zw - // newGTLDs -// List of new gTLDs imported from https://www.icann.org/resources/registries/gtlds/v2/gtlds.json on 2024-06-13T15:15:16Z +// List of new gTLDs imported from https://www.icann.org/resources/registries/gtlds/v2/gtlds.json on 2024-12-12T15:18:58Z // This list is auto-generated, don't edit it manually. // aaa : American Automobile Association, Inc. // https://www.iana.org/domains/root/db/aaa.html @@ -6939,7 +6969,7 @@ art // https://www.iana.org/domains/root/db/arte.html arte -// asda : Wal-Mart Stores, Inc. +// asda : Asda Stores Limited // https://www.iana.org/domains/root/db/asda.html asda @@ -7655,10 +7685,6 @@ cymru // https://www.iana.org/domains/root/db/cyou.html cyou -// dabur : Dabur India Limited -// https://www.iana.org/domains/root/db/dabur.html -dabur - // dad : Charleston Road Registry Inc. // https://www.iana.org/domains/root/db/dad.html dad @@ -8111,7 +8137,7 @@ forex // https://www.iana.org/domains/root/db/forsale.html forsale -// forum : Fegistry, LLC +// forum : Waterford Limited // https://www.iana.org/domains/root/db/forum.html forum @@ -8391,11 +8417,11 @@ haus // https://www.iana.org/domains/root/db/hbo.html hbo -// hdfc : HOUSING DEVELOPMENT FINANCE CORPORATION LIMITED +// hdfc : HDFC BANK LIMITED // https://www.iana.org/domains/root/db/hdfc.html hdfc -// hdfcbank : HDFC Bank Limited +// hdfcbank : HDFC BANK LIMITED // https://www.iana.org/domains/root/db/hdfcbank.html hdfcbank @@ -9023,7 +9049,7 @@ maison // https://www.iana.org/domains/root/db/makeup.html makeup -// man : MAN SE +// man : MAN Truck & Bus SE // https://www.iana.org/domains/root/db/man.html man @@ -9103,6 +9129,10 @@ men // https://www.iana.org/domains/root/db/menu.html menu +// merck : Merck Registry Holdings, Inc. +// https://www.iana.org/domains/root/db/merck.html +merck + // merckmsd : MSD Registry Holdings, Inc. // https://www.iana.org/domains/root/db/merckmsd.html merckmsd @@ -9315,7 +9345,7 @@ nissay // https://www.iana.org/domains/root/db/nokia.html nokia -// norton : NortonLifeLock Inc. +// norton : Gen Digital Inc. // https://www.iana.org/domains/root/db/norton.html norton @@ -9683,7 +9713,7 @@ realestate // https://www.iana.org/domains/root/db/realtor.html realtor -// realty : Internet Naming Company LLC +// realty : Waterford Limited // https://www.iana.org/domains/root/db/realty.html realty @@ -9999,10 +10029,6 @@ shangrila // https://www.iana.org/domains/root/db/sharp.html sharp -// shaw : Shaw Cablesystems G.P. -// https://www.iana.org/domains/root/db/shaw.html -shaw - // shell : Shell Information Technology International Inc // https://www.iana.org/domains/root/db/shell.html shell @@ -10059,7 +10085,7 @@ ski // https://www.iana.org/domains/root/db/skin.html skin -// sky : Sky International AG +// sky : Sky UK Limited // https://www.iana.org/domains/root/db/sky.html sky @@ -10495,7 +10521,7 @@ ups // https://www.iana.org/domains/root/db/vacations.html vacations -// vana : Internet Naming Company LLC +// vana : D3 Registry LLC // https://www.iana.org/domains/root/db/vana.html vana @@ -10767,7 +10793,7 @@ xin // https://www.iana.org/domains/root/db/xn--3bst00m.html 集团 -// xn--3ds443g : TLD REGISTRY LIMITED OY +// xn--3ds443g : Beijing TLD Registry Technology Limited // https://www.iana.org/domains/root/db/xn--3ds443g.html 在线 @@ -11123,7 +11149,7 @@ yahoo // https://www.iana.org/domains/root/db/yamaxun.html yamaxun -// yandex : Yandex Europe B.V. +// yandex : ADC Tech Netherlands B.V. // https://www.iana.org/domains/root/db/yandex.html yandex @@ -11175,11 +11201,28 @@ zone // https://www.iana.org/domains/root/db/zuerich.html zuerich - // ===END ICANN DOMAINS=== + // ===BEGIN PRIVATE DOMAINS=== + // (Note: these are in alphabetical order by company name) +// .KRD : https://nic.krd +co.krd +edu.krd + +// .pl domains (grandfathered) +art.pl +gliwice.pl +krakow.pl +poznan.pl +wroc.pl +zakopane.pl + +// .US +// Submitted by Ed Moore +lib.de.us + // 12CHARS: https://12chars.com // Submitted by Kenny Niehage 12chars.dev @@ -11192,26 +11235,14 @@ cc.ua inf.ua ltd.ua -// 611coin : https://611project.org/ +// 611 blockchain domain name system : https://611project.net/ 611.to -// AAA workspace : https://aaa.vodka -// Submitted by Kirill Rezraf -aaa.vodka - // A2 Hosting // Submitted by Tyler Hall a2hosted.com cpserver.com -// Aaron Marais' Gitlab pages: https://lab.aaronleem.co.za -// Submitted by Aaron Marais -graphox.us - -// accesso Technology Group, plc. : https://accesso.com/ -// Submitted by accesso Team -*.devcdnaccesso.com - // Acorn Labs : https://acorn.io // Submitted by Craig Jellick *.on-acorn.io @@ -11224,6 +11255,13 @@ activetrail.biz // Submitted by Mark Terrel adaptable.app +// addr.tools : https://addr.tools/ +// Submitted by Brian Shea +myaddr.dev +myaddr.io +dyn.addr.tools +myaddr.tools + // Adobe : https://www.adobe.com/ // Submitted by Ian Boston and Lars Trieloff adobeaemcloud.com @@ -11240,6 +11278,10 @@ hlx3.page adobeio-static.net adobeioruntime.net +// Africa.com Web Solutions Ltd : https://registry.africa.com +// Submitted by Gavin Brown +africa.com + // Agnat sp. z o.o. : https://domena.pl // Submitted by Przemyslaw Plewa beep.pl @@ -11250,8 +11292,9 @@ airkitapps.com airkitapps-au.com airkitapps.eu -// Aiven: https://aiven.io/ -// Submitted by Etienne Stalmans +// Aiven : https://aiven.io/ +// Submitted by Aiven Security Team +aiven.app aivencloud.com // Akamai : https://www.akamai.com/ @@ -11303,7 +11346,7 @@ myamaze.net // Amazon API Gateway // Submitted by AWS Security -// Reference: 9e37648f-a66c-4655-9ab1-5981f8737197 +// Reference: 6a4f5a95-8c7d-4077-a7af-9cf1abec0a53 execute-api.cn-north-1.amazonaws.com.cn execute-api.cn-northwest-1.amazonaws.com.cn execute-api.af-south-1.amazonaws.com @@ -11317,6 +11360,7 @@ execute-api.ap-southeast-1.amazonaws.com execute-api.ap-southeast-2.amazonaws.com execute-api.ap-southeast-3.amazonaws.com execute-api.ap-southeast-4.amazonaws.com +execute-api.ap-southeast-5.amazonaws.com execute-api.ca-central-1.amazonaws.com execute-api.ca-west-1.amazonaws.com execute-api.eu-central-1.amazonaws.com @@ -11345,8 +11389,9 @@ cloudfront.net // Amazon Cognito // Submitted by AWS Security -// Reference: 09588633-91fe-49d8-b4e7-ec36496d11f3 +// Reference: cb38c251-c93d-4cda-81ec-e72c4f0fdb72 auth.af-south-1.amazoncognito.com +auth.ap-east-1.amazoncognito.com auth.ap-northeast-1.amazoncognito.com auth.ap-northeast-2.amazoncognito.com auth.ap-northeast-3.amazoncognito.com @@ -11357,6 +11402,7 @@ auth.ap-southeast-2.amazoncognito.com auth.ap-southeast-3.amazoncognito.com auth.ap-southeast-4.amazoncognito.com auth.ca-central-1.amazoncognito.com +auth.ca-west-1.amazoncognito.com auth.eu-central-1.amazoncognito.com auth.eu-central-2.amazoncognito.com auth.eu-north-1.amazoncognito.com @@ -11492,23 +11538,32 @@ emrstudio-prod.us-west-2.amazonaws.com // Amazon Managed Workflows for Apache Airflow // Submitted by AWS Security -// Reference: 87f24ece-a77e-40e8-bb4a-f6b74fe9f975 +// Reference: f5ea5d0a-ec6a-4f23-ac1c-553fbff13f5c *.cn-north-1.airflow.amazonaws.com.cn *.cn-northwest-1.airflow.amazonaws.com.cn *.af-south-1.airflow.amazonaws.com *.ap-east-1.airflow.amazonaws.com *.ap-northeast-1.airflow.amazonaws.com *.ap-northeast-2.airflow.amazonaws.com +*.ap-northeast-3.airflow.amazonaws.com *.ap-south-1.airflow.amazonaws.com +*.ap-south-2.airflow.amazonaws.com *.ap-southeast-1.airflow.amazonaws.com *.ap-southeast-2.airflow.amazonaws.com +*.ap-southeast-3.airflow.amazonaws.com +*.ap-southeast-4.airflow.amazonaws.com *.ca-central-1.airflow.amazonaws.com +*.ca-west-1.airflow.amazonaws.com *.eu-central-1.airflow.amazonaws.com +*.eu-central-2.airflow.amazonaws.com *.eu-north-1.airflow.amazonaws.com *.eu-south-1.airflow.amazonaws.com +*.eu-south-2.airflow.amazonaws.com *.eu-west-1.airflow.amazonaws.com *.eu-west-2.airflow.amazonaws.com *.eu-west-3.airflow.amazonaws.com +*.il-central-1.airflow.amazonaws.com +*.me-central-1.airflow.amazonaws.com *.me-south-1.airflow.amazonaws.com *.sa-east-1.airflow.amazonaws.com *.us-east-1.airflow.amazonaws.com @@ -11518,7 +11573,7 @@ emrstudio-prod.us-west-2.amazonaws.com // Amazon S3 // Submitted by AWS Security -// Reference: cd5c8b3a-67b7-4b40-9236-c87ce81a3d10 +// Reference: ada5c9df-55e1-4195-a1ce-732d6c81e357 s3.dualstack.cn-north-1.amazonaws.com.cn s3-accesspoint.dualstack.cn-north-1.amazonaws.com.cn s3-website.dualstack.cn-north-1.amazonaws.com.cn @@ -11576,6 +11631,7 @@ s3-object-lambda.ap-south-1.amazonaws.com s3-website.ap-south-1.amazonaws.com s3.dualstack.ap-south-2.amazonaws.com s3-accesspoint.dualstack.ap-south-2.amazonaws.com +s3-website.dualstack.ap-south-2.amazonaws.com s3.ap-south-2.amazonaws.com s3-accesspoint.ap-south-2.amazonaws.com s3-object-lambda.ap-south-2.amazonaws.com @@ -11596,16 +11652,26 @@ s3-object-lambda.ap-southeast-2.amazonaws.com s3-website.ap-southeast-2.amazonaws.com s3.dualstack.ap-southeast-3.amazonaws.com s3-accesspoint.dualstack.ap-southeast-3.amazonaws.com +s3-website.dualstack.ap-southeast-3.amazonaws.com s3.ap-southeast-3.amazonaws.com s3-accesspoint.ap-southeast-3.amazonaws.com s3-object-lambda.ap-southeast-3.amazonaws.com s3-website.ap-southeast-3.amazonaws.com s3.dualstack.ap-southeast-4.amazonaws.com s3-accesspoint.dualstack.ap-southeast-4.amazonaws.com +s3-website.dualstack.ap-southeast-4.amazonaws.com s3.ap-southeast-4.amazonaws.com s3-accesspoint.ap-southeast-4.amazonaws.com s3-object-lambda.ap-southeast-4.amazonaws.com s3-website.ap-southeast-4.amazonaws.com +s3.dualstack.ap-southeast-5.amazonaws.com +s3-accesspoint.dualstack.ap-southeast-5.amazonaws.com +s3-website.dualstack.ap-southeast-5.amazonaws.com +s3.ap-southeast-5.amazonaws.com +s3-accesspoint.ap-southeast-5.amazonaws.com +s3-deprecated.ap-southeast-5.amazonaws.com +s3-object-lambda.ap-southeast-5.amazonaws.com +s3-website.ap-southeast-5.amazonaws.com s3.dualstack.ca-central-1.amazonaws.com s3-accesspoint.dualstack.ca-central-1.amazonaws.com s3-accesspoint-fips.dualstack.ca-central-1.amazonaws.com @@ -11626,6 +11692,7 @@ s3.ca-west-1.amazonaws.com s3-accesspoint.ca-west-1.amazonaws.com s3-accesspoint-fips.ca-west-1.amazonaws.com s3-fips.ca-west-1.amazonaws.com +s3-object-lambda.ca-west-1.amazonaws.com s3-website.ca-west-1.amazonaws.com s3.dualstack.eu-central-1.amazonaws.com s3-accesspoint.dualstack.eu-central-1.amazonaws.com @@ -11636,6 +11703,7 @@ s3-object-lambda.eu-central-1.amazonaws.com s3-website.eu-central-1.amazonaws.com s3.dualstack.eu-central-2.amazonaws.com s3-accesspoint.dualstack.eu-central-2.amazonaws.com +s3-website.dualstack.eu-central-2.amazonaws.com s3.eu-central-2.amazonaws.com s3-accesspoint.eu-central-2.amazonaws.com s3-object-lambda.eu-central-2.amazonaws.com @@ -11655,6 +11723,7 @@ s3-object-lambda.eu-south-1.amazonaws.com s3-website.eu-south-1.amazonaws.com s3.dualstack.eu-south-2.amazonaws.com s3-accesspoint.dualstack.eu-south-2.amazonaws.com +s3-website.dualstack.eu-south-2.amazonaws.com s3.eu-south-2.amazonaws.com s3-accesspoint.eu-south-2.amazonaws.com s3-object-lambda.eu-south-2.amazonaws.com @@ -11682,12 +11751,14 @@ s3-object-lambda.eu-west-3.amazonaws.com s3-website.eu-west-3.amazonaws.com s3.dualstack.il-central-1.amazonaws.com s3-accesspoint.dualstack.il-central-1.amazonaws.com +s3-website.dualstack.il-central-1.amazonaws.com s3.il-central-1.amazonaws.com s3-accesspoint.il-central-1.amazonaws.com s3-object-lambda.il-central-1.amazonaws.com s3-website.il-central-1.amazonaws.com s3.dualstack.me-central-1.amazonaws.com s3-accesspoint.dualstack.me-central-1.amazonaws.com +s3-website.dualstack.me-central-1.amazonaws.com s3.me-central-1.amazonaws.com s3-accesspoint.me-central-1.amazonaws.com s3-object-lambda.me-central-1.amazonaws.com @@ -11756,6 +11827,7 @@ s3.dualstack.us-east-2.amazonaws.com s3-accesspoint.dualstack.us-east-2.amazonaws.com s3-accesspoint-fips.dualstack.us-east-2.amazonaws.com s3-fips.dualstack.us-east-2.amazonaws.com +s3-website.dualstack.us-east-2.amazonaws.com s3.us-east-2.amazonaws.com s3-accesspoint.us-east-2.amazonaws.com s3-accesspoint-fips.us-east-2.amazonaws.com @@ -11903,6 +11975,11 @@ studio.us-west-2.sagemaker.aws studio.cn-north-1.sagemaker.com.cn studio.cn-northwest-1.sagemaker.com.cn +// Amazon SageMaker with MLflow +// Submited by: AWS Security +// Reference: c19f92b3-a82a-452d-8189-831b572eea7e +*.experiments.sagemaker.aws + // Analytics on AWS // Submitted by AWS Security // Reference: 955f9f40-a495-4e73-ae85-67b77ac9cadd @@ -11919,8 +11996,8 @@ analytics-gateway.us-west-2.amazonaws.com // AWS Amplify // Submitted by AWS Security -// Reference: 5ecce854-c033-4fc4-a755-1a9916d9a9bb -*.amplifyapp.com +// Reference: c35bed18-6f4f-424f-9298-5756f2f7d72b +amplifyapp.com // AWS App Runner // Submitted by AWS Security @@ -12057,16 +12134,11 @@ eero-stage.online // concludes Amazon -// Amune : https://amune.org/ -// Submitted by Team Amune -t3l3p0rt.net -tele.amune.org - // Apigee : https://apigee.com/ // Submitted by Apigee Security Team apigee.io -// Apis Networks: https://apisnetworks.com +// Apis Networks : https://apisnetworks.com // Submitted by Matt Saladna panel.dev @@ -12091,6 +12163,10 @@ on-aptible.com // Submitted by Aki Ueno f5.si +// ArvanCloud EdgeCompute +// Submitted by ArvanCloud CDN +arvanedge.ir + // ASEINet : https://www.aseinet.com/ // Submitted by Asei SEKIGUCHI user.aseinet.ne.jp @@ -12120,10 +12196,6 @@ cdn.prod.atlassian-dev.net // Submitted by Lukas Reschke translated.page -// Autocode : https://autocode.com -// Submitted by Jacob Lee -autocode.dev - // AVM : https://avm.de // Submitted by Andreas Weise myfritz.link @@ -12138,7 +12210,7 @@ onavstack.net *.awdev.ca *.advisor.ws -// AZ.pl sp. z.o.o: https://az.pl +// AZ.pl sp. z.o.o : https://az.pl // Submitted by Krzysztof Wolski ecommerce-shop.pl @@ -12146,25 +12218,10 @@ ecommerce-shop.pl // Submitted by Olivier Benz b-data.io -// backplane : https://www.backplane.io -// Submitted by Anthony Voutas -backplaneapp.io - // Balena : https://www.balena.io // Submitted by Petros Angelatos balena-devices.com -// University of Banja Luka : https://unibl.org -// Domains for Republic of Srpska administrative entity. -// Submitted by Marko Ivanovic -rs.ba - -// Banzai Cloud -// Submitted by Janos Matyas -*.banzai.cloud -app.banzaicloud.io -*.backyards.banzaicloud.io - // BASE, Inc. : https://binc.jp // Submitted by Yuya NAGASAWA base.ec @@ -12190,14 +12247,6 @@ beagleboard.io // Submitted by Hazel Cora pages.gay -// BetaInABox -// Submitted by Adrian -betainabox.com - -// University of Bielsko-Biala regional domain: http://dns.bielsko.pl/ -// Submitted by Marcin -bielsko.pl - // BinaryLane : http://www.binarylane.com // Submitted by Nathan O'Sullivan bnr.la @@ -12252,6 +12301,11 @@ shop.brendly.rs // Submitted by Dave Tharp browsersafetymark.io +// BRS Media : https://brsmedia.com/ +// Submitted by Gavin Brown +radio.am +radio.fm + // Bytemark Hosting : https://www.bytemark.co.uk // Submitted by Paul Cammish uk0.bigv.io @@ -12262,10 +12316,6 @@ vm.bytemark.co.uk // Submitted by Antonio Lain cafjs.com -// callidomus : https://www.callidomus.com/ -// Submitted by Marcus Popp -mycd.eu - // Canva Pty Ltd : https://canva.com/ // Submitted by Joel Aquilina canva-apps.cn @@ -12281,75 +12331,42 @@ carrd.co crd.co ju.mp -// CentralNic : http://www.centralnic.com/names/domains -// Submitted by registry -za.bz -br.com -cn.com -de.com -eu.com -jpn.com -mex.com -ru.com -sa.com -uk.com -us.com -za.com -com.de -gb.net -hu.net -jp.net -se.net -uk.net -ae.org -com.se - -// No longer operated by CentralNic, these entries should be adopted and/or removed by current operators -// Submitted by Gavin Brown -ar.com -hu.com -kr.com -no.com -qc.com -uy.com - -// Africa.com Web Solutions Ltd : https://registry.africa.com -// Submitted by Gavin Brown -africa.com - -// iDOT Services Limited : http://www.domain.gr.com -// Submitted by Gavin Brown -gr.com - -// Radix FZC : http://domains.in.net -// Submitted by Gavin Brown -web.in -in.net - -// US REGISTRY LLC : http://us.org -// Submitted by Gavin Brown -us.org - -// co.com Registry, LLC : https://registry.co.com -// Submitted by Gavin Brown -co.com - -// Roar Domains LLC : https://roar.basketball/ -// Submitted by Gavin Brown -aus.basketball -nz.basketball - -// BRS Media : https://brsmedia.com/ -// Submitted by Gavin Brown -radio.am -radio.fm +// CDDO : https://www.gov.uk/guidance/get-an-api-domain-on-govuk +// Submitted by Jamie Tanna +api.gov.uk -// c.la : http://www.c.la/ -c.la +// CDN77.com : http://www.cdn77.com +// Submitted by Jan Krpes +cdn77-storage.com +rsc.contentproxy9.cz +r.cdn77.net +cdn77-ssl.net +c.cdn77.org +rsc.cdn77.org +ssl.origin.cdn77-secure.org -// certmgr.org : https://certmgr.org -// Submitted by B. Blechschmidt -certmgr.org +// CentralNic : https://teaminternet.com/ +// Submitted by registry +za.bz +br.com +cn.com +de.com +eu.com +jpn.com +mex.com +ru.com +sa.com +uk.com +us.com +za.com +com.de +gb.net +hu.net +jp.net +se.net +uk.net +ae.org +com.se // Cityhost LLC : https://cityhost.ua // Submitted by Maksym Rivtin @@ -12360,13 +12377,6 @@ cx.ua discourse.group discourse.team -// Clever Cloud : https://www.clever-cloud.com/ -// Submitted by Quentin Adam -cleverapps.cc -*.services.clever-cloud.com -cleverapps.io -cleverapps.tech - // Clerk : https://www.clerk.dev // Submitted by Colin Sidoti clerk.app @@ -12376,10 +12386,44 @@ clerkstage.app *.stg.dev *.stgstage.dev +// Clever Cloud : https://www.clever-cloud.com/ +// Submitted by Quentin Adam +cleverapps.cc +*.services.clever-cloud.com +cleverapps.io +cleverapps.tech + // ClickRising : https://clickrising.com/ // Submitted by Umut Gumeli clickrising.net +// Cloud DNS Ltd : http://www.cloudns.net +// Submitted by Aleksander Hristov & Boyan Peychev +cloudns.asia +cloudns.be +cloud-ip.biz +cloudns.biz +cloudns.cc +cloudns.ch +cloudns.cl +cloudns.club +dnsabr.com +ip-ddns.com +cloudns.cx +cloudns.eu +cloudns.in +cloudns.info +ddns-ip.net +dns-cloud.net +dns-dynamic.net +cloudns.nz +cloudns.org +ip-dynamic.org +cloudns.ph +cloudns.pro +cloudns.pw +cloudns.us + // Cloud66 : https://www.cloud66.com/ // Submitted by Khash Sajadi c66.me @@ -12394,11 +12438,6 @@ cloudaccess.host freesite.host cloudaccess.net -// cloudControl : https://www.cloudcontrol.com/ -// Submitted by Tobias Wilken -cloudcontrolapp.com -cloudcontrolled.com - // Cloudera, Inc. : https://www.cloudera.com/ // Submitted by Kedarnath Waikar *.cloudera.site @@ -12411,11 +12450,11 @@ trycloudflare.com pages.dev r2.dev workers.dev +cloudflare.net +cdn.cloudflare.net cdn.cloudflareanycast.net cdn.cloudflarecn.net cdn.cloudflareglobal.net -cloudflare.net -cdn.cloudflare.net // cloudscale.ch AG : https://www.cloudscale.ch/ // Submitted by Gaudenz Steinlin @@ -12427,53 +12466,20 @@ objects.rma.cloudscale.ch // Submitted by Patrick Nielsen wnext.app -// co.ca : http://registry.co.ca/ -co.ca +// CNPY : https://cnpy.gdn +// Submitted by Angelo Gladding +cnpy.gdn // Co & Co : https://co-co.nl/ // Submitted by Govert Versluis *.otap.co -// i-registry s.r.o. : http://www.i-registry.cz/ -// Submitted by Martin Semrad -co.cz - -// CDN77.com : http://www.cdn77.com -// Submitted by Jan Krpes -cdn77-storage.com -rsc.contentproxy9.cz -r.cdn77.net -cdn77-ssl.net -c.cdn77.org -rsc.cdn77.org -ssl.origin.cdn77-secure.org - -// Cloud DNS Ltd : http://www.cloudns.net -// Submitted by Aleksander Hristov & Boyan Peychev -cloudns.asia -cloudns.be -cloudns.biz -cloudns.cc -cloudns.ch -cloudns.cl -cloudns.club -dnsabr.com -cloudns.cx -cloudns.eu -cloudns.in -cloudns.info -dns-cloud.net -dns-dynamic.net -cloudns.nz -cloudns.org -cloudns.ph -cloudns.pro -cloudns.pw -cloudns.us +// co.ca : http://registry.co.ca/ +co.ca -// CNPY : https://cnpy.gdn -// Submitted by Angelo Gladding -cnpy.gdn +// co.com Registry, LLC : https://registry.co.com +// Submitted by Gavin Brown +co.com // Codeberg e. V. : https://codeberg.org // Submitted by Moritz Marquardt @@ -12493,6 +12499,10 @@ co.no webhosting.be hosting-cluster.nl +// Contentful GmbH : https://www.contentful.com +// Submitted by Contentful Developer Experience Team +ctfcloud.net + // Convex : https://convex.dev/ // Submitted by James Cowling convex.site @@ -12504,7 +12514,6 @@ edu.ru gov.ru int.ru mil.ru -test.ru // COSIMO GmbH : http://www.cosimo.de // Submitted by Rene Marticke @@ -12518,9 +12527,9 @@ feste-ip.net knx-server.net static-access.net -// cPanel L.L.C. : https://www.cpanel.net/ -// Submitted by Dustin Scherer -*.cprapid.com +// Craft Docs Ltd : https://www.craft.do/ +// Submitted by Zsombor Fuszenecker +craft.me // Craynic, s.r.o. : http://www.craynic.com/ // Submitted by Ales Krajnik @@ -12534,54 +12543,19 @@ on.crisp.email // Submitted by Andrew Cady *.cryptonomic.net -// Cupcake : https://cupcake.io/ -// Submitted by Jonathan Rudenberg -cupcake.is - // Curv UG : https://curv-labs.de/ // Submitted by Marvin Wiesner curv.dev -// Customer OCI - Oracle Dyn https://cloud.oracle.com/home https://dyn.com/dns/ -// Submitted by Gregory Drake -// Note: This is intended to also include customer-oci.com due to wildcards implicitly including the current label -*.customer-oci.com -*.oci.customer-oci.com -*.ocp.customer-oci.com -*.ocs.customer-oci.com - -// Cyclic Software : https://www.cyclic.sh -// Submitted by Kam Lasater -cyclic.app -cyclic.cloud -cyclic-app.com -cyclic.co.in +// cyber_Folks S.A. : https://cyberfolks.pl +// Submitted by Bartlomiej Kida +cfolks.pl // cyon GmbH : https://www.cyon.ch/ // Submitted by Dominic Luechinger cyon.link cyon.site -// Danger Science Group: https://dangerscience.com/ -// Submitted by Skylar MacDonald -platform0.app -fnwk.site -folionetwork.site - -// Daplie, Inc : https://daplie.com -// Submitted by AJ ONeal -daplie.me -localhost.daplie.me - -// Datto, Inc. : https://www.datto.com/ -// Submitted by Philipp Heckel -dattolocal.com -dattorelay.com -dattoweb.com -mydatto.com -dattolocal.net -mydatto.net - // Dansk.net : http://www.dansk.net/ // Submitted by Anani Voule biz.dk @@ -12594,11 +12568,6 @@ store.dk // Submitted by Abel Boldu / DAppNode Team dyndns.dappnode.io -// dapps.earth : https://dapps.earth/ -// Submitted by Daniil Burdakov -*.dapps.earth -*.bzz.dapps.earth - // Dark, Inc. : https://darklang.com // Submitted by Paul Biggar builtwithdark.com @@ -12613,14 +12582,36 @@ instance.datadetect.com // Submitted by Richard Li edgestack.me -// DDNS5 : https://ddns5.com -// Submitted by Cameron Elliott -ddns5.com +// Datto, Inc. : https://www.datto.com/ +// Submitted by Philipp Heckel +dattolocal.com +dattorelay.com +dattoweb.com +mydatto.com +dattolocal.net +mydatto.net + +// ddnss.de : https://www.ddnss.de/ +// Submitted by Robert Niedziela +ddnss.de +dyn.ddnss.de +dyndns.ddnss.de +dyn-ip24.de +dyndns1.de +home-webserver.de +dyn.home-webserver.de +myhome-server.de +ddnss.org // Debian : https://www.debian.org/ // Submitted by Peter Palfrader / Debian Sysadmin Team debian.net +// Definima : http://www.definima.com/ +// Submitted by Maxence Bitterli +definima.io +definima.net + // Deno Land Inc : https://deno.com/ // Submitted by Luca Casonato deno.dev @@ -12635,10 +12626,28 @@ dedyn.io deta.app deta.dev +// dhosting.pl Sp. z o.o.: https://dhosting.pl/ +// Submitted by Michal Kokoszkiewicz +dfirma.pl +dkonto.pl +you2.pl + +// DigitalOcean App Platform : https://www.digitalocean.com/products/app-platform/ +// Submitted by Braxton Huggins +ondigitalocean.app + +// DigitalOcean Spaces : https://www.digitalocean.com/products/spaces/ +// Submitted by Robin H. Johnson +*.digitaloceanspaces.com + +// DigitalPlat : https://www.digitalplat.org/ +// Submitted by Edward Hsing +us.kg + // Diher Solutions : https://diher.solutions // Submitted by Didi Hermawan -*.rss.my.id -*.diher.solutions +rss.my.id +diher.solutions // Discord Inc : https://discord.com // Submitted by Sahn Lam @@ -12670,6 +12679,10 @@ shoparena.pl // Submitted by Andrew Farmer dreamhosters.com +// Dreamyoungs, Inc. : https://durumis.com +// Submitted by Infra Team +durumis.com + // Drobo : http://www.drobo.com/ // Submitted by Ricardo Padilha mydrobo.com @@ -12683,13 +12696,6 @@ drud.us // Submitted by Richard Harper duckdns.org -// Bip : https://bip.sh -// Submitted by Joel Kennedy -bip.sh - -// bitbridge.net : Submitted by Craig Welch, abeliidev@gmail.com -bitbridge.net - // dy.fi : http://dy.fi/ // Submitted by Heikki Hannikainen dy.fi @@ -12976,39 +12982,6 @@ stuff-4-sale.us dyndns.ws mypets.ws -// ddnss.de : https://www.ddnss.de/ -// Submitted by Robert Niedziela -ddnss.de -dyn.ddnss.de -dyndns.ddnss.de -dyn-ip24.de -dyndns1.de -home-webserver.de -dyn.home-webserver.de -myhome-server.de -ddnss.org - -// Definima : http://www.definima.com/ -// Submitted by Maxence Bitterli -definima.io -definima.net - -// DigitalOcean App Platform : https://www.digitalocean.com/products/app-platform/ -// Submitted by Braxton Huggins -ondigitalocean.app - -// DigitalOcean Spaces : https://www.digitalocean.com/products/spaces/ -// Submitted by Robin H. Johnson -*.digitaloceanspaces.com - -// DigitalPlat : https://www.digitalplat.org/ -// Submitted by Edward Hsing -us.kg - -// dnstrace.pro : https://dnstrace.pro/ -// Submitted by Chris Partridge -bci.dnstrace.pro - // Dynu.com : https://www.dynu.com/ // Submitted by Sue Ye ddnsfree.com @@ -13027,7 +13000,6 @@ freeddns.org mywire.org webredirect.org myddns.rocks -blogsite.xyz // dynv6 : https://dynv6.com // Submitted by Dominik Menke @@ -13081,11 +13053,6 @@ tuleap-partners.com encr.app encoreapi.com -// ECG Robotics, Inc: https://ecgrobotics.org -// Submitted by -onred.one -staging.onred.one - // encoway GmbH : https://www.encoway.de // Submitted by Marcel Daus eu.encoway.cloud @@ -13126,7 +13093,6 @@ kr.eu.org lt.eu.org lu.eu.org lv.eu.org -mc.eu.org me.eu.org mk.eu.org mt.eu.org @@ -13136,10 +13102,8 @@ ng.eu.org nl.eu.org no.eu.org nz.eu.org -paris.eu.org pl.eu.org pt.eu.org -q-a.eu.org ro.eu.org ru.eu.org se.eu.org @@ -13286,6 +13250,12 @@ myfast.host fastvps.site myfast.space +// FearWorks Media Ltd. : https://fearworksmedia.co.uk +// submitted by Keith Fairley +conn.uk +copro.uk +hosp.uk + // Fedora : https://fedoraproject.org/ // submitted by Patrick Uiterwijk fedorainfracloud.org @@ -13294,12 +13264,6 @@ cloud.fedoraproject.org app.os.fedoraproject.org app.os.stg.fedoraproject.org -// FearWorks Media Ltd. : https://fearworksmedia.co.uk -// submitted by Keith Fairley -conn.uk -copro.uk -hosp.uk - // Fermax : https://fermax.com/ // submitted by Koen Van Isterdael mydobiss.com @@ -13311,30 +13275,19 @@ fh-muenster.io // Filegear Inc. : https://www.filegear.com // Submitted by Jason Zhu filegear.me -filegear-au.me -filegear-de.me -filegear-gb.me -filegear-ie.me -filegear-jp.me -filegear-sg.me // Firebase, Inc. // Submitted by Chris Raynor firebaseapp.com -// Firewebkit : https://www.firewebkit.com -// Submitted by Majid Qureshi -fireweb.app - -// FLAP : https://www.flap.cloud -// Submitted by Louis Chemineau -flap.id - // FlashDrive : https://flashdrive.io // Submitted by Eric Chan -onflashdrive.app fldrv.com +// Fleek Labs Inc : https://fleek.xyz +// Submitted by Parsa Ghadimi +on-fleek.app + // FlutterFlow : https://flutterflow.io // Submitted by Anton Emelyanov flutterflow.app @@ -13345,10 +13298,6 @@ fly.dev shw.io edgeapp.net -// Flynn : https://flynn.io -// Submitted by Jonathan Rudenberg -flynnhosting.net - // Forgerock : https://www.forgerock.com // Submitted by Roderick Parr forgeblocks.com @@ -13364,17 +13313,9 @@ framer.photos framer.website framer.wiki -// Frusky MEDIA&PR : https://www.frusky.de -// Submitted by Victor Pupynin -*.frusky.de - -// RavPage : https://www.ravpage.co.il -// Submitted by Roni Horowitz -ravpage.co.il - -// Frederik Braun https://frederik-braun.com +// Frederik Braun : https://frederik-braun.com // Submitted by Frederik Braun -0e.vc +*.0e.vc // Freebox : http://www.freebox.fr // Submitted by Romain Fliedel @@ -13393,6 +13334,10 @@ freedesktop.org // Submitted by Cadence freemyip.com +// Frusky MEDIA&PR : https://www.frusky.de +// Submitted by Victor Pupynin +*.frusky.de + // FunkFeuer - Verein zur Förderung freier Netze : https://www.funkfeuer.at // Submitted by Daniel A. Maierhofer wien.funkfeuer.at @@ -13442,10 +13387,6 @@ independent-review.uk public-inquiry.uk royal-commission.uk -// CDDO : https://www.gov.uk/guidance/get-an-api-domain-on-govuk -// Submitted by Jamie Tanna -api.gov.uk - // Gehirn Inc. : https://www.gehirn.co.jp/ // Submitted by Kohei YOSHIDA gehirn.ne.jp @@ -13455,15 +13396,8 @@ usercontent.jp // Submitted by Tom Klein gentapps.com gentlentapis.com -lab.ms cdn-edges.net -// Getlocalcert: https://www.getlocalcert.net -// Submitted by Robert Alexander -localcert.net -localhostcert.net -corpnet.work - // GignoSystemJapan: http://gsj.bz // Submitted by GignoSystemJapan gsj.bz @@ -13604,20 +13538,11 @@ watson.jp weblike.jp whitesnow.jp zombie.jp -heteml.net - -// GoDaddy Registry : https://registry.godaddy -// Submitted by Rohan Durrant -graphic.design - -// GOV.UK Platform as a Service : https://www.cloud.service.gov.uk/ -// Submitted by Tom Whitwell -cloudapps.digital -london.cloudapps.digital +heteml.net -// GOV.UK Pay : https://www.payments.service.gov.uk/ -// Submitted by Richard Baker -pymnt.uk +// GoDaddy Registry : https://registry.godaddy +// Submitted by Rohan Durrant +graphic.design // GoIP DNS Services : http://www.goip.de // Submitted by Christian Poulter @@ -13625,26 +13550,9 @@ goip.de // Google, Inc. // Submitted by Shannon McCabe -blogspot.ae -blogspot.al -blogspot.am *.hosted.app *.run.app web.app -blogspot.com.ar -blogspot.co.at -blogspot.com.au -blogspot.ba -blogspot.be -blogspot.bg -blogspot.bj -blogspot.com.br -blogspot.com.by -blogspot.ca -blogspot.cf -blogspot.ch -blogspot.cl -blogspot.com.co *.0emm.com appspot.com *.r.appspot.com @@ -13653,87 +13561,39 @@ codespot.com googleapis.com googlecode.com pagespeedmobilizer.com -publishproxy.com withgoogle.com withyoutube.com -blogspot.cv -blogspot.com.cy -blogspot.cz -blogspot.de *.gateway.dev -blogspot.dk -blogspot.com.ee -blogspot.com.eg -blogspot.com.es -blogspot.fi -blogspot.fr cloud.goog translate.goog *.usercontent.goog -blogspot.gr -blogspot.hk -blogspot.hr -blogspot.hu -blogspot.co.id -blogspot.ie -blogspot.co.il -blogspot.in -blogspot.is -blogspot.it -blogspot.jp -blogspot.co.ke -blogspot.kr -blogspot.li -blogspot.lt -blogspot.lu -blogspot.md -blogspot.mk -blogspot.mr -blogspot.com.mt -blogspot.mx -blogspot.my cloudfunctions.net -blogspot.com.ng -blogspot.nl -blogspot.no -blogspot.co.nz -blogspot.pe -blogspot.pt -blogspot.qa -blogspot.re -blogspot.ro -blogspot.rs -blogspot.ru -blogspot.se -blogspot.sg -blogspot.si -blogspot.sk -blogspot.sn -blogspot.td -blogspot.com.tr -blogspot.tw -blogspot.ug -blogspot.co.uk -blogspot.com.uy -blogspot.vn -blogspot.co.za // Goupile : https://goupile.fr // Submitted by Niels Martignene goupile.fr +// GOV.UK Pay : https://www.payments.service.gov.uk/ +// Submitted by Richard Baker +pymnt.uk + +// GOV.UK Platform as a Service : https://www.cloud.service.gov.uk/ +// Submitted by Tom Whitwell +cloudapps.digital +london.cloudapps.digital + // Government of the Netherlands: https://www.government.nl // Submitted by gov.nl +// Grafana Labs: https://grafana.com/ +// Submitted by Platform Engineering +grafana-dev.net + // GrayJay Web Solutions Inc. : https://grayjaysports.ca // Submitted by Matt Yamkowy grayjayleagues.com -// Group 53, LLC : https://www.group53.com -// Submitted by Tyler Todd -awsmppl.com - // GünstigBestellen : https://günstigbestellen.de // Submitted by Furkan Akkoc günstigbestellen.de @@ -13747,10 +13607,13 @@ caa.li ua.rs conf.se -// Handshake : https://handshake.org -// Submitted by Mike Damm -hs.run -hs.zone +// Häkkinen.fi +// Submitted by Eero Häkkinen +häkkinen.fi + +// Harrison Network : https://hrsn.net +// Submitted by William Harrison +hrsn.dev // Hashbang : https://hashbang.sh hashbang.sh @@ -13760,27 +13623,41 @@ hashbang.sh hasura.app hasura-app.io +// Hatena Co., Ltd. : https://hatena.co.jp +// Submitted by Masato Nakamura +hatenablog.com +hatenadiary.com +hateblo.jp +hatenablog.jp +hatenadiary.jp +hatenadiary.org + // Heilbronn University of Applied Sciences - Faculty Informatics (GitLab Pages): https://www.hs-heilbronn.de -// Submitted by Richard Zowalla +// Submitted by Richard Zowalla pages.it.hs-heilbronn.de +pages-research.it.hs-heilbronn.de + +// HeiyuSpace: https://lazycat.cloud +// Submitted by Xia Bin +heiyu.space // Helio Networks : https://heliohost.org // Submitted by Ben Frede helioho.st heliohost.us -// HeiyuSpace: https://lazycat.cloud -// Submitted by Xia Bin -heiyu.space - // Hepforge : https://www.hepforge.org // Submitted by David Grellscheid hepforge.org // Heroku : https://www.heroku.com/ -// Submitted by Tom Maher +// Submitted by Shumon Huque herokuapp.com -herokussl.com + +// Heyflow : https://www.heyflow.com +// Submitted by Mirko Nitschke +heyflow.page +heyflow.site // Hibernating Rhinos // Submitted by Oren Eini @@ -13799,62 +13676,70 @@ homesklep.pl *.id.pub *.kin.pub -// Hong Kong Productivity Council: https://www.hkpc.org/ -// Submitted by SECaaS Team -secaas.hk - // Hoplix : https://www.hoplix.com // Submitted by Danilo De Franco hoplix.shop - // HOSTBIP REGISTRY : https://www.hostbip.com/ // Submitted by Atanunu Igbunuroghene orx.biz biz.gl +biz.ng +co.biz.ng +dl.biz.ng +go.biz.ng +lg.biz.ng +on.biz.ng col.ng firm.ng gen.ng ltd.ng ngo.ng -edu.scot -sch.so +plc.ng // HostFly : https://www.ie.ua // Submitted by Bohdan Dub ie.ua -// HostyHosting (hostyhosting.com) +// HostyHosting : https://hostyhosting.com hostyhosting.io +// Hugging Face: https://huggingface.co +// Submitted by Eliott Coyac +hf.space +static.hf.space + // Hypernode B.V. : https://www.hypernode.com/ // Submitted by Cipriano Groenendal hypernode.io -// Häkkinen.fi -// Submitted by Eero Häkkinen -häkkinen.fi +// I-O DATA DEVICE, INC. : http://www.iodata.com/ +// Submitted by Yuji Minagawa +iobb.net + +// i-registry s.r.o. : http://www.i-registry.cz/ +// Submitted by Martin Semrad +co.cz // Ici la Lune : http://www.icilalune.com/ // Submitted by Simon Morvan *.moonscale.io moonscale.net +// iDOT Services Limited : http://www.domain.gr.com +// Submitted by Gavin Brown +gr.com + // iki.fi // Submitted by Hannu Aronsson iki.fi -// iliad italia: https://www.iliad.it +// iliad italia : https://www.iliad.it // Submitted by Marios Makassikis ibxos.it iliadboxos.it -// Impertrix Solutions : -// Submitted by Zhixiang Zhao -impertrix.com -impertrixcdn.com - -// Incsub, LLC: https://incsub.com/ +// Incsub, LLC : https://incsub.com/ // Submitted by Aaron Edwards smushcdn.com wphostedmail.com @@ -13917,26 +13802,43 @@ to.leg.br // Submitted by Wolfgang Schwarz pixolino.com -// Internet-Pro, LLP: https://netangels.ru/ +// Internet-Pro, LLP : https://netangels.ru/ // Submitted by Vasiliy Sheredeko na4u.ru +// IONOS SE : https://www.ionos.com/, +// IONOS Group SE: https://www.ionos-group.com/ +// submitted by Henrik Willert +apps-1and1.com +live-website.com +apps-1and1.net +websitebuilder.online +app-ionos.space + // iopsys software solutions AB : https://iopsys.eu/ // Submitted by Roman Azarenko iopsys.se +// IPFS Project : https://ipfs.tech/ +// Submitted by Interplanetary Shipyard +*.dweb.link + // IPiFony Systems, Inc. : https://www.ipifony.com/ // Submitted by Matthew Hardeman ipifony.net -// is-a.dev : https://www.is-a.dev -// Submitted by William Harrison -is-a.dev - // ir.md : https://nic.ir.md // Submitted by Ali Soizi ir.md +// is-a-good.dev : https://is-a-good.dev +// Submitted by William Harrison +is-a-good.dev + +// is-a.dev : https://is-a.dev +// Submitted by William Harrison +is-a.dev + // IServ GmbH : https://iserv.de // Submitted by Mario Hoberg iservschule.de @@ -13946,15 +13848,10 @@ schulserver.de test-iserv.de iserv.dev -// I-O DATA DEVICE, INC. : http://www.iodata.com/ -// Submitted by Yuji Minagawa -iobb.net - // Jelastic, Inc. : https://jelastic.com/ // Submitted by Ihor Kolodyuk mel.cloudlets.com.au cloud.interhostsolutions.be -mycloud.by alp1.ae.flow.ch appengine.flow.ch es-1.axarnet.cloud @@ -13976,7 +13873,6 @@ us.reclaim.cloud ch.trendhosting.cloud de.trendhosting.cloud jele.club -amscompute.com dopaas.com paas.hosted-by-previder.com rag-cloud.hosteur.com @@ -13984,10 +13880,8 @@ rag-cloud-ch.hosteur.com jcloud.ik-server.com jcloud-ver-jpc.ik-server.com demo.jelastic.com -kilatiron.com paas.massivegrid.com jed.wafaicloud.com -lon.wafaicloud.com ryd.wafaicloud.com j.scaleforce.com.cy jelastic.dogado.eu @@ -13999,18 +13893,14 @@ mircloud.host paas.beebyte.io sekd1.beebyteapp.io jele.io -cloud-fr1.unispace.io jc.neen.it -cloud.jelastic.open.tim.it jcloud.kz -upaas.kazteleport.kz cloudjiffy.net fra1-de.cloudjiffy.net west1-us.cloudjiffy.net jls-sto1.elastx.net jls-sto2.elastx.net jls-sto3.elastx.net -faststacks.net fr-1.paas.massivegrid.net lon-1.paas.massivegrid.net lon-2.paas.massivegrid.net @@ -14020,11 +13910,9 @@ sg-1.paas.massivegrid.net jelastic.saveincloud.net nordeste-idc.saveincloud.net j.scaleforce.net -jelastic.tsukaeru.net sdscloud.pl unicloud.pl mircloud.ru -jelastic.regruhosting.ru enscaled.sg jele.site jelastic.team @@ -14064,14 +13952,15 @@ js.org kaas.gg khplay.nl -// Kakao : https://www.kakaocorp.com/ -// Submitted by JaeYoong Lee -ktistory.com - // Kapsi : https://kapsi.fi // Submitted by Tomi Juntunen kapsi.fi +// Katholieke Universiteit Leuven: https://www.kuleuven.be +// Submitted by Abuse KU Leuven +ezproxy.kuleuven.be +kuleuven.cloud + // Keyweb AG : https://www.keyweb.de // Submitted by Martin Dannehl keymachine.de @@ -14089,24 +13978,15 @@ knightpoint.systems // Submitted by Iván Oliva koobin.events -// KUROKU LTD : https://kuroku.ltd/ -// Submitted by DisposaBoy -oya.to - -// Katholieke Universiteit Leuven: https://www.kuleuven.be -// Submitted by Abuse KU Leuven -ezproxy.kuleuven.be -kuleuven.cloud - -// .KRD : http://nic.krd/data/krd/Registration%20Policy.pdf -co.krd -edu.krd - // Krellian Ltd. : https://krellian.com // Submitted by Ben Francis webthings.io krellian.net +// KUROKU LTD : https://kuroku.ltd/ +// Submitted by DisposaBoy +oya.to + // LCube - Professional hosting e.K. : https://www.lcube-webhosting.de // Submitted by Lars Laehn git-repos.de @@ -14119,9 +13999,9 @@ leadpages.co lpages.co lpusercontent.com -// Lelux.fi : https://lelux.fi/ -// Submitted by Lelux Admin -lelux.site +// libp2p project : https://libp2p.io +// Submitted by Interplanetary Shipyard +libp2p.direct // Libre IT Ltd : https://libre.nz // Submitted by Tomas Maggio @@ -14153,13 +14033,28 @@ ip.linodeusercontent.com // Submitted by Victor Velchev we.bs +// Listen53 : https://www.l53.net +// Submitted by Gerry Keh +filegear-sg.me +ggff.net + // Localcert : https://localcert.dev // Submitted by Lann Martin *.user.localcert.dev -// localzone.xyz -// Submitted by Kenny Niehage -localzone.xyz +// LocalCert : https://localcert.net +// Submitted by William Harrison +localcert.net +localhostcert.net + +// Lodz University of Technology LODMAN regional domains https://www.man.lodz.pl/dns +// Submitted by Piotr Wilk +lodz.pl +pabianice.pl +plock.pl +sieradz.pl +skierniewice.pl +zgierz.pl // Log'in Line : https://www.loginline.com/ // Submitted by Rémi Mach @@ -14169,14 +14064,14 @@ loginline.io loginline.services loginline.site -// Lokalized : https://lokalized.nl -// Submitted by Noah Taheij -servers.run - // Lõhmus Family, The // Submitted by Heiki Lõhmus lohmus.me +// Lokalized : https://lokalized.nl +// Submitted by Noah Taheij +servers.run + // LubMAN UMCS Sp. z o.o : https://lubman.pl/ // Submitted by Ireneusz Maliszewski krasnik.pl @@ -14229,23 +14124,26 @@ barsyonline.co.uk // Submitted by Damien Tournoud *.magentosite.cloud +// Mail.Ru Group : https://hb.cldmail.ru +// Submitted by Ilya Zaretskiy +hb.cldmail.ru + +// MathWorks : https://www.mathworks.com/ +// Submitted by Emily Reed +matlab.cloud +modelscape.com +mwcloudnonprod.com +polyspace.com + // May First - People Link : https://mayfirst.org/ // Submitted by Jamie McClelland mayfirst.info mayfirst.org -// Mail.Ru Group : https://hb.cldmail.ru -// Submitted by Ilya Zaretskiy -hb.cldmail.ru - // Maze Play: https://www.mazeplay.com // Submitted by Adam Humpherys mazeplay.com -// mcpe.me : https://mcpe.me -// Submitted by Noa Heyl -mcpe.me - // McHost : https://mchost.ru // Submitted by Evgeniy Subbotin mcdir.me @@ -14262,6 +14160,10 @@ mediatech.dev // Submitted by Michael Olson hra.health +// MedusaJS, Inc : https://medusajs.com/ +// Submitted by Stevche Radevski +medusajs.app + // Memset hosting : https://www.memset.com // Submitted by Tom Whitwell miniserver.com @@ -14277,12 +14179,9 @@ atmeta.com apps.fbsbx.com // MetaCentrum, CESNET z.s.p.o. : https://www.metacentrum.cz/en/ -// Submitted by Zdeněk Šustr +// Submitted by Zdeněk Šustr and Radim Janča *.cloud.metacentrum.cz custom.metacentrum.cz - -// MetaCentrum, CESNET z.s.p.o. : https://www.metacentrum.cz/en/ -// Submitted by Radim Janča flt.cloud.muni.cz usr.cloud.muni.cz @@ -14322,26 +14221,30 @@ trafficmanager.net blob.core.windows.net servicebus.windows.net +// MikroTik: https://mikrotik.com +// Submitted by MikroTik SysAdmin Team +routingthecloud.com +sn.mynetname.net +routingthecloud.net +routingthecloud.org + // minion.systems : http://minion.systems // Submitted by Robert Böttinger csx.cc -// Mintere : https://mintere.com/ -// Submitted by Ben Aubin -mintere.site - -// MobileEducation, LLC : https://joinforte.com -// Submitted by Grayson Martin -forte.id +// Mittwald CM Service GmbH & Co. KG : https://mittwald.de +// Submitted by Marco Rieger +mydbserver.com +webspaceconfig.de +mittwald.info +mittwaldserver.info +typo3server.info +project.space // MODX Systems LLC : https://modx.com // Submitted by Elizabeth Southwell modx.dev -// Mozilla Corporation : https://mozilla.com -// Submitted by Ben Francis -mozilla-iot.org - // Mozilla Foundation : https://mozilla.org/ // Submitted by glob bmoattachments.org @@ -14375,6 +14278,11 @@ ui.nabu.casa // Net at Work Gmbh : https://www.netatwork.de // Submitted by Jan Jaeschke cloud.nospamproxy.com +o365.cloud.nospamproxy.com + +// Net libre : https://www.netlib.re +// Submitted by Philippe PITTOLI +netlib.re // Netfy Domains : https://netfy.domains // Submitted by Suranga Ranasinghe @@ -14388,6 +14296,14 @@ netlify.app // Submitted by Trung Tran 4u.com +// NFSN, Inc. : https://www.NearlyFreeSpeech.NET/ +// Submitted by Jeff Wheelhouse +nfshost.com + +// NFT.Storage : https://nft.storage/ +// Submitted by Vasco Santos or +ipfs.nftstorage.link + // NGO.US Registry : https://nic.ngo.us // Submitted by Alstra Solutions Ltd. Networking Team ngo.us @@ -14417,68 +14333,6 @@ torun.pl nh-serv.co.uk nimsite.uk -// NFSN, Inc. : https://www.NearlyFreeSpeech.NET/ -// Submitted by Jeff Wheelhouse -nfshost.com - -// NFT.Storage : https://nft.storage/ -// Submitted by Vasco Santos or -ipfs.nftstorage.link - -// Noop : https://noop.app -// Submitted by Nathaniel Schweinberg -*.developer.app -noop.app - -// Northflank Ltd. : https://northflank.com/ -// Submitted by Marco Suter -*.northflank.app -*.build.run -*.code.run -*.database.run -*.migration.run - -// Noticeable : https://noticeable.io -// Submitted by Laurent Pellegrino -noticeable.news - -// Notion Labs, Inc : https://www.notion.so/ -// Submitted by Jess Yao -notion.site - -// Now-DNS : https://now-dns.com -// Submitted by Steve Russell -dnsking.ch -mypi.co -n4t.co -001www.com -ddnslive.com -myiphost.com -forumz.info -16-b.it -32-b.it -64-b.it -soundcast.me -tcp4.me -dnsup.net -hicam.net -now-dns.net -ownip.net -vpndns.net -dynserv.org -now-dns.org -x443.pw -now-dns.top -ntdll.top -freeddns.us -crafting.xyz -zapto.xyz - -// nsupdate.info : https://www.nsupdate.info/ -// Submitted by Thomas Waldmann -nsupdate.info -nerdpol.ovh - // No-IP.com : https://noip.com/ // Submitted by Deven Reza mmafan.biz @@ -14571,16 +14425,57 @@ pointto.us // Submitted by Konstantin Nosov stage.nodeart.io -// Nucleos Inc. : https://nucleos.com -// Submitted by Piotr Zduniak -pcloud.host +// Noop : https://noop.app +// Submitted by Nathaniel Schweinberg +*.developer.app +noop.app + +// Northflank Ltd. : https://northflank.com/ +// Submitted by Marco Suter +*.northflank.app +*.build.run +*.code.run +*.database.run +*.migration.run + +// Noticeable : https://noticeable.io +// Submitted by Laurent Pellegrino +noticeable.news + +// Notion Labs, Inc : https://www.notion.so/ +// Submitted by Jess Yao +notion.site + +// Now-DNS : https://now-dns.com +// Submitted by Steve Russell +dnsking.ch +mypi.co +myiphost.com +forumz.info +soundcast.me +tcp4.me +dnsup.net +hicam.net +now-dns.net +ownip.net +vpndns.net +dynserv.org +now-dns.org +x443.pw +ntdll.top +freeddns.us + +// nsupdate.info : https://www.nsupdate.info/ +// Submitted by Thomas Waldmann +nsupdate.info +nerdpol.ovh -// NYC.mn : http://www.information.nyc.mn -// Submitted by Matthew Brown +// NYC.mn : https://dot.nyc.mn/ +// Submitted by NYC.mn Subdomain Service nyc.mn // O3O.Foundation : https://o3o.foundation/ -// Submitted by the prvcy.page Registry Team +// Submitted by the prvcy.page Registry Team prvcy.page // Obl.ong : @@ -14592,11 +14487,7 @@ obl.ong observablehq.cloud static.observableusercontent.com -// Octopodal Solutions, LLC. : https://ulterius.io/ -// Submitted by Andrew Sampson -cya.gg - -// OMG.LOL : +// OMG.LOL : https://omg.lol // Submitted by Adam Newbold omg.lol @@ -14630,12 +14521,9 @@ simplesite.pl 123paginaweb.pt 123minsida.se -// One Fold Media : http://www.onefoldmedia.com/ -// Submitted by Eddie Jones -nid.io - // Open Domains : https://open-domains.net // Submitted by William Harrison +is-a-fullstack.dev is-cool.dev is-not-a.dev localplayer.dev @@ -14649,6 +14537,12 @@ opensocial.site // Submitted by Sven Marnach opencraft.hosting +// OpenHost : https://registry.openhost.uk +// Submitted by OpenHost Registry Team +16-b.it +32-b.it +64-b.it + // OpenResearch GmbH: https://openresearch.com/ // Submitted by Philipp Schmid orsites.com @@ -14657,6 +14551,17 @@ orsites.com // Submitted by Yngve Pettersen operaunite.com +// Oracle Dyn : https://cloud.oracle.com/home https://dyn.com/dns/ +// Submitted by Gregory Drake +// Note: This is intended to also include customer-oci.com due to wildcards implicitly including the current label +*.customer-oci.com +*.oci.customer-oci.com +*.ocp.customer-oci.com +*.ocs.customer-oci.com +*.oraclecloudapps.com +*.oraclegovcloudapps.com +*.oraclegovcloudapps.uk + // Orange : https://www.orange.com // Submitted by Alexandre Linte tech.orange @@ -14666,7 +14571,7 @@ tech.orange // Submitted by OsSav Technology Ltd. can.re -// Oursky Limited : https://authgear.com/, https://skygear.io/ +// Oursky Limited : https://authgear.com/ // Submitted by Authgear Team , Skygear Developer authgear-staging.com authgearapps.com @@ -14702,14 +14607,15 @@ oy.lc // Submitted by Derek Myers pgfog.com -// Pagefront : https://www.pagefronthq.com/ -// Submitted by Jason Kriss -pagefrontapp.com - // PageXL : https://pagexl.com // Submitted by Yann Guichard pagexl.com +// Pantheon Systems, Inc. : https://pantheon.io/ +// Submitted by Gary Dylina +gotpantheon.com +pantheonsite.io + // Paywhirl, Inc : https://paywhirl.com/ // Submitted by Daniel Netzer *.paywhirl.com @@ -14723,18 +14629,9 @@ srv.us gh.srv.us gl.srv.us -// .pl domains (grandfathered) -art.pl -gliwice.pl -krakow.pl -poznan.pl -wroc.pl -zakopane.pl - -// Pantheon Systems, Inc. : https://pantheon.io/ -// Submitted by Gary Dylina -gotpantheon.com -pantheonsite.io +// PE Ulyanov Kirill Sergeevich : https://airy.host +// Submitted by Kirill Ulyanov +lk3.ru // Peplink | Pepwave : http://peplink.com/ // Submitted by Steve Leung @@ -14744,10 +14641,6 @@ mypep.link // Submitted by Kenneth Van Alstyne perspecta.cloud -// PE Ulyanov Kirill Sergeevich : https://airy.host -// Submitted by Kirill Ulyanov -lk3.ru - // Planet-Work : https://www.planet-work.com/ // Submitted by Frédéric VANNIÈRE on-web.fr @@ -14768,20 +14661,10 @@ platter-app.com platter-app.dev platterp.us -// Plesk : https://www.plesk.com/ -// Submitted by Anton Akhtyamov -pleskns.com -pdns.page -plesk.page - // Pley AB : https://www.pley.com/ // Submitted by Henning Pohl pley.games -// Port53 : https://port53.io/ -// Submitted by Maximilian Schieder -dyn53.io - // Porter : https://porter.run/ // Submitted by Rudraksh MK onporter.run @@ -14809,10 +14692,6 @@ xen.prgmr.com // Submitted by registry priv.at -// Protocol Labs : https://protocol.ai/ -// Submitted by Michael Burns -*.dweb.link - // Protonet GmbH : http://protonet.io // Submitted by Martin Meier protonet.io @@ -14831,40 +14710,6 @@ pubtls.org pythonanywhere.com eu.pythonanywhere.com -// QOTO, Org. -// Submitted by Jeffrey Phillips Freeman -qoto.io - -// Qualifio : https://qualifio.com/ -// Submitted by Xavier De Cock -qualifioapp.com - -// Quality Unit: https://qualityunit.com -// Submitted by Vasyl Tsalko -ladesk.com - -// QuickBackend: https://www.quickbackend.com -// Submitted by Dani Biro -qbuser.com - -// Rad Web Hosting: https://radwebhosting.com -// Submitted by Scott Claeys -cloudsite.builders -myradweb.net -servername.us - -// Redgate Software: https://red-gate.com -// Submitted by Andrew Farries -instances.spawn.cc - -// Redstar Consultants : https://www.redstarconsultants.com/ -// Submitted by Jons Slemmer -instantcloud.cn - -// Russian Academy of Sciences -// Submitted by Tech Support -ras.ru - // QA2 // Submitted by Daniel Dent (https://www.danieldent.com/) qa2.com @@ -14883,6 +14728,22 @@ mycloudnas.com mynascloud.com myqnapcloud.com +// QOTO, Org. +// Submitted by Jeffrey Phillips Freeman +qoto.io + +// Qualifio : https://qualifio.com/ +// Submitted by Xavier De Cock +qualifioapp.com + +// Quality Unit : https://qualityunit.com +// Submitted by Vasyl Tsalko +ladesk.com + +// QuickBackend: https://www.quickbackend.com +// Submitted by Dani Biro +qbuser.com + // Quip : https://quip.com // Submitted by Patrick Linehan *.quipelements.com @@ -14897,9 +14758,21 @@ vaporcloud.io rackmaze.com rackmaze.net -// Rakuten Games, Inc : https://dev.viberplay.io -// Submitted by Joshua Zhang -g.vbrplsbx.io +// Rad Web Hosting: https://radwebhosting.com +// Submitted by Scott Claeys +cloudsite.builders +myradweb.net +servername.us + +// Radix FZC : http://domains.in.net +// Submitted by Gavin Brown +web.in +in.net + +// Raidboxes GmbH : https://raidboxes.de +// Submitted by Auke Tembrink +myrdbx.io +site.rb-hosting.io // Rancher Labs, Inc : https://rancher.com // Submitted by Vincent Fiduccia @@ -14907,14 +14780,23 @@ g.vbrplsbx.io *.on-k3s.io *.on-rio.io +// RavPage : https://www.ravpage.co.il +// Submitted by Roni Horowitz +ravpage.co.il + // Read The Docs, Inc : https://www.readthedocs.org // Submitted by David Fischer +readthedocs-hosted.com readthedocs.io // Red Hat, Inc. OpenShift : https://openshift.redhat.com/ // Submitted by Tim Kramer rhcloud.com +// Redgate Software: https://red-gate.com +// Submitted by Andrew Farries +instances.spawn.cc + // Render : https://render.com // Submitted by Anurag Goel onrender.com @@ -14966,11 +14848,6 @@ devices.resinstaging.io // Submitted by Chris Kastorff hzc.io -// Revitalised Limited : http://www.revitalised.co.uk -// Submitted by Jack Price -wellbeingzone.eu -wellbeingzone.co.uk - // Rico Developments Limited : https://adimo.co // Submitted by Colin Brown adimo.co.uk @@ -14979,6 +14856,11 @@ adimo.co.uk // Submitted by Micah Anderson itcouldbewor.se +// Roar Domains LLC : https://roar.basketball/ +// Submitted by Gavin Brown +aus.basketball +nz.basketball + // Rochester Institute of Technology : http://www.rit.edu/ // Submitted by Jennifer Herting git-pages.rit.edu @@ -14987,6 +14869,12 @@ git-pages.rit.edu // Submitted by Neil Hanlon rocky.page +// Ruhr University Bochum http://ruhr-uni-bochum.de +// Submitted by Andreas Jobs +rub.de +ruhr-uni-bochum.de +io.noc.ruhr-uni-bochum.de + // Rusnames Limited: http://rusnames.ru/ // Submitted by Sergey Zotov биз.рус @@ -15000,6 +14888,14 @@ rocky.page спб.рус я.рус +// Russian Academy of Sciences +// Submitted by Tech Support +ras.ru + +// Sakura Frp : https://www.natfrp.com +// Submitted by Bobo Liu +nyat.app + // SAKURA Internet Inc. : https://www.sakura.ad.jp/ // Submitted by Internet Service Department 180r.com @@ -15143,17 +15039,17 @@ seidat.net // Submitted by Yuriy Romadin sellfy.store -// Senseering GmbH : https://www.senseering.de -// Submitted by Felix Mönckemeyer -senseering.net - // Sendmsg: https://www.sendmsg.co.il // Submitted by Assaf Stern minisite.ms -// Service Magnet : https://myservicemagnet.com -// Submitted by Dave Sanders -magnet.page +// Senseering GmbH : https://www.senseering.de +// Submitted by Felix Mönckemeyer +senseering.net + +// Servebolt AS: https://servebolt.com +// Submitted by Daniel Kjeserud +servebolt.cloud // Service Online LLC : http://drs.ua/ // Submitted by Serhii Bulakh @@ -15169,15 +15065,6 @@ as.sh.cn // Submitted by Nyoom sheezy.games -// Shift Crypto AG : https://shiftcrypto.ch -// Submitted by alex -shiftcrypto.dev -shiftcrypto.io - -// ShiftEdit : https://shiftedit.net/ -// Submitted by Adam Jimenez -shiftedit.io - // Shopblocks : http://www.shopblocks.com/ // Submitted by Alex Bowers myshopblocks.com @@ -15192,6 +15079,7 @@ shopitsite.com // shopware AG : https://shopware.com // Submitted by Jens Küper +shopware.shop shopware.store // Siemens Mobility GmbH @@ -15210,11 +15098,9 @@ vipsinaapp.com // Submitted by Skylar Challand siteleaf.net -// Skyhat : http://www.skyhat.io -// Submitted by Shante Adam -bounty-full.com -alpha.bounty-full.com -beta.bounty-full.com +// Small Technology Foundation : https://small-tech.org +// Submitted by Aral Balkan +small-web.org // Smallregistry by Promopixel SARL: https://www.smallregistry.net // Former AFNIC's SLDs @@ -15230,10 +15116,6 @@ pharmacien.fr port.fr veterinaire.fr -// Small Technology Foundation : https://small-tech.org -// Submitted by Aral Balkan -small-web.org - // Smoove.io : https://www.smoove.io/ // Submitted by Dan Kozak vp4.me @@ -15249,64 +15131,18 @@ streamlitapp.com // Submitted by Ian Streeter try-snowplow.com -// SourceHut : https://sourcehut.org -// Submitted by Drew DeVault -srht.site - -// SparrowHost : https://sparrowhost.in/ -// Submitted by Anant Pandey -ind.mom - -// StackBlitz : https://stackblitz.com -// Submitted by Dominic Elm -w-corp-staticblitz.com -w-credentialless-staticblitz.com -w-staticblitz.com - -// Stackhero : https://www.stackhero.io -// Submitted by Adrien Gillon -stackhero-network.com - -// STACKIT : https://www.stackit.de/en/ -// Submitted by STACKIT-DNS Team (Simon Stier) -runs.onstackit.cloud -stackit.gg -stackit.rocks -stackit.run -stackit.zone - -// Staclar : https://staclar.com -// Submitted by Q Misell -// Submitted by Matthias Merkel -musician.io -novecore.site - -// staticland : https://static.land -// Submitted by Seth Vincent -static.land -dev.static.land -sites.static.land - -// Storebase : https://www.storebase.io -// Submitted by Tony Schirmer -storebase.store - -// Strapi : https://strapi.io/ -// Submitted by Florent Baldino -strapiapp.com -media.strapiapp.com - -// Strategic System Consulting (eApps Hosting): https://www.eapps.com/ -// Submitted by Alex Oancea -vps-host.net -atl.jelastic.vps-host.net -njs.jelastic.vps-host.net -ric.jelastic.vps-host.net +// Software Consulting Michal Zalewski : https://www.mafelo.com +// Submitted by Michal Zalewski +mafelo.net // Sony Interactive Entertainment LLC : https://sie.com/ // Submitted by David Coles playstation-cloud.com +// SourceHut : https://sourcehut.org +// Submitted by Drew DeVault +srht.site + // SourceLair PC : https://www.sourcelair.com // Submitted by Antonis Kalipetis apps.lair.io @@ -15316,6 +15152,10 @@ apps.lair.io // Submitted by Reza Akhavan spacekit.io +// SparrowHost : https://sparrowhost.in/ +// Submitted by Anant Pandey +ind.mom + // SpeedPartner GmbH: https://www.speedpartner.de/ // Submitted by Stefan Neufeind customer.speedpartner.de @@ -15342,6 +15182,30 @@ myspreadshop.pl myspreadshop.se myspreadshop.co.uk +// StackBlitz : https://stackblitz.com +// Submitted by Dominic Elm +w-corp-staticblitz.com +w-credentialless-staticblitz.com +w-staticblitz.com + +// Stackhero : https://www.stackhero.io +// Submitted by Adrien Gillon +stackhero-network.com + +// STACKIT GmbH & Co. KG : https://www.stackit.de/en/ +// Submitted by STACKIT-DNS Team (Simon Stier) +runs.onstackit.cloud +stackit.gg +stackit.rocks +stackit.run +stackit.zone + +// Staclar : https://staclar.com +// Submitted by Q Misell +// Submitted by Matthias Merkel +musician.io +novecore.site + // Standard Library : https://stdlib.com // Submitted by Jacob Lee api.stdlib.com @@ -15359,6 +15223,10 @@ researched.cx tests.cx surveys.so +// Storebase : https://www.storebase.io +// Submitted by Tony Schirmer +storebase.store + // Storipress : https://storipress.com // Submitted by Benno Liu storipress.app @@ -15367,21 +15235,33 @@ storipress.app // Submitted by Philip Hutchins storj.farm +// Strapi : https://strapi.io/ +// Submitted by Florent Baldino +strapiapp.com +media.strapiapp.com + +// Strategic System Consulting (eApps Hosting): https://www.eapps.com/ +// Submitted by Alex Oancea +vps-host.net +atl.jelastic.vps-host.net +njs.jelastic.vps-host.net +ric.jelastic.vps-host.net + // Streak : https://streak.com // Submitted by Blake Kadatz streak-link.com streaklinks.com streakusercontent.com -// Studenten Net Twente : http://www.snt.utwente.nl/ -// Submitted by Silke Hofstra -utwente.io - // Student-Run Computing Facility : https://www.srcf.net/ // Submitted by Edwin Balani soc.srcf.net user.srcf.net +// Studenten Net Twente : http://www.snt.utwente.nl/ +// Submitted by Silke Hofstra +utwente.io + // Sub 6 Limited: http://www.sub6.com // Submitted by Dan Miller temp-dns.com @@ -15391,12 +15271,6 @@ temp-dns.com supabase.co supabase.in supabase.net -su.paba.se - -// Symfony, SAS : https://symfony.com/ -// Submitted by Fabien Potencier -*.sensiosite.cloud -*.s5y.io // Syncloud : https://syncloud.org // Submitted by Boris Rybalkin @@ -15432,18 +15306,26 @@ tabitorder.co.il taifun-dns.de // Tailscale Inc. : https://www.tailscale.com -// Submitted by David Anderson -beta.tailscale.net +// Submitted by David Anderson ts.net *.c.ts.net -// TASK geographical domains (www.task.gda.pl/uslugi/dns) +// TASK geographical domains : https://task.gda.pl/en/services/for-entrepreneurs/ gda.pl gdansk.pl gdynia.pl med.pl sopot.pl +// Tave Creative Corp : https://tave.com/ +// Submitted by Adrian Ziemkowski +taveusercontent.com + +// tawk.to, Inc : https://www.tawk.to +// Submitted by tawk.to developer team +p.tawk.email +p.tawkto.email + // team.blue https://team.blue // Submitted by Cedric Dubois site.tb-hosting.com @@ -15484,13 +15366,12 @@ azimuth.network tlon.network // Tor Project, Inc. : https://torproject.org -// Submitted by Antoine Beaupré torproject.net pages.torproject.net // TownNews.com : http://www.townnews.com // Submitted by Dustin Ward -bloxcms.com townnews-staging.com // TrafficPlex GmbH : https://www.trafficplex.de/ @@ -15516,14 +15397,11 @@ webspace.rocks lima.zone // TransIP : https://www.transip.nl -// Submitted by Rory Breuk +// Submitted by Rory Breuk and Cedric Dubois *.transurl.be *.transurl.eu -*.transurl.nl - -// TransIP: https://www.transip.nl -// Submitted by Cedric Dubois site.transip.me +*.transurl.nl // TuxFamily : http://tuxfamily.org // Submitted by TuxFamily administrators @@ -15573,6 +15451,11 @@ it.com // Submitted by Simon Højberg unison-services.cloud +// United Gameserver GmbH : https://united-gameserver.de +// Submitted by Stefan Schwarz +virtual-user.de +virtualuser.de + // UNIVERSAL DOMAIN REGISTRY : https://www.udr.org.yt/ // see also: whois -h whois.udr.org.yt help // Submitted by Atanunu Igbunuroghene @@ -15582,39 +15465,45 @@ biz.wf sch.wf org.yt -// United Gameserver GmbH : https://united-gameserver.de -// Submitted by Stefan Schwarz -virtual-user.de -virtualuser.de +// University of Banja Luka : https://unibl.org +// Domains for Republic of Srpska administrative entity. +// Submitted by Marko Ivanovic +rs.ba -// Upli : https://upli.io -// Submitted by Lenny Bakkalian -upli.io +// University of Bielsko-Biala regional domain: http://dns.bielsko.pl/ +// Submitted by Marcin +bielsko.pl // urown.net : https://urown.net // Submitted by Hostmaster urown.cloud dnsupdate.info -// .US -// Submitted by Ed Moore -lib.de.us +// US REGISTRY LLC : http://us.org +// Submitted by Gavin Brown +us.org + +// V.UA Domain Administrator : https://domain.v.ua/ +// Submitted by Serhii Rostilo +v.ua // Val Town, Inc : https://val.town/ // Submitted by Tom MacWright express.val.run web.val.run -// VeryPositive SIA : http://very.lv -// Submitted by Danko Aleksejevs -2038.io - // Vercel, Inc : https://vercel.com/ -// Submitted by Connor Davis +// Submitted by Max Leiter vercel.app +v0.build vercel.dev +vusercontent.net now.sh +// VeryPositive SIA : http://very.lv +// Submitted by Danko Aleksejevs +2038.io + // Viprinet Europe GmbH : http://www.viprinet.com // Submitted by Simon Kissel router.management @@ -15627,10 +15516,6 @@ v-info.info // Submitted by Nathan van Bakel voorloper.cloud -// V.UA Domain Administrator : https://domain.v.ua/ -// Submitted by Serhii Rostilo -v.ua - // Vultr Objects : https://www.vultr.com/products/object-storage/ // Submitted by Niels Maumenee *.vultrobjects.com @@ -15644,11 +15529,11 @@ wafflecell.com webflow.io webflowtest.io -// WebHare bv: https://www.webhare.com/ +// WebHare bv : https://www.webhare.com/ // Submitted by Arnold Hendriks *.webhare.dev -// WebHotelier Technologies Ltd: https://www.webhotelier.net/ +// WebHotelier Technologies Ltd : https://www.webhotelier.net/ // Submitted by Apostolos Tsakpinis bookonline.app hotelwithflight.com @@ -15657,19 +15542,17 @@ reserve-online.net // WebPros International, LLC : https://webpros.com/ // Submitted by Nicolas Rochelemagne +cprapid.com +pleskns.com wp2.host +pdns.page +plesk.page wpsquared.site -// WebWaddle Ltd: https://webwaddle.com/ +// WebWaddle Ltd : https://webwaddle.com/ // Submitted by Merlin Glander *.wadl.top -// WeDeploy by Liferay, Inc. : https://www.wedeploy.com -// Submitted by Henrique Vicente -wedeploy.io -wedeploy.me -wedeploy.sh - // Western Digital Technologies, Inc : https://www.wdc.com // Submitted by Jung Jin remotewd.com @@ -15688,6 +15571,10 @@ toolforge.org wmcloud.org wmflabs.org +// William Harrison : https://wharrison.com.au +// Submitted by William Harrison +wdh.app + // WISP : https://wisp.gg // Submitted by Stepan Fedotov panel.gg @@ -15742,7 +15629,7 @@ cistron.nl demon.nl xs4all.space -// Yandex.Cloud LLC: https://cloud.yandex.com +// Yandex.Cloud LLC : https://cloud.yandex.com // Submitted by Alexander Lodin yandexcloud.net storage.yandexcloud.net @@ -15756,16 +15643,6 @@ official.academy // Submitted by Stefano Rivera yolasite.com -// Yombo : https://yombo.net -// Submitted by Mitch Schwenk -ybo.faith -yombo.me -homelink.one -ybo.party -ybo.review -ybo.science -ybo.trade - // Yunohost : https://yunohost.org // Submitted by Valentin Grimaud ynh.fr commit e6fb18406ee732cae7ba354fde40f6c88645e66e Author: Eli Zaretskii Date: Sun Dec 22 13:43:07 2024 +0200 ; Fix refcards * etc/refcards/sk-survival.tex (section{Značky (tags)}): * etc/refcards/sk-refcard.tex (section{Tagy}): * etc/refcards/ru-refcard.tex (section{Теги}): * etc/refcards/pt-br-refcard.tex (section{Tags}): * etc/refcards/pl-refcard.tex (section{Tags}): * etc/refcards/fr-survival.tex (section{Marqueurs}): * etc/refcards/fr-refcard.tex (section{Tags}): * etc/refcards/de-refcard.tex (section{Tags}): * etc/refcards/cs-survival.tex (section{Značky (tags)}): * etc/refcards/cs-refcard.tex (section{Tagy}): * etc/refcards/survival.tex (section{Tags}): * etc/refcards/refcard.tex (section{Tags}): Fix 'M-,' and 'M-*'. diff --git a/etc/refcards/cs-refcard.tex b/etc/refcards/cs-refcard.tex index 85383d0ac4b..2072fdb6c19 100644 --- a/etc/refcards/cs-refcard.tex +++ b/etc/refcards/cs-refcard.tex @@ -498,7 +498,6 @@ \section{Tagy} \metax{vyhledat reg.\ výraz v~souborech s~tagy}{M-x tags-search} \metax{spustit nahrazování pro ony soubory}{M-x tags-query-replace} -\key{pokračovat v~prohledávání nebo nahrazování}{M-,} \section{Příkazový interpret} diff --git a/etc/refcards/cs-survival.tex b/etc/refcards/cs-survival.tex index bd6206152de..c4e75b89ad4 100644 --- a/etc/refcards/cs-survival.tex +++ b/etc/refcards/cs-survival.tex @@ -255,10 +255,9 @@ \section{Značky (tags)} příkaz `{\tt etags} {\it vstupní\_soubory}' v příkazovém interpretu. \askip \key{M-.} najdi definici -\key{M-*} běž tam, odkud byla volána poslední \kbd{M-.} +\key{M-,} běž tam, odkud byla volána poslední \kbd{M-.} \mkey{M-x tags-query-replace} spusť query-replace na všech souborech zaznamenaných v tabulce značek. -\key{M-,} pokračuj v posledním hledání značky nebo query-replace \section{Překlady} diff --git a/etc/refcards/de-refcard.tex b/etc/refcards/de-refcard.tex index da11ac4aa8e..fbb065592ae 100644 --- a/etc/refcards/de-refcard.tex +++ b/etc/refcards/de-refcard.tex @@ -499,7 +499,6 @@ \section{Tags} \metax{regul\"aren Ausdruck in Dateien suchen}{M-x tags-search} \metax{interakt. Ersetzen in allen Dateien}{M-x tags-query-replace} -\key{letztes Suchen oder Ersetzen fortsetzen}{M-,} \section{Shells} diff --git a/etc/refcards/fr-refcard.tex b/etc/refcards/fr-refcard.tex index cce866d634d..c4628a77a18 100644 --- a/etc/refcards/fr-refcard.tex +++ b/etc/refcards/fr-refcard.tex @@ -503,7 +503,6 @@ \section{Tags} \metax{Rechercher dans tous les fichiers des tags}{M-x tags-search} \metax{Remplacer dans tous les fichiers}{M-x tags-query-replace} -\key{Continuer la recherche ou le remplacement}{M-,} \section{Shell} diff --git a/etc/refcards/fr-survival.tex b/etc/refcards/fr-survival.tex index 149268c20b0..15b0d96ca0c 100644 --- a/etc/refcards/fr-survival.tex +++ b/etc/refcards/fr-survival.tex @@ -251,11 +251,9 @@ \section{Marqueurs} tel fichier, tapez `{\tt etags} {\it fichier\_entr\'ee}' \`a l'invite du shell. \askip \key{M-.} trouve une d\'efinition -\key{M-*} revient o\`u \kbd{M-.} a \'et\'e appel\'e pour la derni\`ere fois +\key{M-,} revient o\`u \kbd{M-.} a \'et\'e appel\'e pour la derni\`ere fois \mkey{M-x tags-query-replace} lance query-replace sur tous les fichiers enregistr\'es dans le tableau des marqueurs -\key{M-,} continue la derni\`ere recherche de marqueurs ou le dernier -query-replace \section{Compilation} diff --git a/etc/refcards/pl-refcard.tex b/etc/refcards/pl-refcard.tex index dabef6d91c8..46b2c45d3df 100644 --- a/etc/refcards/pl-refcard.tex +++ b/etc/refcards/pl-refcard.tex @@ -701,8 +701,6 @@ \section{Tags} we wszystkich plikach wymienionych w~TAGS}{M-x tags-search} \metax{zamiana z zapytaniem we wszystkich\newline plikach wymienionych w~TAGS}{M-x tags-query-replace} -\key{kontynuuj wyszukiwanie lub zamian/e z~zapytaniem - w~plikach wymienionych w~TAGS}{M-,} %\section{Shells} \section{Pow/loki} diff --git a/etc/refcards/pt-br-refcard.tex b/etc/refcards/pt-br-refcard.tex index 47064e7365d..c1749efbcf3 100644 --- a/etc/refcards/pt-br-refcard.tex +++ b/etc/refcards/pt-br-refcard.tex @@ -508,7 +508,6 @@ \section{Tags} \metax{busca por regexp em todos arquivos}{M-x tags-search} \metax{busca e subst. em todos arquivos}{M-x tags-query-replace} -\key{continua a {\'u}ltima busca ou busca e substitui{\c{c}}{\~a}o}{M-,} \section{Shells} diff --git a/etc/refcards/refcard.tex b/etc/refcards/refcard.tex index 8e8ee846291..fd1fbf83964 100644 --- a/etc/refcards/refcard.tex +++ b/etc/refcards/refcard.tex @@ -515,7 +515,6 @@ \section{Tags} \metax{regexp search on all files in tags table}{M-x tags-search} \metax{run query-replace on all the files}{M-x tags-query-replace} -\key{continue last tags search or query-replace}{M-,} \section{Shells} diff --git a/etc/refcards/ru-refcard.tex b/etc/refcards/ru-refcard.tex index a394688a8a0..74e6a513cae 100644 --- a/etc/refcards/ru-refcard.tex +++ b/etc/refcards/ru-refcard.tex @@ -344,7 +344,6 @@ \section{Теги} поиск по шаблону по всей таблице тегов & \kbd{M-x tags-search} \\ выполнить query-replace над всеми файлами & \kbd{M-x tags-query-replace} \\ -продолжить поиск или поиск-замену тега & \kbd{M-,} \\ \end{tabular} \section{Командные процессоры} diff --git a/etc/refcards/sk-refcard.tex b/etc/refcards/sk-refcard.tex index 30dc61e9bc5..6194f95b77a 100644 --- a/etc/refcards/sk-refcard.tex +++ b/etc/refcards/sk-refcard.tex @@ -498,7 +498,6 @@ \section{Tagy} \metax{vyhľadať reg.\ výraz v~súboroch s~tagmi}{M-x tags-search} \metax{spustiť nahradzovanie pre dotyčné súbory}{M-x tags-query-replace} -\key{pokračovať v~prehľadávaní alebo nahradzovaní}{M-,} \section{Príkazový interprét} diff --git a/etc/refcards/sk-survival.tex b/etc/refcards/sk-survival.tex index 5adc16ef667..b350bd64050 100644 --- a/etc/refcards/sk-survival.tex +++ b/etc/refcards/sk-survival.tex @@ -258,10 +258,9 @@ \section{Značky (tags)} príkaz `{\tt etags} {\it vstupné\_súbory}' v príkazovom interprétereri. \askip \key{M-.} nájdi definícu -\key{M-*} choď tam, odkiaľ bola volaná posledná \kbd{M-.} +\key{M-,} choď tam, odkiaľ bola volaná posledná \kbd{M-.} \mkey{M-x tags-query-replace} spusti query-replace na všetkých súboroch zaznamenaných v tabuľke značiek. -\key{M-,} pokračuj v poslednom hľadaní značky alebo query-replace \section{Preklady} diff --git a/etc/refcards/survival.tex b/etc/refcards/survival.tex index 9f071b2aac3..cbb13350851 100644 --- a/etc/refcards/survival.tex +++ b/etc/refcards/survival.tex @@ -243,10 +243,9 @@ \section{Tags} `{\tt etags} {\it input\_files}' as a shell command. \askip \key{M-.} find a definition -\key{M-*} pop back to where \kbd{M-.} was last invoked +\key{M-,} pop back to where \kbd{M-.} was last invoked \mkey{M-x tags-query-replace} run query-replace on all files recorded in tags table -\key{M-,} continue last tags search or query-replace \section{Compiling} commit 14e791f9ba2c67a4613800aad2e9938207ac10ca Author: Eli Zaretskii Date: Sun Dec 22 12:55:46 2024 +0200 ; Update acknowledgments for Emacs 30 * admin/release-process: Suggest a command to compare source trees. * doc/emacs/emacs.texi (Acknowledgments): * doc/emacs/ack.texi (Acknowledgments): Add authors of new stuff in Emacs 30. diff --git a/admin/release-process b/admin/release-process index af1db4f53d8..d66bc48f70d 100644 --- a/admin/release-process +++ b/admin/release-process @@ -114,7 +114,13 @@ Sadly makeinfo does not warn about such characters. Check for major new features added since the last release (e.g. new lisp files), and add the relevant authors to the Acknowledgments in -doc/emacs/ack.texi and emacs.texi. +doc/emacs/ack.texi and emacs.texi. To find new files, you could run a +command such as this: + + $ diff -rq emacs-NN.MM emacs-XX.YY | grep "^Only in emacs-XX" + +where NN.MM is the previous Emacs version, and XX.YY is the new version. +This assumes you have the source trees of both versions available. For major releases, rewrite the "Antinews" appendix of the User Manual (doc/emacs/anti.texi) to describe features lost by downgrading to the diff --git a/doc/emacs/ack.texi b/doc/emacs/ack.texi index bb8001c382f..59dc83f214a 100644 --- a/doc/emacs/ack.texi +++ b/doc/emacs/ack.texi @@ -120,7 +120,8 @@ NeXTstep port of Emacs. @item Stephen Berman wrote @file{todo-mode.el} (based on the original version -by Oliver Seidel), a package for maintaining @file{TODO} list files. +by Oliver Seidel), a package for maintaining @file{TODO} list files. He +also wrote @file{visual-wrap.el} together with Stefan Monnier. @item Anna M. Bigatti wrote @file{cal-html.el}, which produces HTML calendars. @@ -327,6 +328,10 @@ folders have mail waiting in them. @item Torbjörn Einarsson wrote @file{f90.el}, a mode for Fortran 90 files. +@item +Helmut Eller wrote @file{peg.el}, a Parsing Expression Grammars package +for Emacs. + @item Tsugutomo Enami co-wrote the support for international character sets. @@ -355,6 +360,10 @@ Oscar Figueiredo wrote EUDC, the Emacs Unified Directory Client, which is an interface to directory servers via LDAP, CCSO PH/QI, or BBDB; and @file{ldap.el}, the LDAP client interface. +@item +Jared Finder implemented window tool bars in @file{window-tool-bar.el} +and enhanced xterm mouse support in @file{xt-mouse.el}. + @item Fred Fish wrote the support for dumping COFF executable files. @@ -460,6 +469,10 @@ as well as helping to maintain Org mode (q.v.). Henry Guillaume wrote @file{find-file.el}, a package to visit files related to the currently visited file. +@item +Dmitry Gutov wrote @file{etags-regen.el}, a package for automatic +(re)generation of @file{TAGS} files. + @item Doug Gwyn wrote the portable @code{alloca} implementation. @@ -629,6 +642,11 @@ editing the same file. He also wrote the initial version of @file{uniquify.el}, a facility to make buffer names unique by adding parts of the file's name to the buffer name. +@item +Wilhelm H Kirschbaum wrote @file{elixir-ts-mode.el} and +@file{heex-ts-mode.el}, Emacs major modes for editing Elixir and Heex +files. + @item Peter Kleiweg wrote @file{ps-mode.el}, a mode for editing PostScript files and running a PostScript interpreter interactively from within @@ -881,12 +899,18 @@ indentation engine; and @file{pcase.el}, implementing ML-style pattern matching. In Emacs 24, he integrated the lexical binding code, cleaned up the CL namespace (making it acceptable to use CL functions at runtime), added generalized variables to core Emacs -Lisp, and implemented a new lightweight advice mechanism. +Lisp, and implemented a new lightweight advice mechanism. He also wrote +@file{track-changes.el}, a library which accumulates changes in a buffer +until some client Lisp program wants to consume those changes. @item Morioka Tomohiko wrote several packages for MIME support in Gnus and elsewhere. +@item +John Muhl wrote @file{lua-ts-mode.el}, an Emacs mode for editing Lua +programs. + @item Sen Nagata wrote @file{crm.el}, a package for reading multiple strings with completion, and @file{rfc2368.el}, support for @code{mailto:} @@ -1034,6 +1058,10 @@ He also expanded and redesigned the @code{etags} program. Michael D. Prange and Steven A. Wood wrote @file{fortran.el}, a mode for editing Fortran code. +@item +Vincenzo Pupillo wrote @code{php-ts-mode.el}, a major mode for editing +PHP programs. + @item Ashwin Ram wrote @file{refer.el}, commands to look up references in bibliography files by keyword. @@ -1162,6 +1190,10 @@ wrote parts of the IRC client ERC (q.v.). @item Randal Schwartz wrote @file{pp.el}, a pretty-printer for lisp objects. +@item +Daniel Semyonov write @file{nnatom.el}, the Atom backend for Gnus, and +@file{nnfeed.el}, a generic feed backend for Gnus. + @item Manuel Serrano wrote the Flyspell package, which does spell checking as you type. @@ -1287,6 +1319,10 @@ which completes the partial word before point, based on other nearby words for which it is a prefix. He also wrote the original dumping support. +@item +Theodor Thornhill wrote @file{html-ts-mode.el}, a major mode based on +the tree-sitter library for editing HTML files. + @item Toru Tomabechi contributed to Tibetan support. @@ -1420,6 +1456,12 @@ merging two versions of a file. Francis J. Wright wrote @file{woman.el}, a package for browsing manual pages without the @code{man} command. +@item +Po Lu ported Emacs to Android, and wrote +@code{pixel-scroll-precision-mode}. He also added XInput2 support to +Emacs, implemented touchpad commands in @file{touch-screen.el}, and +extended drag-n-drop support. + @item Masatake Yamato wrote @file{ld-script.el}, an editing mode for GNU linker scripts, and contributed subword handling and style diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi index 3dd0688d426..3ae5434ad72 100644 --- a/doc/emacs/emacs.texi +++ b/doc/emacs/emacs.texi @@ -1465,10 +1465,10 @@ Dershowitz, Dave Detlefs, Matthieu Devin, Christophe de Dinechin, Eri Ding, Jan Djärv, Lawrence R. Dodd, Carsten Dominik, Scott Draves, Benjamin Drieu, Viktor Dukhovni, Jacques Duthen, Dmitry Dzhus, John Eaton, Rolf Ebert, Carl Edman, David Edmondson, Paul Eggert, Stephen -Eglen, Christian Egli, Torbjörn Einarsson, Tsugutomo Enami, David -Engster, Hans Henrik Eriksen, Michael Ernst, Ata Etemadi, Frederick -Farnbach, Oscar Figueiredo, Fred Fish, Steve Fisk, Thomas Fitzsimmons, Karl Fogel, Gary -Foster, Eric S. Fraga, Romain Francoise, Noah Friedman, Andreas +Eglen, Christian Egli, Torbjörn Einarsson, Helmut Eller, Tsugutomo +Enami, David Engster, Hans Henrik Eriksen, Michael Ernst, Ata Etemadi, Frederick +Farnbach, Oscar Figueiredo, Jared Finder, Fred Fish, Steve Fisk, Thomas Fitzsimmons, +Karl Fogel, Gary Foster, Eric S. Fraga, Romain Francoise, Noah Friedman, Andreas Fuchs, Shigeru Fukaya, Xue Fuqiao, Hallvard Furuseth, Keith Gabryelski, Peter S. Galbraith, Kevin Gallagher, Fabián E. Gallina, Kevin Gallo, Juan León Lahoz García, Howard Gayle, Daniel German, Stephen Gildea, Julien Gilles, David @@ -1486,8 +1486,8 @@ Thorsten Jolitz, Michael K. Johnson, Kyle Jones, Terry Jones, Simon Josefsson, Alexandre Julliard, Arne Jørgensen, Tomoji Kagatani, Brewster Kahle, Tokuya Kameshima, Lute Kamstra, Stefan Kangas, Ivan Kanis, David Kastrup, David Kaufman, Henry Kautz, Taichi Kawabata, Taro Kawagishi, -Howard Kaye, Michael Kifer, Richard King, Peter Kleiweg, Karel -Klíč, Shuhei Kobayashi, Pavel Kobyakov, Larry K. Kolodney, David +Howard Kaye, Michael Kifer, Richard King, Wilhelm Kirschbaum, Peter Kleiweg, +Karel Klíč, Shuhei Kobayashi, Pavel Kobyakov, Larry K. Kolodney, David M. Koppelman, Koseki Yoshinori, Robert Krawitz, Sebastian Kremer, Ryszard Kubiak, Tak Kunihiro, Igor Kuzmin, David Kågedal, Daniel LaLiberte, Karl Landstrom, Mario Lang, Aaron Larson, James R. Larus, Gemini Lasswell, Vinicius Jose @@ -1502,7 +1502,7 @@ Yukihiro Matsumoto, Tomohiro Matsuyama, David Maus, Thomas May, Will Mengarini, Megginson, Jimmy Aguilar Mena, Stefan Merten, Ben A. Mesander, Wayne Mesard, Brad Miller, Lawrence Mitchell, Richard Mlynarik, Gerd Möllmann, Dani Moncayo, Stefan Monnier, Keith Moore, Jan Moringen, Morioka Tomohiko, Glenn Morris, -Don Morrison, Diane Murray, Riccardo Murri, Sen Nagata, Erik Naggum, +Don Morrison, John Muhl, Diane Murray, Riccardo Murri, Sen Nagata, Erik Naggum, Gergely Nagy, Nobuyoshi Nakada, Thomas Neumann, Mike Newton, Thien-Thi Nguyen, Jurgen Nickelsen, Dan Nicolaescu, Hrvoje Nikšić, Jeff Norden, Andrew Norman, Theresa O'Connor, Kentaro Ohkouchi, Christian Ohler, @@ -1512,8 +1512,8 @@ Jeff Peck, Damon Anton Permezel, Tom Perrine, William M. Perry, Per Persson, Jens Petersen, Nicolas Petton, Daniel Pfeiffer, Justus Piater, Richard L. Pieri, Fred Pierresteguy, François Pinard, Daniel Pittman, Christian Plaunt, Alexander Pohoyda, David Ponce, Noam Postavsky, Francesco A. Potortì, -Michael D. Prange, Mukesh Prasad, Steve Purcell, Ken Raeburn, Marko Rahamaa, Ashwin -Ram, Eric S. Raymond, Paul Reilly, Edward M. Reingold, David +Michael D. Prange, Mukesh Prasad, Steve Purcell, Vincenzo Pupillo, Ken Raeburn, +Marko Rahamaa, Ashwin Ram, Eric S. Raymond, Paul Reilly, Edward M. Reingold, David Reitter, Alex Rezinsky, Rob Riepel, Lara Rios, Adrian Robert, Nick Roberts, Roland B. Roberts, John Robinson, Denis B. Roegel, Danny Roozendaal, Sebastian Rose, William Rosenblatt, Markus Rost, Guillermo @@ -1523,9 +1523,9 @@ Timo Savola, Jorgen Schäfer, Holger Schauer, William Schelter, Ralph Schleicher, Gregor Schmid, Michael Schmidt, Ronald S. Schnell, Philippe Schnoebelen, Jan Schormann, Alex Schroeder, Stefan Schoef, Rainer Schöpf, Raymond Scholz, Eric Schulte, Andreas Schwab, Randal -Schwartz, Oliver Seidel, Manuel Serrano, Paul Sexton, Hovav Shacham, -Stanislav Shalunov, Marc Shapiro, Richard Sharman, Olin Shivers, Tibor -Šimko, Espen Skoglund, Rick Sladkey, Lynn Slater, Chris Smith, +Schwartz, Oliver Seidel, Daniel Semyonov, Manuel Serrano, Paul Sexton, +Hovav Shacham, Stanislav Shalunov, Marc Shapiro, Richard Sharman, Olin +Shivers, Tibor Šimko, Espen Skoglund, Rick Sladkey, Lynn Slater, Chris Smith, David Smith, JD Smith, Paul D. Smith, Wilson Snyder, William Sommerfeld, Simon South, Andre Spiegel, Michael Staats, Thomas Steffen, Ulf Stegemann, Reiner Steib, Sam Steingold, Ake Stenhoff, Philipp Stephani, Peter Stephenson, Ken @@ -1533,15 +1533,15 @@ Stevens, Andy Stewart, Jonathan Stigelman, Martin Stjernholm, Kim F. Storm, Steve Strassmann, Christopher Suckling, Olaf Sylvester, Naoto Takahashi, Steven Tamm, Jan Tatarik, João Távora, Luc Teirlinck, Jean-Philippe Theberge, Jens T.@: Berger Thielemann, Spencer Thomas, -Jim Thompson, Toru Tomabechi, David O'Toole, Markus Triska, Tom Tromey, Eli -Tziperman, Daiki Ueno, Masanobu Umeda, Rajesh Vaidheeswarran, Neil +Jim Thompson, Theodor Thornhill, Toru Tomabechi, David O'Toole, Markus Triska, +Tom Tromey, Eli Tziperman, Daiki Ueno, Masanobu Umeda, Rajesh Vaidheeswarran, Neil W. Van Dyke, Didier Verna, Joakim Verona, Ulrik Vieth, Geoffrey Voelker, Johan Vromans, Inge Wallin, John Paul Wallington, Colin Walters, Barry Warsaw, Christoph Wedler, Ilja Weis, Zhang Weize, Morten Welinder, Joseph Brian Wells, Rodney Whitby, John Wiegley, Sascha Wilde, Ed Wilkinson, Mike Williams, Roland Winkler, Bill Wohler, Steven A. Wood, Dale R. Worley, Francis J. Wright, Felix -S. T. Wu, Tom Wurgler, Yamamoto Mitsuharu, Katsumi Yamaoka, +S. T. Wu, Tom Wurgler, Yamamoto Mitsuharu, Po Lu, Katsumi Yamaoka, Masatake Yamato, Jonathan Yavner, Ryan Yeske, Ilya Zakharevich, Milan Zamazal, Victor Zandy, Eli Zaretskii, Jamie Zawinski, Andrew Zhilin, Shenghuo Zhu, Piotr Zieliński, Ian T. Zimmermann, Reto Zimmermann, commit 861b7864fc4b8319a8f8756f02e9a4cfcc25bbfe Author: Eli Zaretskii Date: Sun Dec 22 12:11:46 2024 +0200 ; Fix node name in emacs-lisp-intro.texi * doc/lispintro/emacs-lisp-intro.texi (Lexical vs Dynamic Binding Example): Renamed from "... vs. ...", to avoid using period in node names. diff --git a/doc/lispintro/emacs-lisp-intro.texi b/doc/lispintro/emacs-lisp-intro.texi index 49916235fbf..226ffc823ed 100644 --- a/doc/lispintro/emacs-lisp-intro.texi +++ b/doc/lispintro/emacs-lisp-intro.texi @@ -3774,7 +3774,7 @@ elisp, The Emacs Lisp Reference Manual}. @menu * Lexical & Dynamic Binding Differences:: -* Lexical vs. Dynamic Binding Example:: +* Lexical vs Dynamic Binding Example:: @end menu @node Lexical & Dynamic Binding Differences @@ -3811,7 +3811,7 @@ on the top of the stack, and then executes the @code{let} body. Once the @code{let} body finishes, it takes that binding off of the stack, revealing the one it had (if any) before the @code{let} expression. -@node Lexical vs. Dynamic Binding Example +@node Lexical vs Dynamic Binding Example @unnumberedsubsubsec Example of Lexical vs. Dynamic Binding In some cases, both lexical and dynamic binding behave identically. However, in other cases, they can change the meaning of your program. commit 77243ba5be8c8e5319c4b07fabed6fee66e6ac7f Author: Eli Zaretskii Date: Sun Dec 22 12:06:38 2024 +0200 ; Update version tags of defcustoms * admin/release-process: Expand on 'cusver-check'. * lisp/editorconfig.el (editorconfig-indentation-alist) (editorconfig-trim-whitespaces-mode): * lisp/eshell/em-cmpl.el (eshell-cmpl-remote-file-ignore): * lisp/eshell/esh-ext.el (eshell-explicit-remote-commands): * lisp/gnus/nnfeed.el (nnfeed-date-format): * lisp/net/newst-ticker.el (newsticker-ticker-period): * lisp/progmodes/cc-vars.el (c-warn-ids-with-dollar): * lisp/progmodes/cperl-mode.el (cperl-fontify-trailer): * lisp/progmodes/eglot.el (customize-package-emacs-version-alist) (eglot-events-buffer-config, eglot-confirm-server-edits) (eglot-prefer-plaintext): * lisp/progmodes/flymake.el (customize-package-emacs-version-alist): * lisp/progmodes/ruby-mode.el (ruby-rubocop-use-bundler): * lisp/progmodes/verilog-mode.el (verilog-indent-ignore-multiline-defines) (verilog-indent-ignore-regexp, verilog-indent-class-inside-pkg) (verilog-align-decl-expr-comments) (verilog-align-comment-distance, verilog-align-assign-expr) (verilog-align-typedef-regexp, verilog-align-typedef-words) (verilog-fontify-variables): * lisp/register.el (register-preview-display-buffer-alist): * lisp/vc/vc-annotate.el (vc-annotate-use-short-revision): Add missing :version tags and additions to 'customize-package-emacs-version-alist' as appropriate. diff --git a/admin/release-process b/admin/release-process index ef698f51666..af1db4f53d8 100644 --- a/admin/release-process +++ b/admin/release-process @@ -93,7 +93,19 @@ documentation (or decide no updates are necessary) for those that aren't. ** For a major release, add a "New in Emacs XX" section to faq.texi. ** cusver-check from admin.el can help find new defcustoms missing -:version tags. +:version tags. This asks for new and old Lisp directories; use the one +in the current release branch as New and the one from the last released +Emacs version as Old. + +Note that this doesn't (yet) know about :package-version and +'customize-package-emacs-version-alist', so it could produce false +positives for packages that use :package-version. Make sure the files +with defcustoms that use :package-version have the appropriate +add-to-list that determines the correspondence between package versions +and Emacs versions. Any changes you make in :version etc. should be +tested by running "M-x customize-changed" after regenerating cus-load.el +(run "make custom-deps" in the lisp/ directory) and loaddefs.el (run +"make autoloads-force"). ** Manuals Check for node names using problematic characters: diff --git a/lisp/editorconfig.el b/lisp/editorconfig.el index c524945c4b9..007da79cf5e 100644 --- a/lisp/editorconfig.el +++ b/lisp/editorconfig.el @@ -274,6 +274,7 @@ a list of settings in the form (VARIABLE . VALUE)." (repeat (choice symbol (cons symbol integer))))) + :version "30.1" :risky t) (defcustom editorconfig-trim-whitespaces-mode nil @@ -281,6 +282,7 @@ a list of settings in the form (VARIABLE . VALUE)." If set, enable that mode when `trim_trailing_whitespace` is set to true. Otherwise, use `delete-trailing-whitespace'." + :version "30.1" :type 'symbol) (defvar editorconfig-properties-hash nil diff --git a/lisp/eshell/em-cmpl.el b/lisp/eshell/em-cmpl.el index 4c79f7b187a..fc40c295798 100644 --- a/lisp/eshell/em-cmpl.el +++ b/lisp/eshell/em-cmpl.el @@ -150,7 +150,8 @@ to writing a completion function." (defcustom eshell-cmpl-remote-file-ignore nil (eshell-cmpl--custom-variable-docstring 'pcomplete-remote-file-ignore) - :type (get 'pcomplete-remote-file-ignore 'custom-type)) + :type (get 'pcomplete-remote-file-ignore 'custom-type) + :version "30.1") (defcustom eshell-cmpl-ignore-case (eshell-under-windows-p) (eshell-cmpl--custom-variable-docstring 'completion-ignore-case) diff --git a/lisp/eshell/esh-ext.el b/lisp/eshell/esh-ext.el index cf93d2904da..38c8b5ac60a 100644 --- a/lisp/eshell/esh-ext.el +++ b/lisp/eshell/esh-ext.el @@ -171,6 +171,7 @@ These are commands with a full remote file name, such as commands on your local host by using the \"/local:\" prefix, like \"/local:whoami\"." :type 'boolean + :version "30.1" :group 'eshell-ext) ;;; Functions: diff --git a/lisp/gnus/nnfeed.el b/lisp/gnus/nnfeed.el index 2d33d4c813b..8e3e2e92e5b 100644 --- a/lisp/gnus/nnfeed.el +++ b/lisp/gnus/nnfeed.el @@ -64,6 +64,7 @@ (defcustom nnfeed-date-format "%F %X%p" "Format of displayed dates (see function `format-time-string')." + :version "30.1" :type 'string) (nnoo-declare nnfeed) diff --git a/lisp/net/newst-ticker.el b/lisp/net/newst-ticker.el index 01cd2964778..5c9fdb95950 100644 --- a/lisp/net/newst-ticker.el +++ b/lisp/net/newst-ticker.el @@ -96,6 +96,7 @@ retrieval interval (or the global `newsticker-retrieval-interval`) is recommended." :type 'number :set #'newsticker--set-customvar-ticker + :version "30.1" :group 'newsticker-ticker) (defcustom newsticker-scroll-smoothly diff --git a/lisp/progmodes/cc-vars.el b/lisp/progmodes/cc-vars.el index 3845c2d55f0..68470cf1367 100644 --- a/lisp/progmodes/cc-vars.el +++ b/lisp/progmodes/cc-vars.el @@ -286,6 +286,7 @@ This has effect only for languages in which `c-dollar-in-ids' is non-nil, e.g. C, C++, Objective C. It covers languages where \"$\" is permitted in ids \"informally\", but only by some compilers." :type 'boolean + :version "30.1" :group 'c) (defcustom-c-stylevar c-basic-offset 4 diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el index e129e2df552..0dbf879ffed 100644 --- a/lisp/progmodes/cperl-mode.el +++ b/lisp/progmodes/cperl-mode.el @@ -573,6 +573,7 @@ AutoSplit. If \"comment\", treat as comment, and do not look for imenu entries." :type '(choice (const perl-code) (const comment)) + :version "30.1" :group 'cperl-faces) (defcustom cperl-ps-print-face-properties diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el index 0a14146a245..9d656b352a4 100644 --- a/lisp/progmodes/eglot.el +++ b/lisp/progmodes/eglot.el @@ -182,6 +182,13 @@ :prefix "eglot-" :group 'tools) +(add-to-list 'customize-package-emacs-version-alist + '(Eglot ("1.12" . "29.1") + ("1.12" . "29.2") + ("1.12" . "29.3") + ("1.12.29" . "29.4") + ("1.17.30" . "30.1"))) + (defun eglot-alternatives (alternatives) "Compute server-choosing function for `eglot-server-programs'. Each element of ALTERNATIVES is a string PROGRAM or a list of @@ -475,7 +482,8 @@ the LSP connection. That can be done by `eglot-reconnect'." (choice (const :tag "Full with original JSON" full) (const :tag "Shortened" short) - (const :tag "Pretty-printed lisp" lisp)))))) + (const :tag "Pretty-printed lisp" lisp))))) + :package-version '(Eglot . "1.17.30")) (defcustom eglot-confirm-server-edits '((eglot-rename . nil) (t . maybe-summary)) @@ -506,7 +514,8 @@ ACTION is the default value for commands not in the alist." (alist :tag "Per-command alist" :key-type (choice (function :tag "Command") (const :tag "Default" t)) - :value-type (choice . ,basic-choices))))) + :value-type (choice . ,basic-choices)))) + :package-version '(Eglot . "1.17.30")) (defcustom eglot-extend-to-xref nil "If non-nil, activate Eglot in cross-referenced non-project files." @@ -514,7 +523,8 @@ ACTION is the default value for commands not in the alist." (defcustom eglot-prefer-plaintext nil "If non-nil, always request plaintext responses to hover requests." - :type 'boolean) + :type 'boolean + :package-version '(Eglot . "1.17.30")) (defcustom eglot-menu-string "eglot" "String displayed in mode line when Eglot is active." @@ -530,7 +540,7 @@ the LSP connection. That can be done by `eglot-reconnect'." :type '(choice (const :tag "Don't show progress" nil) (const :tag "Show progress in *Messages*" messages) (const :tag "Show progress in Eglot's mode line indicator" t)) - :version "1.10") + :package-version '(Eglot . "1.10")) (defcustom eglot-ignored-server-capabilities (list) "LSP server capabilities that Eglot could use, but won't. diff --git a/lisp/progmodes/flymake.el b/lisp/progmodes/flymake.el index 9a6b62ca254..aae1f8b7262 100644 --- a/lisp/progmodes/flymake.el +++ b/lisp/progmodes/flymake.el @@ -128,6 +128,11 @@ :link '(custom-manual "(flymake) Top") :group 'tools) +(add-to-list 'customize-package-emacs-version-alist + '(Flymake ("1.3.4" . "30.1") + ("1.3.5" . "30.1") + ("1.3.6" . "30.1"))) + (defcustom flymake-error-bitmap '(flymake-double-exclamation-mark compilation-error) "Bitmap (a symbol) used in the fringe for indicating errors. diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el index 4c37ef45ddf..45e6e37ceb2 100644 --- a/lisp/progmodes/ruby-mode.el +++ b/lisp/progmodes/ruby-mode.el @@ -2584,6 +2584,7 @@ the gem \"rubocop\". When t, it is used unconditionally." :type '(choice (const :tag "Always" t) (const :tag "No" nil) (const :tag "If rubocop is in Gemfile" check)) + :version "30.1" :safe 'booleanp) (defun ruby-flymake-rubocop (report-fn &rest _args) diff --git a/lisp/progmodes/verilog-mode.el b/lisp/progmodes/verilog-mode.el index 65545d523a8..495bd312c4e 100644 --- a/lisp/progmodes/verilog-mode.el +++ b/lisp/progmodes/verilog-mode.el @@ -691,12 +691,14 @@ Set to 0 to have all directives start at the left side of the screen." (defcustom verilog-indent-ignore-multiline-defines t "Non-nil means ignore indentation on lines that are part of a multiline define." :group 'verilog-mode-indent + :version "30.1" :type 'boolean) (put 'verilog-indent-ignore-multiline-defines 'safe-local-variable #'verilog-booleanp) (defcustom verilog-indent-ignore-regexp nil "Regexp that matches lines that should be ignored for indentation." :group 'verilog-mode-indent + :version "30.1" :type 'boolean) (put 'verilog-indent-ignore-regexp 'safe-local-variable #'stringp) @@ -748,6 +750,7 @@ Otherwise, line them up." "Non-nil means indent classes inside packages. Otherwise, classes have zero indentation." :group 'verilog-mode-indent + :version "30.1" :type 'boolean) (put 'verilog-indent-class-inside-pkg 'safe-local-variable #'verilog-booleanp) @@ -761,6 +764,7 @@ Otherwise else is lined up with first character on line holding matching if." (defcustom verilog-align-decl-expr-comments t "Non-nil means align declaration and expressions comments." :group 'verilog-mode-indent + :version "30.1" :type 'boolean) (put 'verilog-align-decl-expr-comments 'safe-local-variable #'verilog-booleanp) @@ -768,18 +772,21 @@ Otherwise else is lined up with first character on line holding matching if." "Distance (in spaces) between longest declaration/expression and comments. Only works if `verilog-align-decl-expr-comments' is non-nil." :group 'verilog-mode-indent + :version "30.1" :type 'integer) (put 'verilog-align-comment-distance 'safe-local-variable #'integerp) (defcustom verilog-align-assign-expr nil "Non-nil means align expressions of continuous assignments." :group 'verilog-mode-indent + :version "30.1" :type 'boolean) (put 'verilog-align-assign-expr 'safe-local-variable #'verilog-booleanp) (defcustom verilog-align-typedef-regexp nil "Regexp that matches user typedefs for declaration alignment." :group 'verilog-mode-indent + :version "30.1" :type '(choice (regexp :tag "Regexp") (const :tag "None" nil))) (put 'verilog-align-typedef-regexp 'safe-local-variable #'stringp) @@ -787,6 +794,7 @@ Only works if `verilog-align-decl-expr-comments' is non-nil." (defcustom verilog-align-typedef-words nil "List of words that match user typedefs for declaration alignment." :group 'verilog-mode-indent + :version "30.1" :type '(repeat string)) (put 'verilog-align-typedef-words 'safe-local-variable #'listp) @@ -939,6 +947,7 @@ always be saved." (defcustom verilog-fontify-variables t "Non-nil means fontify declaration variables." :group 'verilog-mode-actions + :version "30.1" :type 'boolean) (put 'verilog-fontify-variables 'safe-local-variable #'verilog-booleanp) diff --git a/lisp/register.el b/lisp/register.el index 497848ded1e..9bcd6e21057 100644 --- a/lisp/register.el +++ b/lisp/register.el @@ -409,7 +409,8 @@ Format of each entry is controlled by the variable `register-preview-function'." (window-height . fit-window-to-buffer) (preserve-size . (nil . t))) "Window configuration for the register preview buffer." - :type display-buffer--action-custom-type) + :type display-buffer--action-custom-type + :version "30.1") (defun register-preview-1 (buffer &optional show-empty types) "Pop up a window showing the preview of registers in BUFFER. diff --git a/lisp/vc/vc-annotate.el b/lisp/vc/vc-annotate.el index b206abec27f..8b4c6be422b 100644 --- a/lisp/vc/vc-annotate.el +++ b/lisp/vc/vc-annotate.el @@ -165,6 +165,7 @@ List of factors, used to expand/compress the time scale. See `vc-annotate'." (defcustom vc-annotate-use-short-revision t "If non-nil, \\[vc-annotate] will use short revisions in its buffer name." :type 'boolean + :version "30.1" :group 'vc) (defvar-keymap vc-annotate-mode-map commit fe2ac33bae817d1ae48dde81233b41a7ff6bcf53 Author: Eli Zaretskii Date: Sun Dec 22 10:43:57 2024 +0200 ;* doc/misc/efaq.texi (New in Emacs 30): Mention 'trusted-contents'. diff --git a/doc/misc/efaq.texi b/doc/misc/efaq.texi index eb38112be1b..dfdadd3d22f 100644 --- a/doc/misc/efaq.texi +++ b/doc/misc/efaq.texi @@ -942,6 +942,13 @@ Emacs has been ported to the Android operating system. See the file @file{java/INSTALL} in the Emacs source distribution for details on how to build it. +@item +New user option @code{trusted-contents} to allow potentially dangerous +Emacs features which could execute arbitrary Lisp code. Use this +variable to list files and directories whose contents Emacs should +trust, thus allowing those potentially dangerous features when those +files are visited. + @item Numerous performance improvements, for example in parsing JSON, reading data from subprocesses, handling output from Eshell and in Shell mode, X commit 8fb884f0dc0d33cc6515f4d5c19c733c51df8441 Author: Michael Albinus Date: Sun Dec 22 09:31:06 2024 +0100 ; * etc/NEWS: Fix wording. diff --git a/etc/NEWS b/etc/NEWS index 61cb66387bb..5309364a513 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -201,7 +201,7 @@ see the variable 'url-request-extra-headers'. +++ ** New user option 'trusted-content' to allow potentially dangerous features. -This variable lists those files and directories whose content Emacs should +This option lists those files and directories whose content Emacs should consider as sufficiently trusted to run any part of the code contained therein even without any explicit user request. For example, Flymake's backend for Emacs Lisp consults this option commit e281355a5e88771b66afe35f425ce09064ef5147 Author: Michael Albinus Date: Sun Dec 22 09:30:47 2024 +0100 Improve D-Bus and Tramp manual * doc/misc/dbus.texi (Overview): * doc/misc/tramp.texi (GVFS-based methods): Describe, how the feature can be checked at runtime. (Bug#75004) diff --git a/doc/misc/dbus.texi b/doc/misc/dbus.texi index 4d46564944f..1020e027774 100644 --- a/doc/misc/dbus.texi +++ b/doc/misc/dbus.texi @@ -75,9 +75,12 @@ another. An overview of D-Bus can be found at @cindex overview D-Bus is an inter-process communication mechanism for applications -residing on the same host. The communication is based on -@dfn{messages}. Data in the messages is carried in a structured way, -it is not just a byte stream. +residing on the same host. Emacs uses it when it is compiled with the +respective library, see configuration option @option{--with-dbus}. At +runtime, the form @code{(featurep 'dbusbind)} indicates D-Bus support. + +D-Bus communication is based on @dfn{messages}. Data in the messages is +carried in a structured way, it is not just a byte stream. The communication is connection oriented to two kinds of message buses: a so called @dfn{system bus}, and a @dfn{session bus}. On a diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi index 94e06ce6af3..b98b9b1fe5c 100644 --- a/doc/misc/tramp.texi +++ b/doc/misc/tramp.texi @@ -1365,9 +1365,12 @@ Desktop, @uref{https://en.wikipedia.org/wiki/GVFS}. Remote files on @acronym{GVFS} are mounted locally through @acronym{FUSE} and @value{tramp} uses this locally mounted directory internally. -Emacs uses the D-Bus mechanism to communicate with @acronym{GVFS}@. -Emacs must have the message bus system, D-Bus integration active, -@pxref{Top, , D-Bus, dbus}. +Emacs uses the D-Bus mechanism to communicate with @acronym{GVFS}@. It +must have been compiled with D-Bus support, @pxref{Top, , D-Bus, dbus}. + +@vindex tramp-gvfs-enabled +The @code{tramp-gvfs-enabled} variable, being non-@code{nil}, signals +that @value{tramp} can use @acronym{GVFS}-based methods. @table @asis @cindex method @option{afp}