master 1de92cc3ec0: Delete redundant "" arguments to 'mapconcat'

Stefan Monnier via Mailing list for Emacs changes <[email protected]>
Newsgroups gmane.emacs.diffs
Message-ID <[email protected]>
branch: master
commit 1de92cc3ec0915d412a531224b504f57ace55cc7
Author: Stefan Monnier <[email protected]>
Commit: Stefan Monnier <[email protected]>

    Delete redundant "" arguments to 'mapconcat'
    
    * lisp/xml.el (xml--entity-replacement-text, xml-substitute-special):
    * lisp/vc/vc-hg.el (vc-hg--pushpull):
    * lisp/vc/vc-git.el (vc-git-escape-file-name):
    * lisp/vc/emerge.el (emerge-hash-string-into-string):
    * lisp/url/url.el (url-do-setup):
    * lisp/url/url-expand.el (url-expand-file-name):
    * lisp/url/url-cache.el (url-cache-create-filename-human-readable):
    * lisp/textmodes/tildify.el (tildify--find-env):
    * lisp/textmodes/rst.el (rst-re):
    * lisp/textmodes/reftex.el (reftex-compile-variables):
    * lisp/textmodes/reftex-ref.el (reftex-latin1-to-ascii):
    * lisp/textmodes/reftex-index.el (reftex-index-make-replace-string)
    (reftex-index-select-phrases-macro):
    * lisp/textmodes/ispell.el (ispell--make-\\w-expression):
    * lisp/textmodes/enriched.el (enriched-make-annotation):
    * lisp/textmodes/bibtex.el (bibtex-summary):
    * lisp/tab-bar.el (tab-bar-format-align-right):
    * lisp/shell.el (shell--unquote&requote-argument)
    (shell--parse-pcomplete-arguments):
    * lisp/proced.el (proced-format):
    * lisp/play/decipher.el (decipher-show-alphabet)
    (decipher--digram-counts):
    * lisp/pcomplete.el (pcomplete-entries):
    * lisp/pcmpl-x.el (pcmpl-x-ack-short-options):
    * lisp/obsolete/pgg-parse.el (pgg-format-key-identifier):
    * lisp/newcomment.el (comment-padright):
    * lisp/net/webjump.el (webjump-url-encode):
    * lisp/net/newst-backend.el (newsticker--unxml-node):
    * lisp/net/mairix.el (mairix-widget-make-query-from-widgets):
    * lisp/net/eudcb-ldap.el (eudc-ldap-format-query-as-rfc1558):
    * lisp/net/dbus.el (dbus-introspect-get-signature):
    * lisp/mh-e/mh-utils.el (mh-help):
    * lisp/mh-e/mh-alias.el (mh-alias-apropos):
    * lisp/mail/supercite.el (sc-attribs-strip-initials):
    * lisp/mail/rfc2231.el (rfc2231-parse-string):
    * lisp/mail/ietf-drums.el (ietf-drums-parse-address):
    * lisp/mail/footnote.el (footnote-roman-lower-regexp):
    * lisp/language/lao.el:
    * lisp/isearch.el (with-isearch-suspended, isearch-edit-string)
    (isearch-repeat, word-search-regexp, isearch-symbol-regexp)
    (isearch-del-char, isearch-yank-string, isearch-yank-from-kill-ring)
    (isearch-char-by-name, isearch-emoji-by-name)
    (isearch-post-command-hook, isearch-process-search-char)
    (isearch-ring-adjust1, isearch-complete):
    * lisp/international/quail.el (quail-title):
    * lisp/international/isearch-x.el
    (isearch-process-search-multibyte-characters):
    * lisp/info.el (Info-url-for-node):
    * lisp/ido.el (ido-set-matches-1):
    * lisp/htmlfontify.el (hfy-default-header):
    * lisp/gnus/nnmairix.el (nnmairix-widget-make-query-from-widgets):
    * lisp/gnus/mm-url.el (mm-url-form-encode-xwfu):
    * lisp/gnus/mm-decode.el (mm-mailcap-command):
    * lisp/gnus/gnus-art.el (article-lapsed-string)
    (article-verify-x-pgp-sig, gnus-article-extend-url-button):
    * lisp/gnus/canlock.el (canlock-make-cancel-key):
    * lisp/forms.el (forms--update, forms--debug):
    * lisp/find-cmd.el (find-cmd):
    * lisp/eshell/esh-arg.el (eshell-quote-argument):
    * lisp/emulation/viper-util.el (viper-array-to-string)
    (viper-key-press-events-to-chars):
    * lisp/emulation/viper-macs.el (viper-display-macro):
    * lisp/emulation/viper-init.el (viper-charlist-to-string):
    * lisp/emulation/cua-rect.el (cua--copy-rectangle-as-kill)
    (cua-copy-rectangle-as-text):
    * lisp/emacs-lisp/elp.el (elp-results):
    * lisp/calendar/solar.el (solar-time-string):
    * lisp/calendar/icalendar.el (icalendar--create-ical-alarm)
    (icalendar--do-create-ical-alarm):
    * lisp/calendar/diary-lib.el (diary-remind)
    (diary-font-lock-date-forms, diary-fancy-date-pattern):
    * lisp/calendar/calendar.el (calendar-make-temp-face)
    (calendar-date-string):
    * lisp/calendar/cal-persia.el (calendar-persian-date-string):
    * lisp/calendar/cal-coptic.el (calendar-coptic-date-string):
    * lisp/calendar/cal-bahai.el (calendar-bahai-date-string):
    * lisp/arc-mode.el (archive-summarize-files):
    * lisp/allout.el (allout-latex-verb-quote):
    * admin/unidata/unidata-gen.el (unidata-gen-table-word-list):
    Delete redundant "" argument to 'mapconcat'.
---
 admin/unidata/unidata-gen.el    |  4 ++--
 lisp/allout.el                  |  3 +--
 lisp/arc-mode.el                |  3 +--
 lisp/calendar/cal-bahai.el      |  2 +-
 lisp/calendar/cal-coptic.el     |  2 +-
 lisp/calendar/cal-persia.el     |  2 +-
 lisp/calendar/calendar.el       |  4 ++--
 lisp/calendar/diary-lib.el      |  7 +++---
 lisp/calendar/icalendar.el      |  4 ++--
 lisp/calendar/solar.el          |  2 +-
 lisp/emacs-lisp/elp.el          |  2 +-
 lisp/emulation/cua-rect.el      |  4 ++--
 lisp/emulation/viper-init.el    |  2 +-
 lisp/emulation/viper-macs.el    |  4 ++--
 lisp/emulation/viper-util.el    | 10 ++++-----
 lisp/eshell/esh-arg.el          |  3 +--
 lisp/find-cmd.el                |  2 +-
 lisp/forms.el                   |  4 ++--
 lisp/gnus/canlock.el            |  4 ++--
 lisp/gnus/gnus-art.el           |  6 ++---
 lisp/gnus/mm-decode.el          |  2 +-
 lisp/gnus/mm-url.el             |  3 +--
 lisp/gnus/nnmairix.el           |  2 +-
 lisp/htmlfontify.el             |  2 +-
 lisp/ido.el                     |  2 +-
 lisp/info.el                    |  2 +-
 lisp/international/isearch-x.el |  2 +-
 lisp/international/quail.el     |  2 +-
 lisp/isearch.el                 | 50 ++++++++++++++++++++---------------------
 lisp/language/lao.el            |  2 +-
 lisp/mail/footnote.el           |  2 +-
 lisp/mail/ietf-drums.el         |  2 +-
 lisp/mail/rfc2231.el            |  2 +-
 lisp/mail/supercite.el          |  2 +-
 lisp/mh-e/mh-alias.el           |  2 +-
 lisp/mh-e/mh-utils.el           |  2 +-
 lisp/net/dbus.el                |  3 +--
 lisp/net/eudcb-ldap.el          |  2 +-
 lisp/net/mairix.el              |  2 +-
 lisp/net/newst-backend.el       |  2 +-
 lisp/net/webjump.el             |  3 +--
 lisp/newcomment.el              |  4 ++--
 lisp/obsolete/pgg-parse.el      |  2 +-
 lisp/pcmpl-x.el                 |  2 +-
 lisp/pcomplete.el               |  4 ++--
 lisp/play/decipher.el           |  6 ++---
 lisp/proced.el                  |  2 +-
 lisp/replace.el                 |  3 ++-
 lisp/shell.el                   |  4 ++--
 lisp/tab-bar.el                 | 10 ++++++++-
 lisp/textmodes/bibtex.el        |  3 +--
 lisp/textmodes/enriched.el      |  2 +-
 lisp/textmodes/ispell.el        |  2 +-
 lisp/textmodes/reftex-index.el  |  4 ++--
 lisp/textmodes/reftex-ref.el    |  2 +-
 lisp/textmodes/reftex.el        |  6 ++---
 lisp/textmodes/rst.el           |  6 ++---
 lisp/textmodes/tildify.el       |  3 +--
 lisp/url/url-cache.el           |  5 +++--
 lisp/url/url-expand.el          |  2 +-
 lisp/url/url.el                 |  3 ++-
 lisp/vc/diff-mode.el            |  2 +-
 lisp/vc/emerge.el               |  2 +-
 lisp/vc/vc-git.el               |  2 +-
 lisp/vc/vc-hg.el                |  2 +-
 lisp/xml.el                     |  4 ++--
 66 files changed, 127 insertions(+), 127 deletions(-)

