From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Jean-Christophe Helary Newsgroups: gmane.emacs.devel Subject: Re: package.el strings Date: Tue, 18 Jul 2017 00:28:59 +0900 Message-ID: <07C02D08-66BB-4454-AA25-B512BFC39A2A@gmail.com> References: <83y3rpeubc.fsf@gnu.org> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 (Mac OS X Mail 10.3 \(3273\)) Content-Type: multipart/mixed; boundary="Apple-Mail=_ED2B1183-2483-4A0B-ABD3-45C02F31CA32" X-Trace: blaine.gmane.org 1500305391 17013 195.159.176.226 (17 Jul 2017 15:29:51 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Mon, 17 Jul 2017 15:29:51 +0000 (UTC) To: emacs-devel Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Mon Jul 17 17:29:45 2017 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dX7xp-0003ii-KS for ged-emacs-devel@m.gmane.org; Mon, 17 Jul 2017 17:29:37 +0200 Original-Received: from localhost ([::1]:51064 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dX7xu-0003A4-RP for ged-emacs-devel@m.gmane.org; Mon, 17 Jul 2017 11:29:42 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:48362) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dX7xL-00039l-PX for emacs-devel@gnu.org; Mon, 17 Jul 2017 11:29:08 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dX7xI-0002x8-AZ for emacs-devel@gnu.org; Mon, 17 Jul 2017 11:29:07 -0400 Original-Received: from mail-pg0-x22f.google.com ([2607:f8b0:400e:c05::22f]:34122) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dX7xH-0002wo-Vy for emacs-devel@gnu.org; Mon, 17 Jul 2017 11:29:04 -0400 Original-Received: by mail-pg0-x22f.google.com with SMTP id 123so8569451pgj.1 for ; Mon, 17 Jul 2017 08:29:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:mime-version:subject:date:references:to:in-reply-to:message-id; bh=UPWtcWJWbNojQpnpWKTRZBv3XxVMod/grsPgzrN3ta0=; b=QhDgnaRrs9Wmf87D1XQ8bVB7J2KxhR3VF2k50MX0ZckosphdmrerzKEkTXJwNK0VvM um9wFLase5oYPgVRiNAURrVNQ9fThHuKY4gFbCfvvA4eiF2ojh1CecTlP9zluRX3gDx/ 9u3MX9Tutq4QNyM+BoZyg8psQTMjIBLKF/JvYSL1IVBU1JYkahX0fZT05X9x6/lxqEkn mvo3Yl/TtodTW+TMAlpQSAl+J6h1Zo6K5+18Xlm/2htI/VX6NBjdZgah10DS4aXEiPcq x2+gxHYSX3Dew+hvM35sbXhIovHL8kAHYhuA5XTZDxKYmpwx7qxKp25E+ankfADmkRk4 b3oA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:mime-version:subject:date:references:to :in-reply-to:message-id; bh=UPWtcWJWbNojQpnpWKTRZBv3XxVMod/grsPgzrN3ta0=; b=b2KTqzCyE5e3byOy9wEqgvNcV7a5l0IVsjYS5pyGy+WhCYDSKgH47Hn/CrnK4TYnM2 IbNuazdlU3S7+gpakAE7VCXNKqpc9oB0EZJKSQPTqoxRwNtDlgQscf/vFn61PG/0br8K Xs09pAFE1Hyoga414PFSEe+KR0z9oO8ubQRa86ciU/C5NRIS1NUatmYFh8xsA9qUuIOV m1l+r0wX5VEpHgNTmQhZaai9+LTCTNpfdYTiGMPENqltyqRjEAcn21DVHBVfZoSDld9H JkZYrx4vn3F5OX+SVpOabJMZLQGs3BuevyektUThJP/+/pNMRQKnQ4CDSH0oJhvBEgrZ GFMg== X-Gm-Message-State: AIVw111S80SCcJ7BhPWWLv0fBYdFysahYR3jfrDlz0GT8IytX3YD8+Cw kfhmvWV0Imth4I4S4pI= X-Received: by 10.84.129.12 with SMTP id 12mr31236808plb.242.1500305342868; Mon, 17 Jul 2017 08:29:02 -0700 (PDT) Original-Received: from [192.168.24.55] (pl2587.ag0304.nttpc.ne.jp. [128.53.196.27]) by smtp.gmail.com with ESMTPSA id e64sm10649316pfb.129.2017.07.17.08.29.01 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 17 Jul 2017 08:29:01 -0700 (PDT) In-Reply-To: X-Mailer: Apple Mail (2.3273) X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c05::22f X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:216784 Archived-At: --Apple-Mail=_ED2B1183-2483-4A0B-ABD3-45C02F31CA32 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii >>> - (concat >>> - (when delete "Delete ") >>> - (package-menu--list-to-prompt delete) >>> - (when (and delete install) >>> - (if upgrade "; " "; and ")) >>> - (when install "Install ") >>> - (package-menu--list-to-prompt install) >>> - (when (and upgrade (or install delete)) "; and ") >>> - (when upgrade "Upgrade ") >>> - (package-menu--list-to-prompt upgrade) >>> - "? "))) >>> + (format "Number of packages to delete: %s / install: %s / = upgrade: %s, proceed? " >>> + (package-menu--list-to-prompt delete) >>> + (package-menu--list-to-prompt install) >>> + (package-menu--list-to-prompt upgrade)))) >>=20 >> This loses the feature of saying just what's needed, instead of >> showing zero. Can we do better? >=20 > If you ask, there probably is a way... I'll try to find something = better. Ok, I found something for this part that I also adapted to 2 other parts = that I had overly simplified. I also made a few modifications here and = there compared to my original file. Jean-Christophe=20 --Apple-Mail=_ED2B1183-2483-4A0B-ABD3-45C02F31CA32 Content-Disposition: attachment; filename=git_diff_package.el.diff Content-Type: application/octet-stream; x-unix-mode=0644; name="git_diff_package.el.diff" Content-Transfer-Encoding: 7bit diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 4245294457..8a17f2bce6 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -195,8 +195,9 @@ package-load-list :version "24.1") (defcustom package-archives `(("gnu" . - ,(format "http%s://elpa.gnu.org/packages/" - (if (gnutls-available-p) "s" "")))) + ,(let ((https "https://elpa.gnu.org/packages/") + (http "http://elpa.gnu.org/packages/")) + (if (gnutls-available-p) https http)))) "An alist of archives from which to fetch. The default value points to the GNU Emacs package repository. @@ -1007,6 +1008,7 @@ package-buffer-info (let ((file-name (match-string-no-properties 1)) (desc (match-string-no-properties 2)) (start (line-beginning-position))) +;; The terminating comment could be a generic string that is not in English (unless (search-forward (concat ";;; " file-name ".el ends here")) (error "Package lacks a terminating comment")) ;; Try to include a trailing newline. @@ -1524,7 +1526,7 @@ package--download-one-archive (let* ((location (cdr archive)) (name (car archive)) (content (buffer-string)) - (dir (expand-file-name (format "archives/%s" name) package-user-dir)) + (dir (expand-file-name (concat "archives/" name) package-user-dir)) (local-file (expand-file-name file dir))) (when (listp (read-from-string content)) (make-directory dir t) @@ -2054,12 +2056,12 @@ package-install-selected-packages (cond (available (when (y-or-n-p - (format "%s packages will be installed:\n%s, proceed?" + (format "Packages to install: %d (%s), proceed? " (length available) - (mapconcat #'symbol-name available ", "))) + (mapconcat #'symbol-name available " "))) (mapc (lambda (p) (package-install p 'dont-select)) available))) ((> difference 0) - (message "%s packages are not available (the rest already installed), maybe you need to `M-x package-refresh-contents'" + (message "Packages that are not available: %d (the rest is already installed), maybe you need to `M-x package-refresh-contents'" difference)) (t (message "All your packages are already installed")))))) @@ -2176,9 +2178,9 @@ package-autoremove (let ((removable (package--removable-packages))) (if removable (when (y-or-n-p - (format "%s packages will be deleted:\n%s, proceed? " + (format "Packages to delete: %d (%s), proceed? " (length removable) - (mapconcat #'symbol-name removable ", "))) + (mapconcat #'symbol-name removable " "))) (mapc (lambda (p) (package-delete (cadr (assq p package-alist)) t)) removable)) @@ -2237,6 +2239,7 @@ package--print-help-section (declare-function lm-commentary "lisp-mnt" (&optional file)) +;; TODO the whole describe-package-1 function must be fixed for strings l10n (defun describe-package-1 (pkg) (require 'lisp-mnt) (let* ((desc (or @@ -2264,11 +2267,7 @@ describe-package-1 (setq status "available obsolete")) (when incompatible-reason (setq status "incompatible")) - (prin1 name) - (princ " is ") - (princ (if (memq (aref status 0) '(?a ?e ?i ?o ?u)) "an " "a ")) - (princ status) - (princ " package.\n\n") + (princ (format "Package %S is %s.\n\n" name status)) (package--print-help-section "Status") (cond (built-in @@ -2649,9 +2648,9 @@ package-menu-toggle-hiding (user-error "The current buffer is not a Package Menu")) (setq package-menu--hide-packages (not package-menu--hide-packages)) - (message "%s packages" (if package-menu--hide-packages - "Hiding obsolete or unwanted" - "Displaying all")) + (if package-menu--hide-packages + (message "Hiding obsolete or unwanted packages") + (message "Displaying all packages")) (revert-buffer nil 'no-confirm)) (defun package--remove-hidden (pkg-list) @@ -2974,11 +2973,10 @@ package-menu-hide-package (let ((hidden (cl-remove-if-not (lambda (e) (string-match re (symbol-name (car e)))) package-archive-contents))) - (message (substitute-command-keys - (concat "Hiding %s packages, type `\\[package-menu-toggle-hiding]'" - " to toggle or `\\[customize-variable] RET package-hidden-regexps'" - " to customize it")) - (length hidden))))) + (message "Packages to hide: %s. Type `%s' to toggle or `%s' to customize" + (length hidden) + (substitute-command-keys "\\[package-menu-toggle-hidding]") + (substitute-command-keys "\\[customize-variable] RET package-hidden-regexps"))))) (defun package-menu-describe-package (&optional button) "Describe the current package. @@ -3113,7 +3111,7 @@ package-menu--mark-upgrades-1 (setq package-menu--mark-upgrades-pending nil) (let ((upgrades (package-menu--find-upgrades))) (if (null upgrades) - (message "No packages to upgrade.") + (message "No packages to upgrade") (widen) (save-excursion (goto-char (point-min)) @@ -3126,9 +3124,8 @@ package-menu--mark-upgrades-1 (package-menu-mark-install)) (t (package-menu-mark-delete)))))) - (message "%d package%s marked for upgrading." - (length upgrades) - (if (= (length upgrades) 1) "" "s"))))) + (message "Packages marked for upgrading: %d" + (length upgrades))))) (defun package-menu-mark-upgrades () "Mark all upgradable packages in the Package Menu. @@ -3146,39 +3143,32 @@ package-menu-mark-upgrades (setq package-menu--mark-upgrades-pending t) (message "Waiting for refresh to finish..."))) + (defun package-menu--list-to-prompt (packages) "Return a string listing PACKAGES that's usable in a prompt. PACKAGES is a list of `package-desc' objects. Formats the returned string to be usable in a minibuffer prompt (see `package-menu--prompt-transaction-p')." - (cond - ;; None - ((not packages) "") - ;; More than 1 - ((cdr packages) - (format "these %d packages (%s)" - (length packages) - (mapconcat #'package-desc-full-name packages ", "))) - ;; Exactly 1 - (t (format-message "package `%s'" - (package-desc-full-name (car packages)))))) +;; The case where `package' is empty is handled in +;; package-menu--prompt-transation-p below + (format "%d (%s)" + (length packages) + (mapconcat #'package-desc-full-name packages " "))) (defun package-menu--prompt-transaction-p (delete install upgrade) "Prompt the user about DELETE, INSTALL, and UPGRADE. DELETE, INSTALL, and UPGRADE are lists of `package-desc' objects. Either may be nil, but not all." (y-or-n-p - (concat - (when delete "Delete ") - (package-menu--list-to-prompt delete) - (when (and delete install) - (if upgrade "; " "; and ")) - (when install "Install ") - (package-menu--list-to-prompt install) - (when (and upgrade (or install delete)) "; and ") - (when upgrade "Upgrade ") - (package-menu--list-to-prompt upgrade) - "? "))) + (format "%s%s%s%s" + (if (not delete) "" + (format "Packages to delete: %s. " (package-menu--list-to-prompt delete))) + (if (not install) "" + (format "Packages to install: %s. " (package-menu--list-to-prompt install))) + (if (not upgrade) "" + (format "Packages to upgrade: %s. " (package-menu--list-to-prompt upgrade))) + "Proceed? "))) + (defun package-menu--partition-transaction (install delete) "Return an alist describing an INSTALL DELETE transaction. @@ -3262,25 +3252,23 @@ package-menu-execute (when (or noquery (package-menu--prompt-transaction-p .delete .install .upgrade)) (let ((message-template - (concat "Package menu: Operation %s [" - (when .delete (format "Delet__ %s" (length .delete))) - (when (and .delete .install) "; ") - (when .install (format "Install__ %s" (length .install))) - (when (and .upgrade (or .install .delete)) "; ") - (when .upgrade (format "Upgrad__ %s" (length .upgrade))) - "]"))) - (message (replace-regexp-in-string "__" "ing" message-template) "started") + (format "[ %s%s%s]" + (if (not .delete) "" + (format "Delete %d " (length .delete))) + (if (not .install) "" + (format "Install %d " (length .install))) + (if (not .upgrade) "" + (format "Upgrade %d " (length .upgrade)))))) + (message "Operation %s started" message-template) ;; Packages being upgraded are not marked as selected. (package--update-selected-packages .install .delete) (package-menu--perform-transaction install-list delete-list) (when package-selected-packages (if-let ((removable (package--removable-packages))) - (message "Package menu: Operation finished. %d packages %s" - (length removable) - (substitute-command-keys - "are no longer needed, type `\\[package-autoremove]' to remove them")) - (message (replace-regexp-in-string "__" "ed" message-template) - "finished")))))))) + (message "Operation finished. Packages that are no longer needed: %d. Type `%s' to remove them" + (length removable) + (substitute-command-keys "\\[package-autoremove]")) + (message "Operation %s finished" message-template)))))))) (defun package-menu--version-predicate (A B) (let ((vA (or (aref (cadr A) 1) '(0))) @@ -3347,11 +3335,10 @@ package-menu--populate-new-package-list (defun package-menu--find-and-notify-upgrades () "Notify the user of upgradable packages." (when-let ((upgrades (package-menu--find-upgrades))) - (message "%d package%s can be upgraded; type `%s' to mark %s for upgrading." + (message "Packages that can be upgraded: %d; type `%s' to mark for upgrading." (length upgrades) - (if (= (length upgrades) 1) "" "s") - (substitute-command-keys "\\[package-menu-mark-upgrades]") - (if (= (length upgrades) 1) "it" "them")))) + (substitute-command-keys "\\[package-menu-mark-upgrades]")) + )) (defun package-menu--post-refresh () "If there's a *Packages* buffer, revert it and check for new packages and upgrades. --Apple-Mail=_ED2B1183-2483-4A0B-ABD3-45C02F31CA32--