Source: dpkg-dev-el Severity: wishlist Tags: patch Hello. Some suggestions are attached. I hope that you will find some of them useful. Thanks for maintaining this package.
>From 60e55e0eae1f81b5aeeb7b7f5572e2a05d10b4bb Mon Sep 17 00:00:00 2001 From: Nicolas Boulenguez <nico...@debian.org> Date: Fri, 5 Jul 2024 10:47:12 +0200 Subject: [PATCH 01/27] Build-Depend on dh-elpa via the convenient dh-sequence-elpa
--- debian/control | 2 +- debian/rules | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/control b/debian/control index 420a37e..ed8f9d7 100644 --- a/debian/control +++ b/debian/control @@ -6,7 +6,7 @@ Uploaders: David Bremner <brem...@debian.org>, Xiyue Deng <manp...@gmail.com>, Build-Depends: debhelper-compat (= 13), - dh-elpa, + dh-sequence-elpa, elpa-debian-el, Standards-Version: 4.7.0 Homepage: https://salsa.debian.org/emacsen-team/dpkg-dev-el diff --git a/debian/rules b/debian/rules index e8e22ba..2d33f6a 100755 --- a/debian/rules +++ b/debian/rules @@ -1,4 +1,4 @@ #!/usr/bin/make -f %: - dh $@ --with elpa + dh $@ -- 2.39.2
>From 0ce37655345048ef5e77f12757c32964086866da Mon Sep 17 00:00:00 2001 From: Nicolas Boulenguez <nico...@debian.org> Date: Fri, 5 Jul 2024 10:51:14 +0200 Subject: [PATCH 02/27] Remove a transition maintainer script older than oldoldstable --- debian/dpkg-dev-el.maintscript | 1 - 1 file changed, 1 deletion(-) delete mode 100644 debian/dpkg-dev-el.maintscript diff --git a/debian/dpkg-dev-el.maintscript b/debian/dpkg-dev-el.maintscript deleted file mode 100644 index 4a80e3c..0000000 --- a/debian/dpkg-dev-el.maintscript +++ /dev/null @@ -1 +0,0 @@ -rm_conffile /etc/emacs/site-start.d/50dpkg-dev-el.el -- 2.39.2
>From 2632ff216870bfe4209dae28b9a1dc8767039aae Mon Sep 17 00:00:00 2001 From: Nicolas Boulenguez <nico...@debian.org> Date: Fri, 5 Jul 2024 10:54:49 +0200 Subject: [PATCH 03/27] Remove a transitional package older than oldoldstable --- debian/control | 7 ------- 1 file changed, 7 deletions(-) diff --git a/debian/control b/debian/control index ed8f9d7..745b8be 100644 --- a/debian/control +++ b/debian/control @@ -29,10 +29,3 @@ Description: Emacs helpers specific to Debian development * debian-control-mode - a helper mode for debian/control files; * debian-copyright - major mode for Debian package copyright files; * readme-debian - major mode for editing README.Debian files. - -Package: dpkg-dev-el -Architecture: all -Depends: ${misc:Depends}, elpa-dpkg-dev-el -Description: Transition package, dpkg-dev-el to elpa-dpkg-dev-el - The dpkg-dev-el emacs addon has been elpafied. This dummy package - helps ease transition from dpkg-dev-el to elpa-dpkg-dev-el. -- 2.39.2
>From 7da14280a6b8578f469bde40df74f5236f2a90ba Mon Sep 17 00:00:00 2001 From: Nicolas Boulenguez <nico...@debian.org> Date: Sun, 21 Jul 2024 10:39:35 +0200 Subject: [PATCH 04/27] Construct the syntax table once when loading the mode source file --- debian-autopkgtest-control-mode.el | 15 +++++++-------- debian-control-mode.el | 10 ++++------ debian-copyright.el | 15 +++++++-------- readme-debian.el | 15 ++++++++------- 4 files changed, 26 insertions(+), 29 deletions(-) diff --git a/debian-autopkgtest-control-mode.el b/debian-autopkgtest-control-mode.el index f50a353..ef004be 100644 --- a/debian-autopkgtest-control-mode.el +++ b/debian-autopkgtest-control-mode.el @@ -46,8 +46,6 @@ (defvar debian-autopkgtest-control-mode-map nil "Keymap for debian-autopkgtest-control-mode.") -(defvar debian-autopkgtest-control-mode-syntax-table nil - "Syntax table for debian-autopkgtest-control-mode.") (defvar debian-autopkgtest-control-mode-font-lock-keywords nil "Regexps to highlight in font-lock.") @@ -94,12 +92,13 @@ https://people.debian.org/~eriberto/README.package-tests.html.") As defined in the `Depends' section in https://people.debian.org/~eriberto/README.package-tests.html.") -(if debian-autopkgtest-control-mode-syntax-table - () ; Do not change the table if it is already set up. - (setq debian-autopkgtest-control-mode-syntax-table (make-syntax-table)) - (modify-syntax-entry ?\" ". " debian-autopkgtest-control-mode-syntax-table) - (modify-syntax-entry ?\\ ". " debian-autopkgtest-control-mode-syntax-table) - (modify-syntax-entry ?' "w " debian-autopkgtest-control-mode-syntax-table)) +(defvar debian-autopkgtest-control-mode-syntax-table + (let ((table (make-syntax-table))) + (modify-syntax-entry ?\" ". " table) + (modify-syntax-entry ?\\ ". " table) + (modify-syntax-entry ?' "w " table) + table) + "Syntax table for debian-autopkgtest-control-mode.") (defun debian-autopkgtest-control-mode--font-lock-add-field-keywords (field-names) "Add font lock for field in FIELD-NAMES." diff --git a/debian-control-mode.el b/debian-control-mode.el index 45ff91f..6542392 100644 --- a/debian-control-mode.el +++ b/debian-control-mode.el @@ -154,14 +154,12 @@ :type 'face :group 'debian-control) -(defvar debian-control-syntax-table nil +(defvar debian-control-syntax-table + (let ((table (make-syntax-table))) + (modify-syntax-entry ?\n "> " table) + table) "Syntax table used in debian-control-mode buffers.") -(if debian-control-syntax-table - () - (setq debian-control-syntax-table (make-syntax-table)) - (modify-syntax-entry ?\n "> " debian-control-syntax-table)) - ;; FIXME: As of policy 3.5.6.0, the allowed characters in a field name ;; are not specified. So we just go with "word constituent" or '-' ;; characters before a colon. diff --git a/debian-copyright.el b/debian-copyright.el index 3ed5b32..03f6135 100644 --- a/debian-copyright.el +++ b/debian-copyright.el @@ -48,8 +48,6 @@ (defvar debian-copyright-mode-map nil "Keymap for debian/copyright mode.") -(defvar debian-copyright-mode-syntax-table nil - "Syntax table for debian/copyright mode.") (defvar debian-copyright-font-lock-keywords nil "Regexps to highlight in font-lock.") @@ -97,12 +95,13 @@ It should be immediately followed by a non-slash character.") "MPL-2\\.0") "Supported licenses based on /usr/share/common-licenses.") -(if debian-copyright-mode-syntax-table - () ; Do not change the table if it is already set up. - (setq debian-copyright-mode-syntax-table (make-syntax-table)) - (modify-syntax-entry ?\" ". " debian-copyright-mode-syntax-table) - (modify-syntax-entry ?\\ ". " debian-copyright-mode-syntax-table) - (modify-syntax-entry ?' "w " debian-copyright-mode-syntax-table)) +(defvar debian-copyright-mode-syntax-table + (let ((table (make-syntax-table))) + (modify-syntax-entry ?\" ". " table) + (modify-syntax-entry ?\\ ". " table) + (modify-syntax-entry ?' "w " table) + table) + "Syntax table for debian/copyright mode.") (defun debian-copyright--font-lock-add-field-keywords (field-names) "Add font lock for field in FIELD-NAMES." diff --git a/readme-debian.el b/readme-debian.el index 390d401..d328d18 100644 --- a/readme-debian.el +++ b/readme-debian.el @@ -84,13 +84,14 @@ Automatically invoked when saving file." (if readme-debian-mode-map () (setq readme-debian-mode-map (make-sparse-keymap))) -(defvar readme-debian-mode-syntax-table nil "Syntax table for README.Debian mode.") -(if readme-debian-mode-syntax-table - () ; Do not change the table if it is already set up. - (setq readme-debian-mode-syntax-table (make-syntax-table)) - (modify-syntax-entry ?\" ". " readme-debian-mode-syntax-table) - (modify-syntax-entry ?\\ ". " readme-debian-mode-syntax-table) - (modify-syntax-entry ?' "w " readme-debian-mode-syntax-table)) + +(defvar readme-debian-mode-syntax-table + (let ((table (make-syntax-table))) + (modify-syntax-entry ?\" ". " table) + (modify-syntax-entry ?\\ ". " table) + (modify-syntax-entry ?' "w " table) + table) + "Syntax table for README.Debian mode.") (defvar font-lock-defaults) ;For XEmacs byte-compilation ;;;###autoload -- 2.39.2
>From da9dcafddb645b9b234d87a89884e5c8c0656685 Mon Sep 17 00:00:00 2001 From: Nicolas Boulenguez <nico...@debian.org> Date: Sun, 21 Jul 2024 11:16:43 +0200 Subject: [PATCH 05/27] Construct the key map once when loading the mode source file --- debian-bts-control.el | 9 ++++----- debian-changelog-mode.el | 43 ++++++++++++++-------------------------- readme-debian.el | 7 +++---- 3 files changed, 22 insertions(+), 37 deletions(-) diff --git a/debian-bts-control.el b/debian-bts-control.el index 56dc469..2e3930c 100644 --- a/debian-bts-control.el +++ b/debian-bts-control.el @@ -121,12 +121,11 @@ the top of the message." "Email address domain to send control message to.") (defvar debian-bts-control-minor-mode nil) -(defvar debian-bts-control-minor-mode-map nil +(defvar debian-bts-control-minor-mode-map + (let ((map (make-sparse-keymap))) + (define-key map "\C-c\C-b" 'debian-bts-control) + map) "Keymap for `debian-bts-control' minor mode.") -(if debian-bts-control-minor-mode-map - nil - (setq debian-bts-control-minor-mode-map (make-sparse-keymap)) - (define-key debian-bts-control-minor-mode-map "\C-c\C-b" 'debian-bts-control)) (easy-menu-define debian-bts-control-menu debian-bts-control-minor-mode-map "Debian Bug Mode Menu" diff --git a/debian-changelog-mode.el b/debian-changelog-mode.el index a7844b6..71cdf37 100644 --- a/debian-changelog-mode.el +++ b/debian-changelog-mode.el @@ -732,35 +732,22 @@ Upload to " val " anyway?"))) (autoload 'outline-next-visible-heading "outline") (autoload 'outline-prev-visible-heading "outline") -(defvar debian-changelog-mode-map nil +(defvar debian-changelog-mode-map + (let ((map (make-sparse-keymap))) + (define-key map "\C-c\C-a" 'debian-changelog-add-entry) + (define-key map "\C-c\C-o" 'debian-changelog-build-open-bug-list) + (define-key map "\C-c\C-b" 'debian-changelog-close-bug) + (define-key map "\C-c\C-f" 'debian-changelog-finalise-last-version) + (define-key map "\C-c\C-c" 'debian-changelog-finalise-and-save) + (define-key map "\C-c\C-v" 'debian-changelog-add-version) + (define-key map "\C-c\C-d" 'debian-changelog-distribution) + (define-key map "\C-c\C-u" 'debian-changelog-urgency) + (define-key map "\C-c\C-e" 'debian-changelog-unfinalise-last-version) + (define-key map "\C-c\C-n" 'outline-next-visible-heading) + (define-key map "\C-c\C-p" 'outline-previous-visible-heading) + (define-key map "\C-c\C-t" 'debian-changelog-toggle-team-upload) + map) "Keymap for Debian changelog major mode.") -(if debian-changelog-mode-map - nil - (setq debian-changelog-mode-map (make-sparse-keymap)) - (define-key debian-changelog-mode-map "\C-c\C-a" - 'debian-changelog-add-entry) - (define-key debian-changelog-mode-map "\C-c\C-o" - 'debian-changelog-build-open-bug-list) - (define-key debian-changelog-mode-map "\C-c\C-b" - 'debian-changelog-close-bug) - (define-key debian-changelog-mode-map "\C-c\C-f" - 'debian-changelog-finalise-last-version) - (define-key debian-changelog-mode-map "\C-c\C-c" - 'debian-changelog-finalise-and-save) - (define-key debian-changelog-mode-map "\C-c\C-v" - 'debian-changelog-add-version) - (define-key debian-changelog-mode-map "\C-c\C-d" - 'debian-changelog-distribution) - (define-key debian-changelog-mode-map "\C-c\C-u" - 'debian-changelog-urgency) - (define-key debian-changelog-mode-map "\C-c\C-e" - 'debian-changelog-unfinalise-last-version) - (define-key debian-changelog-mode-map "\C-c\C-n" - 'outline-next-visible-heading) - (define-key debian-changelog-mode-map "\C-c\C-p" - 'outline-previous-visible-heading) - (define-key debian-changelog-mode-map "\C-c\C-t" - 'debian-changelog-toggle-team-upload)) ;; ;; menu definition (Chris Waters) diff --git a/readme-debian.el b/readme-debian.el index d328d18..6bed091 100644 --- a/readme-debian.el +++ b/readme-debian.el @@ -80,10 +80,9 @@ Automatically invoked when saving file." (if (and (= (point)(point-max)) (not (bolp))) (insert "\n")))) -(defvar readme-debian-mode-map nil "Keymap for README.Debian mode.") -(if readme-debian-mode-map - () - (setq readme-debian-mode-map (make-sparse-keymap))) +(defvar readme-debian-mode-map + (make-sparse-keymap) + "Keymap for README.Debian mode.") (defvar readme-debian-mode-syntax-table (let ((table (make-syntax-table))) -- 2.39.2
>From f97c9428949f7be03ac28b66907e45525ec185b9 Mon Sep 17 00:00:00 2001 From: Nicolas Boulenguez <nico...@debian.org> Date: Sun, 21 Jul 2024 11:55:19 +0200 Subject: [PATCH 06/27] Construct the font lock keywords once when loading the mode source file --- debian-autopkgtest-control-mode.el | 43 ++++++------------ debian-copyright.el | 72 +++++++++++++----------------- 2 files changed, 43 insertions(+), 72 deletions(-) diff --git a/debian-autopkgtest-control-mode.el b/debian-autopkgtest-control-mode.el index ef004be..2d7edc4 100644 --- a/debian-autopkgtest-control-mode.el +++ b/debian-autopkgtest-control-mode.el @@ -47,9 +47,6 @@ (defvar debian-autopkgtest-control-mode-map nil "Keymap for debian-autopkgtest-control-mode.") -(defvar debian-autopkgtest-control-mode-font-lock-keywords nil - "Regexps to highlight in font-lock.") - (defvar debian-autopkgtest-control-mode--field-names '("Architecture" "Classes" @@ -100,26 +97,19 @@ https://people.debian.org/~eriberto/README.package-tests.html.") table) "Syntax table for debian-autopkgtest-control-mode.") -(defun debian-autopkgtest-control-mode--font-lock-add-field-keywords (field-names) - "Add font lock for field in FIELD-NAMES." - (dolist (field-name field-names) - (add-to-list 'debian-autopkgtest-control-mode-font-lock-keywords - `(,(concat "^" field-name ":") . font-lock-keyword-face)))) - -(defun debian-autopkgtest-control-mode--font-lock-add-dependency-extensions - (extensions) - "Add font lock for dependency EXTENSIONS." - (dolist (extension extensions) - (add-to-list 'debian-autopkgtest-control-mode-font-lock-keywords - `(,extension . font-lock-variable-name-face)))) - -(defun debian-autopkgtest-control-mode--font-lock-add-restrictions (restrictions) - "Add font lock for RESTRICTIONS." - (dolist (restriction restrictions) - (add-to-list 'debian-autopkgtest-control-mode-font-lock-keywords - `(,(concat "^\\Restrictions:.*\\_<\\(" restriction - "\\)\\_>") - (1 font-lock-type-face))))) +(defvar debian-autopkgtest-control-mode-font-lock-keywords + (append + (mapcar (lambda (field-name) + `(,(concat "^" field-name ":") . font-lock-keyword-face)) + debian-autopkgtest-control-mode--field-names) + (mapcar (lambda (extension) + `(,extension . font-lock-variable-name-face)) + debian-autopkgtest-control-mode--dependency-extensions) + (mapcar (lambda (restriction) + `(,(concat "^\\Restrictions:.*\\_<\\(" restriction "\\)\\_>") + (1 font-lock-type-face))) + debian-autopkgtest-control-mode--restrictions)) + "Regexps to highlight in font-lock.") ;;;###autoload (defun debian-autopkgtest-control-mode () @@ -132,13 +122,6 @@ https://people.debian.org/~eriberto/README.package-tests.html.") (mapc 'make-local-variable '(font-lock-defaults write-file-hooks)) (use-local-map debian-autopkgtest-control-mode-map) (set-syntax-table debian-autopkgtest-control-mode-syntax-table) - ;; Add font locks - (debian-autopkgtest-control-mode--font-lock-add-field-keywords - debian-autopkgtest-control-mode--field-names) - (debian-autopkgtest-control-mode--font-lock-add-dependency-extensions - debian-autopkgtest-control-mode--dependency-extensions) - (debian-autopkgtest-control-mode--font-lock-add-restrictions - debian-autopkgtest-control-mode--restrictions) (setq font-lock-defaults '(debian-autopkgtest-control-mode-font-lock-keywords nil ;keywords-only diff --git a/debian-copyright.el b/debian-copyright.el index 03f6135..f76c291 100644 --- a/debian-copyright.el +++ b/debian-copyright.el @@ -49,9 +49,6 @@ (defvar debian-copyright-mode-map nil "Keymap for debian/copyright mode.") -(defvar debian-copyright-font-lock-keywords nil - "Regexps to highlight in font-lock.") - (defvar debian-copyright--field-names '("Comment" "Copyright" @@ -103,36 +100,35 @@ It should be immediately followed by a non-slash character.") table) "Syntax table for debian/copyright mode.") -(defun debian-copyright--font-lock-add-field-keywords (field-names) - "Add font lock for field in FIELD-NAMES." - (dolist (field-name field-names) - (add-to-list 'debian-copyright-font-lock-keywords - `(,(concat "^" field-name ":") . font-lock-keyword-face)))) - -(defun debian-copyright--font-lock-add-email () - "Add font lock for email addresses. -This is not a fully compliant email detecting regexp. It -additionally detects the extra `<' and `>' around the address. I -hope this works well enough until the day we have to follow -https://stackoverflow.com/a/201378." - (add-to-list 'debian-copyright-font-lock-keywords - '("<?\\([^<> \t\n]+@[^<> \t\n]+\\.[^<> \t\n]+\\)>?" - (1 font-lock-variable-name-face)))) - -(defun debian-copyright--font-lock-add-urls (protocol-prefixes) - "Add font lock for a URL with PROTOCOL-PREFIXES." - (dolist (protocol-prefix protocol-prefixes) - (add-to-list 'debian-copyright-font-lock-keywords - `(,(concat "\\(" protocol-prefix "[^/ \t\n][^ \t\n]*\\)") - (1 font-lock-constant-face))))) - -(defun debian-copyright--font-lock-add-licenses (supported-licenses) - "Add font lock for SUPPORTED-LICENSES." - (dolist (supported-license supported-licenses) - (add-to-list 'debian-copyright-font-lock-keywords - `(,(concat "^\\License:.*\\_<\\(" supported-license - "\\+?\\)\\_>") - (1 font-lock-type-face))))) +(defvar debian-copyright--goto-addr-highlight-p + (progn + (defvar goto-address-highlight-p) ;; To suppress comp warnings. + (and (featurep 'goto-addr) + goto-address-highlight-p)) + "Whether URLs are highlighted with goto-addr (instead of font-lock).") + +(defvar debian-copyright-font-lock-keywords + (append + (mapcar (lambda (field-name) + `(,(concat "^" field-name ":") . font-lock-keyword-face)) + debian-copyright--field-names) + ;; Add font lock for email addresses. + ;; This is not a fully compliant email detecting regexp. It + ;; additionally detects the extra `<' and `>' around the address. I + ;; hope this works well enough until the day we have to follow + ;; https://stackoverflow.com/a/201378. + '(("<?\\([^<> \t\n]+@[^<> \t\n]+\\.[^<> \t\n]+\\)>?" + (1 font-lock-variable-name-face))) + (unless debian-copyright--goto-addr-highlight-p + (mapcar (lambda (protocol-prefix) + `(,(concat "\\(" protocol-prefix "[^/ \t\n][^ \t\n]*\\)") + (1 font-lock-constant-face))) + debian-copyright--supported-url-protocol-prefixes)) + (mapcar (lambda (supported-license) + `(,(concat "^\\License:.*\\_<\\(" supported-license "\\+?\\)\\_>") + (1 font-lock-type-face))) + debian-copyright--supported-licenses)) + "Regexps to highlight in font-lock.") ;;;###autoload (defun debian-copyright-mode () @@ -145,15 +141,7 @@ https://stackoverflow.com/a/201378." (mapc 'make-local-variable '(font-lock-defaults write-file-hooks)) (use-local-map debian-copyright-mode-map) (set-syntax-table debian-copyright-mode-syntax-table) - ;; Add font locks - (debian-copyright--font-lock-add-field-keywords debian-copyright--field-names) - (debian-copyright--font-lock-add-email) - (debian-copyright--font-lock-add-licenses debian-copyright--supported-licenses) - (defvar goto-address-highlight-p) ;; To suppress comp warnings. - (if (or (not (featurep 'goto-addr)) - (not goto-address-highlight-p)) - (debian-copyright--font-lock-add-urls - debian-copyright--supported-url-protocol-prefixes) + (when debian-copyright--goto-addr-highlight-p (goto-address)) (setq font-lock-defaults '(debian-copyright-font-lock-keywords -- 2.39.2
>From d8bec39f404c80ca8c09007ba33813db116c832b Mon Sep 17 00:00:00 2001 From: Nicolas Boulenguez <nico...@debian.org> Date: Sun, 21 Jul 2024 13:41:52 +0200 Subject: [PATCH 07/27] Shorten declaration of local variables with setq-local Especially, document font-lock-defaults in all files and remove a wrong parameter from the call in debian-control-mode.el. The original motivation is a warning that (mapc ...) should not be used when the result is ignored. --- debian-autopkgtest-control-mode.el | 7 +++---- debian-bts-control.el | 2 +- debian-changelog-mode.el | 26 ++++++++++++++------------ debian-control-mode.el | 20 +++++++------------- debian-copyright.el | 4 ++-- readme-debian.el | 5 ++--- 6 files changed, 29 insertions(+), 35 deletions(-) diff --git a/debian-autopkgtest-control-mode.el b/debian-autopkgtest-control-mode.el index 2d7edc4..8f6d077 100644 --- a/debian-autopkgtest-control-mode.el +++ b/debian-autopkgtest-control-mode.el @@ -119,15 +119,14 @@ https://people.debian.org/~eriberto/README.package-tests.html.") (kill-all-local-variables) (setq major-mode 'debian-autopkgtest-control-mode) (setq mode-name "debian-autopkgtest-control") - (mapc 'make-local-variable '(font-lock-defaults write-file-hooks)) + (make-local-variable 'write-file-hooks) (use-local-map debian-autopkgtest-control-mode-map) (set-syntax-table debian-autopkgtest-control-mode-syntax-table) - (setq font-lock-defaults + (setq-local font-lock-defaults '(debian-autopkgtest-control-mode-font-lock-keywords nil ;keywords-only nil ;case-fold - nil ;syntax-alist - )) + ())) ; local syntax table alist (run-mode-hooks 'debian-autopkgtest-control-mode-hook)) diff --git a/debian-bts-control.el b/debian-bts-control.el index 2e3930c..4d63aa7 100644 --- a/debian-bts-control.el +++ b/debian-bts-control.el @@ -302,7 +302,7 @@ a negative prefix argument turns it off. \\<debian-bts-control-minor-mode-map> \\[debian-bts-control]\t\tAdd a control command to the current message." (interactive "P") - (set (make-local-variable 'debian-bts-control-minor-mode) + (setq-local debian-bts-control-minor-mode (if arg (> (prefix-numeric-value arg) 0) (not debian-bts-control-minor-mode))) diff --git a/debian-changelog-mode.el b/debian-changelog-mode.el index 71cdf37..ba9d9d6 100644 --- a/debian-changelog-mode.el +++ b/debian-changelog-mode.el @@ -1542,24 +1542,26 @@ interface to set it, or simply set the variable ;; done. (use-local-map debian-changelog-mode-map) ;; Let each entry behave as one paragraph: - (set (make-local-variable 'fill-forward-paragraph-function) + (setq-local fill-forward-paragraph-function #'debian-changelog--forward-paragraph) - (set (make-local-variable 'paragraph-start) "\\s *[*+-]\\|\\s *$\\|\f\\|^\\<") - (set (make-local-variable 'paragraph-separate) "\\s *$\\|\f\\|^\\<") + (setq-local paragraph-start "\\s *[*+-]\\|\\s *$\\|\f\\|^\\<") + (setq-local paragraph-separate "\\s *$\\|\f\\|^\\<") ;; Let each version behave as one page. ;; Match null string on the heading line so that the heading line ;; is grouped with what follows. - (set (make-local-variable 'page-delimiter) "^\\<") - (set (make-local-variable 'version-control) 'never) - (set (make-local-variable 'adaptive-fill-regexp) "\\s *") - (set (make-local-variable 'font-lock-defaults) + (setq-local page-delimiter "^\\<") + (setq-local version-control 'never) + (setq-local adaptive-fill-regexp "\\s *") + (setq-local font-lock-defaults '((debian-changelog-font-lock-keywords debian-changelog-font-lock-keywords-1 - debian-changelog-font-lock-keywords-2) t t)) - (set (make-local-variable - 'debian-changelog-local-variables-maybe-remove-done) nil) - (set (make-local-variable 'indent-line-function) 'indent-relative-maybe) - (set (make-local-variable 'outline-regexp) "^[a-z]") + debian-changelog-font-lock-keywords-2) + t ; keywords-only? + t ; case-fold? + ())) ; local syntax table alist + (setq-local debian-changelog-local-variables-maybe-remove-done nil) + (setq-local indent-line-function 'indent-relative-maybe) + (setq-local outline-regexp "^[a-z]") (setq local-abbrev-table text-mode-abbrev-table) (set-syntax-table text-mode-syntax-table) (debian-bug-bug-menu-init debian-changelog-mode-map) diff --git a/debian-control-mode.el b/debian-control-mode.el index 6542392..7533d7d 100644 --- a/debian-control-mode.el +++ b/debian-control-mode.el @@ -297,30 +297,24 @@ It should be immediately followed by a non-slash character.") "A major mode for editing Debian control files (i.e. debian/control)." (set-syntax-table debian-control-syntax-table) ;; Comments - (make-local-variable 'comment-start-skip) ;Need this for font-lock... - (setq comment-start-skip "^#+\s-*") - (make-local-variable 'comment-start) - (make-local-variable 'comment-end) - (setq comment-start "#" - comment-end "") + (setq-local comment-start-skip "^#+\s-*") ;Need this for font-lock... + (setq-local comment-start "#") + (setq-local comment-end "") ;; Support # style comments (setq-local syntax-propertize-function (syntax-propertize-rules ("^\\(#\\)" (1 "<")))) - (make-local-variable 'font-lock-defaults) - (setq font-lock-defaults + (setq-local font-lock-defaults '(debian-control-font-lock-keywords nil ;;; Keywords only? No, let it do syntax via table. nil ;;; case-fold? - nil ;;; Local syntax table. - nil ;;; Use `backward-paragraph' ? No - )) - (set (make-local-variable 'fill-paragraph-function) + ())) ; local syntax table alist + (setq-local fill-paragraph-function #'debian-control-mode-fill-paragraph) (make-local-variable 'after-change-functions) (push 'debian-control-mode-after-change-function after-change-functions) - (set (make-local-variable 'imenu-generic-expression) + (setq-local imenu-generic-expression '((nil "^\\(Package\\|Source\\):\\s-*\\([-a-zA-Z0-9+.]+?\\)\\s-*$" 2))) (define-key debian-control-mode-map (kbd "C-c C-b") 'debian-control-view-package-bugs) diff --git a/debian-copyright.el b/debian-copyright.el index f76c291..16a94df 100644 --- a/debian-copyright.el +++ b/debian-copyright.el @@ -138,12 +138,12 @@ It should be immediately followed by a non-slash character.") (kill-all-local-variables) (setq major-mode 'debian-copyright-mode) (setq mode-name "debian/copyright") - (mapc 'make-local-variable '(font-lock-defaults write-file-hooks)) + (make-local-variable 'write-file-hooks) (use-local-map debian-copyright-mode-map) (set-syntax-table debian-copyright-mode-syntax-table) (when debian-copyright--goto-addr-highlight-p (goto-address)) - (setq font-lock-defaults + (setq-local font-lock-defaults '(debian-copyright-font-lock-keywords nil ;keywords-only nil ;case-fold diff --git a/readme-debian.el b/readme-debian.el index 6bed091..162dc4f 100644 --- a/readme-debian.el +++ b/readme-debian.el @@ -104,14 +104,13 @@ will be updated. (kill-all-local-variables) (setq major-mode 'readme-debian-mode) (setq mode-name "README.Debian") - (make-local-variable 'font-lock-defaults) (use-local-map readme-debian-mode-map) (set-syntax-table readme-debian-mode-syntax-table) - (setq font-lock-defaults + (setq-local font-lock-defaults '(readme-debian-font-lock-keywords nil ;; keywords-only? No, let it do syntax via table. nil ;; case-fold? - nil ;; Local syntax table. + () ;; Local syntax table. )) ;; add timestamp update func to write-contents-hooks (if (or (= emacs-major-version 20) -- 2.39.2
>From 3270788a00af1cfac98a0d598525b5a1b66a72d4 Mon Sep 17 00:00:00 2001 From: Nicolas Boulenguez <nico...@debian.org> Date: Fri, 5 Jul 2024 15:13:22 +0200 Subject: [PATCH 08/27] Simplify addition of a co-maintainer by changelog-mode --- debian-changelog-mode.el | 65 +++++++++++----------------------------- 1 file changed, 17 insertions(+), 48 deletions(-) diff --git a/debian-changelog-mode.el b/debian-changelog-mode.el index ba9d9d6..e98ac7a 100644 --- a/debian-changelog-mode.el +++ b/debian-changelog-mode.el @@ -1308,8 +1308,9 @@ Use UTC if `debian-changelog-date-utc-flag' is non-nil." (defun debian-changelog-last-maintainer () "Return maintainer name and e-mail of the last changelog entry as -a list in the form (NAME EMAIL)." - (save-excursion +a list in the form (NAME EMAIL). +The point is left after the > character closing the email part of the +signature line at the end of the last entry." (goto-char (point-min)) (let ((string (if (re-search-forward "^ -- \\(.*\\)>" nil t) @@ -1317,7 +1318,7 @@ a list in the form (NAME EMAIL)." (match-string-no-properties 1) (match-string 1)) (error "Maintainer name and email not found.")))) - (split-string string " <")))) + (split-string string " <"))) (defun debian-changelog-web-developer-page () "Browse the BTS for the last upload maintainer's developer summary page." @@ -1327,48 +1328,10 @@ a list in the form (NAME EMAIL)." (load "browse-url" nil t) (if (not (featurep 'browse-url)) (error "This function requires the browse-url elisp package")))) - (let ((email (cadr (debian-changelog-last-maintainer)))) + (let ((email (cadr (save-excursion (debian-changelog-last-maintainer))))) (browse-url (concat "http://qa.debian.org/developer.php?login=" email)) (message "Looking up developer summary page for %s via browse-url" email))) -;; co-maintenance as per bug #352957 by Luca Capello 2006 -(defun debian-changelog-comaintainer-insert (name separator) - "In the line before SEPARATOR, insert the co-maintainer name as for -the form [ NAME ]." - (goto-char (point-min)) - (re-search-forward (concat "\n " separator)) - (forward-line -1) - (insert "\n [ " name " ]") - (when (string= "--" separator) - (insert "\n"))) - -(defun debian-changelog-comaintainer () - "If the last maintainer is different from the current one, create a -co-maintained changelog entry." - (let ((name (car (debian-changelog-last-maintainer)))) - (unless (string= name debian-changelog-full-name) - (let ((maintainers-found) - (debian-changelog-last-entry-end - (progn (goto-char (point-min)) - (re-search-forward "\n --")))) - (mapc (lambda (x) - (goto-char (point-min)) - (when (search-forward x debian-changelog-last-entry-end t) - (add-to-list 'maintainers-found x))) - (list name debian-changelog-full-name)) - ;; set the co-maintenance if any - (if maintainers-found - ;; co-maintenance, debian-changelog-full-name is not present - (if (and (member name maintainers-found) - (not (member debian-changelog-full-name - maintainers-found))) - (debian-changelog-comaintainer-insert - debian-changelog-full-name "--")) - ;; no co-maintenance - (mapc (lambda (x) - (debian-changelog-comaintainer-insert (car x) (cadr x))) - `((,name " *") (,debian-changelog-full-name "--")))))))) - ;; ;; interactive function to unfinalise changelog (so modifications can be made) ;; @@ -1381,12 +1344,18 @@ can be made." (if (debian-changelog-finalised-p) nil (error "Most recent version is not finalised")) (save-excursion - (debian-changelog-comaintainer) - (goto-char (point-min)) - (re-search-forward "\n --") - (let ((dels (point))) - (end-of-line) - (delete-region dels (point))))) + ;; Save the name of the last maintainer, then cut after " --". + (let ((last-maintainer (car (debian-changelog-last-maintainer)))) + (beginning-of-line) + (delete-region (+ 3 (point)) (point-at-eol)) + (unless (or (string= last-maintainer debian-changelog-full-name) + (search-backward debian-changelog-full-name nil t)) + ;; Mention the new co-maintainer at the end of the entry. + (insert " [ " debian-changelog-full-name " ]\n\n") + (unless (search-backward last-maintainer nil 1) + ;; Mention the last maintainer at the beginning of the entry. + (end-of-line) + (insert "\n [ " last-maintainer " ]")))))) ;; ;; Functions to handle team upload -- 2.39.2
>From ec3237003135916b77325f29d7deeb0fbdeeb41c Mon Sep 17 00:00:00 2001 From: Nicolas Boulenguez <nico...@debian.org> Date: Sat, 19 Oct 2024 10:05:12 +0200 Subject: [PATCH 09/27] Simplify some conditionals --- debian-bts-control.el | 31 +++---- debian-changelog-mode.el | 172 +++++++++++++++++---------------------- debian-control-mode.el | 6 +- 3 files changed, 92 insertions(+), 117 deletions(-) diff --git a/debian-bts-control.el b/debian-bts-control.el index 4d63aa7..b6d9238 100644 --- a/debian-bts-control.el +++ b/debian-bts-control.el @@ -306,17 +306,15 @@ a negative prefix argument turns it off. (if arg (> (prefix-numeric-value arg) 0) (not debian-bts-control-minor-mode))) - (cond - (debian-bts-control-minor-mode ;Setup the minor-mode - (if (fboundp 'font-lock-add-keywords) - (font-lock-add-keywords nil debian-bts-control-font-lock-keywords t)) - ))) + (if (and debian-bts-control-minor-mode ; Setup the minor-mode + (fboundp 'font-lock-add-keywords)) + (font-lock-add-keywords nil debian-bts-control-font-lock-keywords t))) ;; Install ourselves: -(or (assq 'debian-bts-control-minor-mode minor-mode-alist) +(unless (assq 'debian-bts-control-minor-mode minor-mode-alist) (setq minor-mode-alist (cons '(debian-bts-control-minor-mode " DBugC") minor-mode-alist))) -(or (assq 'debian-bts-control-minor-mode minor-mode-map-alist) +(unless (assq 'debian-bts-control-minor-mode minor-mode-map-alist) (setq minor-mode-map-alist (cons (cons 'debian-bts-control-minor-mode debian-bts-control-minor-mode-map) @@ -339,17 +337,14 @@ a negative prefix argument turns it off. (defun debian-bts-control-prompt (prompt &optional number) "Prompt for bug number using sensible default if found." - (let ((default-number number)) - (unless default-number - (save-excursion - (goto-char (point-min)) - (if (re-search-forward (concat "\\([0-9]+\\)@" debian-bts-emaildomain) - (mail-header-end) t) - (setq default-number (match-string-no-properties 1))))) - (if default-number - (read-string (format "%s [%s]: " prompt default-number) - nil nil default-number) - (read-string (format "%s: " prompt))))) + (unless number + (save-excursion + (goto-char (point-min)) + (if (re-search-forward (concat "\\([0-9]+\\)@" debian-bts-emaildomain) + (mail-header-end) t) + (setq number (match-string-no-properties 1))))) + (read-string (format (if number "%s [%s]: " "%s: ") prompt number) + nil nil number)) ;;;###autoload (defun debian-bts-control (action &optional arg) diff --git a/debian-changelog-mode.el b/debian-changelog-mode.el index e98ac7a..408f5f4 100644 --- a/debian-changelog-mode.el +++ b/debian-changelog-mode.el @@ -607,9 +607,8 @@ STRING should be given if the last search was by `string-match' on STRING." (defun debian-changelog-local-variables-maybe-remove () "Ask to remove local variables block if buffer not read-only." (interactive) - (if (or debian-changelog-local-variables-maybe-remove-done - buffer-read-only) - nil + (unless (or debian-changelog-local-variables-maybe-remove-done + buffer-read-only) (setq debian-changelog-local-variables-maybe-remove-done t) (if (debian-changelog-local-variables-exists-p) (save-excursion @@ -889,8 +888,7 @@ for the debian/changelog file to add the entry to." (goto-char (point-min)) (re-search-forward "\n --") (backward-char 5) - (if (prog1 (looking-at "\n") (forward-char 1)) - nil + (unless (prog1 (looking-at "\n") (forward-char 1)) (insert "\n")) (insert " * ") (save-excursion (insert "\n"))) @@ -926,10 +924,11 @@ for the debian/changelog file to add the entry to." (let ((action (capitalize (read-string "Most recent version is finalised, [u]nfinalize or [a]dd new version? ")))) - (if (not (string-match "^[uU]" action)) - (debian-changelog-add-version) - (debian-changelog-unfinalise-last-version) - (debian-changelog-add-entry-plain))) + (if (string-match "^[uU]" action) + (progn + (debian-changelog-unfinalise-last-version) + (debian-changelog-add-entry-plain)) + (debian-changelog-add-version))) (debian-changelog-add-entry-plain)) (insert filename ": ")) @@ -948,24 +947,22 @@ for the debian/changelog file to add the entry to." (defun debian-changelog-close-bug (bug-number) "Add a new change entry to close a BUG-NUMBER." (interactive - (progn - (if (eq (debian-changelog-finalised-p) t) - (error (substitute-command-keys "most recent version has been finalised - use \\[debian-changelog-unfinalise-last-version] or \\[debian-changelog-add-version]"))) + (if (eq (debian-changelog-finalised-p) t) + (error (substitute-command-keys "most recent version has been finalised - use \\[debian-changelog-unfinalise-last-version] or \\[debian-changelog-add-version]")) (list (completing-read "Bug number to close: " debian-bug-open-alist nil nil)))) - (if (not (string-match "^[0-9]+$" bug-number)) - (error "The bug number should consists of only digits")) + (unless (string-match "^[0-9]+$" bug-number) + (error "The bug number should consists of only digits")) (debian-changelog-add-entry) - (cond - ((and debian-bug-open-alist - (assoc bug-number debian-bug-open-alist)) - (insert (cadr (assoc bug-number debian-bug-open-alist))) - (fill-paragraph nil)) - (t + (if (and debian-bug-open-alist + (assoc bug-number debian-bug-open-alist)) + (progn + (insert (cadr (assoc bug-number debian-bug-open-alist))) + (fill-paragraph nil)) (save-excursion (insert " " (debian-changelog--rris "%s" bug-number debian-changelog-close-bug-statement))) - (message "Enter a brief description of what was done here.")))) + (message "Enter a brief description of what was done here."))) ;; ;; interactive functions to set urgency and distribution @@ -980,8 +977,8 @@ for the debian/changelog file to add the entry to." "Select distribution: " debian-changelog-allowed-distributions nil t nil))) - (if (not (equal str "")) - (debian-changelog-setdistribution str)))) + (unless (equal str "") + (debian-changelog-setdistribution str)))) (defun debian-changelog-urgency () "Delete the current urgency and prompt for a new one." @@ -992,8 +989,8 @@ for the debian/changelog file to add the entry to." "Select urgency: " '(("low" 1) ("medium" 2) ("high" 3) ("critical" 4)) nil t nil))) - (if (not (equal str "")) - (debian-changelog-seturgency str)))) + (unless (equal str "") + (debian-changelog-seturgency str)))) ;; ;; internal function: test if changelog has been finalized or not @@ -1007,22 +1004,18 @@ for the debian/changelog file to add the entry to." \(ie, has a maintainer name and email address and a release date." (save-excursion (goto-char (point-min)) - (or (re-search-forward "\n\\S-" (point-max) t) - (goto-char (point-max))) + (unless (re-search-forward "\n\\S-" (point-max) t) + (goto-char (point-max))) (if (re-search-backward "\n --" (point-min) t) (forward-char 4) ;;(beginning-of-line) ;;(insert " --\n\n") ;;(backward-char 2) ) - (cond - ((looking-at - "[ \n]+\\S-[^\n\t]+\\S- <[^ \t\n<>]+> +\\S-[^\t\n]+\\S-[ \t]*\n") - t) - ((looking-at "[ \t]*\n") - nil) - (t - "finalisation line has bad format (not ` -- maintainer <email> date')")))) + (or (looking-at + "[ \n]+\\S-[^\n\t]+\\S- <[^ \t\n<>]+> +\\S-[^\t\n]+\\S-[ \t]*\n") + (and (not (looking-at "[ \t]*\n")) + "finalisation line has bad format (not ` -- maintainer <email> date')")))) ;; ;; interactive functions to add new versions (whole new sections) ;; to changelog. @@ -1040,10 +1033,10 @@ for the debian/changelog file to add the entry to." "Add a new version section to a debian-style changelog file. If file is empty, create initial entry." (interactive) - (if (not (= (point-min)(point-max))) - (let ((f (debian-changelog-finalised-p))) - (and (stringp f) (error f)) - (or f (error "Previous version not yet finalised")))) + (unless (= (point-min)(point-max)) + (let ((f (debian-changelog-finalised-p))) + (if (stringp f) (error f)) + (unless f (error "Previous version not yet finalised")))) (goto-char (point-min)) (let ((pkg-name (or (debian-changelog-suggest-package-name) (read-string "Package name: "))) @@ -1078,12 +1071,8 @@ If file is empty, create initial entry." " *debian-changelog-mode-temp-buffer*"))) (set-buffer tmp-buffer) (unwind-protect - (progn - (let ((mesg (call-process "dpkg" nil '(t nil) nil - "--compare-versions" vsn1 "gt" vsn2))) - (if (equal mesg 0) - t - nil))) + (equal 0 (call-process "dpkg" nil '(t nil) nil + "--compare-versions" vsn1 "gt" vsn2)) (kill-buffer tmp-buffer))))) (defun debian-changelog-suggest-version () @@ -1129,8 +1118,7 @@ If file is empty, create initial entry." ;;; match 4: debian version number exists if matched ;;; match 5: debian version number ;;; match 6: rest of string - (if (not findmatch) - nil + (when findmatch (let ((pkg-name (match-string-no-properties 1)) (epoch (or (match-string-no-properties 2) "")) (upstream-vsn (match-string-no-properties 3)) @@ -1269,8 +1257,8 @@ If file is empty, create initial entry." "Finalise, if necessary, and then save a debian-style changelog file." (interactive) (let ((f (debian-changelog-finalised-p))) - (and (stringp f) (error f)) - (or f (debian-changelog-finalise-last-version))) + (if (stringp f) (error f)) + (unless f (debian-changelog-finalise-last-version))) (save-buffer)) ;; @@ -1294,8 +1282,8 @@ Use UTC if `debian-changelog-date-utc-flag' is non-nil." (defun debian-changelog-finalise-last-version () "Finalise maintainer's name and email and release date." (interactive) - (and (debian-changelog-finalised-p) - (debian-changelog-unfinalise-last-version)) + (if (debian-changelog-finalised-p) + (debian-changelog-unfinalise-last-version)) (if debian-changelog-local-variables-maybe-remove (debian-changelog-local-variables-maybe-remove)) (save-excursion @@ -1312,22 +1300,20 @@ a list in the form (NAME EMAIL). The point is left after the > character closing the email part of the signature line at the end of the last entry." (goto-char (point-min)) - (let ((string - (if (re-search-forward "^ -- \\(.*\\)>" nil t) - (if (fboundp 'match-string-no-properties) - (match-string-no-properties 1) - (match-string 1)) - (error "Maintainer name and email not found.")))) + (unless (re-search-forward "^ -- \\(.*\\)>" nil t) + (error "Maintainer name and email not found.")) + (let ((string (if (fboundp 'match-string-no-properties) + (match-string-no-properties 1) + (match-string 1)))) (split-string string " <"))) (defun debian-changelog-web-developer-page () "Browse the BTS for the last upload maintainer's developer summary page." (interactive) - (if (not (featurep 'browse-url)) - (progn - (load "browse-url" nil t) - (if (not (featurep 'browse-url)) - (error "This function requires the browse-url elisp package")))) + (unless (featurep 'browse-url) + (load "browse-url" nil t) + (unless (featurep 'browse-url) + (error "This function requires the browse-url elisp package"))) (let ((email (cadr (save-excursion (debian-changelog-last-maintainer))))) (browse-url (concat "http://qa.debian.org/developer.php?login=" email)) (message "Looking up developer summary page for %s via browse-url" email))) @@ -1341,7 +1327,7 @@ signature line at the end of the last entry." Removes maintainer's name, email address and release date so that new entries can be made." (interactive) - (if (debian-changelog-finalised-p) nil + (unless (debian-changelog-finalised-p) (error "Most recent version is not finalised")) (save-excursion ;; Save the name of the last maintainer, then cut after " --". @@ -1534,20 +1520,17 @@ interface to set it, or simply set the variable (setq local-abbrev-table text-mode-abbrev-table) (set-syntax-table text-mode-syntax-table) (debian-bug-bug-menu-init debian-changelog-mode-map) - (cond - (debian-changelog-use-imenu + (when debian-changelog-use-imenu (require 'imenu) (setq imenu-create-index-function 'imenu--create-debian-changelog-index) - (if (or window-system - (fboundp 'tmm-menubar)) - (progn - (imenu-add-to-menubar "History") - ;; (imenu-update-menubar) - )))) - (cond - (debian-changelog-highlight-mouse-t + (when (or window-system + (fboundp 'tmm-menubar)) + (imenu-add-to-menubar "History") + ;; (imenu-update-menubar) + )) + (when debian-changelog-highlight-mouse-t (debian-changelog-setup-highlight-mouse-keymap) - (debian-changelog-highlight-mouse))) + (debian-changelog-highlight-mouse)) (run-mode-hooks 'debian-changelog-mode-hook)) ;;(easy-menu-add debian-changelog-menu)) @@ -1786,14 +1769,13 @@ match 1 -> package name ;; ((and debian-changelog-use-imenu ;; (or window-system (fboundp 'tmm-menubar))) ;; (imenu-add-to-menubar "History"))) - (cond - (debian-changelog-is-XEmacs - (set-keymap-name m 'debian-changelog-mouse-keymap) - (define-key m [button3] - 'debian-bug-web-this-bug-under-mouse)) - (t + (if debian-changelog-is-XEmacs + (progn + (set-keymap-name m 'debian-changelog-mouse-keymap) + (define-key m [button3] + 'debian-bug-web-this-bug-under-mouse)) (define-key m [down-mouse-3] - 'debian-bug-web-this-bug-under-mouse))) + 'debian-bug-web-this-bug-under-mouse)) m))) (defvar debian-changelog-ext-list nil @@ -1837,21 +1819,20 @@ Also set keymap." nil t) (setq s (match-beginning 2)) (setq e (match-end 2)) - (cond - ((string-match "XEmacs\\|Lucid" emacs-version) - (setq extent (make-extent s e)) - (setq debian-changelog-ext-list - (cons extent debian-changelog-ext-list)) - (set-extent-property extent 'highlight t) - (set-extent-property extent 'start-open t) - ;; (set-extent-property extent 'balloon-help 'debian-changelog-label-help) - ;; (set-extent-property extent 'help-echo 'debian-changelog-label-help-echo) - (set-extent-property extent 'keymap debian-changelog-mouse-keymap)) - (t + (if (string-match "XEmacs\\|Lucid" emacs-version) + (progn + (setq extent (make-extent s e)) + (setq debian-changelog-ext-list + (cons extent debian-changelog-ext-list)) + (set-extent-property extent 'highlight t) + (set-extent-property extent 'start-open t) + ;; (set-extent-property extent 'balloon-help 'debian-changelog-label-help) + ;; (set-extent-property extent 'help-echo 'debian-changelog-label-help-echo) + (set-extent-property extent 'keymap debian-changelog-mouse-keymap)) (let ((before-change-functions) (after-change-functions)) (put-text-property s e 'local-map debian-changelog-mouse-keymap) - (put-text-property s e 'mouse-face 'highlight))))) + (put-text-property s e 'mouse-face 'highlight)))) (set-buffer-modified-p modified)))) ;;;------------- @@ -1928,8 +1909,7 @@ Also set keymap." (push (cons (match-string-no-properties 4) marker) index-alist))))) ;;; (message "Scanning changelog history... done.") - (cond - (index-bug-alist + (when index-bug-alist (push (cons "Closed Bugs (chrono)" index-bug-alist) index-alist) @@ -1937,7 +1917,7 @@ Also set keymap." (push (cons "Closed Bugs (sorted)" (sort index-bugsorted-alist 'debian-changelog-imenu-sort)) - index-alist))) + index-alist)) index-alist)))) (defun debian-changelog-imenu-sort (el1 el2) diff --git a/debian-control-mode.el b/debian-control-mode.el index 7533d7d..6c8afdc 100644 --- a/debian-control-mode.el +++ b/debian-control-mode.el @@ -430,7 +430,7 @@ It should be immediately followed by a non-slash character.") (beginning-of-line) (looking-at "^\\(Package\\|Source\\)")) (re-search-backward "^\\(Package\\|Source\\)" nil t)) - (not (not (string-match "Package" (match-string 0)))) + (string-match "Package" (match-string 0)) (error "Couldn't find Package or Source field"))) (fields (if binary-p debian-control-binary-fields @@ -536,10 +536,10 @@ text file." "Find-file a possibly compressed FILE" (require 'jka-compr) (let ((installed (jka-compr-installed-p))) - (if (not installed) + (unless installed (auto-compression-mode t)) (find-file file) - (if (not installed) + (unless installed (auto-compression-mode -1)))) (defun debian-control-mode-bugs-mouse-click (event) -- 2.39.2
>From e19fea178fefd1e57f8642011a361ed2b04da682 Mon Sep 17 00:00:00 2001 From: Nicolas Boulenguez <nico...@debian.org> Date: Sat, 19 Oct 2024 10:31:35 +0200 Subject: [PATCH 10/27] Simplify debian-changelog-setdistribution --- debian-changelog-mode.el | 50 +++++++++++++++++----------------------- 1 file changed, 21 insertions(+), 29 deletions(-) diff --git a/debian-changelog-mode.el b/debian-changelog-mode.el index 408f5f4..afc4ba2 100644 --- a/debian-changelog-mode.el +++ b/debian-changelog-mode.el @@ -683,41 +683,33 @@ STRING should be given if the last search was by `string-match' on STRING." (defun debian-changelog-getdistribution () (debian-changelog-getheadervalue ") \\(.*\\)\\;")) (defvar last-nonmenu-event) -(defun debian-changelog-setdistribution (val) - (if (not (string-match "^.*security" val)) - (debian-changelog-setheadervalue ") \\(.*\\)\\;" val) - (cond - ((or (and (fboundp 'should-use-dialog-box-p) - (should-use-dialog-box-p)) - (and window-system - (equal last-nonmenu-event '(menu-bar)) - use-dialog-box)) - (if (y-or-n-p - (concat - "Warning, although the {oldstable,stable,testing}-security +(defvar debian-changelog-setdistribution-question + "Warning, although the {oldstable,stable,testing}-security distribution exists it should not be used unless you are a member of the security team. Please don't upload to it if you are not 150% sure that your package is suitable. In case of doubt, please send the files to t...@security.debian.org via mail instead. -Upload to " val " anyway?")) - (debian-changelog-setheadervalue ") \\(.*\\)\\;" val))) - (t - (let ((window-config (current-window-configuration))) - (with-output-to-temp-buffer "*Help*" - (princ (concat - "Warning, although the {oldstable,stable,testing}-security -distribution exists it should not be used unless you are a -member of the security team. Please don't upload to it if you -are not 150% sure that your package is suitable. In case of -doubt, please send the files to t...@security.debian.org via -mail instead. - -Upload to " val " anyway?"))) - (if (y-or-n-p (format "Upload to %s anyway? " val)) - (debian-changelog-setheadervalue ") \\(.*\\)\\;" val)) - (set-window-configuration window-config)))))) +Upload to %s anyway?") +(defun debian-changelog-setdistribution (val) + (cond + ((not (string-match "^.*security" val)) + (debian-changelog-setheadervalue ") \\(.*\\)\\;" val)) + ((or (and (fboundp 'should-use-dialog-box-p) + (should-use-dialog-box-p)) + (and window-system + (equal last-nonmenu-event '(menu-bar)) + use-dialog-box)) + (if (y-or-n-p (format debian-changelog-setdistribution-question val)) + (debian-changelog-setheadervalue ") \\(.*\\)\\;" val))) + (t + (let ((window-config (current-window-configuration))) + (with-output-to-temp-buffer "*Help*" + (princ (format debian-changelog-setdistribution-question val))) + (if (y-or-n-p (format "Upload to %s anyway? " val)) + (debian-changelog-setheadervalue ") \\(.*\\)\\;" val)) + (set-window-configuration window-config))))) (defun debian-changelog--get-all-code-names () "Returns a list of all code names from supported distributions." -- 2.39.2
>From 9fca71d32585cedb97f78522aec9be517d5d05d3 Mon Sep 17 00:00:00 2001 From: Nicolas Boulenguez <nico...@debian.org> Date: Sat, 19 Oct 2024 10:45:33 +0200 Subject: [PATCH 11/27] Simplify debian-changelog-add-entry-file --- debian-changelog-mode.el | 31 ++++++++++++------------------- 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/debian-changelog-mode.el b/debian-changelog-mode.el index afc4ba2..9771c75 100644 --- a/debian-changelog-mode.el +++ b/debian-changelog-mode.el @@ -887,26 +887,19 @@ for the debian/changelog file to add the entry to." (defun debian-changelog-add-entry-file () "Add an entry for current file in debian/changelog." - (let* ((this-file (buffer-file-name)) - (directory (if (not this-file) - (error "This buffer has no file associated to it") - (directory-file-name (file-name-directory this-file)))) + (let* ((this-file (or (buffer-file-name) + (error "This buffer has no file associated to it"))) + (directory (directory-file-name (file-name-directory this-file))) (filename (file-name-nondirectory this-file)) - (success)) - (while directory - (let ((changelog (expand-file-name "debian/changelog" directory))) - (cond - ((file-readable-p changelog) - (debian-changelog-add-entry-file-specified changelog filename) - (setq directory nil - success t)) - (t - (if (not (string-match "\\(.*\\)/\\([^/]+\\)$" directory)) - (setq directory nil) - (setq filename (concat (match-string 2 directory) "/" filename) - directory (match-string 1 directory))))))) - (if (not success) - (error "debian directory not found")))) + changelog) + (while (progn + (setq changelog (expand-file-name "debian/changelog" directory)) + (not (file-readable-p changelog))) + (unless (string-match "\\(.*\\)/\\([^/]+\\)$" directory) + (error "debian directory not found")) + (setq filename (concat (match-string 2 directory) "/" filename) + directory (match-string 1 directory))) + (debian-changelog-add-entry-file-specified changelog filename))) (defun debian-changelog-add-entry-file-specified (changelog filename) "Insert an entry in debian CHANGELOG file for FILENAME." -- 2.39.2
>From 9825abe69677e2c1373023d6e5d83b45ce94d47b Mon Sep 17 00:00:00 2001 From: Nicolas Boulenguez <nico...@debian.org> Date: Sat, 19 Oct 2024 11:16:35 +0200 Subject: [PATCH 12/27] Simplify debian-changelog-fontify-version --- debian-changelog-mode.el | 40 +++++++++++++++++----------------------- 1 file changed, 17 insertions(+), 23 deletions(-) diff --git a/debian-changelog-mode.el b/debian-changelog-mode.el index 9771c75..7bcc705 100644 --- a/debian-changelog-mode.el +++ b/debian-changelog-mode.el @@ -1631,34 +1631,28 @@ match 1 -> package name ;; match 3: upstream version number ;; match 4: debian version number exists if matched ;; match 5: debian version number - (cond - ((not (match-string 4)) - ;; No Debian version number -> Debian native package - (store-match-data + (store-match-data + (cond + ((not (match-string 4)) + ;; No Debian version number -> Debian native package (list (match-beginning 1)(match-end 3) (match-beginning 1)(match-end 1) (match-beginning 3)(match-end 3) nil nil - nil nil))) - ((match-string 4) + nil nil)) ;; Debian version number -> Let's see if NMU... - (let* ((deb-vsn (match-string 5)) - (is-NMU (save-match-data (string-match "\\." deb-vsn)))) - (cond - (is-NMU - (store-match-data - (list (match-beginning 1)(match-end 5) - (match-beginning 1)(match-end 1) - nil nil - nil nil - (match-beginning 3)(match-end 5)))) - (t - (store-match-data - (list (match-beginning 1)(match-end 5) - (match-beginning 1)(match-end 1) - nil nil - (match-beginning 3)(match-end 5) - nil nil))))))) + ((save-match-data (string-match "\\." (match-string 5))) + (list (match-beginning 1)(match-end 5) + (match-beginning 1)(match-end 1) + nil nil + nil nil + (match-beginning 3)(match-end 5))) + (t + (list (match-beginning 1)(match-end 5) + (match-beginning 1)(match-end 1) + nil nil + (match-beginning 3)(match-end 5) + nil nil)))) t)) (defun debian-changelog-fontify-urgency-crit (limit) -- 2.39.2
>From b5ef19ef5f08d40df51112b2ad8eec789321bf00 Mon Sep 17 00:00:00 2001 From: Nicolas Boulenguez <nico...@debian.org> Date: Fri, 18 Oct 2024 18:32:19 +0200 Subject: [PATCH 13/27] Simplify debian-changelog-imenu-prev-index-position-function --- debian-changelog-mode.el | 56 +++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 33 deletions(-) diff --git a/debian-changelog-mode.el b/debian-changelog-mode.el index 7bcc705..0b7fae1 100644 --- a/debian-changelog-mode.el +++ b/debian-changelog-mode.el @@ -1827,39 +1827,29 @@ Also set keymap." (make-variable-buffer-local 'debian-changelog-imenu-doing-closebug) (defun debian-changelog-imenu-prev-index-position-function () - (cond - (debian-changelog-imenu-doing-closebug - (if (not (posix-search-backward - "\\(closes:\\)\\|[^0-9]\\([0-9]+\\)" nil t)) - nil ; No match - ;; match 1 -> "closes:" - ;; match 2 -> a bug number - (cond - ((match-string 1) - (setq debian-changelog-imenu-doing-closebug nil) - (debian-changelog-imenu-prev-index-position-function)) - (t - ;; Return the bug number match - t)))) - (t - (if (not (re-search-backward - "\\(closes: *\\(bug\\)?#? *[0-9]+\\)\\|\\(^\\sw.* (\\(.+\\))\\)" - nil t)) - nil ; No match - ;; match 1 -> "closes:" - ;; match 4 -> a version number - (cond - ((match-string 1) - (setq debian-changelog-imenu-doing-closebug t) - (forward-char -1) - (re-search-forward - "\\(closes:\\) *\\(\\(bug\\)?#? *[0-9]+\\(, *\\(bug\\)?#? *[0-9]+\\)*\\)" - nil t) - (forward-char 1) - (debian-changelog-imenu-prev-index-position-function)) - (t - ;; Return the version number match - t)))))) + (if debian-changelog-imenu-doing-closebug + (and (posix-search-backward "\\(closes:\\)\\|[^0-9]\\([0-9]+\\)" nil t) + ;; match 1 -> "closes:" + ;; match 2 -> a bug number + (or (not (match-string 1)) ;; Return the bug number match + + (progn + (setq debian-changelog-imenu-doing-closebug nil) + (debian-changelog-imenu-prev-index-position-function)))) + (and (re-search-backward + "\\(closes: *\\(bug\\)?#? *[0-9]+\\)\\|\\(^\\sw.* (\\(.+\\))\\)" + nil t) + ;; match 1 -> "closes:" + ;; match 4 -> a version number + (or (not (match-string 1)) ;; Return the version number match + (progn + (setq debian-changelog-imenu-doing-closebug t) + (forward-char -1) + (re-search-forward + "\\(closes:\\) *\\(\\(bug\\)?#? *[0-9]+\\(, *\\(bug\\)?#? *[0-9]+\\)*\\)" + nil t) + (forward-char 1) + (debian-changelog-imenu-prev-index-position-function)))))) (defvar debian-changelog-imenu-counter nil "Debian-changelog-mode internal variable for imenu support.") -- 2.39.2
>From b07d76a7bf54374d31cf08668954cbd7feff8068 Mon Sep 17 00:00:00 2001 From: Nicolas Boulenguez <nico...@debian.org> Date: Sat, 12 Oct 2024 15:15:09 +0200 Subject: [PATCH 14/27] Shorten some constructs with push --- debian-bts-control.el | 9 +++------ debian-changelog-mode.el | 6 ++---- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/debian-bts-control.el b/debian-bts-control.el index b6d9238..a701428 100644 --- a/debian-bts-control.el +++ b/debian-bts-control.el @@ -312,13 +312,10 @@ a negative prefix argument turns it off. ;; Install ourselves: (unless (assq 'debian-bts-control-minor-mode minor-mode-alist) - (setq minor-mode-alist - (cons '(debian-bts-control-minor-mode " DBugC") minor-mode-alist))) + (push '(debian-bts-control-minor-mode " DBugC") minor-mode-alist)) (unless (assq 'debian-bts-control-minor-mode minor-mode-map-alist) - (setq minor-mode-map-alist - (cons (cons 'debian-bts-control-minor-mode - debian-bts-control-minor-mode-map) - minor-mode-map-alist))) + (push (cons 'debian-bts-control-minor-mode debian-bts-control-minor-mode-map) + minor-mode-map-alist)) (defvar debian-bts-control-alist '(("reassign") ("severity") ("reopen") ("submitter") ("forwarded") diff --git a/debian-changelog-mode.el b/debian-changelog-mode.el index 0b7fae1..3481749 100644 --- a/debian-changelog-mode.el +++ b/debian-changelog-mode.el @@ -1779,8 +1779,7 @@ Also set keymap." (and (<= (point-min)(extent-start-position extent)) (>= (point-max)(extent-end-position extent)))) (delete-extent extent) - (setq debian-changelog-ext-list - (cons extent debian-changelog-ext-list))) + (push extent debian-changelog-ext-list)) (setq local-extent-list (cdr local-extent-list))) ;; Remove properties for regular emacs ;; FIXME This detroys all mouse-faces and local-maps! @@ -1801,8 +1800,7 @@ Also set keymap." (if (string-match "XEmacs\\|Lucid" emacs-version) (progn (setq extent (make-extent s e)) - (setq debian-changelog-ext-list - (cons extent debian-changelog-ext-list)) + (push extent debian-changelog-ext-list) (set-extent-property extent 'highlight t) (set-extent-property extent 'start-open t) ;; (set-extent-property extent 'balloon-help 'debian-changelog-label-help) -- 2.39.2
>From 28f3a0be5b096ac748c107fb5e02cd2fdc65e8a2 Mon Sep 17 00:00:00 2001 From: Nicolas Boulenguez <nico...@debian.org> Date: Sat, 12 Oct 2024 15:18:05 +0200 Subject: [PATCH 15/27] Shorten some constructs with dolist --- debian-changelog-mode.el | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/debian-changelog-mode.el b/debian-changelog-mode.el index 3481749..ae0d3f8 100644 --- a/debian-changelog-mode.el +++ b/debian-changelog-mode.el @@ -1767,20 +1767,18 @@ match 1 -> package name Also set keymap." (interactive) (save-excursion - (let ((s)(e)(extent)(local-extent-list debian-changelog-ext-list) + (let ((s)(e)(local-extent-list debian-changelog-ext-list) (inhibit-read-only t) (modified (buffer-modified-p))) ;put-text-property changing this? ;; Remove the mouse face properties first. (setq debian-changelog-ext-list nil) ;Reconstructed below... (if (string-match "XEmacs\\|Lucid" emacs-version) - (while local-extent-list - (setq extent (car local-extent-list)) + (dolist (extent local-extent-list) (if (or (extent-detached-p extent) (and (<= (point-min)(extent-start-position extent)) (>= (point-max)(extent-end-position extent)))) (delete-extent extent) - (push extent debian-changelog-ext-list)) - (setq local-extent-list (cdr local-extent-list))) + (push extent debian-changelog-ext-list))) ;; Remove properties for regular emacs ;; FIXME This detroys all mouse-faces and local-maps! (let ((before-change-functions) (after-change-functions)) -- 2.39.2
>From cdb024248df3a152e38b794d42af9e7b6c4a9ab7 Mon Sep 17 00:00:00 2001 From: Nicolas Boulenguez <nico...@debian.org> Date: Sat, 12 Oct 2024 15:28:47 +0200 Subject: [PATCH 16/27] Simplify (list 'a 'b) to '(a b) --- debian-changelog-mode.el | 52 ++++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/debian-changelog-mode.el b/debian-changelog-mode.el index ae0d3f8..4ef8c95 100644 --- a/debian-changelog-mode.el +++ b/debian-changelog-mode.el @@ -516,7 +516,7 @@ the bug number." :options '(turn-on-auto-fill flyspell-mode)) (defcustom debian-changelog-add-version-hook - (list 'debian-changelog-add-new-upstream-release) + '(debian-changelog-add-new-upstream-release) "Hooks run just before inserting the signature separator \"--\" in a new version in debian/changelog." :group 'debian-changelog @@ -541,7 +541,7 @@ Pass ARGS to `replace-regexp-in-string' (GNU Emacs) or to ;; and arguments are in different order. ;; Patch from Rafael Laboissiere <raf...@debian.org> ;; Closes: #476271 - (apply 'replace-in-string (list (nth 2 args) (nth 0 args) (nth 1 args)))) + (replace-in-string (nth 2 args) (nth 0 args) (nth 1 args))) ;; Emacs: (apply 'replace-regexp-in-string args))) @@ -1564,36 +1564,36 @@ interface to set it, or simply set the variable ;; this is somewhat limiting; I may consider adding my own faces later. (defvar debian-changelog-font-lock-keywords-1 - (list - ;; package name line: pkg (1.0-1) unstable; urgency=medium - '(debian-changelog-fontify-version + '( + ;; package name line: pkg (1.0-1) unstable; urgency=medium + (debian-changelog-fontify-version (1 font-lock-function-name-face) (2 font-lock-type-face nil t) (3 font-lock-string-face nil t) (4 debian-changelog-warning-face nil t)) - '(debian-changelog-fontify-stable . debian-changelog-warning-face) - '(debian-changelog-fontify-backports . debian-changelog-warning-face) - '(debian-changelog-fontify-frozen . font-lock-type-face) - '(debian-changelog-fontify-unstable . font-lock-string-face) - '(debian-changelog-fontify-experimental . debian-changelog-warning-face) - '(debian-changelog-fontify-unreleased . debian-changelog-warning-face) - '(debian-changelog-fontify-urgency-crit . debian-changelog-warning-face) - '(debian-changelog-fontify-urgency-high . debian-changelog-warning-face) - '(debian-changelog-fontify-urgency-med . font-lock-type-face) - '(debian-changelog-fontify-urgency-low . font-lock-string-face) - '(debian-changelog-fontify-known-releases . font-lock-string-face) + (debian-changelog-fontify-stable . debian-changelog-warning-face) + (debian-changelog-fontify-backports . debian-changelog-warning-face) + (debian-changelog-fontify-frozen . font-lock-type-face) + (debian-changelog-fontify-unstable . font-lock-string-face) + (debian-changelog-fontify-experimental . debian-changelog-warning-face) + (debian-changelog-fontify-unreleased . debian-changelog-warning-face) + (debian-changelog-fontify-urgency-crit . debian-changelog-warning-face) + (debian-changelog-fontify-urgency-high . debian-changelog-warning-face) + (debian-changelog-fontify-urgency-med . font-lock-type-face) + (debian-changelog-fontify-urgency-low . font-lock-string-face) + (debian-changelog-fontify-known-releases . font-lock-string-face) ;; bug closers - '(;"\\(closes:\\) *\\(\\(bug\\)?#? *[0-9]+\\(, *\\(bug\\)?#? *[0-9]+\\)*\\)" - ;; Process lines that continue on multiple lines - Fred Bothamy - "\\(closes:\\)[ \t\n]*\\(\\(bug\\)?#? *[0-9]+\\(,[ \t\n]*\\(bug\\)?#? *[0-9]+\\)*\\)" - (1 font-lock-keyword-face) - (2 debian-changelog-warning-face)) - '("^\t.*$" . debian-changelog-warning-face) + (;"\\(closes:\\) *\\(\\(bug\\)?#? *[0-9]+\\(, *\\(bug\\)?#? *[0-9]+\\)*\\)" + ;; Process lines that continue on multiple lines - Fred Bothamy + "\\(closes:\\)[ \t\n]*\\(\\(bug\\)?#? *[0-9]+\\(,[ \t\n]*\\(bug\\)?#? *[0-9]+\\)*\\)" + (1 font-lock-keyword-face) + (2 debian-changelog-warning-face)) + ("^\t.*$" . debian-changelog-warning-face) ;; maintainer line (enforce 2 space exactly between email and date) - '("^ -- \\(.+\\) <\\(.+@.+\\)> \\([^ ].+\\)$" - (1 font-lock-variable-name-face) - (2 font-lock-variable-name-face) - (3 font-lock-string-face))) + ("^ -- \\(.+\\) <\\(.+@.+\\)> \\([^ ].+\\)$" + (1 font-lock-variable-name-face) + (2 font-lock-variable-name-face) + (3 font-lock-string-face))) "First level highlighting for `debian-changelog-mode'.") (defvar debian-changelog-font-lock-keywords-2 -- 2.39.2
>From 6415b675873f97d3c72cce359174cf2c3f470c14 Mon Sep 17 00:00:00 2001 From: Nicolas Boulenguez <nico...@debian.org> Date: Sat, 12 Oct 2024 15:37:40 +0200 Subject: [PATCH 17/27] Use quasiquote to prevent duplicate submenu definitions The emacs and xemacs versions were diverging more than necessary. * one of the best-packaging-practices was wrong * emacs seems to handle :active like xemacs Related: debian-changelog-is-XEmacs is defined twice, with inconsistent definitions --- debian-changelog-mode.el | 172 ++++++++++++++------------------------- 1 file changed, 63 insertions(+), 109 deletions(-) diff --git a/debian-changelog-mode.el b/debian-changelog-mode.el index 4ef8c95..42d80c5 100644 --- a/debian-changelog-mode.el +++ b/debian-changelog-mode.el @@ -749,115 +749,69 @@ Upload to %s anyway?") (not (null (save-match-data (string-match "XEmacs\\|Lucid" emacs-version)))) (= 21 emacs-major-version))) -(cond - (debian-changelog-is-XEmacs - (easy-menu-define - debian-changelog-menu debian-changelog-mode-map "Debian Changelog Mode Menu" - '("Changelog" - ["New Version" debian-changelog-add-version (debian-changelog-finalised-p)] - ["Add Entry" debian-changelog-add-entry - (not (debian-changelog-finalised-p))] - ["Build Open Bug List" debian-changelog-build-open-bug-list] - ["Close Bug" debian-changelog-close-bug - (not (debian-changelog-finalised-p))] - "--" - ("Set Distribution" - ["unstable" (debian-changelog-setdistribution "unstable") t] - ("--") - ["testing" (debian-changelog-setdistribution "testing") t] - ["testing-security" (debian-changelog-setdistribution "testing-security") t] - ("--") - ["stable" (debian-changelog-setdistribution "stable") t] - ["stable-security" (debian-changelog-setdistribution "stable-security") t] - ["stable-proposed-updates" (debian-changelog-setdistribution "stable-proposed-updates") t] - ("--") - ["oldstable-security" (debian-changelog-setdistribution "oldstable-security") t] - ["oldstable-proposed-updates" (debian-changelog-setdistribution "oldstable-proposed-updates") t] - ("--") - ["experimental" (debian-changelog-setdistribution "experimental") t] - ["UNRELEASED" (debian-changelog-setdistribution "UNRELEASED") t]) - ("Set Urgency" - ["low" (debian-changelog-seturgency "low") t] - ["medium" (debian-changelog-seturgency "medium") t] - ["high" (debian-changelog-seturgency "high") t] - ["critical" (debian-changelog-seturgency "critical") t]) - "--" - ["Unfinalise" debian-changelog-unfinalise-last-version - (debian-changelog-finalised-p)] - ["Finalise" debian-changelog-finalise-last-version - (not (debian-changelog-finalised-p))] - ["Finalise+Save" debian-changelog-finalise-and-save - (not (debian-changelog-finalised-p))] - "--" - "Web View" - ["Best Practices" (browse-url "http://www.debian.org/doc/developers-reference/best-pkging-practices.html#bpp-debian-changelog") t] - ["Bugs for This Package" (debian-bug-web-bugs) t] - ["Archived Bugs for This Package" (debian-bug-web-bugs t) t] - ["Bug Number..." (debian-bug-web-bug) t] - ["Package Info" (debian-bug-web-packages) t] - ;; ("Package web pages..." - ;; ["stable" (debian-bug-web-package "stable") t] - ;; ["testing" (debian-bug-web-package "testing") t] - ;; ["unstable" (debian-bug-web-package "unstable") t]) - ["Developer Page for This Package" (debian-bug-web-developer-page) t] - ["Developer Page for This Maintainer" (debian-changelog-web-developer-page) - t] - "--" - ["Customize" (customize-group "debian-changelog") (fboundp 'customize-group)]))) - (t - (easy-menu-define - debian-changelog-menu debian-changelog-mode-map "Debian Changelog Mode Menu" - '("Changelog" - ["New Version" debian-changelog-add-version (debian-changelog-finalised-p)] - ["Add Entry" debian-changelog-add-entry - (not (debian-changelog-finalised-p))] - ["Build Open Bug List" debian-changelog-build-open-bug-list] - ["Close Bug" debian-changelog-close-bug - (not (debian-changelog-finalised-p))] - "--" - ("Set Distribution" :active (not (debian-changelog-finalised-p)) - ["unstable" (debian-changelog-setdistribution "unstable") t] - ("--") - ["testing" (debian-changelog-setdistribution "testing") t] - ["testing-security" (debian-changelog-setdistribution "testing-security") t] - ("--") - ["stable" (debian-changelog-setdistribution "stable") t] - ["stable-security" (debian-changelog-setdistribution "stable-security") t] - ["stable-proposed-updates" (debian-changelog-setdistribution "stable-proposed-updates") t] - ("--") - ["oldstable-security" (debian-changelog-setdistribution "oldstable-security") t] - ["oldstable-proposed-updates" (debian-changelog-setdistribution "oldstable-proposed-updates") t] - ("--") - ["experimental" (debian-changelog-setdistribution "experimental") t] - ["UNRELEASED" (debian-changelog-setdistribution "UNRELEASED") t]) - ("Set Urgency" :active (not (debian-changelog-finalised-p)) - ["low" (debian-changelog-seturgency "low") t] - ["medium" (debian-changelog-seturgency "medium") t] - ["high" (debian-changelog-seturgency "high") t] - ["critical" (debian-changelog-seturgency "critical") t]) - "--" - ["Unfinalise" debian-changelog-unfinalise-last-version - (debian-changelog-finalised-p)] - ["Finalise" debian-changelog-finalise-last-version - (not (debian-changelog-finalised-p))] - ["Finalise+Save" debian-changelog-finalise-and-save - (not (debian-changelog-finalised-p))] - "--" - "Web View" - ["Best Practices" (browse-url "http://www.debian.org/doc/developers-reference/ch-best-pkging-practices.en.html#s-bpp-debian-changelog") t] - ["Bugs for This Package" (debian-bug-web-bugs) t] - ["Archived Bugs for This Package" (debian-bug-web-bugs t) t] - ["Bug Number..." (debian-bug-web-bug) t] - ["Package Info" (debian-bug-web-packages) t] - ("Package web pages..." - ["stable" (debian-bug-web-package "stable") t] - ["testing" (debian-bug-web-package "testing") t] - ["unstable" (debian-bug-web-package "unstable") t]) - ["Developer Page for This Package" (debian-bug-web-developer-page) t] - ["Developer Page for This Maintainer" (debian-changelog-web-developer-page) - t] - "--" - ["Customize" (customize-group "debian-changelog") (fboundp 'customize-group)])))) +(easy-menu-define + debian-changelog-menu debian-changelog-mode-map "Debian Changelog Mode Menu" + `("Changelog" + ["New Version" debian-changelog-add-version (debian-changelog-finalised-p)] + ["Add Entry" debian-changelog-add-entry + (not (debian-changelog-finalised-p))] + ["Build Open Bug List" debian-changelog-build-open-bug-list] + ["Close Bug" debian-changelog-close-bug + (not (debian-changelog-finalised-p))] + "--" + ("Set Distribution" + ,@(unless debian-changelog-is-XEmacs + '(:active (not (debian-changelog-finalised-p)))) + ["unstable" (debian-changelog-setdistribution "unstable") t] + ("--") + ["testing" (debian-changelog-setdistribution "testing") t] + ["testing-security" (debian-changelog-setdistribution "testing-security") t] + ("--") + ["stable" (debian-changelog-setdistribution "stable") t] + ["stable-security" (debian-changelog-setdistribution "stable-security") t] + ["stable-proposed-updates" (debian-changelog-setdistribution "stable-proposed-updates") t] + ("--") + ["oldstable-security" (debian-changelog-setdistribution "oldstable-security") t] + ["oldstable-proposed-updates" (debian-changelog-setdistribution "oldstable-proposed-updates") t] + ("--") + ["experimental" (debian-changelog-setdistribution "experimental") t] + ["UNRELEASED" (debian-changelog-setdistribution "UNRELEASED") t]) + ("Set Urgency" + ,@(unless debian-changelog-is-XEmacs + '(:active (not (debian-changelog-finalised-p)))) + ["low" (debian-changelog-seturgency "low") t] + ["medium" (debian-changelog-seturgency "medium") t] + ["high" (debian-changelog-seturgency "high") t] + ["critical" (debian-changelog-seturgency "critical") t]) + "--" + ["Unfinalise" debian-changelog-unfinalise-last-version + (debian-changelog-finalised-p)] + ["Finalise" debian-changelog-finalise-last-version + (not (debian-changelog-finalised-p))] + ["Finalise+Save" debian-changelog-finalise-and-save + (not (debian-changelog-finalised-p))] + "--" + "Web View" + ["Best Practices" + (browse-url + ,(if debian-changelog-is-XEmacs + "http://www.debian.org/doc/developers-reference/best-pkging-practices.html#bpp-debian-changelog" + "http://www.debian.org/doc/developers-reference/ch-best-pkging-practices.en.html#s-bpp-debian-changelog")) + t] + ["Bugs for This Package" (debian-bug-web-bugs) t] + ["Archived Bugs for This Package" (debian-bug-web-bugs t) t] + ["Bug Number..." (debian-bug-web-bug) t] + ["Package Info" (debian-bug-web-packages) t] + ,@(unless debian-changelog-is-XEmacs + '("Package web pages..." + ["stable" (debian-bug-web-package "stable") t] + ["testing" (debian-bug-web-package "testing") t] + ["unstable" (debian-bug-web-package "unstable") t])) + ["Developer Page for This Package" (debian-bug-web-developer-page) t] + ["Developer Page for This Maintainer" (debian-changelog-web-developer-page) + t] + "--" + ["Customize" (customize-group "debian-changelog") (fboundp 'customize-group)])) ;; ;; interactive function to add a new line to the changelog -- 2.39.2
>From b7d25ea65bdc2d560cfce2df2f6f94870de8e035 Mon Sep 17 00:00:00 2001 From: Nicolas Boulenguez <nico...@debian.org> Date: Fri, 18 Oct 2024 18:26:45 +0200 Subject: [PATCH 18/27] Stop building an a-list for completing-read --- debian-bts-control.el | 15 ++++++++------- debian-changelog-mode.el | 2 +- debian-control-mode.el | 8 +++----- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/debian-bts-control.el b/debian-bts-control.el index a701428..0c9cbe9 100644 --- a/debian-bts-control.el +++ b/debian-bts-control.el @@ -318,11 +318,12 @@ a negative prefix argument turns it off. minor-mode-map-alist)) (defvar debian-bts-control-alist - '(("reassign") ("severity") ("reopen") ("submitter") ("forwarded") - ("notforwarded") ("retitle") ("clone") ("merge") ("unmerge") - ("tags") ("package") ("owner") ("noowner") ("found") - ("notfound") ("fixed") ("notfixed") ("block") ("unblock") ("archive") - ("unarchive") ("affects") ("forcemerge") ("summary")) + ;; The name is historical, this is not an alist. + '("reassign" "severity" "reopen" "submitter" "forwarded" + "notforwarded" "retitle" "clone" "merge" "unmerge" + "tags" "package" "owner" "noowner" "found" + "notfound" "fixed" "notfixed" "block" "unblock" "archive" + "unarchive" "affects" "forcemerge" "summary") "List of available commands at cont...@bugs.debian.org.") (defun debian-bts-bug-number-at-point () @@ -444,7 +445,7 @@ in `debian-bts-control-modes-to-reuse'." number-default)) (sign (completing-read (concat verbose "[ + | - | = ] ") - '(("+") ("-") ("=")) nil nil)) + '("+" "-" "=") nil nil)) (package (completing-read (concat verbose "Package affected: ") (debian-bug-fill-packages-obarray) nil nil))) @@ -745,7 +746,7 @@ in `debian-bts-control-modes-to-reuse'." (concat verbose "Bug number") number-default)) (add (completing-read "+, -, = (default +): " - '(("+") ("-") ("=")) nil t nil nil "+")) + '("+" "-" "=") nil t nil nil "+")) (tag (completing-read "Tag: " debian-bug-alltags-alist nil t))) (insert (format "tags %s %s %s\n" bug-number add tag)))) ((string-equal "close" action) diff --git a/debian-changelog-mode.el b/debian-changelog-mode.el index 42d80c5..ff7472e 100644 --- a/debian-changelog-mode.el +++ b/debian-changelog-mode.el @@ -926,7 +926,7 @@ for the debian/changelog file to add the entry to." (error (substitute-command-keys "most recent version has been finalised - use \\[debian-changelog-unfinalise-last-version] or \\[debian-changelog-add-version]"))) (let ((str (completing-read "Select urgency: " - '(("low" 1) ("medium" 2) ("high" 3) ("critical" 4)) + '("low" "medium" "high" "critical") nil t nil))) (unless (equal str "") (debian-changelog-seturgency str)))) diff --git a/debian-control-mode.el b/debian-control-mode.el index 6c8afdc..4e5d5b6 100644 --- a/debian-control-mode.el +++ b/debian-control-mode.el @@ -439,7 +439,7 @@ It should be immediately followed by a non-slash character.") (list binary-p (completing-read (format "Add %s package field: " (if binary-p "binary" "source")) - (mapcar #'(lambda (x) (cons x nil)) fields))))) + fields)))) (require 'cl-lib) (let ((fields (if binary debian-control-binary-fields @@ -512,8 +512,7 @@ text file." (interactive (list (intern (completing-read "Policy format: " - (mapcar #'(lambda (x) (cons x 0)) - '("html" "text" "checklist")) + '("html" "text" "checklist") nil t)))) (cl-case format (text @@ -570,8 +569,7 @@ text file." (interactive (list (completing-read "View bugs for package: " - (mapcar #'(lambda (x) (cons x 0)) - (debian-control-mode-bug-package-names)) + (debian-control-mode-bug-package-names) nil t))) (browse-url (concat "http://bugs.debian.org/" package))) -- 2.39.2
>From baabe878a4706ce286dd2076283a5716a9174e35 Mon Sep 17 00:00:00 2001 From: Nicolas Boulenguez <nico...@debian.org> Date: Fri, 18 Oct 2024 18:48:10 +0200 Subject: [PATCH 19/27] Trivial simplifications memq already compares with eq. (match-string 0) is either Package or Source, there is no need for a second full regex search. --- debian-bts-control.el | 3 +-- debian-control-mode.el | 9 ++++----- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/debian-bts-control.el b/debian-bts-control.el index 0c9cbe9..f4200ff 100644 --- a/debian-bts-control.el +++ b/debian-bts-control.el @@ -360,8 +360,7 @@ in `debian-bts-control-modes-to-reuse'." (let ((number-default (debian-bts-bug-number-at-point))) (cond ((or arg - (and (car (memq t (mapcar #'(lambda (item) (eq item major-mode)) - debian-bts-control-modes-to-reuse))) + (and (memq major-mode debian-bts-control-modes-to-reuse) (not debian-bts-control-minor-mode))) (debian-bug--set-CC debian-bts-emailaddress (concat diff --git a/debian-control-mode.el b/debian-control-mode.el index 4e5d5b6..5de0013 100644 --- a/debian-control-mode.el +++ b/debian-control-mode.el @@ -430,7 +430,7 @@ It should be immediately followed by a non-slash character.") (beginning-of-line) (looking-at "^\\(Package\\|Source\\)")) (re-search-backward "^\\(Package\\|Source\\)" nil t)) - (string-match "Package" (match-string 0)) + (string-prefix-p "P" (match-string 0)) (error "Couldn't find Package or Source field"))) (fields (if binary-p debian-control-binary-fields @@ -525,9 +525,8 @@ text file." (browse-url (if (file-exists-p "/usr/share/doc/debian-policy/policy.html/index.html") "file:///usr/share/doc/debian-policy/policy.html/index.html" - (prog1 - "http://www.debian.org/doc/debian-policy" - (message "Note: package `debian-policy' not installed, using web version"))))) + (message "Note: package `debian-policy' not installed, using web version") + "http://www.debian.org/doc/debian-policy"))) (t (error "Unknown format %s for policy" format)))) @@ -557,7 +556,7 @@ text file." (while (not (eobp)) (when (looking-at "^\\(Package\\|Source\\):\\s-*\\([-a-zA-Z0-9+.]+?\\)\\s-*$") (push (concat - (if (save-match-data (string-match "Source" (match-string 1))) + (if (string-prefix-p "S" (match-string 1)) "src:" "") (match-string-no-properties 2)) result)) -- 2.39.2
>From e5fc8b642e2fe3578b9ebe9950fcdbe108710ae6 Mon Sep 17 00:00:00 2001 From: Nicolas Boulenguez <nico...@debian.org> Date: Fri, 18 Oct 2024 18:59:52 +0200 Subject: [PATCH 20/27] Simplify debian-changelog-add-version --- debian-changelog-mode.el | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/debian-changelog-mode.el b/debian-changelog-mode.el index ff7472e..14d8380 100644 --- a/debian-changelog-mode.el +++ b/debian-changelog-mode.el @@ -980,12 +980,13 @@ If file is empty, create initial entry." (let ((pkg-name (or (debian-changelog-suggest-package-name) (read-string "Package name: "))) (version (or (debian-changelog-suggest-version) - (read-string "New version (including any revision): ")))) - (if (debian-changelog-experimental-p) - (insert pkg-name " (" version ") experimental; urgency=medium\n\n * ") - (insert pkg-name " (" version ") " (car debian-changelog-allowed-distributions) "; urgency=medium\n\n * ")) - (run-hooks 'debian-changelog-add-version-hook) - (save-excursion (insert "\n\n --\n\n")))) + (read-string "New version (including any revision): "))) + (distribution (if (debian-changelog-experimental-p) + "experimental" + (car debian-changelog-allowed-distributions)))) + (insert pkg-name " (" version ") " distribution "; urgency=medium\n\n * ")) + (run-hooks 'debian-changelog-add-version-hook) + (save-excursion (insert "\n\n --\n\n"))) (defun debian-changelog-experimental-p () ;; Peter S Galbraith, 04 May 2001 -- 2.39.2
>From a4827ddc771a5b51158283f41b5fce8ba90f261a Mon Sep 17 00:00:00 2001 From: Nicolas Boulenguez <nico...@debian.org> Date: Fri, 18 Oct 2024 19:00:50 +0200 Subject: [PATCH 21/27] Simplify debian-changelog-finalised-p --- debian-changelog-mode.el | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/debian-changelog-mode.el b/debian-changelog-mode.el index 14d8380..f725fcf 100644 --- a/debian-changelog-mode.el +++ b/debian-changelog-mode.el @@ -943,10 +943,9 @@ for the debian/changelog file to add the entry to." \(ie, has a maintainer name and email address and a release date." (save-excursion (goto-char (point-min)) - (unless (re-search-forward "\n\\S-" (point-max) t) - (goto-char (point-max))) - (if (re-search-backward "\n --" (point-min) t) - (forward-char 4) + (re-search-forward "\n\\S-" nil 1) + (when (re-search-backward "\n --" nil t) + (forward-char 4) ;;(beginning-of-line) ;;(insert " --\n\n") ;;(backward-char 2) -- 2.39.2
>From 280daff50ac5cea798a1ec0c52dae87e784bd785 Mon Sep 17 00:00:00 2001 From: Nicolas Boulenguez <nico...@debian.org> Date: Fri, 18 Oct 2024 19:02:02 +0200 Subject: [PATCH 22/27] Simplify debian-changelog-highlight-mouse --- debian-changelog-mode.el | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/debian-changelog-mode.el b/debian-changelog-mode.el index f725fcf..ae89fde 100644 --- a/debian-changelog-mode.el +++ b/debian-changelog-mode.el @@ -1721,7 +1721,7 @@ match 1 -> package name Also set keymap." (interactive) (save-excursion - (let ((s)(e)(local-extent-list debian-changelog-ext-list) + (let ((local-extent-list debian-changelog-ext-list) (inhibit-read-only t) (modified (buffer-modified-p))) ;put-text-property changing this? ;; Remove the mouse face properties first. @@ -1747,21 +1747,21 @@ Also set keymap." ;; Same deal as for font-lock - patch from Fred Bothamy. "\\(closes:\\)[ \t\n]*\\(\\(bug\\)?#? *[0-9]+\\(,[ \t\n]*\\(bug\\)?#? *[0-9]+\\)*\\)" nil t) - (setq s (match-beginning 2)) - (setq e (match-end 2)) - (if (string-match "XEmacs\\|Lucid" emacs-version) - (progn - (setq extent (make-extent s e)) - (push extent debian-changelog-ext-list) - (set-extent-property extent 'highlight t) - (set-extent-property extent 'start-open t) - ;; (set-extent-property extent 'balloon-help 'debian-changelog-label-help) - ;; (set-extent-property extent 'help-echo 'debian-changelog-label-help-echo) - (set-extent-property extent 'keymap debian-changelog-mouse-keymap)) - (let ((before-change-functions) (after-change-functions)) - (put-text-property s e 'local-map - debian-changelog-mouse-keymap) - (put-text-property s e 'mouse-face 'highlight)))) + (let ((s (match-beginning 2)) + (e (match-end 2))) + (if (string-match "XEmacs\\|Lucid" emacs-version) + (let ((extent (make-extent s e))) + (push extent debian-changelog-ext-list) + (set-extent-property extent 'highlight t) + (set-extent-property extent 'start-open t) + ;; (set-extent-property extent 'balloon-help 'debian-changelog-label-help) + ;; (set-extent-property extent 'help-echo 'debian-changelog-label-help-echo) + (set-extent-property extent 'keymap debian-changelog-mouse-keymap)) + (let ((before-change-functions) + (after-change-functions)) + (put-text-property s e 'local-map + debian-changelog-mouse-keymap) + (put-text-property s e 'mouse-face 'highlight))))) (set-buffer-modified-p modified)))) ;;;------------- -- 2.39.2
>From 95344a8091f824e6f7c5a846446a31c1e30cfedc Mon Sep 17 00:00:00 2001 From: Nicolas Boulenguez <nico...@debian.org> Date: Fri, 18 Oct 2024 19:08:35 +0200 Subject: [PATCH 23/27] Fix indentation in debian-changelog-font-lock-keyword-1 --- debian-changelog-mode.el | 46 ++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/debian-changelog-mode.el b/debian-changelog-mode.el index ae89fde..76bbaab 100644 --- a/debian-changelog-mode.el +++ b/debian-changelog-mode.el @@ -1525,29 +1525,29 @@ interface to set it, or simply set the variable (2 font-lock-type-face nil t) (3 font-lock-string-face nil t) (4 debian-changelog-warning-face nil t)) - (debian-changelog-fontify-stable . debian-changelog-warning-face) - (debian-changelog-fontify-backports . debian-changelog-warning-face) - (debian-changelog-fontify-frozen . font-lock-type-face) - (debian-changelog-fontify-unstable . font-lock-string-face) - (debian-changelog-fontify-experimental . debian-changelog-warning-face) - (debian-changelog-fontify-unreleased . debian-changelog-warning-face) - (debian-changelog-fontify-urgency-crit . debian-changelog-warning-face) - (debian-changelog-fontify-urgency-high . debian-changelog-warning-face) - (debian-changelog-fontify-urgency-med . font-lock-type-face) - (debian-changelog-fontify-urgency-low . font-lock-string-face) - (debian-changelog-fontify-known-releases . font-lock-string-face) - ;; bug closers - (;"\\(closes:\\) *\\(\\(bug\\)?#? *[0-9]+\\(, *\\(bug\\)?#? *[0-9]+\\)*\\)" - ;; Process lines that continue on multiple lines - Fred Bothamy - "\\(closes:\\)[ \t\n]*\\(\\(bug\\)?#? *[0-9]+\\(,[ \t\n]*\\(bug\\)?#? *[0-9]+\\)*\\)" - (1 font-lock-keyword-face) - (2 debian-changelog-warning-face)) - ("^\t.*$" . debian-changelog-warning-face) - ;; maintainer line (enforce 2 space exactly between email and date) - ("^ -- \\(.+\\) <\\(.+@.+\\)> \\([^ ].+\\)$" - (1 font-lock-variable-name-face) - (2 font-lock-variable-name-face) - (3 font-lock-string-face))) + (debian-changelog-fontify-stable . debian-changelog-warning-face) + (debian-changelog-fontify-backports . debian-changelog-warning-face) + (debian-changelog-fontify-frozen . font-lock-type-face) + (debian-changelog-fontify-unstable . font-lock-string-face) + (debian-changelog-fontify-experimental . debian-changelog-warning-face) + (debian-changelog-fontify-unreleased . debian-changelog-warning-face) + (debian-changelog-fontify-urgency-crit . debian-changelog-warning-face) + (debian-changelog-fontify-urgency-high . debian-changelog-warning-face) + (debian-changelog-fontify-urgency-med . font-lock-type-face) + (debian-changelog-fontify-urgency-low . font-lock-string-face) + (debian-changelog-fontify-known-releases . font-lock-string-face) + ;; bug closers + (;"\\(closes:\\) *\\(\\(bug\\)?#? *[0-9]+\\(, *\\(bug\\)?#? *[0-9]+\\)*\\)" + ;; Process lines that continue on multiple lines - Fred Bothamy + "\\(closes:\\)[ \t\n]*\\(\\(bug\\)?#? *[0-9]+\\(,[ \t\n]*\\(bug\\)?#? *[0-9]+\\)*\\)" + (1 font-lock-keyword-face) + (2 debian-changelog-warning-face)) + ("^\t.*$" . debian-changelog-warning-face) + ;; maintainer line (enforce 2 space exactly between email and date) + ("^ -- \\(.+\\) <\\(.+@.+\\)> \\([^ ].+\\)$" + (1 font-lock-variable-name-face) + (2 font-lock-variable-name-face) + (3 font-lock-string-face))) "First level highlighting for `debian-changelog-mode'.") (defvar debian-changelog-font-lock-keywords-2 -- 2.39.2
>From 5fdaca54f90893d4a5f1200ecaafc4f4a8ac9751 Mon Sep 17 00:00:00 2001 From: Nicolas Boulenguez <nico...@debian.org> Date: Fri, 18 Oct 2024 19:09:44 +0200 Subject: [PATCH 24/27] readme-debian-date-string: replace an unneeded let* with let --- readme-debian.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/readme-debian.el b/readme-debian.el index 162dc4f..bdc4c25 100644 --- a/readme-debian.el +++ b/readme-debian.el @@ -54,8 +54,8 @@ ;; this function could be simpler if xemacs supported %z, but ;; it doesn't, so we're shelling out to invoke date -R to obtain ;; Debian-policy-compliant date string. - (let* ((date-program "date -R") - (system-time-locale "C")) + (let ((date-program "date -R") + (system-time-locale "C")) (if (featurep 'xemacs) (replace-in-string (exec-to-string date-program) "\n" "") ;; if it's not xemacs, just use format-time-string -- 2.39.2
>From e49f463584daaf7dc9330149db44390f0a9b3739 Mon Sep 17 00:00:00 2001 From: Nicolas Boulenguez <nico...@debian.org> Date: Fri, 18 Oct 2024 19:12:40 +0200 Subject: [PATCH 25/27] Simplify some uses of looking-at MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Especially, use point-at-[be]ol eobp bolp… that are guaranteed with both emacs and xemacs. --- debian-control-mode.el | 46 +++++++++++++----------------------------- readme-debian.el | 24 +++++++++++----------- 2 files changed, 26 insertions(+), 44 deletions(-) diff --git a/debian-control-mode.el b/debian-control-mode.el index 5de0013..952bc31 100644 --- a/debian-control-mode.el +++ b/debian-control-mode.el @@ -128,16 +128,6 @@ ;; XEmacs compatibility (eval-and-compile - (unless (fboundp 'line-beginning-position) - (defun line-beginning-position () - (save-excursion - (beginning-of-line) - (point)))) - (unless (fboundp 'line-end-position) - (defun line-end-position () - (save-excursion - (end-of-line) - (point)))) (unless (fboundp 'match-string-no-properties) (defalias 'match-string-no-properties 'match-string))) @@ -340,27 +330,19 @@ It should be immediately followed by a non-slash character.") (goto-char beg) (beginning-of-line) (while (< (point) end) - (cond ((looking-at (concat "^\\(Source:\\)\\s-*" - debian-control-package-name-regexp - "\\s-*$")) - (add-text-properties - (match-beginning 2) (match-end 2) - `(mouse-face - highlight - debian-control-mode-package ,(match-string 2) - help-echo "C-mouse-2: View bugs for this source package" - keymap ,debian-control-mode-package-name-keymap))) - ((looking-at (concat "^\\(Package:\\)\\s-*" - debian-control-package-name-regexp - "\\s-*$")) - (add-text-properties - (match-beginning 2) (match-end 2) - `(mouse-face - highlight - debian-control-mode-package ,(match-string 2) - help-echo "C-mouse-2: View bugs for this binary package" - keymap ,debian-control-mode-package-name-keymap))) - (t nil)) + (when (looking-at (concat "^\\(Source\\|Package\\):\\s-*" + debian-control-package-name-regexp + "\\s-*$")) + (add-text-properties + (match-beginning 2) (match-end 2) + `(mouse-face + highlight + debian-control-mode-package ,(match-string 2) + help-echo ,(format "C-mouse-2: View bugs for this %s package" + (if (string-prefix-p "S" (match-string 1)) + "source" + "binary")) + keymap ,debian-control-mode-package-name-keymap))) (forward-line 1))) (set-match-data data) (set-buffer-modified-p modified))))) @@ -396,7 +378,7 @@ It should be immediately followed by a non-slash character.") (beginning-of-line) (looking-at debian-control-field-regexp)) (setq beg (match-end 0) - end (line-end-position)) + end (point-at-eol)) ;; Otherwise, we're looking at a description; handle filling ;; areas separated with "." specially (setq beg (save-excursion diff --git a/readme-debian.el b/readme-debian.el index bdc4c25..c05c656 100644 --- a/readme-debian.el +++ b/readme-debian.el @@ -66,18 +66,18 @@ Automatically invoked when saving file." (save-excursion (goto-char (point-min)) - (if (re-search-forward "^ -- " nil t) - (delete-region (progn (beginning-of-line) (point)) (progn (end-of-line) (point))) - (goto-char (point-max)) - (if (bolp) - (insert "\n") - (insert "\n\n"))) - (insert (concat - " -- " - debian-changelog-full-name - " <" debian-changelog-mailing-address ">, " - (readme-debian-date-string))) - (if (and (= (point)(point-max)) (not (bolp))) + (cond + ((re-search-forward "^ -- " nil 1) + (delete-region (point-at-bol) (point-at-eol))) + ((bolp) + (insert "\n")) + (t + (insert "\n\n"))) + (insert " -- " + debian-changelog-full-name + " <" debian-changelog-mailing-address ">, " + (readme-debian-date-string)) + (if (and (eobp) (not (bolp))) (insert "\n")))) (defvar readme-debian-mode-map -- 2.39.2
>From 76a9fc6f158365581c296e46c32de4f5c461a1a7 Mon Sep 17 00:00:00 2001 From: Nicolas Boulenguez <nico...@debian.org> Date: Fri, 18 Oct 2024 19:22:37 +0200 Subject: [PATCH 26/27] debian-control-mode-add-field: simplify, remove a variable --- debian-control-mode.el | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/debian-control-mode.el b/debian-control-mode.el index 952bc31..6b2c486 100644 --- a/debian-control-mode.el +++ b/debian-control-mode.el @@ -441,23 +441,22 @@ It should be immediately followed by a non-slash character.") (point)))) (save-restriction (narrow-to-region beg end) - (let ((curfields (let ((result nil)) - (goto-char (point-min)) - (while (not (eobp)) - (when (looking-at debian-control-field-regexp) - (push (cons (seq-subseq - ;; Text properties are evil - (match-string-no-properties 1) - 0 - ;; Strip off the ':' - (- (match-end 1) - (match-beginning 1) - 1)) - (match-beginning 0)) - result)) - (forward-line 1)) - result)) - (x nil)) + (let ((curfields nil) x) + ;; Populate curfields + (goto-char (point-min)) + (while (not (eobp)) + (when (looking-at debian-control-field-regexp) + (push (cons (seq-subseq + ;; Text properties are evil + (match-string-no-properties 1) + 0 + ;; Strip off the ':' + (- (match-end 1) + (match-beginning 1) + 1)) + (match-beginning 0)) + curfields)) + (forward-line 1)) ;; If the field is already present, just jump to it (if (setq x (assoc field curfields)) (goto-char (cdr x)) -- 2.39.2
>From f3217839897853a885a85efa4e2017c0b58c3f36 Mon Sep 17 00:00:00 2001 From: Nicolas Boulenguez <nico...@debian.org> Date: Fri, 18 Oct 2024 22:11:31 +0200 Subject: [PATCH 27/27] dpkg-dev-el: replace an incorrect let with let* --- dpkg-dev-el.el | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dpkg-dev-el.el b/dpkg-dev-el.el index 9fd0665..70e3473 100644 --- a/dpkg-dev-el.el +++ b/dpkg-dev-el.el @@ -113,10 +113,10 @@ If [package] is a debian native (no separate changelog.Debian) then answer `utf-8', otherwise remove ourselves from `file-coding-system-alist' and see what other rules say." - (let ((filename (if (consp (cadr args)) - (car (cadr args)) ;; ("filename" . buffer) in emacs 22 - (cadr args))) ;; "filename" in emacs 21 - (dirname (file-name-directory filename))) + (let* ((filename (if (consp (cadr args)) + (car (cadr args)) ;; ("filename" . buffer) in emacs 22 + (cadr args))) ;; "filename" in emacs 21 + (dirname (file-name-directory filename))) (if (file-exists-p (concat dirname "changelog.Debian.gz")) (let ((file-coding-system-alist (remove '("/usr/share/doc/[^/]+/changelog\\'" -- 2.39.2