diff --git a/admin/unidata/unidata-gen.el b/admin/unidata/unidata-gen.el
index cdbb7b09bae..c551126f539 100644
--- a/admin/unidata/unidata-gen.el
+++ b/admin/unidata/unidata-gen.el
@@ -1037,10 +1037,10 @@ Property value is a symbol `o' (Open), `c' (Close), or `n' (None)."
 			       (cdr (assq elt word-list))))
 		  (setcar tail (string code))
 		  (setq tail (cdr tail)))
-		(aset vec i (mapconcat #'identity (aref vec i) "")))))
+		(aset vec i (mapconcat #'identity (aref vec i))))))
 	  (set-char-table-range
 	   table (cons idx (+ idx 127))
-	   (mapconcat #'identity vec "")))))
+	   (mapconcat #'identity vec)))))
 
     (setq block-word-table (make-vector (length block-list) nil))
     (setq idx 0)
diff --git a/lisp/allout.el b/lisp/allout.el
index e2b5b82291a..28a21c468b1 100644
--- a/lisp/allout.el
+++ b/lisp/allout.el
@@ -5512,8 +5512,7 @@ string across LaTeX processing."
                       (concat "\\char" (number-to-string char) "{}"))
                      ((= char ?\n) "\\\\")
                      (t (char-to-string char))))
-	     string
-	     ""))
+	     string))
 ;;;_   > allout-latex-verbatim-quote-curr-line ()
 (defun allout-latex-verbatim-quote-curr-line ()
   "Express line for exact (literal) representation across LaTeX processing.
diff --git a/lisp/arc-mode.el b/lisp/arc-mode.el
index 92ad5bab009..2ed17eda6ef 100644
--- a/lisp/arc-mode.el
+++ b/lisp/arc-mode.el
@@ -889,8 +889,7 @@ when parsing the archive."
            help-echo "mouse-2: extract this file into a buffer")
          text)
         text))
-    files
-    ""))
+    files))
   (setq archive-file-list-end (point-marker)))
 
 (defun archive-alternate-display ()
diff --git a/lisp/calendar/cal-bahai.el b/lisp/calendar/cal-bahai.el
index 8b8b4f8c092..313638989b0 100644
--- a/lisp/calendar/cal-bahai.el
+++ b/lisp/calendar/cal-bahai.el
@@ -343,7 +343,7 @@ Defaults to today's date if DATE is not given."
              (month (number-to-string m))
              dayname)
           ;; Can't call calendar-date-string because of monthname oddity.
-          (mapconcat #'eval calendar-date-display-form ""))))))
+          (mapconcat #'eval calendar-date-display-form))))))
 
 ;;;###cal-autoload
 (defun calendar-bahai-print-date ()
diff --git a/lisp/calendar/cal-coptic.el b/lisp/calendar/cal-coptic.el
index 2878c35bb7c..c9dc869c03d 100644
--- a/lisp/calendar/cal-coptic.el
+++ b/lisp/calendar/cal-coptic.el
@@ -122,7 +122,7 @@ Defaults to today's date if DATE is not given."
            (dayname nil)
            (month (number-to-string m))
            (year (number-to-string y)))
-        (mapconcat #'eval calendar-date-display-form "")))))
+        (mapconcat #'eval calendar-date-display-form)))))
 
 ;;;###cal-autoload
 (defun calendar-coptic-print-date ()
diff --git a/lisp/calendar/cal-persia.el b/lisp/calendar/cal-persia.el
index df0a11160fb..256abdd760f 100644
--- a/lisp/calendar/cal-persia.el
+++ b/lisp/calendar/cal-persia.el
@@ -146,7 +146,7 @@ Gregorian date Sunday, December 31, 1 BC."
          (year (number-to-string y))
          (month (number-to-string m))
          dayname)
-      (mapconcat #'eval calendar-date-display-form ""))))
+      (mapconcat #'eval calendar-date-display-form))))
 
 ;;;###cal-autoload
 (defun calendar-persian-print-date ()
diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el
index e20c8ae95ec..3c3f5423f6f 100644
--- a/lisp/calendar/calendar.el
+++ b/lisp/calendar/calendar.el
@@ -2743,7 +2743,7 @@ ATTRLIST is a list with elements of the form :face face :foreground color."
                                    ((symbolp sym) (symbol-name sym))
                                    ((numberp sym) (number-to-string sym))
                                    (t sym)))
-                                attrlist ""))))
+                                attrlist))))
       ;; Create this new face if it does not already exist.
       (unless (member temp-face (face-list))
         (make-face temp-face)
@@ -2828,7 +2828,7 @@ name of the day of the week."
          (day (number-to-string (calendar-extract-day date)))
          (month (number-to-string month))
          (year (number-to-string (calendar-extract-year date))))
-      (mapconcat #'eval calendar-date-display-form ""))))
+      (mapconcat #'eval calendar-date-display-form))))
 
 (defun calendar-dayname-on-or-before (dayname date)
   "Return the absolute date of the DAYNAME on or before absolute DATE.
diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el
index c55779dde67..59677e222db 100644
--- a/lisp/calendar/diary-lib.el
+++ b/lisp/calendar/diary-lib.el
@@ -2020,7 +2020,7 @@ calendar."
           ;; Discard any mark portion from diary-anniversary, etc.
           (if (consp diary-entry) (setq diary-entry (cdr diary-entry)))
           (calendar-dlet ((days days))
-            (mapconcat #'eval diary-remind-message "")))))
+            (mapconcat #'eval diary-remind-message)))))
      ;; Diary entry may apply to one of a list of days before date.
      ((and (listp days) days)
       (or (diary-remind sexp (car days) marking)
@@ -2241,8 +2241,7 @@ full month names."
                                   ;; and last item (not part of date).
                                   (if (equal (car x) 'backup)
                                       (nreverse (cdr (reverse (cdr x))))
-                                    x)
-                                  "")
+                                    x))
                        ;; With backup, last item is not part of date.
                        (if (equal (car x) 'backup)
                            (concat "\\)" (eval (car (reverse x)) t))
@@ -2376,7 +2375,7 @@ This depends on the calendar date style."
      ;; Therefore we cannot eg just let day = "[0-9]+".  (Bug#8583).
      ;; Assumes no integers in c-day/month-name-array.
      (replace-regexp-in-string "[0-9]+" "[0-9]+"
-                               (mapconcat #'eval calendar-date-display-form "")
+                               (mapconcat #'eval calendar-date-display-form)
                                nil t))
    ;; Optional ": holiday name" after the date.
    "\\(: .*\\)?"))
diff --git a/lisp/calendar/icalendar.el b/lisp/calendar/icalendar.el
index 4d425103651..1ebaf35580d 100644
--- a/lisp/calendar/icalendar.el
+++ b/lisp/calendar/icalendar.el
@@ -1683,7 +1683,7 @@ Returns an alist."
            (alarm-specs (cadr icalendar-export-alarms))
            (fun (lambda (spec)
                   (icalendar--do-create-ical-alarm advance-time spec summary))))
-      (mapconcat fun alarm-specs ""))))
+      (mapconcat fun alarm-specs))))
 
 (defun icalendar--do-create-ical-alarm (advance-time alarm-spec summary)
   "Return a VALARM block.
@@ -1709,7 +1709,7 @@ alarm."
          (att (if (eq action 'email)
                   (mapconcat (lambda (i)
                                (format "\nATTENDEE:MAILTO:%s" i))
-                             (cadr alarm-spec) "")
+                             (cadr alarm-spec))
                 "")))
 
     (concat "\nBEGIN:VALARM" act tri des sum att "\nEND:VALARM")))
diff --git a/lisp/calendar/solar.el b/lisp/calendar/solar.el
index 54d899fc1f1..1fd8c2ca75d 100644
--- a/lisp/calendar/solar.el
+++ b/lisp/calendar/solar.el
@@ -558,7 +558,7 @@ Format used is given by `calendar-time-display-form'."
          (12-hours (format "%d" (1+ (% (+ 24-hours 11) 12))))
          (am-pm (if (>= 24-hours 12) "pm" "am"))
          (24-hours (format "%02d" 24-hours)))
-      (mapconcat #'eval calendar-time-display-form ""))))
+      (mapconcat #'eval calendar-time-display-form))))
 
 (defun solar-daylight (time)
   "Printable form for TIME expressed in hours."
diff --git a/lisp/emacs-lisp/elp.el b/lisp/emacs-lisp/elp.el
index ab8e46cc78b..024b352c8da 100644
--- a/lisp/emacs-lisp/elp.el
+++ b/lisp/emacs-lisp/elp.el
@@ -573,7 +573,7 @@ displayed."
                                      (if (= column 0)
                                          elp-field-len
                                        (length title))))))
-                 (list title cc-header et-header at-header) ""))))
+                 (list title cc-header et-header at-header)))))
       ;; if sorting is enabled, then sort the results list. in either
       ;; case, call elp-output-result to output the result in the
       ;; buffer
diff --git a/lisp/emulation/cua-rect.el b/lisp/emulation/cua-rect.el
index ed4e58d0cfc..c1573a2a924 100644
--- a/lisp/emulation/cua-rect.el
+++ b/lisp/emulation/cua-rect.el
@@ -762,7 +762,7 @@ Note: In overwrite mode, the rectangle is inserted as separate text lines."
     (if ring
         (kill-new (mapconcat
                    (lambda (row) (concat row "\n"))
-                   killed-rectangle "")))))
+                   killed-rectangle)))))
 
 (defun cua--activate-rectangle ()
   ;; Set cua--rectangle to indicate we're marking a rectangle.
@@ -1098,7 +1098,7 @@ The text previously in the rectangle is overwritten by the blanks."
     (let* ((rect (cua--extract-rectangle))
            (text (mapconcat
                   (lambda (row) (concat row "\n"))
-                  rect "")))
+                  rect)))
       (setq arg (cua--prefix-arg arg))
       (if cua--register
           (set-register cua--register text)
diff --git a/lisp/emulation/viper-init.el b/lisp/emulation/viper-init.el
index 6336495e570..89679dfe65f 100644
--- a/lisp/emulation/viper-init.el
+++ b/lisp/emulation/viper-init.el
@@ -132,7 +132,7 @@ docstring.  The variable becomes buffer-local whenever set."
   (append (vconcat string) nil))
 
 (defsubst viper-charlist-to-string (list)
-  (mapconcat #'char-to-string list ""))
+  (mapconcat #'char-to-string list))
 
 ;; like char-after/before, but saves typing
 (defun viper-char-at-pos (direction &optional offset)
diff --git a/lisp/emulation/viper-macs.el b/lisp/emulation/viper-macs.el
index 33bdd6fccf9..34e51594657 100644
--- a/lisp/emulation/viper-macs.el
+++ b/lisp/emulation/viper-macs.el
@@ -792,9 +792,9 @@ mistakes in macro names to be passed to this function is to use
 ;; string--do so.  Otherwise, do nothing.
 (defun viper-display-macro (macro-name-or-body)
   (cond ((viper-char-symbol-sequence-p macro-name-or-body)
-	 (mapconcat #'symbol-name macro-name-or-body ""))
+	 (mapconcat #'symbol-name macro-name-or-body))
 	((viper-char-array-p macro-name-or-body)
-	 (mapconcat #'char-to-string macro-name-or-body ""))
+	 (mapconcat #'char-to-string macro-name-or-body))
 	(t macro-name-or-body)))
 
 ;; convert sequence of events (that came presumably from emacs kbd macro) into
diff --git a/lisp/emulation/viper-util.el b/lisp/emulation/viper-util.el
index 5593ae4506f..2e42b9490f3 100644
--- a/lisp/emulation/viper-util.el
+++ b/lisp/emulation/viper-util.el
@@ -979,22 +979,22 @@ Otherwise return the normal value."
 	  ((viper-event-vector-p event-seq)
 	    (setq temp (mapcar #'viper-event-key event-seq))
 	    (cond ((viper-char-symbol-sequence-p temp)
-		   (mapconcat #'symbol-name temp ""))
+		   (mapconcat #'symbol-name temp))
 		  ((and (viper-char-array-p
 			 (setq temp2 (mapcar #'viper-key-to-character temp))))
-		   (mapconcat #'char-to-string temp2 ""))
+		   (mapconcat #'char-to-string temp2))
 		  (t (prin1-to-string (vconcat temp)))))
 	  ((viper-char-symbol-sequence-p event-seq)
-	   (mapconcat #'symbol-name event-seq ""))
+	   (mapconcat #'symbol-name event-seq))
 	  ((and (vectorp event-seq)
 		(viper-char-array-p
 		 (setq temp (mapcar #'viper-key-to-character event-seq))))
-	   (mapconcat #'char-to-string temp ""))
+	   (mapconcat #'char-to-string temp))
 	  (t (prin1-to-string event-seq)))))
 
 (defun viper-key-press-events-to-chars (events)
   (declare (obsolete nil "29.1"))
-  (mapconcat #'char-to-string events ""))
+  (mapconcat #'char-to-string events))
 
 
 (defun viper-read-char-exclusive ()
diff --git a/lisp/eshell/esh-arg.el b/lisp/eshell/esh-arg.el
index 75667d95f30..9b2424b8ef8 100644
--- a/lisp/eshell/esh-arg.el
+++ b/lisp/eshell/esh-arg.el
@@ -346,8 +346,7 @@ For consistent results, only call this function within an Eshell buffer."
 		     (or (eshell-quote-backslash string index)
 			 (char-to-string c))
 		   (setq index (1+ index))))
-	       string
-	       "")))
+	       string)))
 
 ;; Argument parsing
 
diff --git a/lisp/find-cmd.el b/lisp/find-cmd.el
index 8e7763fd3a6..0ed830f332b 100644
--- a/lisp/find-cmd.el
+++ b/lisp/find-cmd.el
@@ -153,7 +153,7 @@ result is a string that should be ready for the command line."
           (shell-quote-argument (expand-file-name default-directory)) " "
           (cond
            ((cdr subfinds)
-            (mapconcat #'find-to-string subfinds ""))
+            (mapconcat #'find-to-string subfinds))
            (t
             (find-to-string (car subfinds))))))
 
diff --git a/lisp/forms.el b/lisp/forms.el
index 412e323a889..9b3214d2979 100644
--- a/lisp/forms.el
+++ b/lisp/forms.el
@@ -1560,7 +1560,7 @@ As a side effect: sets `forms--the-record-list'."
 	  (mapconcat #'identity forms--the-record-list forms-field-sep))
 
     (if (string-match-p (regexp-quote forms-field-sep)
-			(mapconcat #'identity forms--the-record-list ""))
+			(mapconcat #'identity forms--the-record-list))
 	(error "Field separator occurs in record - update refused"))
 
     ;; Handle multi-line fields, if allowed.
@@ -2032,7 +2032,7 @@ Usage: (setq forms-number-of-fields
 		          (if (fboundp el)
 		              (concat (prin1-to-string (symbol-function el))
 				      "\n")))))
-	      args "")))
+	      args)))
 	(with-current-buffer (get-buffer-create "*forms-mode debug*")
 	  (if (zerop (buffer-size))
 	      (emacs-lisp-mode))
diff --git a/lisp/gnus/canlock.el b/lisp/gnus/canlock.el
index ce316c12819..875cfddce5c 100644
--- a/lisp/gnus/canlock.el
+++ b/lisp/gnus/canlock.el
@@ -73,10 +73,10 @@ buffer does not look like a news message."
   (setq password (concat password (make-string (- 64 (length password)) 0)))
   (let ((ipad (mapconcat (lambda (byte)
 			   (char-to-string (logxor 54 byte)))
-			 password ""))
+			 password))
 	(opad (mapconcat (lambda (byte)
 			   (char-to-string (logxor 92 byte)))
-			 password "")))
+			 password)))
     (base64-encode-string
      (canlock-sha1 (concat opad (canlock-sha1 (concat ipad message-id)))))))
 
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index 301dec87cf7..27f306be0c5 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -3745,7 +3745,7 @@ possible values."
 			(if (> num 1) "s" ""))
 	      (setq prev t
 		    segments (1+ segments)))))
-	article-time-units "")
+	article-time-units)
        ;; If dates are odd, then it might appear like the
        ;; article was sent in the future.
        (if (> real-sec 0)
@@ -4341,7 +4341,7 @@ If variable `gnus-use-long-file-name' is non-nil, it is
 					 (concat header ": "
 						 (mail-fetch-field header)
 						 "\n"))
-				       (split-string (nth 1 items) ",") "")))
+				       (split-string (nth 1 items) ","))))
 	    (delete-region (point-min) (point-max))
 	    (insert "-----BEGIN PGP SIGNED MESSAGE-----\n\n")
 	    (insert "X-Signed-Headers: " (nth 1 items) "\n")
@@ -8204,7 +8204,7 @@ url is put as the `gnus-button-url' overlay property on the button."
 	  (let ((overlay (make-overlay start end)))
 	    (overlay-put overlay 'evaporate t)
 	    (overlay-put overlay 'gnus-button-url
-			 (list (mapconcat #'identity (nreverse url) "")))
+			 (list (mapconcat #'identity (nreverse url))))
 	    (when gnus-article-mouse-face
 	      (overlay-put overlay 'mouse-face gnus-article-mouse-face)))
 	  t)
diff --git a/lisp/gnus/mm-decode.el b/lisp/gnus/mm-decode.el
index 717c8a022ef..1075f5edd21 100644
--- a/lisp/gnus/mm-decode.el
+++ b/lisp/gnus/mm-decode.el
@@ -1142,7 +1142,7 @@ external if displayed external."
       (push (shell-quote-argument
 	     (gnus-map-function mm-path-name-rewrite-functions file))
 	    out))
-    (mapconcat #'identity (nreverse out) "")))
+    (mapconcat #'identity (nreverse out))))
 
 (defun mm-remove-parts (handles)
   "Remove the displayed MIME parts represented by HANDLES."
diff --git a/lisp/gnus/mm-url.el b/lisp/gnus/mm-url.el
index 15ff49ab770..7b65cc3120d 100644
--- a/lisp/gnus/mm-url.el
+++ b/lisp/gnus/mm-url.el
@@ -379,8 +379,7 @@ spaces.  Die Die Die."
 	  ((= char ?  ) "+")
 	  ((memq char mm-url-unreserved-chars) (char-to-string char))
 	  (t (upcase (format "%%%02x" char)))))
-       (encode-coding-string chunk (car (find-coding-systems-string chunk)))
-       "")))
+       (encode-coding-string chunk (car (find-coding-systems-string chunk))))))
 
 (defun mm-url-encode-www-form-urlencoded (pairs)
   "Return PAIRS encoded for forms."
diff --git a/lisp/gnus/nnmairix.el b/lisp/gnus/nnmairix.el
index 0ba20dd1fff..3d5b92204b2 100644
--- a/lisp/gnus/nnmairix.el
+++ b/lisp/gnus/nnmairix.el
@@ -1903,7 +1903,7 @@ If WITHVALUES is t, query is based on current article."
                    (cadr flag)
                  (if (string= "no" temp)
                      (concat "-" (cadr flag)))))
-	     '(("seen" "s") ("replied" "r") ("flagged" "f")) ""))
+	     '(("seen" "s") ("replied" "r") ("flagged" "f"))))
       (when (not (zerop (length flag)))
 	(push (concat "F:" flag) query)))
     ;; return query string
diff --git a/lisp/htmlfontify.el b/lisp/htmlfontify.el
index 7298dd447e8..aa465bf890b 100644
--- a/lisp/htmlfontify.el
+++ b/lisp/htmlfontify.el
@@ -709,7 +709,7 @@ STYLE is the inline CSS stylesheet (or tag referring to an external sheet)."
 --> </script>
   </head>
   <body onload=\"stripe('index'); return true;\">\n"
-          (mapconcat #'hfy-html-quote (mapcar #'char-to-string file) "") style))
+          (mapconcat #'hfy-html-quote (mapcar #'char-to-string file)) style))
 
 (defun hfy-default-footer (_file)
   "Default value for `hfy-page-footer'.
diff --git a/lisp/ido.el b/lisp/ido.el
index 95990e9bdc6..6a2004fe2bf 100644
--- a/lisp/ido.el
+++ b/lisp/ido.el
@@ -3825,7 +3825,7 @@ frame, rather than all frames, regardless of value of `ido-all-frames'."
 		       (mapconcat (lambda (c)
 				    (concat "[^" (string c) "]*"
 					    (regexp-quote (string c))))
-				  (substring ido-text 1) "")))
+				  (substring ido-text 1))))
       (if ido-enable-prefix
 	  (setq re (concat "\\`" re)))
       (mapc
diff --git a/lisp/info.el b/lisp/info.el
index 960e0d51eb4..1642382aa02 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -1970,7 +1970,7 @@ established by `Info-url-alist', which see."
                                  (<= 123 ch 127)) ; {|}~ DEL
                              (format "_00%x" ch)
                              (char-to-string ch)))
-                         node "")))
+                         node)))
                    ".html"))))
     (cond
       ((stringp url-spec)
diff --git a/lisp/international/isearch-x.el b/lisp/international/isearch-x.el
index 3b88a49b6d9..d2bf265179d 100644
--- a/lisp/international/isearch-x.el
+++ b/lisp/international/isearch-x.el
@@ -146,7 +146,7 @@
 	(if (and str (> (length str) 0))
 	    (let ((unread-command-events nil))
 	      (if (and (integerp count) (> count 1))
-		  (let ((strs (mapconcat 'identity (make-list count str) "")))
+		  (let ((strs (mapconcat 'identity (make-list count str))))
 		    (isearch-process-search-string strs strs))
 		(isearch-process-search-string str str)))
 	  (isearch-update)))
diff --git a/lisp/international/quail.el b/lisp/international/quail.el
index eeea4574b42..39c10287f3c 100644
--- a/lisp/international/quail.el
+++ b/lisp/international/quail.el
@@ -152,7 +152,7 @@ See the documentation of `quail-define-package' for the other elements.")
 		    (if (symbol-value (car x))
 			(nth 1 x) (nth 2 x)))
 		   (t "")))
-	   title "")
+	   title)
 	(error "")))))
 (defsubst quail-map ()
   "Return the translation map of the current Quail package."
diff --git a/lisp/isearch.el b/lisp/isearch.el
index 0b4acfc589f..0fa06cb4c9c 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -1820,8 +1820,8 @@ You can update the global isearch variables by setting new values to
 				     "")
 
 		  isearch-message
-		  (mapconcat 'isearch-text-char-description
-			     isearch-string ""))
+		  (mapconcat #'isearch-text-char-description
+			     isearch-string))
 	    ;; After taking the last element, adjust ring to previous one.
 	    (isearch-ring-adjust1 nil)))
 
@@ -1891,8 +1891,8 @@ The following additional command keys are active while editing.
 		      (1+ (or search-ring-yank-pointer -1))))
 	      nil t))
 	   isearch-new-message
-	   (mapconcat 'isearch-text-char-description
-		      isearch-new-string "")))))
+	   (mapconcat #'isearch-text-char-description
+		      isearch-new-string)))))
 
 (defun isearch-nonincremental-exit-minibuffer ()
   (interactive)
@@ -1957,8 +1957,8 @@ Use `isearch-exit' to quit without signaling."
 	    (setq isearch-string
 		  (car (if isearch-regexp regexp-search-ring search-ring))
 		  isearch-message
-		  (mapconcat 'isearch-text-char-description
-			     isearch-string "")
+		  (mapconcat #'isearch-text-char-description
+			     isearch-string)
 		  isearch-case-fold-search isearch-last-case-fold-search)
 	    ;; After taking the last element, adjust ring to previous one.
 	    (isearch-ring-adjust1 nil))
@@ -2227,7 +2227,7 @@ Used in `word-search-forward', `word-search-backward',
    (t (concat
        (if (string-match-p "\\`\\W" string) "\\W+"
 	 "\\<")
-       (mapconcat 'regexp-quote (split-string string "\\W+" t) "\\W+")
+       (mapconcat #'regexp-quote (split-string string "\\W+" t) "\\W+")
        (if (string-match-p "\\W\\'" string) "\\W+"
 	 (unless lax "\\>"))))))
 
@@ -2356,7 +2356,7 @@ the beginning or the end of the string need not match a symbol boundary."
 	 (if (string-match-p (format "\\`%s" not-word-symbol-re) string)
 	     not-word-symbol-re
 	   "\\_<")
-	 (mapconcat 'regexp-quote (split-string string not-word-symbol-re t)
+	 (mapconcat #'regexp-quote (split-string string not-word-symbol-re t)
 		    not-word-symbol-re)
 	 (if (string-match-p (format "%s\\'" not-word-symbol-re) string)
 	     not-word-symbol-re
@@ -2618,8 +2618,8 @@ If search string is empty, just beep."
     (setq isearch-string (substring isearch-string 0
 				    (- (min (or arg 1)
 					    (length isearch-string))))
-          isearch-message (mapconcat 'isearch-text-char-description
-                                     isearch-string "")))
+          isearch-message (mapconcat #'isearch-text-char-description
+                                     isearch-string)))
   ;; Do the following before moving point.
   (funcall (or isearch-message-function #'isearch-message) nil t)
   ;; Use the isearch-other-end as new starting point to be able
@@ -2643,7 +2643,7 @@ If search string is empty, just beep."
   ;; Don't move cursor in reverse search.
   (setq isearch-yank-flag t)
   (isearch-process-search-string
-   string (mapconcat 'isearch-text-char-description string "")))
+   string (mapconcat #'isearch-text-char-description string)))
 
 (defun isearch-yank-kill ()
   "Pull string from kill ring into search string."
@@ -2662,9 +2662,9 @@ If search string is empty, just beep."
      (if isearch-regexp (setq string (regexp-quote string)))
      (setq isearch-yank-flag t)
      (setq isearch-new-string (concat isearch-string string)
-           isearch-new-message (concat isearch-message
-                                       (mapconcat 'isearch-text-char-description
-                                                  string ""))))))
+           isearch-new-message
+           (concat isearch-message
+                   (mapconcat #'isearch-text-char-description string))))))
 
 (defun isearch-yank-pop ()
   "Replace just-yanked search string with previously killed string.
@@ -2841,8 +2841,8 @@ With argument, add COUNT copies of the character."
 		       (char-to-string char))))
 	 (setq isearch-new-string (concat isearch-new-string string)
 	       isearch-new-message (concat isearch-new-message
-					   (mapconcat 'isearch-text-char-description
-						      string ""))))))))
+					   (mapconcat #'isearch-text-char-description
+						      string))))))))
 
 (defun isearch-emoji-by-name (&optional count)
   "Read an Emoji name and add it to the search string COUNT times.
@@ -2863,8 +2863,8 @@ The command accepts Unicode names like \"smiling face\" or
      (when emoji
        (setq isearch-new-string (concat isearch-new-string emoji)
              isearch-new-message (concat isearch-new-message
-					   (mapconcat 'isearch-text-char-description
-						      emoji "")))))))
+					   (mapconcat #'isearch-text-char-description
+						      emoji)))))))
 
 (defun isearch-search-and-update ()
   "Do the search and update the display."
@@ -3291,8 +3291,8 @@ See more for options in `search-exit-option'."
                       (or isearch-other-end isearch-opoint) (point))))
          (if isearch-regexp (setq string (regexp-quote string)))
          (setq isearch-string string)
-         (setq isearch-message (mapconcat 'isearch-text-char-description
-                                          string ""))
+         (setq isearch-message (mapconcat #'isearch-text-char-description
+                                          string))
          (setq isearch-yank-flag t)
          (setq isearch-forward (<= (or isearch-other-end isearch-opoint) (point)))
          (when isearch-forward
@@ -3356,7 +3356,7 @@ Search is updated accordingly."
 		   (char-to-string char)))
 	 (message (if (>= char ?\200)
 		      string
-		    (mapconcat 'isearch-text-char-description string ""))))
+		    (mapconcat #'isearch-text-char-description string))))
     (isearch-process-search-string string message)))
 
 (defun isearch-process-search-string (string message)
@@ -3383,8 +3383,8 @@ Search is updated accordingly."
 			 (if advance -1 1))
 		      length)))
       (setq isearch-string (nth yank-pointer ring)
-	    isearch-message (mapconcat 'isearch-text-char-description
-				       isearch-string ""))
+	    isearch-message (mapconcat #'isearch-text-char-description
+				       isearch-string))
       (isearch-update-from-string-properties isearch-string))))
 
 (defun isearch-ring-adjust (advance)
@@ -3444,8 +3444,8 @@ If there is no completion possible, say so and continue searching."
   (interactive)
   (if (isearch-complete1)
       (progn (setq isearch-message
-		   (mapconcat 'isearch-text-char-description
-			      isearch-string ""))
+		   (mapconcat #'isearch-text-char-description
+			      isearch-string))
 	     (isearch-edit-string))
     ;; else
     (sit-for 1)
diff --git a/lisp/language/lao.el b/lisp/language/lao.el
index 099479df4d2..542ee4c8abb 100644
--- a/lisp/language/lao.el
+++ b/lisp/language/lao.el
@@ -64,7 +64,7 @@
                                       ((eq c ?t) tone)
                                       ((eq c ?v) vowel-upper-lower)
                                       (t (string c))))
-			      (cdr l) ""))
+			      (cdr l)))
 	   ;; Element of composition-function-table.
 	   (elt (list (vector regexp 1 #'lao-composition-function)
 		      fallback-rule))
diff --git a/lisp/mail/footnote.el b/lisp/mail/footnote.el
index 73f382b02f3..b0f955ae179 100644
--- a/lisp/mail/footnote.el
+++ b/lisp/mail/footnote.el
@@ -230,7 +230,7 @@ Wrapping around the alphabet implies successive repetitions of letters."
   "List of roman numerals with their values.")
 
 (defconst footnote-roman-lower-regexp
-  (concat "[" (mapconcat #'cdr footnote-roman-lower-list "") "]+")
+  (concat "[" (mapconcat #'cdr footnote-roman-lower-list) "]+")
   "Regexp of roman numerals.")
 
 (defun footnote--roman-lower (n)
diff --git a/lisp/mail/ietf-drums.el b/lisp/mail/ietf-drums.el
index 5ee822e2dec..51330559ebd 100644
--- a/lisp/mail/ietf-drums.el
+++ b/lisp/mail/ietf-drums.el
@@ -251,7 +251,7 @@ If DECODE, the DISPLAY-NAME will have RFC2047 decoding performed
 	  (when (and display-string
 		     (string-search "@" display-string))
 	    (cons
-	     (mapconcat #'identity (nreverse display-name) "")
+	     (mapconcat #'identity (nreverse display-name))
 	     (ietf-drums-get-comment string)))
 	(cons mailbox (if (and decode display-string)
                           (rfc2047-decode-string display-string)
diff --git a/lisp/mail/rfc2231.el b/lisp/mail/rfc2231.el
index 70f73018674..c0a7c8796cb 100644
--- a/lisp/mail/rfc2231.el
+++ b/lisp/mail/rfc2231.el
@@ -151,7 +151,7 @@ must never cause a Lisp error."
 						    (1- (point)))))
 		    (when encoded
 		      (setq value (mapconcat (lambda (c) (format "%%%02x" c))
-					     value ""))))
+					     value))))
 		   ((and (or (memq c ttoken)
 			     ;; EXTENSION: Support non-ascii chars.
 			     (> c ?\177))
diff --git a/lisp/mail/supercite.el b/lisp/mail/supercite.el
index 1e5d2159f3a..6688d8aebbc 100644
--- a/lisp/mail/supercite.el
+++ b/lisp/mail/supercite.el
@@ -971,7 +971,7 @@ example: (sc-attribs-chop-namestring \"John Xavier Doe\")
    (lambda (name)
      (if (< 0 (length name))
 	 (substring name 0 1)))
-   namelist ""))
+   namelist))
 
 (defun sc-guess-attribution (&optional string)
   "Guess attribution string on current line.
diff --git a/lisp/mh-e/mh-alias.el b/lisp/mh-e/mh-alias.el
index 3d5782582d0..e0152b4a554 100644
--- a/lisp/mh-e/mh-alias.el
+++ b/lisp/mh-e/mh-alias.el
@@ -624,7 +624,7 @@ filing messages."
                  (if (or (string-match regexp (car elem))
                          (string-match regexp (cadr elem)))
                      (format "%s: %s\n" (car elem) (cadr elem))))
-               mh-alias-passwd-alist ""))
+               mh-alias-passwd-alist))
         (message "Making passwd aliases...done")))
     (if (and (string-equal "" matches)
              (string-equal "" group-matches)
diff --git a/lisp/mh-e/mh-utils.el b/lisp/mh-e/mh-utils.el
index fc7fc2cccad..e23a9e73f59 100644
--- a/lisp/mh-e/mh-utils.el
+++ b/lisp/mh-e/mh-utils.el
@@ -255,7 +255,7 @@ and displayed in a help buffer."
   (interactive)
   (let* ((help (or help-messages
                   (cdr (assoc nil (assoc major-mode mh-help-messages)))))
-         (text (substitute-command-keys (mapconcat #'identity help ""))))
+         (text (substitute-command-keys (mapconcat #'identity help))))
     (with-electric-help
      (lambda ()
        (insert text))
diff --git a/lisp/net/dbus.el b/lisp/net/dbus.el
index 3a5cf48b92f..c9de9d75bbe 100644
--- a/lisp/net/dbus.el
+++ b/lisp/net/dbus.el
@@ -1675,8 +1675,7 @@ If NAME is a `signal' or a `property', DIRECTION is ignored."
                     (dbus-introspect-get-attribute arg "direction")))
                (dbus-introspect-get-attribute arg "type")
              "")))
-       (dbus-introspect-get-argument-names bus service path interface name)
-       ""))))
+       (dbus-introspect-get-argument-names bus service path interface name)))))
 
 
 ;;; D-Bus properties.
diff --git a/lisp/net/eudcb-ldap.el b/lisp/net/eudcb-ldap.el
index 1afc8b49476..e0d59bf18d0 100644
--- a/lisp/net/eudcb-ldap.el
+++ b/lisp/net/eudcb-ldap.el
@@ -187,7 +187,7 @@ attribute names are returned.  Default to `person'."
                         "*" ""))))))
     (format "(&%s)"
 	    (concat
-	     (mapconcat formatter (butlast query) "")
+	     (mapconcat formatter (butlast query))
 	     (funcall formatter (car (last query)) t)))))
 
 ;;}}}
diff --git a/lisp/net/mairix.el b/lisp/net/mairix.el
index f9b97e29395..5eff8d0e500 100644
--- a/lisp/net/mairix.el
+++ b/lisp/net/mairix.el
@@ -638,7 +638,7 @@ See %s for details" mairix-output-buffer)))
                    (cadr flag)
                  (if (string= "no" temp)
                      (concat "-" (cadr flag)))))
-	     '(("seen" "s") ("replied" "r") ("flagged" "f")) ""))
+	     '(("seen" "s") ("replied" "r") ("flagged" "f"))))
       (when (not (zerop (length flag)))
 	(push (concat "F:" flag) query)))
     ;; return query string
diff --git a/lisp/net/newst-backend.el b/lisp/net/newst-backend.el
index e680224f069..c3bfac30a7d 100644
--- a/lisp/net/newst-backend.el
+++ b/lisp/net/newst-backend.el
@@ -1133,7 +1133,7 @@ Restore an xml-string from a an xml NODE that was returned by xml-parse..."
             (when att-list " ")
             (mapconcat #'newsticker--unxml-attribute att-list " ")
             ">"
-            (mapconcat #'newsticker--unxml children "") "</" qname ">")))
+            (mapconcat #'newsticker--unxml children) "</" qname ">")))
 
 (defun newsticker--unxml-attribute (attribute)
   "Actually restore xml-string of an ATTRIBUTE of an xml node."
diff --git a/lisp/net/webjump.el b/lisp/net/webjump.el
index c2f49f9f9ea..16c85eb25cc 100644
--- a/lisp/net/webjump.el
+++ b/lisp/net/webjump.el
@@ -342,8 +342,7 @@ Please submit bug reports and other feedback to the author, Neil W. Van Dyke
                  (cond ((string= s " ") "+")
 		       ((string-match "[a-zA-Z_./~-]" s) s)
                        (t (upcase (format "%%%02x" c))))))
-             (encode-coding-string str 'utf-8)
-             ""))
+             (encode-coding-string str 'utf-8)))
 
 (defun webjump-url-fix (url)
   (if (webjump-null-or-blank-string-p url)
diff --git a/lisp/newcomment.el b/lisp/newcomment.el
index 8db8d2969a5..9ec02b0fe4b 100644
--- a/lisp/newcomment.el
+++ b/lisp/newcomment.el
@@ -878,11 +878,11 @@ Ensure that `comment-normalize-vars' has been called before you use this."
 	;; construct a regexp that would match anything from just S
 	;; to any possible output of this function for any N.
 	(concat (mapconcat (lambda (c) (concat (regexp-quote (string c)) "?"))
-			   lpad "")	;padding is not required
+			   lpad)	;padding is not required
 		(regexp-quote s)
 		(when multi "+") ;the last char of S might be repeated
 		(mapconcat (lambda (c) (concat (regexp-quote (string c)) "?"))
-			   rpad "")))))) ;padding is not required
+			   rpad)))))) ;padding is not required
 
 (defun comment-padleft (str &optional n)
   "Construct a string composed of `comment-padding' plus STR.
diff --git a/lisp/obsolete/pgg-parse.el b/lisp/obsolete/pgg-parse.el
index df32e10a150..5555cd3a0f6 100644
--- a/lisp/obsolete/pgg-parse.el
+++ b/lisp/obsolete/pgg-parse.el
@@ -104,7 +104,7 @@
 
 (defmacro pgg-format-key-identifier (string)
   `(mapconcat (lambda (c) (format "%02X" (pgg-char-int c)))
-	      ,string "")
+	      ,string)
   ;; `(upcase (apply #'format "%02x%02x%02x%02x%02x%02x%02x%02x"
   ;;                 (string-to-number-list ,string)))
   )
diff --git a/lisp/pcmpl-x.el b/lisp/pcmpl-x.el
index 7d8b9e92da2..fd26ea5a991 100644
--- a/lisp/pcmpl-x.el
+++ b/lisp/pcmpl-x.el
@@ -223,7 +223,7 @@
         (goto-char (point-min))
         (while (re-search-forward "^  -\\([^-]\\)" nil t)
           (push (match-string 1) options))
-        (mapconcat 'identity (nreverse options) "")))))
+        (mapconcat #'identity (nreverse options))))))
 
 (defun pcmpl-x-ack-long-options (&optional arg)
   "Long options for the `ack' command."
diff --git a/lisp/pcomplete.el b/lisp/pcomplete.el
index 65ccfd9700c..7e97141eb4c 100644
--- a/lisp/pcomplete.el
+++ b/lisp/pcomplete.el
@@ -953,12 +953,12 @@ component, `default-directory' is used as the basis for completion."
                       (or (eq action t)
                           (eq (car-safe action) 'boundaries))))
             (let ((newstring
-                   (mapconcat #'identity (nreverse (cons string strings)) "")))
+                   (mapconcat #'identity (nreverse (cons string strings)))))
               ;; FIXME: We could also try to return unexpanded envvars.
               (complete-with-action action table newstring pred))
           (let* ((envpos (apply #'+ (mapcar #' length strings)))
                  (newstring
-                  (mapconcat #'identity (nreverse (cons string strings)) ""))
+                  (mapconcat #'identity (nreverse (cons string strings))))
                  (bounds (completion-boundaries newstring table pred
                                                 (or (cdr-safe action) ""))))
             (if (>= (car bounds) envpos)
diff --git a/lisp/play/decipher.el b/lisp/play/decipher.el
index 59b9817f040..b26a5a80884 100644
--- a/lisp/play/decipher.el
+++ b/lisp/play/decipher.el
@@ -559,8 +559,7 @@ you have determined the keyword."
                 (concat
                  (char-to-string (car a))
                  (char-to-string (cdr a))))
-              decipher-alphabet
-              "")))
+              decipher-alphabet)))
 
 (defun decipher-resync ()
   "Reprocess the buffer using the alphabet from the top.
@@ -820,8 +819,7 @@ TOTAL is the total number of letters in the ciphertext."
                   (cond ((> x 99) (incf total) "XX")
                         ((> x 0)  (incf total) (format "%2d" x))
                         (t        "  ")))
-                counts
-                "")
+                counts)
      (format "%4d" (if (> (aref counts 26) 0)
                        (1- total)    ;Don't count space
                      total)))))
diff --git a/lisp/proced.el b/lisp/proced.el
index 3923759a0c7..56928432b9e 100644
--- a/lisp/proced.el
+++ b/lisp/proced.el
@@ -1809,7 +1809,7 @@ Replace newline characters by \"^J\" (two characters)."
                                                      (nth 1 grammar)
                                                      (mapconcat (lambda (s)
                                                                   (if s "+" "-"))
-                                                                refiner ""))))))
+                                                                refiner))))))
              value)
 
         ;; highlight the header of the sort column
diff --git a/lisp/replace.el b/lisp/replace.el
index 4bdb80dc531..b209bd3a92e 100644
--- a/lisp/replace.el
+++ b/lisp/replace.el
@@ -3316,7 +3316,8 @@ characters."
 					  (or (and (symbolp delimited-flag)
 						   (get delimited-flag
 							'isearch-message-prefix))
-					      "word ") "")
+					      "word ")
+					"")
 				      (if regexp-flag "regexp " "")
 				      from-string " with "
 				      next-replacement ".\n\n"
diff --git a/lisp/shell.el b/lisp/shell.el
index acaa8e1f860..e0db85f637e 100644
--- a/lisp/shell.el
+++ b/lisp/shell.el
@@ -479,7 +479,7 @@ can be determined, a default according to the shell type is used."
        (t (error "Unexpected case in shell--unquote&requote-argument!")))
       (setq qpos (match-end 0)))
     (funcall push (substring qstr qpos) (length qstr))
-    (list (mapconcat #'identity (nreverse ustrs) "")
+    (list (mapconcat #'identity (nreverse ustrs))
           qupos #'comint-quote-filename)))
 
 (defun shell--unquote-argument (str)
@@ -524,7 +524,7 @@ can be determined, a default according to the shell type is used."
              ((match-beginning 1)       ;Single quote.
               (push (match-string 1) arg))
              (t (push (match-string 0) arg))))
-          (push (mapconcat #'identity (nreverse arg) "") args)))
+          (push (mapconcat #'identity (nreverse arg)) args)))
       (cons (nreverse args) (nreverse begins)))))
 
 (defun shell-get-old-input ()
diff --git a/lisp/tab-bar.el b/lisp/tab-bar.el
index 15ef7967344..e2e8a2eef85 100644
--- a/lisp/tab-bar.el
+++ b/lisp/tab-bar.el
@@ -568,6 +568,10 @@ appropriate."
   "<mouse-2>"       #'tab-bar-mouse-close-tab
   "<down-mouse-3>"  #'tab-bar-mouse-context-menu
 
+  ;; ;; BEWARE: `mouse-wheel-UP-event' corresponds to `wheel-DOWN' events
+  ;; ;; and vice versa!!
+  ;; (key-description (vector mouse-wheel-down-event))     #'tab-previous
+  ;; (key-description (vector mouse-wheel-up-event))       #'tab-next
   "<mouse-4>"       #'tab-previous
   "<mouse-5>"       #'tab-next
   "<wheel-up>"      #'tab-previous
@@ -575,6 +579,10 @@ appropriate."
   "<wheel-left>"    #'tab-previous
   "<wheel-right>"   #'tab-next
 
+  ;; (key-description (vector (intern (format "S-%s" mouse-wheel-down-event))))
+  ;; #'tab-bar-move-tab-backward
+  ;; (key-description (vector (intern (format "S-%s" mouse-wheel-up-event))))
+  ;; #'tab-bar-move-tab
   "S-<mouse-4>"     #'tab-bar-move-tab-backward
   "S-<mouse-5>"     #'tab-bar-move-tab
   "S-<wheel-up>"    #'tab-bar-move-tab-backward
@@ -1216,7 +1224,7 @@ This prevents calling other non-idempotent items like
   (let* ((rest (or rest (tab-bar-format-list
                          (cdr (memq 'tab-bar-format-align-right
                                     tab-bar-format)))))
-         (rest (mapconcat (lambda (item) (nth 2 item)) rest ""))
+         (rest (mapconcat (lambda (item) (nth 2 item)) rest))
          (hpos (progn
                  (add-face-text-property 0 (length rest) 'tab-bar t rest)
                  (string-pixel-width rest)))
diff --git a/lisp/textmodes/bibtex.el b/lisp/textmodes/bibtex.el
index e5da01b38e6..470b20d8c77 100644
--- a/lisp/textmodes/bibtex.el
+++ b/lisp/textmodes/bibtex.el
@@ -3446,8 +3446,7 @@ Used as default value of `bibtex-summary-function'."
                      (if (not (string= "" (cdr arg)))
                          (concat (car arg) (cdr arg))))
                    `((" " . ,names) (" " . ,year) (": " . ,title)
-                     (", " . ,journal) (" " . ,volume) (":" . ,pages))
-                   ""))
+                     (", " . ,journal) (" " . ,volume) (":" . ,pages))))
     (user-error "Entry not found")))
 
 (defun bibtex-pop (arg direction)
diff --git a/lisp/textmodes/enriched.el b/lisp/textmodes/enriched.el
index c5ae2a15557..e2e18ed2bcd 100644
--- a/lisp/textmodes/enriched.el
+++ b/lisp/textmodes/enriched.el
@@ -368,7 +368,7 @@ if nil, the matching close."
 	       (params (cdr internal-ann)))
 	   (concat (format enriched-annotation-format "" item)
 		   (mapconcat (lambda (i) (concat "<param>" i "</param>"))
-			      params ""))))
+			      params))))
 	(t (format enriched-annotation-format "/" (car internal-ann)))))
 
 (defun enriched-encode-other-face (old new)
diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el
index cef9e03ca49..d0ee617c1c5 100644
--- a/lisp/textmodes/ispell.el
+++ b/lisp/textmodes/ispell.el
@@ -1641,7 +1641,7 @@ about special characters such as ?\\, ?^, ?], and ?- in CHARS.)
 If after this filtering there are no chars left, or only one, a
 special form of the expression is generated."
   (let ((filtered
-	 (mapconcat #'ispell--\\w-filter chars "")))
+	 (mapconcat #'ispell--\\w-filter chars)))
     (concat
      "\\(\\w"
      (cond
diff --git a/lisp/textmodes/reftex-index.el b/lisp/textmodes/reftex-index.el
index 9f9d6253d0a..4b79cb9a180 100644
--- a/lisp/textmodes/reftex-index.el
+++ b/lisp/textmodes/reftex-index.el
@@ -1819,7 +1819,7 @@ Treats the logical `and' for index phrases."
      (mapconcat (lambda (x)
                   (format macro-fmt
                           (format (if mathp reftex-index-math-format "%s") x)))
-                index-keys "")
+                index-keys)
    (if repeat (reftex-index-simplify-phrase match) ""))))
 
 (defun reftex-query-index-phrase-globally (files &rest args)
@@ -2068,7 +2068,7 @@ Does not do a `save-excursion'."
   "Offer a list of possible index macros and have the user select one."
   (let* ((prompt (concat "Select macro: ["
                          (mapconcat (lambda (x) (char-to-string (car x)))
-                                    reftex-index-phrases-macro-data "")
+                                    reftex-index-phrases-macro-data)
                          "] "))
          (help (concat "Select an indexing macro\n========================\n"
                        (mapconcat (lambda (x)
diff --git a/lisp/textmodes/reftex-ref.el b/lisp/textmodes/reftex-ref.el
index cf53fa89014..7de7218a0d5 100644
--- a/lisp/textmodes/reftex-ref.el
+++ b/lisp/textmodes/reftex-ref.el
@@ -304,7 +304,7 @@ also applies `reftex-translate-to-ascii-function' to the string."
              ((and (> c 2175) (< c 2304))               ; Mule Latin-1
               (char-to-string (aref tab (- c 2176))))
              (t (char-to-string c))))
-     string "")))
+     string)))
 
 (defun reftex-replace-prefix-escapes (prefix)
   ;; Replace %escapes in a label prefix
diff --git a/lisp/textmodes/reftex.el b/lisp/textmodes/reftex.el
index c0533ada842..ea6a8b8a111 100644
--- a/lisp/textmodes/reftex.el
+++ b/lisp/textmodes/reftex.el
@@ -954,7 +954,7 @@ This enforces rescanning the buffer on next use."
     (setq reftex-type-query-prompt
           (concat "Label type: ["
                   (mapconcat (lambda(x) (format "%s" (car x)))
-                             qh-list "")
+                             qh-list)
                   "]"))
     ;; In the help string, we need to wrap lines...
     (setq reftex-type-query-help
@@ -1034,7 +1034,7 @@ This enforces rescanning the buffer on next use."
     (setq reftex-query-index-macro-prompt
           (concat "Index macro: ["
                   (mapconcat (lambda (x) (char-to-string (car x)))
-                             reftex-key-to-index-macro-alist "")
+                             reftex-key-to-index-macro-alist)
                   "]"))
     (setq i 0
           reftex-query-index-macro-help
@@ -1044,7 +1044,7 @@ This enforces rescanning the buffer on next use."
             (lambda(x)
               (format "[%c] %-20.20s%s" (car x) (nth 1 x)
                       (if (= 0 (mod (incf i) 3)) "\n" "")))
-            reftex-key-to-index-macro-alist "")))
+            reftex-key-to-index-macro-alist)))
 
     ;; Make the full list of section levels
     (setq reftex-section-levels-all
diff --git a/lisp/textmodes/rst.el b/lisp/textmodes/rst.el
index e1bee145f32..dd999028adb 100644
--- a/lisp/textmodes/rst.el
+++ b/lisp/textmodes/rst.el
@@ -565,11 +565,11 @@ After interpretation of ARGS the results are concatenated as for
                      (mapcar #'rst-re (cdr re))))
                 (cond
                  ((eq (car re) :seq)
-                  (mapconcat #'identity nested ""))
+                  (mapconcat #'identity nested))
                  ((eq (car re) :shy)
-                  (concat "\\(?:" (mapconcat #'identity nested "") "\\)"))
+                  (concat "\\(?:" (mapconcat #'identity nested) "\\)"))
                  ((eq (car re) :grp)
-                  (concat "\\(" (mapconcat #'identity nested "") "\\)"))
+                  (concat "\\(" (mapconcat #'identity nested) "\\)"))
                  ((eq (car re) :alt)
                   (concat "\\(?:" (mapconcat #'identity nested "\\|") "\\)"))
                  (t
diff --git a/lisp/textmodes/tildify.el b/lisp/textmodes/tildify.el
index 922208ba4ad..cd6b5104df7 100644
--- a/lisp/textmodes/tildify.el
+++ b/lisp/textmodes/tildify.el
@@ -334,8 +334,7 @@ no environment was found."
                (if (stringp expr)
                    expr
                  (regexp-quote (match-string expr match))))
-             expression
-             "")))))))
+             expression)))))))
 
 (defun tildify-tildify (beg end ask)
   "Add tilde characters in the region between BEG and END.
diff --git a/lisp/url/url-cache.el b/lisp/url/url-cache.el
index d25c666e830..c5e365bcf72 100644
--- a/lisp/url/url-cache.el
+++ b/lisp/url/url-cache.el
@@ -122,13 +122,14 @@ The actual return value is the last modification time of the cache file."
                          "/")
                         (t
                          (setq slash nil)
-                         (char-to-string x)))) fname ""))))
+                         (char-to-string x))))
+                     fname))))
 
 	(setq fname (and fname
 			 (mapconcat
                           (lambda (x)
                             (if (= x ?~) "" (char-to-string x)))
-			  fname ""))
+			  fname))
 	      fname (cond
 		     ((null fname) nil)
 		     ((or (string= "" fname) (string= "/" fname))
diff --git a/lisp/url/url-expand.el b/lisp/url/url-expand.el
index 4ac9e206a6f..db356b8f126 100644
--- a/lisp/url/url-expand.el
+++ b/lisp/url/url-expand.el
@@ -71,7 +71,7 @@ path components followed by `..' are removed, along with the `..' itself."
                              (if (memq x '(?\s ?\n ?\r))
                                  ""
                                (char-to-string x)))
-			   url "")))
+			   url)))
 
   ;; Need to figure out how/where to expand the fragment relative to
   (setq default (cond
diff --git a/lisp/url/url.el b/lisp/url/url.el
index 002ce7bef7d..df46db9f4a6 100644
--- a/lisp/url/url.el
+++ b/lisp/url/url.el
@@ -100,7 +100,8 @@ Emacs."
 					((= x ?*) ".*")
 					((= x ??) ".")
 					(t (char-to-string x))))
-				     noproxy "") "\\)"))
+				     noproxy)
+				    "\\)"))
 		      url-proxy-services))))
 
     (url-setup-privacy-info)
diff --git a/lisp/vc/diff-mode.el b/lisp/vc/diff-mode.el
index b9ecab7af61..dad68732b1c 100644
--- a/lisp/vc/diff-mode.el
+++ b/lisp/vc/diff-mode.el
@@ -1553,7 +1553,7 @@ else cover the whole buffer."
 			(insert (or half2 ""))))
 		    (goto-char pt-lines1)
 		    (insert str1))))))
-	   ;; a unified-diff hunk header
+	   ;; A unified-diff hunk header.
 	   ((match-beginning 7)
 	    (replace-match "@@ -\\8 +\\7 @@" nil)
 	    (forward-line 1)
diff --git a/lisp/vc/emerge.el b/lisp/vc/emerge.el
index 56afcf4b7af..8c6b19f8394 100644
--- a/lisp/vc/emerge.el
+++ b/lisp/vc/emerge.el
@@ -3035,7 +3035,7 @@ See also `auto-save-file-name-p'."
 		 (if (>= b ?/)
 		     (setq b (1+ b)))
 		 (char-to-string b))
-	       bins "")))
+	       bins)))
 
 ;; Quote any /s in a string by replacing them with \!.
 ;; Also, replace any \s by \\, to make it one-to-one.
diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el
index c98b01fe262..be8f696c0cf 100644
--- a/lisp/vc/vc-git.el
+++ b/lisp/vc/vc-git.el
@@ -480,7 +480,7 @@ in the order given by `git status'."
                      (?\\ "\\\\")
                      (?\" "\\\"")
                      (_ (char-to-string c))))
-                 name "")
+                 name)
               "\"")
     name))
 
diff --git a/lisp/vc/vc-hg.el b/lisp/vc/vc-hg.el
index 6916c56c141..1a8eea5630b 100644
--- a/lisp/vc/vc-hg.el
+++ b/lisp/vc/vc-hg.el
@@ -1659,7 +1659,7 @@ revisions, fetch only those revisions."
                                                (concat " && " hg-program " "
                                                        (mapconcat #'identity
                                                                   args " ")))
-                                             post-processing "")))
+                                             post-processing)))
               (setq-local compilation-directory root)
               ;; Either set `compilation-buffer-name-function' locally to nil
               ;; or use `compilation-arguments' to set `name-function'.
diff --git a/lisp/xml.el b/lisp/xml.el
index 43fdb60acd3..58504e4611b 100644
--- a/lisp/xml.el
+++ b/lisp/xml.el
@@ -909,7 +909,7 @@ references and parameter-entity references."
 		    (error "XML: (Validity) Undefined parameter entity `%s'" ref))
 	       (push (or (cdr val) xml-undefined-entity) children)))
 	(setq string remainder)))
-    (mapconcat 'identity (nreverse (cons string children)) "")))
+    (mapconcat #'identity (nreverse (cons string children)))))
 
 (defun xml-parse-elem-type (string)
   "Convert element type STRING into a Lisp structure."
@@ -980,7 +980,7 @@ STRING is assumed to occur in an XML attribute value."
 	       (> (length string) (+ strlen xml-entity-expansion-limit))
 	       (error "XML: Passed `xml-entity-expansion-limit' while expanding `&%s;'"
 		      ref)))))
-    (mapconcat 'identity (nreverse (cons string children)) "")))
+    (mapconcat #'identity (nreverse (cons string children)))))
 
 (defun xml-substitute-numeric-entities (string)
   "Substitute SGML numeric entities by their respective utf characters.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.