unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#28790: [PATCH] Replaced "which see" with "q.v.".
@ 2017-10-11 21:22 John Williams
  2017-10-12  1:44 ` Nick Helm
                   ` (2 more replies)
  0 siblings, 3 replies; 17+ messages in thread
From: John Williams @ 2017-10-11 21:22 UTC (permalink / raw)
  To: 28790

[-- Attachment #1: Type: text/plain, Size: 710 bytes --]

This patch fixes a grammar issue that's been bugging me for a while.
Full description from the patch:

While it may seem strange to replace an English phrase with a
relatively obscure Latin abbreviation, there are a number of
advantages.  As someone whose first language is English, I've never
seen "which see" used anywhere else the way it is in Emacs.  It looks
totally ungrammatical to me, and I found it quite confusing when I
first encountered it.  It's a difficult phrase to search for because
it's formed from such common words.  OTOH, q.v. is easily searchable,
it has a well-defined meaning, and the conventional way to use it
serves as a drop-in replacement for the way "which see" is used in
Emacs.

[-- Attachment #2: 0001-Replaced-which-see-with-q.v.patch --]
[-- Type: text/x-patch, Size: 169276 bytes --]

From 02b8693b0da40a7c8422e75a74df66fdd5256959 Mon Sep 17 00:00:00 2001
From: John Williams <jrw@pobox.com>
Date: Wed, 11 Oct 2017 14:08:34 -0700
Subject: [PATCH] Replaced "which see" with "q.v.".

While it may seem strange to replace an English phrase with a
relatively obscure Latin abbreviation, there are a number of
advantages.  As someone whose first language is English, I've never
seen "which see" used anywhere else the way it is in Emacs.  It looks
totally ungrammatical to me, and I found it quite confusing when I
first encountered it.  It's a difficult phrase to search for because
it's formed from such common words.  OTOH, q.v. is easily searchable,
it has a well-defined meaning, and the conventional way to use it
serves as a drop-in replacement for the way "which see" is used in
Emacs.
---
 ChangeLog.2                                        |  3 +-
 doc/lispintro/emacs-lisp-intro.texi                |  2 +-
 doc/lispref/modes.texi                             |  2 +-
 doc/misc/ediff.texi                                | 12 ++---
 doc/misc/idlwave.texi                              |  2 +-
 doc/misc/org.texi                                  |  2 +-
 doc/misc/reftex.texi                               |  2 +-
 etc/ORG-NEWS                                       |  8 +--
 etc/emacs-buffer.gdb                               |  4 +-
 lisp/allout.el                                     |  4 +-
 lisp/auth-source.el                                |  2 +-
 lisp/avoid.el                                      |  2 +-
 lisp/bindings.el                                   |  6 +--
 lisp/calendar/cal-china.el                         |  2 +-
 lisp/calendar/calendar.el                          | 14 ++---
 lisp/composite.el                                  |  4 +-
 lisp/cus-edit.el                                   |  8 +--
 lisp/dired-aux.el                                  |  6 +--
 lisp/dired.el                                      |  2 +-
 lisp/doc-view.el                                   |  2 +-
 lisp/dos-fns.el                                    |  2 +-
 lisp/dos-w32.el                                    |  4 +-
 lisp/elec-pair.el                                  |  2 +-
 lisp/electric.el                                   |  2 +-
 lisp/emacs-lisp/advice.el                          |  6 +--
 lisp/emacs-lisp/autoload.el                        |  4 +-
 lisp/emacs-lisp/byte-run.el                        |  2 +-
 lisp/emacs-lisp/bytecomp.el                        |  4 +-
 lisp/emacs-lisp/checkdoc.el                        |  4 +-
 lisp/emacs-lisp/copyright.el                       |  2 +-
 lisp/emacs-lisp/easy-mmode.el                      |  4 +-
 lisp/emacs-lisp/edebug.el                          |  4 +-
 lisp/emacs-lisp/generic.el                         |  2 +-
 lisp/emacs-lisp/package.el                         |  2 +-
 lisp/emacs-lisp/pcase.el                           |  2 +-
 lisp/emacs-lisp/pp.el                              |  2 +-
 lisp/emacs-lisp/smie.el                            |  2 +-
 lisp/emacs-lock.el                                 |  8 +--
 lisp/env.el                                        |  2 +-
 lisp/eshell/esh-ext.el                             |  2 +-
 lisp/faces.el                                      |  2 +-
 lisp/files.el                                      |  6 +--
 lisp/frameset.el                                   |  6 +--
 lisp/generic-x.el                                  |  2 +-
 lisp/gnus/gnus-group.el                            |  2 +-
 lisp/help.el                                       |  2 +-
 lisp/ibuf-ext.el                                   |  2 +-
 lisp/ielm.el                                       |  2 +-
 lisp/image-mode.el                                 |  2 +-
 lisp/info.el                                       |  4 +-
 lisp/international/characters.el                   |  2 +-
 lisp/international/fontset.el                      |  4 +-
 lisp/international/mule-cmds.el                    | 12 ++---
 lisp/international/mule.el                         | 20 +++----
 lisp/international/quail.el                        |  6 +--
 lisp/jka-cmpr-hook.el                              |  4 +-
 lisp/language/hanja-util.el                        |  2 +-
 lisp/ldefs-boot.el                                 | 62 +++++++++++-----------
 lisp/locate.el                                     |  2 +-
 lisp/lpr.el                                        |  2 +-
 lisp/mail/mailabbrev.el                            |  4 +-
 lisp/mail/rmailmm.el                               |  4 +-
 lisp/man.el                                        |  2 +-
 lisp/net/ange-ftp.el                               |  2 +-
 lisp/net/ldap.el                                   |  2 +-
 lisp/net/net-utils.el                              |  6 +--
 lisp/net/pop3.el                                   |  2 +-
 lisp/net/rcirc.el                                  |  2 +-
 lisp/net/tramp.el                                  |  8 +--
 lisp/obsolete/cust-print.el                        |  8 +--
 lisp/org/ob-core.el                                |  2 +-
 lisp/org/ob-emacs-lisp.el                          |  2 +-
 lisp/org/ob-lob.el                                 |  2 +-
 lisp/org/org-clock.el                              |  2 +-
 lisp/org/org-colview.el                            |  4 +-
 lisp/org/org-element.el                            |  2 +-
 lisp/org/org-lint.el                               |  2 +-
 lisp/org/org-list.el                               |  2 +-
 lisp/org/org-src.el                                |  6 +--
 lisp/org/org-table.el                              |  2 +-
 lisp/org/org.el                                    | 24 ++++-----
 lisp/org/ox-latex.el                               |  4 +-
 lisp/org/ox-texinfo.el                             |  6 +--
 lisp/org/ox.el                                     |  6 +--
 lisp/printing.el                                   |  2 +-
 lisp/progmodes/cfengine.el                         |  4 +-
 lisp/progmodes/compile.el                          |  2 +-
 lisp/progmodes/ebnf2ps.el                          | 20 +++----
 lisp/progmodes/elisp-mode.el                       |  6 +--
 lisp/progmodes/etags.el                            | 14 ++---
 lisp/progmodes/flymake-proc.el                     |  2 +-
 lisp/progmodes/flymake.el                          |  2 +-
 lisp/progmodes/gud.el                              |  2 +-
 lisp/progmodes/idlw-help.el                        |  4 +-
 lisp/progmodes/idlwave.el                          |  2 +-
 lisp/progmodes/js.el                               |  2 +-
 lisp/progmodes/octave.el                           | 12 ++---
 lisp/progmodes/prog-mode.el                        |  2 +-
 lisp/progmodes/xref.el                             |  2 +-
 lisp/ps-mule.el                                    |  2 +-
 lisp/ps-print.el                                   | 26 ++++-----
 lisp/replace.el                                    |  6 +--
 lisp/select.el                                     |  2 +-
 lisp/simple.el                                     | 12 ++---
 lisp/subr.el                                       | 22 ++++----
 lisp/term/common-win.el                            |  2 +-
 lisp/term/xterm.el                                 |  2 +-
 lisp/textmodes/bibtex.el                           |  2 +-
 lisp/textmodes/reftex-index.el                     |  2 +-
 lisp/textmodes/texnfo-upd.el                       |  2 +-
 lisp/url/url-queue.el                              |  2 +-
 lisp/vc/ediff-mult.el                              |  2 +-
 lisp/vc/ediff-util.el                              |  6 +--
 lisp/whitespace.el                                 | 18 +++----
 src/bidi.c                                         |  2 +-
 src/buffer.c                                       |  6 +--
 src/callint.c                                      |  2 +-
 src/charset.c                                      |  2 +-
 src/cmds.c                                         |  4 +-
 src/coding.c                                       |  6 +--
 src/dired.c                                        | 12 ++---
 src/dispextern.h                                   |  2 +-
 src/editfns.c                                      |  4 +-
 src/fileio.c                                       |  8 +--
 src/font.c                                         |  2 +-
 src/fontset.c                                      |  2 +-
 src/keyboard.c                                     |  4 +-
 src/keymap.c                                       |  2 +-
 src/lcms.c                                         | 18 +++----
 src/lread.c                                        |  2 +-
 src/msdos.c                                        |  2 +-
 src/nsfns.m                                        |  6 +--
 src/print.c                                        | 14 ++---
 src/regex.h                                        |  2 +-
 src/search.c                                       | 10 ++--
 src/w32fns.c                                       | 12 ++---
 src/window.c                                       |  2 +-
 src/xdisp.c                                        |  8 +--
 src/xfns.c                                         |  6 +--
 test/manual/etags/c-src/emacs/src/keyboard.c       |  4 +-
 .../etags/el-src/emacs/lisp/progmodes/etags.el     | 14 ++---
 141 files changed, 373 insertions(+), 374 deletions(-)

diff --git a/ChangeLog.2 b/ChangeLog.2
index e7befde64a3..c36ad0252ed 100644
--- a/ChangeLog.2
+++ b/ChangeLog.2
@@ -35463,8 +35463,7 @@
 	vmotion, for the same reason.  Fix the clipping of the argument
 	value to support scroll-margin in all cases and avoid unwarranted
 	recentering.  Reported by Milan Stanojević <milanst@gmail.com> in
-	https://lists.gnu.org/archive/html/help-gnu-emacs/2015-04/msg00092.html,
-	which see.
+	https://lists.gnu.org/archive/html/help-gnu-emacs/2015-04/msg00092.html.
 
 2015-04-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 
diff --git a/doc/lispintro/emacs-lisp-intro.texi b/doc/lispintro/emacs-lisp-intro.texi
index d9493879b1d..10a6a0f9ffd 100644
--- a/doc/lispintro/emacs-lisp-intro.texi
+++ b/doc/lispintro/emacs-lisp-intro.texi
@@ -19182,7 +19182,7 @@ yank
 
 When this command inserts killed text into the buffer, it honors
 `yank-excluded-properties' and `yank-handler' as described in the
-doc string for `insert-for-yank-1', which see.
+doc string for `insert-for-yank-1' (q.v.).
 
 See also the command `yank-pop' (\\[yank-pop])."
 @end group
diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi
index f7013da9433..5f5486a7821 100644
--- a/doc/lispref/modes.texi
+++ b/doc/lispref/modes.texi
@@ -3307,7 +3307,7 @@ Multiline Font Lock
 Place a @code{font-lock-multiline} property on the construct.  This
 will rehighlight the whole construct if any part of it is changed.  In
 some cases you can do this automatically by setting the
-@code{font-lock-multiline} variable, which see.
+@code{font-lock-multiline} variable (q.v.).
 @item
 Make sure @code{jit-lock-contextually} is set and rely on it doing its
 job.  This will only rehighlight the part of the construct that
diff --git a/doc/misc/ediff.texi b/doc/misc/ediff.texi
index 87d3dfd6ed9..99049b95d28 100644
--- a/doc/misc/ediff.texi
+++ b/doc/misc/ediff.texi
@@ -493,7 +493,7 @@ Quick Help Commands
 Copies the current difference region (or the region specified as the prefix
 to this command) from buffer A to buffer B@.
 Ediff saves the old contents of buffer B's region; it can
-be restored via the command @kbd{rb}, which see.
+be restored via the command @kbd{rb} (q.v.).
 
 @emph{In merge sessions:}
 Copies the current difference region (or the region specified as the prefix
@@ -655,19 +655,19 @@ Quick Help Commands
 @kindex ra
 Restores the old contents of the current difference region in buffer A,
 which was previously saved when the user invoked one of these commands:
-@kbd{b}, @kbd{ba}, @kbd{ca}, which see.  This command is enabled in
+@kbd{b}, @kbd{ba}, @kbd{ca} (q.v.).  This command is enabled in
 comparison sessions only.
 @item rb
 @kindex rb
 Restores the old contents of the current difference region in buffer B,
 which was previously saved when the user invoked one of these commands:
-@kbd{a}, @kbd{ab}, @kbd{cb}, which see.  This command is enabled in
+@kbd{a}, @kbd{ab}, @kbd{cb} (q.v.).  This command is enabled in
 comparison sessions only.
 @item rc
 @kindex rc
 Restores the old contents of the current difference region in buffer C,
 which was previously saved when the user invoked one of these commands:
-@kbd{ac}, @kbd{bc}, which see.  This command is enabled in 3-file
+@kbd{ac}, @kbd{bc} (q.v.).  This command is enabled in 3-file
 comparison sessions only.
 
 @item ##
@@ -783,7 +783,7 @@ Quick Help Commands
 @kindex %
 Toggles narrowing in Ediff buffers.  Ediff buffers may be narrowed if you
 are comparing only parts of these buffers via the commands
-@code{ediff-windows-*} and @code{ediff-regions-*}, which see.
+@code{ediff-windows-*} and @code{ediff-regions-*} (q.v.).
 
 @item C-l
 @kindex C-l
@@ -871,7 +871,7 @@ Quick Help Commands
 to another difference does not affect window C's size.
 
 The split between the merge window and the variant windows is controlled by
-the variable @code{ediff-merge-window-share}, which see.
+the variable @code{ediff-merge-window-share} (q.v.).
 
 @item +
 @kindex +
diff --git a/doc/misc/idlwave.texi b/doc/misc/idlwave.texi
index b6a8cc8cfbf..d774b0db5f5 100644
--- a/doc/misc/idlwave.texi
+++ b/doc/misc/idlwave.texi
@@ -1413,7 +1413,7 @@ Help with HTML Documentation
 @defopt idlwave-help-browser-function
 The browser function to use to display IDLWAVE HTML help.  Should be
 one of the functions available for setting
-@code{browse-url-browser-function}, which see.
+@code{browse-url-browser-function} (q.v.).
 @end defopt
 
 @defopt idlwave-help-browser-is-local
diff --git a/doc/misc/org.texi b/doc/misc/org.texi
index 72fbbade59e..da82756f51d 100644
--- a/doc/misc/org.texi
+++ b/doc/misc/org.texi
@@ -5671,7 +5671,7 @@ Column attributes
 
 @vindex org-columns-summary-types
 You can also define custom summary types by setting
-@code{org-columns-summary-types}, which see.
+@code{org-columns-summary-types} (q.v.).
 
 Here is an example for a complete columns definition, along with allowed
 values.
diff --git a/doc/misc/reftex.texi b/doc/misc/reftex.texi
index e7eef9eba24..c62c0683e37 100644
--- a/doc/misc/reftex.texi
+++ b/doc/misc/reftex.texi
@@ -3750,7 +3750,7 @@ Commands
 @kbd{C-u} as prefix, also ask for the index macro and other stuff.  When
 called inside @TeX{} math mode as determined by the @file{texmathp.el}
 library which is part of @AUCTeX{}, the string is first processed with the
-@code{reftex-index-math-format}, which see.
+@code{reftex-index-math-format} (q.v.).
 @end deffn
 
 @deffn Command reftex-index-phrase-selection-or-word
diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS
index d6f550d29e5..e9a9e8215fa 100644
--- a/etc/ORG-NEWS
+++ b/etc/ORG-NEWS
@@ -424,7 +424,7 @@ in addition to ~org-publish-find-title~ and ~org-publish-find-date~.
 
 *** ~org-list-to-org~
 
-It is the reciprocal of ~org-list-to-lisp~, which see.
+It is the reciprocal of ~org-list-to-lisp~ (q.v.).
 
 *** ~org-agenda-set-restriction-lock-from-agenda~
 
@@ -937,7 +937,7 @@ The variable used to be a ~defvar~, it is now a ~defcustom~.
 **** Allow custom summaries
 
 It is now possible to add new summary types, or override those
-provided by Org by customizing ~org-columns-summary-types~, which see.
+provided by Org by customizing ~org-columns-summary-types~ (q.v.).
 
 **** Allow multiple summaries for any property
 
@@ -1462,7 +1462,7 @@ which is now obsolete.  As a consequence, this change also deprecates
 Using C-c ' on an export block now opens a sub-editing buffer.  Major
 mode in that buffer is determined by export backend name (e.g.,
 "latex" \to "latex-mode").  You can define exceptions to this rule by
-configuring ~org-src-lang-modes~, which see.
+configuring ~org-src-lang-modes~ (q.v.).
 
 *** Additional =:hline= processing to ob-shell
 
@@ -3487,7 +3487,7 @@ that Calc formulas can operate on them.
 
 **** =org-list-ending-method= and =org-list-end-regexp= are now obsolete
 
-     Fall back on using =org-list-end-re= only, which see.
+     Fall back on using =org-list-end-re= only (q.v.).
 
 **** org-feed.el now expands =%(sexp)= templates
 **** New option [[doc::org-protocol-data-separator][org-protocol-data-separator]]
diff --git a/etc/emacs-buffer.gdb b/etc/emacs-buffer.gdb
index 7d9d6488ee8..cd395cadc71 100644
--- a/etc/emacs-buffer.gdb
+++ b/etc/emacs-buffer.gdb
@@ -200,7 +200,7 @@ document yget-buffer-pointers
   Update convenience variables with address pointers for the ARG'th buffer
   as displayed by 'ybuffer-list'.
 
-  This also sets the current buffer using 'yset-buffer' (which see).
+  This also sets the current buffer using 'yset-buffer' (q.v.).
 end
 
 define yget-current-buffer-name
@@ -242,7 +242,7 @@ document ydump-buffer
   file FILE.
 
   This is mainly used as an internal subroutine for 'ysave-buffer' and
-  'ybuffer-contents', which see.
+  'ybuffer-contents' (q.v.).
 end
 
 define ysave-buffer
diff --git a/lisp/allout.el b/lisp/allout.el
index d0be847aa79..3217385ae9e 100644
--- a/lisp/allout.el
+++ b/lisp/allout.el
@@ -369,7 +369,7 @@ allout-default-layout
 
 Also, allout's mode-specific provisions will make topic prefixes default
 to the comment-start string, if any, of the language of the file.  This
-is modulo the setting of `allout-use-mode-specific-leader', which see."
+is modulo the setting of `allout-use-mode-specific-leader' (q.v.)."
   :type 'allout-layout-type
   :group 'allout)
 ;;;_  : allout-layout-type
@@ -1107,7 +1107,7 @@ 'allout-infer-header-lead
 (defun allout-infer-body-reindent ()
   "Determine proper setting for `allout-reindent-bodies'.
 
-Depends on default setting of `allout-reindent-bodies' (which see)
+Depends on default setting of `allout-reindent-bodies' (q.v.)
 and presence of setting for `comment-start', to tell whether the
 file is programming code."
   (if (and allout-reindent-bodies
diff --git a/lisp/auth-source.el b/lisp/auth-source.el
index 1cb7f5d57ef..cc234fb6095 100644
--- a/lisp/auth-source.el
+++ b/lisp/auth-source.el
@@ -642,7 +642,7 @@ auth-source-backend-parse-parameters
 The return value is a list with at most :max tokens.  Each token
 is a plist with keys :backend :host :port :user, plus any other
 keys provided by the backend (notably :secret).  But note the
-exception for :max 0, which see above.
+exception for :max 0 (q.v. above).
 
 The token can hold a :save-function key.  If you call that, the
 user will be prompted to save the data to the backend.  You can't
diff --git a/lisp/avoid.el b/lisp/avoid.el
index 1a471983fc8..240bb67264c 100644
--- a/lisp/avoid.el
+++ b/lisp/avoid.el
@@ -96,7 +96,7 @@ mouse-avoidance-nudge-dist
   :group 'avoid)
 
 (defcustom mouse-avoidance-nudge-var 10
-  "Variability of `mouse-avoidance-nudge-dist' (which see)."
+  "Variability of `mouse-avoidance-nudge-dist' (q.v.)."
   :type 'integer
   :group 'avoid)
 
diff --git a/lisp/bindings.el b/lisp/bindings.el
index 3a679f778ab..6c4663a65f6 100644
--- a/lisp/bindings.el
+++ b/lisp/bindings.el
@@ -244,7 +244,7 @@ mode-line-remote
 ;; MSDOS frames have window-system, but want the Fn identification.
 (defun mode-line-frame-control ()
   "Compute mode line construct for frame identification.
-Value is used for `mode-line-frame-identification', which see."
+Value is used for `mode-line-frame-identification' (q.v.)."
   (if (or (null window-system)
 	  (eq window-system 'pc))
       "-%F  "
@@ -801,7 +801,7 @@ right-word
 
 Depending on the bidirectional context, this may move either forward
 or backward in the buffer.  This is in contrast with \\[forward-word]
-and \\[backward-word], which see.
+and \\[backward-word] (q.v.).
 
 Value is normally t.
 If an edge of the buffer or a field boundary is reached, point is left there
@@ -817,7 +817,7 @@ left-word
 
 Depending on the bidirectional context, this may move either backward
 or forward in the buffer.  This is in contrast with \\[backward-word]
-and \\[forward-word], which see.
+and \\[forward-word] (q.v.).
 
 Value is normally t.
 If an edge of the buffer or a field boundary is reached, point is left there
diff --git a/lisp/calendar/cal-china.el b/lisp/calendar/cal-china.el
index 5761e576817..95a50446335 100644
--- a/lisp/calendar/cal-china.el
+++ b/lisp/calendar/cal-china.el
@@ -715,7 +715,7 @@ diary-chinese-list-entries
 
 ;;;###cal-autoload
 (defun diary-chinese-anniversary (month day &optional year mark)
-  "Like `diary-anniversary' (which see) but accepts Chinese date."
+  "Like `diary-anniversary' (q.v.) but accepts Chinese date."
   (pcase-let* ((ddate (diary-make-date month day year))
                (`(,dc ,dy ,dm ,dd)      ;diary chinese date
                 (if year
diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el
index 96ccd94382c..a04e7663f2c 100644
--- a/lisp/calendar/calendar.el
+++ b/lisp/calendar/calendar.el
@@ -732,7 +732,7 @@ diary-iso-date-forms
     "List of pseudo-patterns describing the ISO style of dates.
 The defaults are: MONTH[-/]DAY; YEAR[-/]MONTH[-/]DAY; MONTHNAME DAY;
 YEAR MONTHNAME DAY; DAYNAME.  Normally you should not customize this,
-but `diary-date-forms' (which see)."
+but `diary-date-forms' (q.v.)."
     :version "23.3"                     ; bug#7377
     :type '(repeat (choice (cons :tag "Backup"
                                :value (backup . nil)
@@ -754,7 +754,7 @@ diary-american-date-forms
   "List of pseudo-patterns describing the American style of dates.
 The defaults are: MONTH/DAY; MONTH/DAY/YEAR; MONTHNAME DAY;
 MONTHNAME DAY, YEAR; DAYNAME.  Normally you should not customize this,
-but `diary-date-forms' (which see)."
+but `diary-date-forms' (q.v.)."
   :type '(repeat (choice (cons :tag "Backup"
                                :value (backup . nil)
                                (const backup)
@@ -775,7 +775,7 @@ diary-european-date-forms
   "List of pseudo-patterns describing the European style of dates.
 The defaults are: DAY/MONTH; DAY/MONTH/YEAR; DAY MONTHNAME;
 DAY MONTHNAME YEAR; DAYNAME.  Normally you should not customize this, but
-`diary-date-forms' (which see)."
+`diary-date-forms' (q.v.)."
   :type '(repeat (choice (cons :tag "Backup"
                                :value (backup . nil)
                                (const backup)
@@ -850,7 +850,7 @@ calendar-iso-date-display-form
                                                (string-to-number day)))
   "Pseudo-pattern governing the way a date appears in the ISO style.
 Normally you should not customize this, but `calendar-date-display-form'
-\(which see)."
+\(q.v.)."
   :type 'sexp
   :risky t
   :version "23.1"
@@ -860,7 +860,7 @@ calendar-european-date-display-form
   '((if dayname (concat dayname ", ")) day " " monthname " " year)
   "Pseudo-pattern governing the way a date appears in the European style.
 Normally you should not customize this, but `calendar-date-display-form'
-\(which see)."
+\(q.v.)."
   :type 'sexp
   :risky t
   :group 'calendar)
@@ -869,7 +869,7 @@ calendar-american-date-display-form
   '((if dayname (concat dayname ", ")) monthname " " day ", " year)
   "Pseudo-pattern governing the way a date appears in the American style.
 Normally you should not customize this, but `calendar-date-display-form'
-\(which see)."
+\(q.v.)."
   :type 'sexp
   :risky t
   :group 'calendar)
@@ -881,7 +881,7 @@ calendar-date-display-form
          calendar-european-date-display-form)
         (t calendar-american-date-display-form))
   "Pseudo-pattern governing the way a calendar date appears.
-Used by the function `calendar-date-string' (which see), a pseudo-pattern
+Used by the function `calendar-date-string' (q.v.), a pseudo-pattern
 is a list of expressions that can involve the keywords `month', `day',
 and `year' (all numbers in string form), and `monthname' and `dayname'
 \(both alphabetic strings).  For example, a typical American form would be
diff --git a/lisp/composite.el b/lisp/composite.el
index ab39e087e1f..030574c366d 100644
--- a/lisp/composite.el
+++ b/lisp/composite.el
@@ -392,7 +392,7 @@ compose-last-chars
 	(compose-last-chars N COMPONENTS),
 where N is the number of characters before point to compose,
 COMPONENTS, if non-nil, is the same as the argument to `compose-region'
-\(which see).  If it is nil, `compose-chars-after' is called,
+\(q.v.).  If it is nil, `compose-chars-after' is called,
 and that function finds a proper rule to compose the target characters.
 This function is intended to be used from input methods.
 The global keymap binds special event `compose-last-chars' to this
@@ -798,7 +798,7 @@ auto-compose-chars
 
 The value is a gstring containing information for shaping the characters.
 
-This function is the default value of `auto-composition-function' (which see)."
+This function is the default value of `auto-composition-function' (q.v.)."
   (let ((gstring (composition-get-gstring from to font-object string)))
     (if (lgstring-shaped-p gstring)
 	gstring
diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el
index a87783850a3..989851c54d3 100644
--- a/lisp/cus-edit.el
+++ b/lisp/cus-edit.el
@@ -907,7 +907,7 @@ custom-prompt-variable
 the name of the variable.
 
 If the variable has a `variable-interactive' property, that is used as if
-it were the arg to `interactive' (which see) to interactively read the value.
+it were the arg to `interactive' (q.v.) to interactively read the value.
 
 If the variable has a `custom-type' property, it must be a widget and the
 `:prompt-value' property of that widget will be used for reading the value.
@@ -950,7 +950,7 @@ customize-set-value
   "Set VARIABLE to VALUE, and return VALUE.  VALUE is a Lisp object.
 
 If VARIABLE has a `variable-interactive' property, that is used as if
-it were the arg to `interactive' (which see) to interactively read the value.
+it were the arg to `interactive' (q.v.) to interactively read the value.
 
 If VARIABLE has a `custom-type' property, it must be a widget and the
 `:prompt-value' property of that widget will be used for reading the value.
@@ -975,7 +975,7 @@ customize-set-variable
 VARIABLE, otherwise `set-default' is used.
 
 If VARIABLE has a `variable-interactive' property, that is used as if
-it were the arg to `interactive' (which see) to interactively read the value.
+it were the arg to `interactive' (q.v.) to interactively read the value.
 
 If VARIABLE has a `custom-type' property, it must be a widget and the
 `:prompt-value' property of that widget will be used for reading the value.
@@ -1005,7 +1005,7 @@ customize-save-variable
 VARIABLE, otherwise `set-default' is used.
 
 If VARIABLE has a `variable-interactive' property, that is used as if
-it were the arg to `interactive' (which see) to interactively read the value.
+it were the arg to `interactive' (q.v.) to interactively read the value.
 
 If VARIABLE has a `custom-type' property, it must be a widget and the
 `:prompt-value' property of that widget will be used for reading the value.
diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el
index 7e2252fcf1b..e8f45c2c9d3 100644
--- a/lisp/dired-aux.el
+++ b/lisp/dired-aux.el
@@ -2034,7 +2034,7 @@ dired-do-symlink
 and new symbolic links are made in that directory
 with the same names that the files currently have.  The default
 suggested for the target directory depends on the value of
-`dired-dwim-target', which see.
+`dired-dwim-target' (q.v.).
 
 For relative symlinks, use \\[dired-do-relsymlink]."
   (interactive "P")
@@ -2049,7 +2049,7 @@ dired-do-hardlink
 and new hard links are made in that directory
 with the same names that the files currently have.  The default
 suggested for the target directory depends on the value of
-`dired-dwim-target', which see."
+`dired-dwim-target' (q.v.)."
   (interactive "P")
   (dired-do-create-files 'hardlink #'dired-hardlink
 			   "Hardlink" arg dired-keep-marker-hardlink))
@@ -2068,7 +2068,7 @@ dired-do-rename
 When renaming multiple or marked files, you specify a directory.
 This command also renames any buffers that are visiting the files.
 The default suggested for the target directory depends on the value
-of `dired-dwim-target', which see."
+of `dired-dwim-target' (q.v.)."
   (interactive "P")
   (dired-do-create-files 'move #'dired-rename-file
 			 "Move" arg dired-keep-marker-rename "Rename"))
diff --git a/lisp/dired.el b/lisp/dired.el
index 1ec3ac4f99c..81489aa220f 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -3041,7 +3041,7 @@ dired-delete-file
   Anything else -- ask for each sub-directory.
 
 TRASH non-nil means to trash the file instead of deleting, provided
-`delete-by-moving-to-trash' (which see) is non-nil."
+`delete-by-moving-to-trash' (q.v.) is non-nil."
        ;; This test is equivalent to
        ;; (and (file-directory-p fn) (not (file-symlink-p fn)))
        ;; but more efficient
diff --git a/lisp/doc-view.el b/lisp/doc-view.el
index a222076edb8..341000c2b6c 100644
--- a/lisp/doc-view.el
+++ b/lisp/doc-view.el
@@ -1914,7 +1914,7 @@ doc-view-bookmark-make-record
 ;;;###autoload
 (defun doc-view-bookmark-jump (bmk)
   ;; This implements the `handler' function interface for record type
-  ;; returned by `doc-view-bookmark-make-record', which see.
+  ;; returned by `doc-view-bookmark-make-record' (q.v.).
   (let ((page (bookmark-prop-get bmk 'page))
 	(show-fn-sym (make-symbol "doc-view-bookmark-after-jump-hook")))
     (fset show-fn-sym
diff --git a/lisp/dos-fns.el b/lisp/dos-fns.el
index f69335d2c21..6c962bebfe6 100644
--- a/lisp/dos-fns.el
+++ b/lisp/dos-fns.el
@@ -283,7 +283,7 @@ dos-intdos
   "Issue the DOS Int 21h with registers REGS.
 
 REGS should be a vector produced by `dos-make-register'
-and `dos-set-register-value', which see."
+and `dos-set-register-value' (q.v.)."
   (int86 33 regs))
 
 (define-obsolete-function-alias 'intdos 'dos-intdos "24.1")
diff --git a/lisp/dos-w32.el b/lisp/dos-w32.el
index affadee2fe7..a5f53ff6da1 100644
--- a/lisp/dos-w32.el
+++ b/lisp/dos-w32.el
@@ -366,7 +366,7 @@ w32-direct-print-region-function
                                                &rest rest)
   "DOS/Windows-specific function to print the region on a printer.
 Writes the region to the device or file which is a value of
-`printer-name' (which see), unless the value of `lpr-command'
+`printer-name' (q.v.), unless the value of `lpr-command'
 indicates a specific program should be invoked."
 
   ;; DOS printers need the lines to end with CR-LF pairs, so make
@@ -417,7 +417,7 @@ w32-direct-ps-print-region-function
                                                   &rest rest)
   "DOS/Windows-specific function to print the region on a PostScript printer.
 Writes the region to the device or file which is a value of
-`ps-printer-name' (which see), unless the value of `ps-lpr-command'
+`ps-printer-name' (q.v.), unless the value of `ps-lpr-command'
 indicates a specific program should be invoked."
 
   (let ((printer (or (and (boundp 'dos-ps-printer)
diff --git a/lisp/elec-pair.el b/lisp/elec-pair.el
index 7f523d1df45..5fd35b605e1 100644
--- a/lisp/elec-pair.el
+++ b/lisp/elec-pair.el
@@ -524,7 +524,7 @@ electric-pair-will-use-region
 (defun electric-pair-delete-pair (arg &optional killp)
   "When between adjacent paired delimiters, delete both of them.
 ARG and KILLP are passed directly to
-`backward-delete-char-untabify', which see."
+`backward-delete-char-untabify' (q.v.)."
   (interactive "*p\nP")
   (delete-char 1)
   (backward-delete-char-untabify arg killp))
diff --git a/lisp/electric.el b/lisp/electric.el
index 5f4304462dd..b041dd72f00 100644
--- a/lisp/electric.el
+++ b/lisp/electric.el
@@ -44,7 +44,7 @@
 ;; to throw.  It assumes that you have set up the keymap, window, and
 ;; everything else: all it does is read commands and execute them -
 ;; providing error messages should one occur (if there is no loop
-;; function - which see).  The required argument is a tag which should
+;; function (q.v.)).  The required argument is a tag which should
 ;; expect a value of nil if the user decides to punt. The second
 ;; argument is the prompt to be used: if nil, use "->", if 'noprompt,
 ;; don't use a prompt, if a string, use that string as prompt, and if
diff --git a/lisp/emacs-lisp/advice.el b/lisp/emacs-lisp/advice.el
index 32b6a47b053..f1467c0a53f 100644
--- a/lisp/emacs-lisp/advice.el
+++ b/lisp/emacs-lisp/advice.el
@@ -1837,7 +1837,7 @@ ad-clear-advicefunname-definition
 (defun ad-read-advised-function (&optional prompt predicate default)
   "Read name of advised function with completion from the minibuffer.
 An optional PROMPT will be used to prompt for the function.  PREDICATE
-plays the same role as for `try-completion' (which see).  DEFAULT will
+plays the same role as for `try-completion' (q.v.).  DEFAULT will
 be returned on empty input (defaults to the first advised function or
 function at point for which PREDICATE returns non-nil)."
   (if (null ad-advised-functions)
@@ -2842,7 +2842,7 @@ ad-should-compile
 If COMPILE is non-nil and not a negative number then it returns t.
 If COMPILE is a negative number then it returns nil.
 If COMPILE is nil then the result depends on the value of
-`ad-default-compilation-action' (which see)."
+`ad-default-compilation-action' (q.v.)."
   (cond
    ;; Don't compile until the real function definition is known (bug#12965).
    ((not (ad-real-orig-definition function)) nil)
@@ -2943,7 +2943,7 @@ ad-activate
 or a compilable cached definition will be compiled.  If it is negative
 no compilation will be performed, if it is positive or otherwise non-nil
 the resulting function will be compiled, if it is nil the behavior depends
-on the value of `ad-default-compilation-action' (which see).
+on the value of `ad-default-compilation-action' (q.v.).
 Activation of an advised function that has an advice info but no actual
 pieces of advice is equivalent to a call to `ad-unadvise'.  Activation of
 an advised function that has actual pieces of advice but none of them are
diff --git a/lisp/emacs-lisp/autoload.el b/lisp/emacs-lisp/autoload.el
index 27426c45307..177eff7b4b8 100644
--- a/lisp/emacs-lisp/autoload.el
+++ b/lisp/emacs-lisp/autoload.el
@@ -484,7 +484,7 @@ autoload-file-load-name
 (defun generate-file-autoloads (file)
   "Insert at point a loaddefs autoload section for FILE.
 Autoloads are generated for defuns and defmacros in FILE
-marked by `generate-autoload-cookie' (which see).
+marked by `generate-autoload-cookie' (q.v.).
 If FILE is being visited in a buffer, the contents of the buffer
 are used.
 Return non-nil in the case where no autoloads were added at point."
@@ -665,7 +665,7 @@ autoload-builtin-package-versions
 (defun autoload-generate-file-autoloads (file &optional outbuf outfile)
   "Insert an autoload section for FILE in the appropriate buffer.
 Autoloads are generated for defuns and defmacros in FILE
-marked by `generate-autoload-cookie' (which see).
+marked by `generate-autoload-cookie' (q.v.).
 If FILE is being visited in a buffer, the contents of the buffer are used.
 OUTBUF is the buffer in which the autoload statements should be inserted.
 If OUTBUF is nil, it will be determined by `autoload-generated-file'.
diff --git a/lisp/emacs-lisp/byte-run.el b/lisp/emacs-lisp/byte-run.el
index c6ad209cd8e..7b4cd17fece 100644
--- a/lisp/emacs-lisp/byte-run.el
+++ b/lisp/emacs-lisp/byte-run.el
@@ -398,7 +398,7 @@ make-obsolete-variable
 (defmacro define-obsolete-variable-alias (obsolete-name current-name
 						 &optional when docstring)
   "Make OBSOLETE-NAME a variable alias for CURRENT-NAME and mark it obsolete.
-This uses `defvaralias' and `make-obsolete-variable' (which see).
+This uses `defvaralias' and `make-obsolete-variable' (q.v.).
 See the Info node `(elisp)Variable Aliases' for more details.
 
 If CURRENT-NAME is a defcustom or a defvar (more generally, any variable
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index 590db570c56..25248988b93 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -1196,7 +1196,7 @@ byte-compile-log-warning-function
 (defun byte-compile-log-warning (string &optional fill level)
   "Log a byte-compilation warning.
 STRING, FILL and LEVEL are as described in
-`byte-compile-log-warning-function', which see."
+`byte-compile-log-warning-function' (q.v.)."
   (funcall byte-compile-log-warning-function
            string byte-compile-last-position
            fill
@@ -1799,7 +1799,7 @@ byte-compile-level
 (defun byte-compile-file (filename &optional load)
   "Compile a file of Lisp code named FILENAME into a file of byte code.
 The output file's name is generated by passing FILENAME to the
-function `byte-compile-dest-file' (which see).
+function `byte-compile-dest-file' (q.v.).
 With prefix arg (noninteractively: 2nd arg), LOAD the file after compiling.
 The value is non-nil if there were no errors, nil if errors."
 ;;  (interactive "fByte compile file: \nP")
diff --git a/lisp/emacs-lisp/checkdoc.el b/lisp/emacs-lisp/checkdoc.el
index fe6cd4160ed..a4ddecb3331 100644
--- a/lisp/emacs-lisp/checkdoc.el
+++ b/lisp/emacs-lisp/checkdoc.el
@@ -1153,13 +1153,13 @@ checkdoc-create-error-function
 (defun checkdoc-create-error (text start end &optional unfixable)
   "Used to create the return error text returned from all engines.
 TEXT, START, END and UNFIXABLE conform to
-`checkdoc-create-error-function', which see."
+`checkdoc-create-error-function' (q.v.)."
   (funcall checkdoc-create-error-function text start end unfixable))
 
 (defun checkdoc--create-error-for-checkdoc (text start end &optional unfixable)
   "Create an error for Checkdoc.
 TEXT, START, END and UNFIXABLE conform to
-`checkdoc-create-error-function', which see."
+`checkdoc-create-error-function' (q.v.)."
   (if checkdoc-generate-compile-warnings-flag
       (progn (checkdoc-error start text)
 	     nil)
diff --git a/lisp/emacs-lisp/copyright.el b/lisp/emacs-lisp/copyright.el
index 11569e40563..64e09b7cf59 100644
--- a/lisp/emacs-lisp/copyright.el
+++ b/lisp/emacs-lisp/copyright.el
@@ -272,7 +272,7 @@ copyright-update
 (defun copyright-fix-years ()
   "Convert 2 digit years to 4 digit years.
 Uses heuristic: year >= 50 means 19xx, < 50 means 20xx.
-If `copyright-year-ranges' (which see) is non-nil, also
+If `copyright-year-ranges' (q.v.) is non-nil, also
 independently replaces consecutive years with a range."
   (interactive)
   ;; TODO there may be multiple copyrights we should fix.
diff --git a/lisp/emacs-lisp/easy-mmode.el b/lisp/emacs-lisp/easy-mmode.el
index 643a65f48d9..83b7936bf9e 100644
--- a/lisp/emacs-lisp/easy-mmode.el
+++ b/lisp/emacs-lisp/easy-mmode.el
@@ -350,8 +350,8 @@ define-globalized-minor-mode
   and that should try to turn MODE on if applicable for that buffer.
 KEYS is a list of CL-style keyword arguments.  As the minor mode
   defined by this function is always global, any :global keyword is
-  ignored.  Other keywords have the same meaning as in `define-minor-mode',
-  which see.  In particular, :group specifies the custom group.
+  ignored.  Other keywords have the same meaning as in `define-minor-mode'
+  (q.v.).  In particular, :group specifies the custom group.
   The most useful keywords are those that are passed on to the
   `defcustom'.  It normally makes no sense to pass the :lighter
   or :keymap keywords to `define-globalized-minor-mode', since these
diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el
index a070ff25d17..080b700235f 100644
--- a/lisp/emacs-lisp/edebug.el
+++ b/lisp/emacs-lisp/edebug.el
@@ -431,7 +431,7 @@ edebug-set-windows
 
 (defun edebug--read (orig &optional stream)
   "Read one Lisp expression as text from STREAM, return as Lisp object.
-If STREAM is nil, use the value of `standard-input' (which see).
+If STREAM is nil, use the value of `standard-input' (q.v.).
 STREAM or the value of `standard-input' may be:
  a buffer (read from point and advance it)
  a marker (read from where it points and advance it)
@@ -522,7 +522,7 @@ edebug-eval-top-level-form
   "Evaluate the top level form point is in, stepping through with Edebug.
 This is like `eval-defun' except that it steps the code for Edebug
 before evaluating it.  It displays the value in the echo area
-using `eval-expression' (which see).
+using `eval-expression' (q.v.).
 
 If you do this on a function definition such as a defun or defmacro,
 it defines the function and instruments its definition for Edebug,
diff --git a/lisp/emacs-lisp/generic.el b/lisp/emacs-lisp/generic.el
index 14208857bc4..f52dc993458 100644
--- a/lisp/emacs-lisp/generic.el
+++ b/lisp/emacs-lisp/generic.el
@@ -106,7 +106,7 @@ generic-font-lock-keywords
 (defvar generic-mode-list nil
   "A list of mode names for `generic-mode'.
 Do not add entries to this list directly; use `define-generic-mode'
-instead (which see).")
+instead (q.v.).")
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Functions
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index 8b101c1323c..0e18bc8c9af 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -621,7 +621,7 @@ define-package
 
 \f
 ;;; Package activation
-;; Section for functions used by `package-activate', which see.
+;; Section for functions used by `package-activate' (q.v.).
 (defun package-disabled-p (pkg-name version)
   "Return whether PKG-NAME at VERSION can be activated.
 The decision is made according to `package-load-list'.
diff --git a/lisp/emacs-lisp/pcase.el b/lisp/emacs-lisp/pcase.el
index c703cae4458..39524dff2f4 100644
--- a/lisp/emacs-lisp/pcase.el
+++ b/lisp/emacs-lisp/pcase.el
@@ -211,7 +211,7 @@ pcase--make-docstring
 
 ;;;###autoload
 (defmacro pcase-exhaustive (exp &rest cases)
-  "The exhaustive version of `pcase' (which see)."
+  "The exhaustive version of `pcase' (q.v.)."
   (declare (indent 1) (debug pcase))
   (let* ((x (gensym "x"))
          (pcase--dontwarn-upats (cons x pcase--dontwarn-upats)))
diff --git a/lisp/emacs-lisp/pp.el b/lisp/emacs-lisp/pp.el
index d9cd37e9ec3..d13c71f9bc1 100644
--- a/lisp/emacs-lisp/pp.el
+++ b/lisp/emacs-lisp/pp.el
@@ -81,7 +81,7 @@ pp
   "Output the pretty-printed representation of OBJECT, any Lisp object.
 Quoting characters are printed as needed to make output that `read'
 can handle, whenever this is possible.
-Output stream is STREAM, or value of `standard-output' (which see)."
+Output stream is STREAM, or value of `standard-output' (q.v.)."
   (princ (pp-to-string object) (or stream standard-output)))
 
 (defun pp-display-expression (expression out-buffer-name)
diff --git a/lisp/emacs-lisp/smie.el b/lisp/emacs-lisp/smie.el
index da1e12b1408..35aff47d89d 100644
--- a/lisp/emacs-lisp/smie.el
+++ b/lisp/emacs-lisp/smie.el
@@ -1072,7 +1072,7 @@ smie--opener/closer-at-point
             (list t atok (point) aend)))))))))
 
 (defun smie--matching-block-data (orig &rest args)
-  "A function suitable for `show-paren-data-function' (which see)."
+  "A function suitable for `show-paren-data-function' (q.v.)."
   (if (or (null smie-closer-alist)
           (equal (cons (point) (buffer-chars-modified-tick))
                  (car smie--matching-block-data-cache)))
diff --git a/lisp/emacs-lock.el b/lisp/emacs-lock.el
index 6624c99cdb5..353d6747edb 100644
--- a/lisp/emacs-lock.el
+++ b/lisp/emacs-lock.el
@@ -134,7 +134,7 @@ emacs-lock--exit-locked-buffer
 
 (defun emacs-lock--kill-emacs-hook ()
   "Signal an error if any buffer is exit-locked.
-Used from `kill-emacs-hook' (which see)."
+Used from `kill-emacs-hook' (q.v.)."
   (let ((locked (emacs-lock--exit-locked-buffer)))
     (when locked
       (run-hook-with-args 'emacs-lock-locked-buffer-functions locked)
@@ -143,7 +143,7 @@ emacs-lock--kill-emacs-hook
 
 (defun emacs-lock--kill-emacs-query-functions ()
   "Display a message if any buffer is exit-locked.
-Return a value appropriate for `kill-emacs-query-functions' (which see)."
+Return a value appropriate for `kill-emacs-query-functions' (q.v.)."
   (let ((locked (emacs-lock--exit-locked-buffer)))
     (if (not locked)
         t
@@ -154,7 +154,7 @@ emacs-lock--kill-emacs-query-functions
 
 (defun emacs-lock--kill-buffer-query-functions ()
   "Display a message if the current buffer is kill-locked.
-Return a value appropriate for `kill-buffer-query-functions' (which see)."
+Return a value appropriate for `kill-buffer-query-functions' (q.v.)."
   (if (or (emacs-lock--can-auto-unlock 'kill)
           (memq emacs-lock-mode '(nil exit)))
       t
@@ -194,7 +194,7 @@ emacs-lock-mode
 ARG is omitted or nil.
 
 Initially, if the user does not pass an explicit locking mode, it
-defaults to `emacs-lock-default-locking-mode' (which see);
+defaults to `emacs-lock-default-locking-mode' (q.v.);
 afterwards, the locking mode most recently set on the buffer is
 used instead.
 
diff --git a/lisp/env.el b/lisp/env.el
index 5f8c4f5e5c0..a0b763f9ebd 100644
--- a/lisp/env.el
+++ b/lisp/env.el
@@ -148,7 +148,7 @@ setenv
 value when called interactively.
 
 SUBSTITUTE-ENV-VARS, if non-nil, means to substitute environment
-variables in VALUE with `substitute-env-vars', which see.
+variables in VALUE with `substitute-env-vars' (q.v.).
 This is normally used only for interactive calls.
 
 The return value is the new value of VARIABLE, or nil if
diff --git a/lisp/eshell/esh-ext.el b/lisp/eshell/esh-ext.el
index 14ae6b4ae1d..18d848ae0fb 100644
--- a/lisp/eshell/esh-ext.el
+++ b/lisp/eshell/esh-ext.el
@@ -145,7 +145,7 @@ eshell-interpreter-alist
 be called with all of those arguments.  Note that interpreter
 functions should throw `eshell-replace-command' with the alternate
 command form, or they should return a value compatible with the
-possible return values of `eshell-external-command', which see."
+possible return values of `eshell-external-command' (q.v.)."
   :type '(repeat (cons (choice regexp (function :tag "Predicate"))
 		       (choice string (function :tag "Interpreter"))))
   :group 'eshell-ext)
diff --git a/lisp/faces.el b/lisp/faces.el
index 24ab1fa4f0c..9f82706c2d5 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -62,7 +62,7 @@ help-xref-stack-item
 (defvar face-name-history nil
   "History list for some commands that read face names.
 Maximum length of the history list is determined by the value
-of `history-length', which see.")
+of `history-length' (q.v.).")
 
 \f
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
diff --git a/lisp/files.el b/lisp/files.el
index 666654da2c9..e22ad28c84a 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -634,7 +634,7 @@ file-name-history
   "History list of file names entered in the minibuffer.
 
 Maximum length of the history list is determined by the value
-of `history-length', which see.")
+of `history-length' (q.v.).")
 
 (defvar save-silently nil
   "If non-nil, avoid messages when saving files.
@@ -1586,7 +1586,7 @@ find-file
 (defun find-file-other-window (filename &optional wildcards)
   "Edit file FILENAME, in another window.
 
-Like \\[find-file] (which see), but creates a new window or reuses
+Like \\[find-file] (q.v.), but creates a new window or reuses
 an existing one.  See the function `display-buffer'.
 
 Interactively, the default if you just type RET is the current directory,
@@ -1610,7 +1610,7 @@ find-file-other-window
 (defun find-file-other-frame (filename &optional wildcards)
   "Edit file FILENAME, in another frame.
 
-Like \\[find-file] (which see), but creates a new frame or reuses
+Like \\[find-file] (q.v.), but creates a new frame or reuses
 an existing one.  See the function `display-buffer'.
 
 Interactively, the default if you just type RET is the current directory,
diff --git a/lisp/frameset.el b/lisp/frameset.el
index 593451a4d75..d2113c38712 100644
--- a/lisp/frameset.el
+++ b/lisp/frameset.el
@@ -119,7 +119,7 @@
      "Return the property list of FRAMESET.\n
 This list is useful to store both frameset-specific and user-defined
 serializable data.  The simplest way to access and modify it is
-through `frameset-prop' (which see).\n\n(fn FRAMESET)")
+through `frameset-prop' (q.v.).\n\n(fn FRAMESET)")
 (put 'frameset-states 'function-documentation
      "Return the list of frame states of FRAMESET.\n
 A frame state is a pair (FRAME-PARAMETERS . WINDOW-STATE), where
@@ -473,7 +473,7 @@ frameset-filter-alist
   "Alist of frame parameters and filtering functions.
 
 This alist is the default value of the FILTERS argument of
-`frameset-save' and `frameset-restore' (which see).
+`frameset-save' and `frameset-restore' (q.v.).
 
 Initially, `frameset-filter-alist' is set to, and shares the value of,
 `frameset-persistent-filter-alist'.  You can override any item in
@@ -655,7 +655,7 @@ frameset-filter-iconified
 (defun frameset-filter-params (parameters filter-alist saving)
   "Filter parameter alist PARAMETERS and return a filtered alist.
 FILTER-ALIST is an alist of parameter filters, in the format of
-`frameset-filter-alist' (which see).
+`frameset-filter-alist' (q.v.).
 SAVING is non-nil while filtering parameters to save a frameset,
 nil while the filtering is done to restore it."
   (let ((filtered nil))
diff --git a/lisp/generic-x.el b/lisp/generic-x.el
index 09a5488a178..b546f6e91e4 100644
--- a/lisp/generic-x.el
+++ b/lisp/generic-x.el
@@ -138,7 +138,7 @@ generic-find-file-regexp
 Files in fundamental mode whose first few lines contain a match
 for this regexp, should be put into Default-Generic mode instead.
 The number of lines tested for the matches is specified by the
-value of the variable `generic-lines-to-scan', which see."
+value of the variable `generic-lines-to-scan' (q.v.)."
   :group 'generic-x
   :type  'regexp)
 
diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el
index 985efe6272f..c7cd71b706a 100644
--- a/lisp/gnus/gnus-group.el
+++ b/lisp/gnus/gnus-group.el
@@ -100,7 +100,7 @@ gnus-permanently-visible-groups
 (defcustom gnus-safe-html-newsgroups "\\`nnrss[+:]"
   "Groups in which links in html articles are considered all safe.
 The value may be a regexp matching those groups, a list of group names,
-or nil.  This overrides `mm-w3m-safe-url-regexp' (which see).  This is
+or nil.  This overrides `mm-w3m-safe-url-regexp' (q.v.).  This is
 effective only when emacs-w3m renders html articles, i.e., in the case
 `mm-text-html-renderer' is set to `w3m'."
   :version "23.2"
diff --git a/lisp/help.el b/lisp/help.el
index bc8035db0ea..8225b689548 100644
--- a/lisp/help.el
+++ b/lisp/help.el
@@ -136,7 +136,7 @@ help-print-return-message
 This function assumes that `standard-output' is the help buffer.
 It computes a message, and applies the optional argument FUNCTION to it.
 If FUNCTION is nil, it applies `message', thus displaying the message.
-In addition, this function sets up `help-return-method', which see, that
+In addition, this function sets up `help-return-method' (q.v.) that
 specifies what to do when the user exits the help buffer.
 
 Do not call this in the scope of `with-help-window'."
diff --git a/lisp/ibuf-ext.el b/lisp/ibuf-ext.el
index 686bc392b60..fc6eae06fbd 100644
--- a/lisp/ibuf-ext.el
+++ b/lisp/ibuf-ext.el
@@ -178,7 +178,7 @@ ibuffer-saved-filters
 
 Each element should look like (\"NAME\" . FILTER-LIST), where
 FILTER-LIST has the same structure as the variable
-`ibuffer-filtering-qualifiers', which see. The filters defined
+`ibuffer-filtering-qualifiers' (q.v.). The filters defined
 here are joined with an implicit logical `and' and associated
 with NAME. The combined specification can be used by name in
 other filter specifications via the `saved' qualifier (again, see
diff --git a/lisp/ielm.el b/lisp/ielm.el
index 4ec195528c7..e856216ceb0 100644
--- a/lisp/ielm.el
+++ b/lisp/ielm.el
@@ -479,7 +479,7 @@ ielm-set-pm
 
 (define-derived-mode inferior-emacs-lisp-mode comint-mode "IELM"
   "Major mode for interactively evaluating Emacs Lisp expressions.
-Uses the interface provided by `comint-mode' (which see).
+Uses the interface provided by `comint-mode' (q.v.).
 
 * \\<ielm-map>\\[ielm-send-input] evaluates the sexp following the prompt.  There must be at most
   one top level sexp per prompt.
diff --git a/lisp/image-mode.el b/lisp/image-mode.el
index 87d18fd3c47..82816f3e57e 100644
--- a/lisp/image-mode.el
+++ b/lisp/image-mode.el
@@ -1010,7 +1010,7 @@ image-bookmark-make-record
 ;;;###autoload
 (defun image-bookmark-jump (bmk)
   ;; This implements the `handler' function interface for record type
-  ;; returned by `bookmark-make-record-function', which see.
+  ;; returned by `bookmark-make-record-function' (q.v.).
   (prog1 (bookmark-default-handler bmk)
     (when (not (string= image-type (bookmark-prop-get bmk 'image-type)))
       (image-toggle-display))))
diff --git a/lisp/info.el b/lisp/info.el
index 6f87adb04e8..318d28b1fef 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -5292,7 +5292,7 @@ Info-restore-desktop-buffer
 (declare-function bookmark-get-bookmark-record "bookmark" (bmk))
 
 (defun Info-bookmark-make-record ()
-  "This implements the `bookmark-make-record-function' type (which see)
+  "This implements the `bookmark-make-record-function' type (q.v.)
 for Info nodes."
   (let* ((file (and (stringp Info-current-file)
 		    (file-name-sans-extension
@@ -5311,7 +5311,7 @@ Info-bookmark-make-record
 ;;;###autoload
 (defun Info-bookmark-jump (bmk)
   "This implements the `handler' function interface for the record
-type returned by `Info-bookmark-make-record', which see."
+type returned by `Info-bookmark-make-record' (q.v.)."
   (let* ((file                   (bookmark-prop-get bmk 'filename))
          (info-node              (bookmark-prop-get bmk 'info-node))
          (buf (save-window-excursion    ;FIXME: doesn't work with frames!
diff --git a/lisp/international/characters.el b/lisp/international/characters.el
index 51d8765f8b0..a6174d306cf 100644
--- a/lisp/international/characters.el
+++ b/lisp/international/characters.el
@@ -1482,7 +1482,7 @@ glyphless-char-display-control
                 terminals, display as 1-character space.
   `empty-box':  display an empty box.
   `acronym':    display an acronym of the character in a box.  The
-                acronym is taken from `char-acronym-table', which see.
+                acronym is taken from `char-acronym-table' (q.v.).
   `hex-code':   display the hexadecimal character code in a box.
 
 Do not set its value directly from Lisp; the value takes effect
diff --git a/lisp/international/fontset.el b/lisp/international/fontset.el
index c6c62ef0a0c..319c6958208 100644
--- a/lisp/international/fontset.el
+++ b/lisp/international/fontset.el
@@ -1010,7 +1010,7 @@ create-default-fontset
 ;; "wn.tamil.1993"                                 [103]
 
 (defun set-font-encoding (pattern charset)
-  "Set arguments in `font-encoding-alist' (which see)."
+  "Set arguments in `font-encoding-alist' (q.v.)."
   (let ((slot (assoc pattern font-encoding-alist)))
     (if slot
 	(setcdr slot charset)
@@ -1280,7 +1280,7 @@ create-fontset-from-fontset-spec
 
 For backward compatibility, SCRIPT-NAME may be a charset name, in
 which case, the corresponding script is decided by the variable
-`charset-script-alist' (which see)."
+`charset-script-alist' (q.v.)."
   (or (string-match "^[^,]+" fontset-spec)
       (error "Invalid fontset spec: %s" fontset-spec))
   (let ((idx (match-end 0))
diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el
index 9d22d6e8dd2..c4825424d42 100644
--- a/lisp/international/mule-cmds.el
+++ b/lisp/international/mule-cmds.el
@@ -436,7 +436,7 @@ sort-coding-systems
 `coding-system' key of the current language environment has higher
 priority.  See also the documentation of `language-info-alist'.
 
-If the variable `sort-coding-systems-predicate' (which see) is
+If the variable `sort-coding-systems-predicate' (q.v.) is
 non-nil, it is used to sort CODINGS instead."
   (if sort-coding-systems-predicate
       (sort codings sort-coding-systems-predicate)
@@ -634,7 +634,7 @@ last-coding-system-specified
 (defvar select-safe-coding-system-accept-default-p nil
   "If non-nil, a function to control the behavior of coding system selection.
 The meaning is the same as the argument ACCEPT-DEFAULT-P of the
-function `select-safe-coding-system' (which see).  This variable
+function `select-safe-coding-system' (q.v.).  This variable
 overrides that argument.")
 
 (defun sanitize-coding-system-list (codings)
@@ -1343,7 +1343,7 @@ input-method-history
   "History list of input methods read from the minibuffer.
 
 Maximum length of the history list is determined by the value
-of `history-length', which see.")
+of `history-length' (q.v.).")
 (make-variable-buffer-local 'input-method-history)
 (put 'input-method-history 'permanent-local t)
 
@@ -1712,7 +1712,7 @@ set-language-environment-hook
 
 When you set some hook function here, that effect usually should not
 be inherited to another language environment.  So, you had better set
-another function in `exit-language-environment-hook' (which see) to
+another function in `exit-language-environment-hook' (q.v.) to
 cancel the effect."
   :type 'hook
   :group 'mule)
@@ -1723,7 +1723,7 @@ exit-language-environment-hook
 is still bound to the language environment being exited.
 
 This hook is mainly used for canceling the effect of
-`set-language-environment-hook' (which see)."
+`set-language-environment-hook' (q.v.)."
   :type 'hook
   :group 'mule)
 
@@ -1849,7 +1849,7 @@ set-display-table-and-terminal-coding-system
 		 (coding-system-equal coding coding-system)))
 	(standard-display-european-internal)
       ;; The following 2 lines undo the 8-bit display that we set up
-      ;; in standard-display-european-internal, which see.  This is in
+      ;; in standard-display-european-internal (q.v.).  This is in
       ;; case the user has used standard-display-european earlier in
       ;; this session.
       (when standard-display-table
diff --git a/lisp/international/mule.el b/lisp/international/mule.el
index 5f1ef5e7d02..1a82bd420fc 100644
--- a/lisp/international/mule.el
+++ b/lisp/international/mule.el
@@ -567,7 +567,7 @@ coding-system-iso-2022-flags
 coding are replaced with `?'.
 
 If `latin-extra' is specified, the code-detection routine assumes that a
-code specified in `latin-extra-code-table' (which see) is valid.
+code specified in `latin-extra-code-table' (q.v.) is valid.
 
 If `composition' is specified, an escape sequence to specify
 composition sequence is correctly decoded on decoding, and is produced
@@ -757,7 +757,7 @@ define-coding-system
 
 VALUE must be a list of symbols that control the ISO-2022 converter.
 Each must be a member of the list `coding-system-iso-2022-flags'
-\(which see).  This attribute is meaningful only when `:coding-type'
+\(q.v.).  This attribute is meaningful only when `:coding-type'
 is `iso-2022'.
 
 `:designation'
@@ -1382,7 +1382,7 @@ revert-buffer-with-coding-system
 
 (defun set-file-name-coding-system (coding-system)
   "Set coding system for decoding and encoding file names to CODING-SYSTEM.
-It actually just set the variable `file-name-coding-system' (which see)
+It actually just set the variable `file-name-coding-system' (q.v.)
 to CODING-SYSTEM."
   (interactive "zCoding system for file names (default nil): ")
   (check-coding-system coding-system)
@@ -1596,14 +1596,14 @@ ctext-non-standard-encodings-alist
 On decoding CTEXT, all encoding names listed here are recognized.
 
 On encoding CTEXT, encoding names in the variable
-`ctext-non-standard-encodings' (which see) and in the information
+`ctext-non-standard-encodings' (q.v.) and in the information
 listed for the current language environment under the key
 `ctext-non-standard-encodings' are used.")
 
 (defvar ctext-non-standard-encodings nil
   "List of non-standard encoding names used in extended segments of CTEXT.
 Each element must be one of the names listed in the variable
-`ctext-non-standard-encodings-alist' (which see).")
+`ctext-non-standard-encodings-alist' (q.v.).")
 
 (defvar ctext-non-standard-encodings-regexp
   (purecopy
@@ -2042,7 +2042,7 @@ set-auto-coding
 See `find-auto-coding' for how the coding system is found.
 Return nil if an invalid coding system is found.
 
-The variable `set-auto-coding-function' (which see) is set to this
+The variable `set-auto-coding-function' (q.v.) is set to this
 function by default."
   (let ((found (find-auto-coding filename size)))
     (if (and found (coding-system-p (car found)))
@@ -2135,9 +2135,9 @@ modify-coding-system-alist
 `process-coding-system-alist', and `network-coding-system-alist'.
 
 TARGET-TYPE specifies which of them to modify.
-If it is `file', it affects `file-coding-system-alist' (which see).
-If it is `process', it affects `process-coding-system-alist' (which see).
-If it is `network', it affects `network-coding-system-alist' (which see).
+If it is `file', it affects `file-coding-system-alist' (q.v.).
+If it is `process', it affects `process-coding-system-alist' (q.v.).
+If it is `network', it affects `network-coding-system-alist' (q.v.).
 
 REGEXP is a regular expression matching a target of I/O operation.
 The target is a file name if TARGET-TYPE is `file', a program name if
@@ -2369,7 +2369,7 @@ define-translation-table
 function does not bind SYMBOL.)
 
 Any other ARGS should be suitable as arguments of the function
-`make-translation-table' (which see).
+`make-translation-table' (q.v.).
 
 This function sets properties `translation-table' and
 `translation-table-id' of SYMBOL to the created table itself and the
diff --git a/lisp/international/quail.el b/lisp/international/quail.el
index f2c7bcb1f77..77b5dcfd896 100644
--- a/lisp/international/quail.el
+++ b/lisp/international/quail.el
@@ -242,7 +242,7 @@ quail-use-package
 The remaining arguments are LIBRARIES to be loaded before using the package.
 
 This activates input method defined by PACKAGE-NAME by running
-`quail-activate', which see."
+`quail-activate' (q.v.)."
   (let ((package (quail-package package-name)))
     (if (null package)
 	;; Perhaps we have not yet loaded necessary libraries.
@@ -2365,7 +2365,7 @@ quail-build-decode-map
 (defun quail-insert-decode-map (decode-map)
   "Insert pairs of key sequences vs the corresponding translations.
 These are stored in DECODE-MAP using the concise format.  DECODE-MAP
-should be made by `quail-build-decode-map' (which see)."
+should be made by `quail-build-decode-map' (q.v.)."
   (setq decode-map
 	(sort (cdr decode-map)
 	      (function (lambda (x y)
@@ -2878,7 +2878,7 @@ quail-map-from-table
 when keys in RULES are input.
 
 The generated map can be set for the current Quail package by the
-function `quail-install-map' (which see)."
+function `quail-install-map' (q.v.)."
   (let ((state-alist (mapcar (lambda (x) (list (car x))) table))
 	tail elt)
     ;; STATE-ALIST is an alist of states vs the corresponding sub Quail
diff --git a/lisp/jka-cmpr-hook.el b/lisp/jka-cmpr-hook.el
index b1bdc278fe5..ddedffde60e 100644
--- a/lisp/jka-cmpr-hook.el
+++ b/lisp/jka-cmpr-hook.el
@@ -333,8 +333,8 @@ jka-compr-mode-alist-additions
 
 (defcustom jka-compr-load-suffixes (purecopy '(".gz"))
   "List of compression related suffixes to try when loading files.
-Enabling Auto Compression mode appends this list to `load-file-rep-suffixes',
-which see.  Disabling Auto Compression mode removes all suffixes
+Enabling Auto Compression mode appends this list to `load-file-rep-suffixes'
+(q.v).  Disabling Auto Compression mode removes all suffixes
 from `load-file-rep-suffixes' that enabling added.
 
 If you set this outside Custom while Auto Compression mode is
diff --git a/lisp/language/hanja-util.el b/lisp/language/hanja-util.el
index 6af47982bae..fb2378fcb84 100644
--- a/lisp/language/hanja-util.el
+++ b/lisp/language/hanja-util.el
@@ -37,7 +37,7 @@ hanja-table
 character.  This variable is initialized by `hanja-init-load'.")
 
 (defun hanja-init-load ()
-  "Initialize `hanja-table' (which see)."
+  "Initialize `hanja-table' (q.v.)."
   (when (not hanja-table)
     (message "Hanja table loading...")
     (setq hanja-table (make-char-table nil))
diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el
index 0dea176ab64..97f1be729a8 100644
--- a/lisp/ldefs-boot.el
+++ b/lisp/ldefs-boot.el
@@ -327,7 +327,7 @@ ad-default-compilation-action
 or a compilable cached definition will be compiled.  If it is negative
 no compilation will be performed, if it is positive or otherwise non-nil
 the resulting function will be compiled, if it is nil the behavior depends
-on the value of `ad-default-compilation-action' (which see).
+on the value of `ad-default-compilation-action' (q.v.).
 Activation of an advised function that has an advice info but no actual
 pieces of advice is equivalent to a call to `ad-unadvise'.  Activation of
 an advised function that has actual pieces of advice but none of them are
@@ -2975,7 +2975,7 @@ browse-url-browser-function
 (autoload 'byte-compile-file "bytecomp" "\
 Compile a file of Lisp code named FILENAME into a file of byte code.
 The output file's name is generated by passing FILENAME to the
-function `byte-compile-dest-file' (which see).
+function `byte-compile-dest-file' (q.v.).
 With prefix arg (noninteractively: 2nd arg), LOAD the file after compiling.
 The value is non-nil if there were no errors, nil if errors.
 
@@ -5341,7 +5341,7 @@ compilation-disable-input
 move point to the error message line and type \\[compile-goto-error].
 To kill the compilation, type \\[kill-compilation].
 
-Runs `compilation-mode-hook' with `run-mode-hooks' (which see).
+Runs `compilation-mode-hook' with `run-mode-hooks' (q.v.).
 
 \\{compilation-mode-map}
 
@@ -5635,7 +5635,7 @@ dynamic-completion-mode
 (autoload 'copyright-fix-years "copyright" "\
 Convert 2 digit years to 4 digit years.
 Uses heuristic: year >= 50 means 19xx, < 50 means 20xx.
-If `copyright-year-ranges' (which see) is non-nil, also
+If `copyright-year-ranges' (q.v.) is non-nil, also
 independently replaces consecutive years with a range.
 
 \(fn)" t nil)
@@ -6068,7 +6068,7 @@ custom-menu-sort-alphabetically
 Set VARIABLE to VALUE, and return VALUE.  VALUE is a Lisp object.
 
 If VARIABLE has a `variable-interactive' property, that is used as if
-it were the arg to `interactive' (which see) to interactively read the value.
+it were the arg to `interactive' (q.v.) to interactively read the value.
 
 If VARIABLE has a `custom-type' property, it must be a widget and the
 `:prompt-value' property of that widget will be used for reading the value.
@@ -6085,7 +6085,7 @@ custom-menu-sort-alphabetically
 VARIABLE, otherwise `set-default' is used.
 
 If VARIABLE has a `variable-interactive' property, that is used as if
-it were the arg to `interactive' (which see) to interactively read the value.
+it were the arg to `interactive' (q.v.) to interactively read the value.
 
 If VARIABLE has a `custom-type' property, it must be a widget and the
 `:prompt-value' property of that widget will be used for reading the value.
@@ -6102,7 +6102,7 @@ custom-menu-sort-alphabetically
 VARIABLE, otherwise `set-default' is used.
 
 If VARIABLE has a `variable-interactive' property, that is used as if
-it were the arg to `interactive' (which see) to interactively read the value.
+it were the arg to `interactive' (q.v.) to interactively read the value.
 
 If VARIABLE has a `custom-type' property, it must be a widget and the
 `:prompt-value' property of that widget will be used for reading the value.
@@ -8052,8 +8052,8 @@ 'define-global-minor-mode
   and that should try to turn MODE on if applicable for that buffer.
 KEYS is a list of CL-style keyword arguments.  As the minor mode
   defined by this function is always global, any :global keyword is
-  ignored.  Other keywords have the same meaning as in `define-minor-mode',
-  which see.  In particular, :group specifies the custom group.
+  ignored.  Other keywords have the same meaning as in `define-minor-mode'
+  (q.v.).  In particular, :group specifies the custom group.
   The most useful keywords are those that are passed on to the
   `defcustom'.  It normally makes no sense to pass the :lighter
   or :keymap keywords to `define-globalized-minor-mode', since these
@@ -8317,7 +8317,7 @@ 'define-global-minor-mode
 
 If DIRECTORY is nil, it's used `default-directory'.
 
-The files in DIRECTORY that matches `ebnf-file-suffix-regexp' (which see) are
+The files in DIRECTORY that matches `ebnf-file-suffix-regexp' (q.v.) are
 processed.
 
 See also `ebnf-print-buffer'.
@@ -8359,7 +8359,7 @@ 'define-global-minor-mode
 
 If DIRECTORY is nil, it's used `default-directory'.
 
-The files in DIRECTORY that matches `ebnf-file-suffix-regexp' (which see) are
+The files in DIRECTORY that matches `ebnf-file-suffix-regexp' (q.v.) are
 processed.
 
 See also `ebnf-spool-buffer'.
@@ -8398,7 +8398,7 @@ 'define-global-minor-mode
 
 If DIRECTORY is nil, it's used `default-directory'.
 
-The files in DIRECTORY that matches `ebnf-file-suffix-regexp' (which see) are
+The files in DIRECTORY that matches `ebnf-file-suffix-regexp' (q.v.) are
 processed.
 
 See also `ebnf-eps-buffer'.
@@ -8466,7 +8466,7 @@ 'ebnf-despool
 
 If DIRECTORY is nil, use `default-directory'.
 
-Only the files in DIRECTORY that match `ebnf-file-suffix-regexp' (which see)
+Only the files in DIRECTORY that match `ebnf-file-suffix-regexp' (q.v.)
 are processed.
 
 See also `ebnf-syntax-buffer'.
@@ -9118,7 +9118,7 @@ 'edebug-defun
 Evaluate the top level form point is in, stepping through with Edebug.
 This is like `eval-defun' except that it steps the code for Edebug
 before evaluating it.  It displays the value in the echo area
-using `eval-expression' (which see).
+using `eval-expression' (q.v.).
 
 If you do this on a function definition such as a defun or defmacro,
 it defines the function and instruments its definition for Edebug,
@@ -9481,15 +9481,15 @@ 'eregistry
 
 (autoload 'ediff-toggle-multiframe "ediff-util" "\
 Switch from multiframe display to single-frame display and back.
-To change the default, set the variable `ediff-window-setup-function',
-which see.
+To change the default, set the variable `ediff-window-setup-function'
+(q.v.).
 
 \(fn)" t nil)
 
 (autoload 'ediff-toggle-use-toolbar "ediff-util" "\
 Enable or disable Ediff toolbar.
 Works only in versions of Emacs that support toolbars.
-To change the default, set the variable `ediff-use-toolbar-p', which see.
+To change the default, set the variable `ediff-use-toolbar-p' (q.v.).
 
 \(fn)" t nil)
 
@@ -9997,7 +9997,7 @@ electric-pair-mode
 ARG is omitted or nil.
 
 Initially, if the user does not pass an explicit locking mode, it
-defaults to `emacs-lock-default-locking-mode' (which see);
+defaults to `emacs-lock-default-locking-mode' (q.v.);
 afterwards, the locking mode most recently set on the buffer is
 used instead.
 
@@ -11516,7 +11516,7 @@ 'pop-tag-mark
 (autoload 'tags-loop-continue "etags" "\
 Continue last \\[tags-search] or \\[tags-query-replace] command.
 Used noninteractively with non-nil argument to begin such a command (the
-argument is passed to `next-file', which see).
+argument is passed to `next-file' (q.v.)).
 
 Two variables control the processing we do on each file: the value of
 `tags-loop-scan' is a form to be executed on each file to see if it is
@@ -11579,7 +11579,7 @@ 'pop-tag-mark
 Perform tags completion on the text around point.
 Completes to the set of names listed in the current tags table.
 The string to complete is chosen in the same way as the default
-for \\[find-tag] (which see).
+for \\[find-tag] (q.v.).
 
 \(fn)" t nil)
 
@@ -13537,7 +13537,7 @@ frameset-filter-alist
 Alist of frame parameters and filtering functions.
 
 This alist is the default value of the FILTERS argument of
-`frameset-save' and `frameset-restore' (which see).
+`frameset-save' and `frameset-restore' (q.v.).
 
 Initially, `frameset-filter-alist' is set to, and shares the value of,
 `frameset-persistent-filter-alist'.  You can override any item in
@@ -13830,7 +13830,7 @@ gdb-enable-debug
 (defvar generic-mode-list nil "\
 A list of mode names for `generic-mode'.
 Do not add entries to this list directly; use `define-generic-mode'
-instead (which see).")
+instead (q.v.).")
 
 (autoload 'define-generic-mode "generic" "\
 Create a new generic mode MODE.
@@ -18320,7 +18320,7 @@ Info-default-directory-list
 
 (autoload 'Info-bookmark-jump "info" "\
 This implements the `handler' function interface for the record
-type returned by `Info-bookmark-make-record', which see.
+type returned by `Info-bookmark-make-record' (q.v.).
 
 \(fn BMK)" nil nil)
 
@@ -19668,7 +19668,7 @@ locate-ls-subdir-switches
 
 (autoload 'locate-with-filter "locate" "\
 Run the executable program `locate' with a filter.
-This function is similar to the function `locate', which see.
+This function is similar to the function `locate' (q.v.).
 The difference is that, when invoked interactively, the present function
 prompts for both SEARCH-STRING and FILTER.  It passes SEARCH-STRING
 to the locate executable program.  It produces a `*Locate*' buffer
@@ -19743,7 +19743,7 @@ lpr-lp-system
 
 (defvar printer-name (and (eq system-type 'ms-dos) "PRN") "\
 The name of a local printer to which data is sent for printing.
-\(Note that PostScript files are sent to `ps-printer-name', which see.)
+\(Note that PostScript files are sent to `ps-printer-name' (q.v.).)
 
 On Unix-like systems, a string value should be a name understood by
 lpr's -P option; otherwise the value should be nil.
@@ -22171,7 +22171,7 @@ nested-alist-p
 (autoload 'finger "net-utils" "\
 Finger USER on HOST.
 This command uses `finger-X.500-host-regexps'
-and `network-connection-service-alist', which see.
+and `network-connection-service-alist' (q.v.).
 
 \(fn USER HOST)" t nil)
 
@@ -22190,7 +22190,7 @@ nested-alist-p
 
 (autoload 'network-connection-to-service "net-utils" "\
 Open a network connection to SERVICE on HOST.
-This command uses `network-connection-service-alist', which see.
+This command uses `network-connection-service-alist' (q.v.).
 
 \(fn HOST SERVICE)" t nil)
 
@@ -24781,7 +24781,7 @@ password-cache-expiry
 (function-put 'pcase 'lisp-indent-function '1)
 
 (autoload 'pcase-exhaustive "pcase" "\
-The exhaustive version of `pcase' (which see).
+The exhaustive version of `pcase' (q.v.).
 
 \(fn EXP &rest CASES)" nil t)
 
@@ -25442,7 +25442,7 @@ pixel-scroll-mode
 Output the pretty-printed representation of OBJECT, any Lisp object.
 Quoting characters are printed as needed to make output that `read'
 can handle, whenever this is possible.
-Output stream is STREAM, or value of `standard-output' (which see).
+Output stream is STREAM, or value of `standard-output' (q.v.).
 
 \(fn OBJECT &optional STREAM)" nil nil)
 
@@ -26569,7 +26569,7 @@ ps-print-color-p
 The remaining arguments are LIBRARIES to be loaded before using the package.
 
 This activates input method defined by PACKAGE-NAME by running
-`quail-activate', which see.
+`quail-activate' (q.v.).
 
 \(fn PACKAGE-NAME &rest LIBRARIES)" nil nil)
 
@@ -35391,7 +35391,7 @@ 'url-tn3270
 
 (autoload 'url-queue-retrieve "url-queue" "\
 Retrieve URL asynchronously and call CALLBACK with CBARGS when finished.
-This is like `url-retrieve' (which see for details of the arguments),
+This is like `url-retrieve' (q.v. for details of the arguments),
 but with limits on the degree of parallelism.  The variable
 `url-queue-parallel-processes' sets the number of concurrent processes.
 The variable `url-queue-timeout' sets a timeout.
diff --git a/lisp/locate.el b/lisp/locate.el
index 20b05c234f6..72622fb5918 100644
--- a/lisp/locate.el
+++ b/lisp/locate.el
@@ -343,7 +343,7 @@ locate
 ;;;###autoload
 (defun locate-with-filter (search-string filter &optional arg)
   "Run the executable program `locate' with a filter.
-This function is similar to the function `locate', which see.
+This function is similar to the function `locate' (q.v.).
 The difference is that, when invoked interactively, the present function
 prompts for both SEARCH-STRING and FILTER.  It passes SEARCH-STRING
 to the locate executable program.  It produces a `*Locate*' buffer
diff --git a/lisp/lpr.el b/lisp/lpr.el
index b0a6e94975f..79c12d345d0 100644
--- a/lisp/lpr.el
+++ b/lisp/lpr.el
@@ -49,7 +49,7 @@ lpr
 (defcustom printer-name
   (and (eq system-type 'ms-dos) "PRN")
   "The name of a local printer to which data is sent for printing.
-\(Note that PostScript files are sent to `ps-printer-name', which see.)
+\(Note that PostScript files are sent to `ps-printer-name' (q.v.).)
 
 On Unix-like systems, a string value should be a name understood by
 lpr's -P option; otherwise the value should be nil.
diff --git a/lisp/mail/mailabbrev.el b/lisp/mail/mailabbrev.el
index ef0e40f0201..4aded625944 100644
--- a/lisp/mail/mailabbrev.el
+++ b/lisp/mail/mailabbrev.el
@@ -583,7 +583,7 @@ mail-abbrev-next-line
 This only expands an abbrev (if one is present) if called with
 point at the end of a line, or on whitespace before the end of a line.
 
-In terms of line motion, this behaves like `next-line', which see."
+In terms of line motion, this behaves like `next-line' (q.v.)."
   (interactive "p")
   (if (looking-at "[ \t]*\n") (expand-abbrev))
   (setq this-command 'next-line)
@@ -594,7 +594,7 @@ mail-abbrev-end-of-buffer
 This only expands an abbrev (if one is present) if called with
 point at the end of a line, or on whitespace before the end of a line.
 
-In other respects, this behaves like `end-of-buffer', which see."
+In other respects, this behaves like `end-of-buffer' (q.v.)."
   (interactive "P")
   (if (looking-at "[ \t]*\n") (expand-abbrev))
   (setq this-command 'end-of-buffer)
diff --git a/lisp/mail/rmailmm.el b/lisp/mail/rmailmm.el
index 60b2066b2c2..28a619c68ec 100644
--- a/lisp/mail/rmailmm.el
+++ b/lisp/mail/rmailmm.el
@@ -1509,7 +1509,7 @@ rmail-insert-mime-forwarded-message
       'rmail-insert-mime-forwarded-message)
 
 (defun rmail-insert-mime-resent-message (forward-buffer)
-  "Function to set in `rmail-insert-mime-resent-message-function' (which see)."
+  "Function to set in `rmail-insert-mime-resent-message-function' (q.v.)."
   (insert-buffer-substring
    (with-current-buffer forward-buffer rmail-view-buffer))
   (goto-char (point-min))
@@ -1521,7 +1521,7 @@ rmail-insert-mime-resent-message
       'rmail-insert-mime-resent-message)
 
 (defun rmail-search-mime-message (msg regexp)
-  "Function to set in `rmail-search-mime-message-function' (which see)."
+  "Function to set in `rmail-search-mime-message-function' (q.v.)."
   (save-restriction
     (narrow-to-region (rmail-msgbeg msg) (rmail-msgend msg))
     (let* ((rmail-mime-searching t)	; mark inside search
diff --git a/lisp/man.el b/lisp/man.el
index 7a892c6e88a..db946ac5fd7 100644
--- a/lisp/man.el
+++ b/lisp/man.el
@@ -254,7 +254,7 @@ Man-untabify-command
   :group 'man)
 
 (defcustom Man-untabify-command-args (list "-t" "-e")
-  "List of arguments to be passed to `Man-untabify-command' (which see)."
+  "List of arguments to be passed to `Man-untabify-command' (q.v.)."
   :type '(repeat string)
   :group 'man)
 
diff --git a/lisp/net/ange-ftp.el b/lisp/net/ange-ftp.el
index 73f62c85519..67d36d64645 100644
--- a/lisp/net/ange-ftp.el
+++ b/lisp/net/ange-ftp.el
@@ -1422,7 +1422,7 @@ ange-ftp-ftp-name-component
 (defvar ange-ftp-ftp-name-arg "")
 (defvar ange-ftp-ftp-name-res nil)
 
-;; Parse NAME according to `ange-ftp-name-format' (which see).
+;; Parse NAME according to `ange-ftp-name-format' (q.v.).
 ;; Returns a list (HOST USER NAME), or nil if NAME does not match the format.
 (defun ange-ftp-ftp-name (name)
   (if (string-equal name ange-ftp-ftp-name-arg)
diff --git a/lisp/net/ldap.el b/lisp/net/ldap.el
index 22873ba2334..2e58dd053e5 100644
--- a/lisp/net/ldap.el
+++ b/lisp/net/ldap.el
@@ -465,7 +465,7 @@ ldap-search
 If WITHDN is non-nil, each entry in the result will be prepended with
 its distinguished name WITHDN.
 Additional search parameters can be specified through
-`ldap-host-parameters-alist', which see."
+`ldap-host-parameters-alist' (q.v.)."
   (interactive "sFilter:")
   (or host
       (setq host ldap-default-host)
diff --git a/lisp/net/net-utils.el b/lisp/net/net-utils.el
index d15df6974b2..45adb887907 100644
--- a/lisp/net/net-utils.el
+++ b/lisp/net/net-utils.el
@@ -766,7 +766,7 @@ finger-X.500-host-regexps
 (defun finger (user host)
   "Finger USER on HOST.
 This command uses `finger-X.500-host-regexps'
-and `network-connection-service-alist', which see."
+and `network-connection-service-alist' (q.v.)."
   ;; One of those great interactive statements that's actually
   ;; longer than the function call! The idea is that if the user
   ;; uses a string like "pbreton@cs.umb.edu", we won't ask for the
@@ -910,7 +910,7 @@ network-connection-mode-setup
 ;;;###autoload
 (defun network-connection-to-service (host service)
   "Open a network connection to SERVICE on HOST.
-This command uses `network-connection-service-alist', which see."
+This command uses `network-connection-service-alist' (q.v.)."
   (interactive
    (list
     (read-from-minibuffer "Host: " (net-utils-machine-at-point))
@@ -949,7 +949,7 @@ comint-input-ring
 
 (defun network-connection-reconnect  ()
   "Reconnect a network connection, preserving the old input ring.
-This command uses `network-connection-service-alist', which see."
+This command uses `network-connection-service-alist' (q.v.)."
   (interactive)
   (let ((proc (get-buffer-process (current-buffer)))
 	(old-comint-input-ring comint-input-ring)
diff --git a/lisp/net/pop3.el b/lisp/net/pop3.el
index 91408b8278a..4f4129fba67 100644
--- a/lisp/net/pop3.el
+++ b/lisp/net/pop3.el
@@ -125,7 +125,7 @@ pop3-uidl-file-backup
   "How to backup the UIDL file `pop3-uidl-file' when updating.
 If it is a list of numbers, the first one binds `kept-old-versions' and
 the other binds `kept-new-versions' to keep number of oldest and newest
-versions.  Otherwise, the value binds `version-control' (which see).
+versions.  Otherwise, the value binds `version-control' (q.v.).
 
 Note: Backup will take place whenever you check new mails on a server.
 So, you may lose the backup files having been saved before a trouble
diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el
index 5c785daa8a2..bfdb06beef4 100644
--- a/lisp/net/rcirc.el
+++ b/lisp/net/rcirc.el
@@ -2881,7 +2881,7 @@ rcirc-handler-433
 
 (defun rcirc-authenticate ()
   "Send authentication to process associated with current buffer.
-Passwords are stored in `rcirc-authinfo' (which see)."
+Passwords are stored in `rcirc-authinfo' (q.v.)."
   (interactive)
   (with-rcirc-server-buffer
     (dolist (i rcirc-authinfo)
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index c8b6e68f719..3a046932a78 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -603,7 +603,7 @@ tramp-terminal-prompt-regexp
 	  "\\)\\s-*")
   "Regular expression matching all terminal setting prompts.
 The regexp should match at end of buffer.
-The answer will be provided by `tramp-action-terminal', which see."
+The answer will be provided by `tramp-action-terminal' (q.v.)."
   :group 'tramp
   :type 'regexp
   :require 'tramp)
@@ -637,7 +637,7 @@ tramp-process-alive-regexp
 In fact this expression is empty by intention, it will be used only to
 check regularly the status of the associated process.
 The answer will be provided by `tramp-action-process-alive',
-`tramp-action-out-of-band', which see."
+`tramp-action-out-of-band' (q.v.)."
   :group 'tramp
   :type 'regexp
   :require 'tramp)
@@ -646,7 +646,7 @@ tramp-temp-name-prefix
   "Prefix to use for temporary files.
 If this is a relative file name (such as \"tramp.\"), it is considered
 relative to the directory name returned by the function
-`tramp-compat-temporary-file-directory' (which see).  It may also be an
+`tramp-compat-temporary-file-directory' (q.v.).  It may also be an
 absolute file name; don't forget to include a prefix for the filename
 part, though.")
 
@@ -958,7 +958,7 @@ tramp-file-name-structure
 The last element HOP is the ad-hoc hop definition, which could be a
 cascade of several hops.
 
-These numbers are passed directly to `match-string', which see.  That
+These numbers are passed directly to `match-string' (q.v.).  That
 means the opening parentheses are counted to identify the pair.
 
 See also `tramp-file-name-regexp'.")
diff --git a/lisp/obsolete/cust-print.el b/lisp/obsolete/cust-print.el
index 8c12306112e..d2733a1f8ba 100644
--- a/lisp/obsolete/cust-print.el
+++ b/lisp/obsolete/cust-print.el
@@ -304,11 +304,11 @@ custom-prin1
   "Output the printed representation of OBJECT, any Lisp object.
 Quoting characters are printed when needed to make output that `read'
 can handle, whenever this is possible.
-Output stream is STREAM, or value of `standard-output' (which see).
+Output stream is STREAM, or value of `standard-output' (q.v.).
 
 This is the custom-print replacement for the standard `prin1'.  It
 uses the appropriate printer depending on the values of `print-level'
-and `print-circle' (which see)."
+and `print-circle' (q.v.)."
   (cust-print-top-level object stream 'cust-print-original-prin1))
 
 
@@ -316,7 +316,7 @@ custom-princ
   "Output the printed representation of OBJECT, any Lisp object.
 No quoting characters are used; no delimiters are printed around
 the contents of strings.
-Output stream is STREAM, or value of `standard-output' (which see).
+Output stream is STREAM, or value of `standard-output' (q.v.).
 
 This is the custom-print replacement for the standard `princ'."
   (cust-print-top-level object stream 'cust-print-original-princ))
@@ -348,7 +348,7 @@ custom-print
   "Output the printed representation of OBJECT, with newlines around it.
 Quoting characters are printed when needed to make output that `read'
 can handle, whenever this is possible.
-Output stream is STREAM, or value of `standard-output' (which see).
+Output stream is STREAM, or value of `standard-output' (q.v.).
 
 This is the custom-print replacement for the standard `print'."
   (cust-print-original-princ "\n" stream)
diff --git a/lisp/org/ob-core.el b/lisp/org/ob-core.el
index c7c03845451..ed36ec24353 100644
--- a/lisp/org/ob-core.el
+++ b/lisp/org/ob-core.el
@@ -1697,7 +1697,7 @@ org-babel-where-is-src-block-head
 
 Return the point at the beginning of the current source block.
 Specifically at the beginning of the #+BEGIN_SRC line.  Also set
-match-data relatively to `org-babel-src-block-regexp', which see.
+match-data relatively to `org-babel-src-block-regexp' (q.v.).
 If the point is not on a source block then return nil."
   (let ((element (or src-block (org-element-at-point))))
     (when (eq (org-element-type element) 'src-block)
diff --git a/lisp/org/ob-emacs-lisp.el b/lisp/org/ob-emacs-lisp.el
index 4736d895dc5..5f1f3d47ca1 100644
--- a/lisp/org/ob-emacs-lisp.el
+++ b/lisp/org/ob-emacs-lisp.el
@@ -37,7 +37,7 @@ org-babel-default-header-args:emacs-lisp
 A value of \"yes\" or t causes src blocks to be eval'd using
 lexical scoping.  It can also be an alist mapping symbols to
 their value.  It is used as the optional LEXICAL argument to
-`eval', which see.")
+`eval' (q.v.).")
 
 (defun org-babel-expand-body:emacs-lisp (body params)
   "Expand BODY according to PARAMS, return the expanded body."
diff --git a/lisp/org/ob-lob.el b/lisp/org/ob-lob.el
index 13f728f37f6..a9d2c91cacb 100644
--- a/lisp/org/ob-lob.el
+++ b/lisp/org/ob-lob.el
@@ -112,7 +112,7 @@ org-babel-lob-get-info
   "Return internal representation for Library of Babel function call.
 Consider DATUM, when provided, or element at point.  Return nil
 when not on an appropriate location.  Otherwise return a list
-compatible with `org-babel-get-src-block-info', which see."
+compatible with `org-babel-get-src-block-info' (q.v.)."
   (let* ((context (or datum (org-element-context)))
 	 (type (org-element-type context)))
     (when (memq type '(babel-call inline-babel-call))
diff --git a/lisp/org/org-clock.el b/lisp/org/org-clock.el
index 9dc501500b1..3fc24ee0c24 100644
--- a/lisp/org/org-clock.el
+++ b/lisp/org/org-clock.el
@@ -404,7 +404,7 @@ org-clock-frame-title-format
 this value.  Clocking out will restore `frame-title-format'.
 
 `org-frame-title-string' is a format string using the same
-specifications than `frame-title-format', which see."
+specifications than `frame-title-format' (q.v.)."
   :version "24.1"
   :group 'org-clock
   :type 'sexp)
diff --git a/lisp/org/org-colview.el b/lisp/org/org-colview.el
index eac29c50f65..ed2bbb30c74 100644
--- a/lisp/org/org-colview.el
+++ b/lisp/org/org-colview.el
@@ -83,7 +83,7 @@ org-columns-summary-types
 output.
 
 Types defined in this variable take precedence over those defined
-in `org-columns-summary-types-default', which see."
+in `org-columns-summary-types-default' (q.v.)."
   :group 'org-properties
   :version "26.1"
   :package-version '(Org . "9.0")
@@ -1012,7 +1012,7 @@ org-columns-redo
 (defun org-columns-uncompile-format (compiled)
   "Turn the compiled columns format back into a string representation.
 COMPILED is an alist, as returned by
-`org-columns-compile-format', which see."
+`org-columns-compile-format' (q.v.)."
   (mapconcat
    (lambda (spec)
      (pcase spec
diff --git a/lisp/org/org-element.el b/lisp/org/org-element.el
index f2b3002f1fd..a831bf821cb 100644
--- a/lisp/org/org-element.el
+++ b/lisp/org/org-element.el
@@ -4717,7 +4717,7 @@ org-element-normalize-contents
 ;;; Cache
 ;;
 ;; Implement a caching mechanism for `org-element-at-point' and
-;; `org-element-context', which see.
+;; `org-element-context' (q.v.).
 ;;
 ;; A single public function is provided: `org-element-cache-reset'.
 ;;
diff --git a/lisp/org/org-lint.el b/lisp/org/org-lint.el
index 8372ae0fb85..46dcf14dad6 100644
--- a/lisp/org/org-lint.el
+++ b/lisp/org/org-lint.el
@@ -23,7 +23,7 @@
 ;;; Commentary:
 
 ;; This library implements linting for Org syntax.  The sole public
-;; function is `org-lint', which see.
+;; function is `org-lint' (q.v.).
 
 ;; Internally, the library defines a new structure:
 ;; `org-lint-checker', with the following slots:
diff --git a/lisp/org/org-list.el b/lisp/org/org-list.el
index 8ea569f99c8..c3014b227dd 100644
--- a/lisp/org/org-list.el
+++ b/lisp/org/org-list.el
@@ -3281,7 +3281,7 @@ org-list-send-list
 (defun org-list-to-generic (list params)
   "Convert a LIST parsed through `org-list-to-lisp' to a custom format.
 
-LIST is a list as returned by `org-list-to-lisp', which see.
+LIST is a list as returned by `org-list-to-lisp' (q.v.).
 PARAMS is a property list of parameters used to tweak the output
 format.
 
diff --git a/lisp/org/org-src.el b/lisp/org/org-src.el
index 99d7c6f7fda..3e416f82e22 100644
--- a/lisp/org/org-src.el
+++ b/lisp/org/org-src.el
@@ -295,8 +295,8 @@ org-src--coordinates
 
 (defun org-src--goto-coordinates (coord beg end)
   "Move to coordinates COORD relatively to BEG and END.
-COORD are coordinates, as returned by `org-src--coordinates',
-which see.  BEG and END are buffer positions."
+COORD are coordinates, as returned by `org-src--coordinates'
+(q.v.).  BEG and END are buffer positions."
   (goto-char
    (if (eq coord 'end) (max (1- end) beg)
      ;; If BEG happens to be located outside of the narrowed part of
@@ -1024,7 +1024,7 @@ org-edit-fixed-width-region
 
 A new buffer is created and the fixed-width region is copied into
 it, and the buffer is switched into the major mode defined in
-`org-edit-fixed-width-region-mode', which see.
+`org-edit-fixed-width-region-mode' (q.v.).
 
 When done, exit with `\\[org-edit-src-exit]'.  The edited text \
 will then replace
diff --git a/lisp/org/org-table.el b/lisp/org/org-table.el
index 8dc648eaecd..3b0829464d8 100644
--- a/lisp/org/org-table.el
+++ b/lisp/org/org-table.el
@@ -4804,7 +4804,7 @@ orgtbl-to-generic
 
   When non-nil, only convert rows, not the table itself.  This is
   equivalent to setting to the empty string both :tstart
-  and :tend, which see.
+  and :tend (q.v.).
 
 :skip
 
diff --git a/lisp/org/org.el b/lisp/org/org.el
index 35405b4bf81..f33a0b51a5b 100644
--- a/lisp/org/org.el
+++ b/lisp/org/org.el
@@ -1755,7 +1755,7 @@ org-link
   :group 'org)
 
 (defvar-local org-link-abbrev-alist-local nil
-  "Buffer-local version of `org-link-abbrev-alist', which see.
+  "Buffer-local version of `org-link-abbrev-alist' (q.v.).
 The value of this is taken from the #+LINK lines.")
 
 (defcustom org-link-parameters
@@ -3938,7 +3938,7 @@ org-latex-to-mathml-convert-command
 (defcustom org-preview-latex-default-process 'dvipng
   "The default process to convert LaTeX fragments to image files.
 All available processes and theirs documents can be found in
-`org-preview-latex-process-alist', which see."
+`org-preview-latex-process-alist' (q.v.)."
   :group 'org-latex
   :version "26.1"
   :package-version '(Org . "9.0")
@@ -4007,7 +4007,7 @@ org-preview-latex-process-alist
                       When nil, the fallback value is used instead, which is
                       controlled by `org-format-latex-header',
                       `org-latex-default-packages-alist' and
-                      `org-latex-packages-alist', which see.
+                      `org-latex-packages-alist' (q.v.).
   :latex-compiler     list of LaTeX commands, as strings.  Each of them is given
                       to the shell.  Place-holders \"%t\", \"%b\" and \"%o\" are
                       replaced with values defined below.
@@ -9982,7 +9982,7 @@ org-link-escape
 (defun org-link-unescape (str)
   "Unhex hexified Unicode parts in string STR.
 E.g. `%C3%B6' becomes the german o-Umlaut.  This is the
-reciprocal of `org-link-escape', which see."
+reciprocal of `org-link-escape' (q.v.)."
   (if (org-string-nw-p str)
       (replace-regexp-in-string
        "\\(%[0-9A-Za-z]\\{2\\}\\)+" #'org-link-unescape-compound str t t)
@@ -10783,8 +10783,8 @@ org-create-file-search-functions
 file link, given after a double colon, and `org-open-at-point'
 will automatically search for it.  If special measures must be
 taken to make the search successful, another function should be
-added to the companion hook `org-execute-file-search-functions',
-which see.
+added to the companion hook `org-execute-file-search-functions'
+(q.v.).
 
 A function in this hook may also use `setq' to set the variable
 `description' to provide a suggestion for the descriptive text to
@@ -11656,7 +11656,7 @@ org-refile
   "Move the entry or entries at point to another heading.
 
 The list of target headings is compiled using the information in
-`org-refile-targets', which see.
+`org-refile-targets' (q.v.).
 
 At the target location, the entry is filed as a subitem of the
 target heading.  Depending on `org-reverse-note-order', the new
@@ -13748,7 +13748,7 @@ org-occur
   "Make a compact tree which shows all matches of REGEXP.
 
 The tree will show the lines where the regexp matches, and any other context
-defined in `org-show-context-detail', which see.
+defined in `org-show-context-detail' (q.v.).
 
 When optional argument KEEP-PREVIOUS is non-nil, highlighting and exposing
 done by a previous call to `org-occur' will be kept, to allow stacking of
@@ -18867,7 +18867,7 @@ org-format-latex
 PROCESSING-TYPE is the conversion method to use, as a symbol.
 
 Some of the options can be changed using the variable
-`org-format-latex-options', which see."
+`org-format-latex-options' (q.v.)."
   (when (and overlays (fboundp 'clear-image-cache)) (clear-image-cache))
   (unless (eq processing-type 'verbatim)
     (let* ((math-regexp "\\$\\|\\\\[([]\\|^[ \t]*\\\\begin{[A-Za-z0-9*]+}")
@@ -22492,7 +22492,7 @@ org--get-expected-indentation
 
 (defun org--align-node-property ()
   "Align node property at point.
-Alignment is done according to `org-property-format', which see."
+Alignment is done according to `org-property-format' (q.v.)."
   (when (save-excursion
 	  (beginning-of-line)
 	  (looking-at org-property-re))
@@ -23393,8 +23393,8 @@ org-timestamp-split-range
 (defun org-timestamp-translate (timestamp &optional boundary)
   "Translate TIMESTAMP object to custom format.
 
-Format string is defined in `org-time-stamp-custom-formats',
-which see.
+Format string is defined in `org-time-stamp-custom-formats'
+(q.v.).
 
 When optional argument BOUNDARY is non-nil, it is either the
 symbol `start' or `end'.  In this case, only translate the
diff --git a/lisp/org/ox-latex.el b/lisp/org/ox-latex.el
index 61b6b8cca92..9f64a572ea5 100644
--- a/lisp/org/ox-latex.el
+++ b/lisp/org/ox-latex.el
@@ -3644,8 +3644,8 @@ org-latex-compile
   "Compile a TeX file.
 
 TEXFILE is the name of the file being compiled.  Processing is
-done through the command specified in `org-latex-pdf-process',
-which see.  Output is redirected to \"*Org PDF LaTeX Output*\"
+done through the command specified in `org-latex-pdf-process'
+(q.v.).  Output is redirected to \"*Org PDF LaTeX Output*\"
 buffer.
 
 When optional argument SNIPPET is non-nil, TEXFILE is a temporary
diff --git a/lisp/org/ox-texinfo.el b/lisp/org/ox-texinfo.el
index b5903a52160..7d3295eeb90 100644
--- a/lisp/org/ox-texinfo.el
+++ b/lisp/org/ox-texinfo.el
@@ -181,7 +181,7 @@ org-texinfo-classes
 
 \"AUTO\" will be replaced with the language defined in the
 buffer, through #+LANGUAGE keyword, or globally, with
-`org-export-default-language', which see.
+`org-export-default-language' (q.v.).
 
 
 The sectioning structure
@@ -1671,8 +1671,8 @@ org-texinfo-compile
   "Compile a texinfo file.
 
 FILE is the name of the file being compiled.  Processing is done
-through the command specified in `org-texinfo-info-process',
-which see.  Output is redirected to \"*Org INFO Texinfo Output*\"
+through the command specified in `org-texinfo-info-process'
+(q.v.).  Output is redirected to \"*Org INFO Texinfo Output*\"
 buffer.
 
 Return INFO file name or an error if it couldn't be produced."
diff --git a/lisp/org/ox.el b/lisp/org/ox.el
index 1c43577cddf..005f4e25bc4 100644
--- a/lisp/org/ox.el
+++ b/lisp/org/ox.el
@@ -4427,7 +4427,7 @@ org-export-new-reference
 (defun org-export-format-reference (reference)
   "Format REFERENCE into a string.
 REFERENCE is a number representing a reference, as returned by
-`org-export-new-reference', which see."
+`org-export-new-reference' (q.v.)."
   (format "org%07x" reference))
 
 (defun org-export-get-reference (datum info)
@@ -6693,8 +6693,8 @@ org-export--dispatch-action
 PROMPT is the displayed prompt, as a string.  ALLOWED-KEYS is
 a list of characters available at a given step in the process.
 ENTRIES is a list of menu entries.  OPTIONS, FIRST-KEY and
-EXPERTP are the same as defined in `org-export--dispatch-ui',
-which see.
+EXPERTP are the same as defined in `org-export--dispatch-ui'
+(q.v.).
 
 Toggle export options when required.  Otherwise, return value is
 a list with action as CAR and a list of interactive export
diff --git a/lisp/printing.el b/lisp/printing.el
index 328cbe01e4f..315065b389b 100644
--- a/lisp/printing.el
+++ b/lisp/printing.el
@@ -253,7 +253,7 @@ pr-version
 ;;
 ;;    Therefore, the printer `\\host\printer' is not a text printer, but a
 ;;    PostScript printer.  So, please, don't include this printer in
-;;    `pr-txt-printer-alist' (which see).
+;;    `pr-txt-printer-alist' (q.v.).
 ;;
 ;; 5. You can use gsprint instead of ghostscript to print monochrome PostScript
 ;;    files in Windows.  The gsprint utility documentation says that it is more
diff --git a/lisp/progmodes/cfengine.el b/lisp/progmodes/cfengine.el
index 10881cda527..cf08516066d 100644
--- a/lisp/progmodes/cfengine.el
+++ b/lisp/progmodes/cfengine.el
@@ -1296,7 +1296,7 @@ cfengine3-make-syntax-cache
 
 (defun cfengine3-documentation-function ()
   "Document CFengine 3 functions around point.
-Intended as the value of `eldoc-documentation-function', which see.
+Intended as the value of `eldoc-documentation-function' (q.v.).
 Use it by enabling `eldoc-mode'."
   (let ((fdef (cfengine3--current-function)))
     (when fdef
@@ -1348,7 +1348,7 @@ cfengine3-create-imenu-index
   "A function for `imenu-create-index-function'.
 Note: defun name is separated by space such as `body
 package_method opencsw' and imenu will replace spaces according
-to `imenu-space-replacement' (which see)."
+to `imenu-space-replacement' (q.v.)."
   (goto-char (point-min))
   (let ((defuns ()))
     (while (re-search-forward cfengine3-defun-full-re nil t)
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el
index e4b77ab0504..604e9a68586 100644
--- a/lisp/progmodes/compile.el
+++ b/lisp/progmodes/compile.el
@@ -2054,7 +2054,7 @@ compilation-mode
 move point to the error message line and type \\[compile-goto-error].
 To kill the compilation, type \\[kill-compilation].
 
-Runs `compilation-mode-hook' with `run-mode-hooks' (which see).
+Runs `compilation-mode-hook' with `run-mode-hooks' (q.v.).
 
 \\{compilation-mode-map}"
   (interactive)
diff --git a/lisp/progmodes/ebnf2ps.el b/lisp/progmodes/ebnf2ps.el
index a813d42356c..4bab4740724 100644
--- a/lisp/progmodes/ebnf2ps.el
+++ b/lisp/progmodes/ebnf2ps.el
@@ -450,9 +450,9 @@ ebnf-version
 ;;
 ;;		%%	prints a % character.
 ;;
-;;		%H	prints the `ebnf-eps-header' (which see) value.
+;;		%H	prints the `ebnf-eps-header' (q.v.) value.
 ;;
-;;		%F	prints the `ebnf-eps-footer' (which see) value.
+;;		%F	prints the `ebnf-eps-footer' (q.v.) value.
 ;;
 ;;		Any  other format is ignored, that is, if, for example, it's
 ;;		used %s then %s characters are stripped out from the header.
@@ -567,7 +567,7 @@ ebnf-version
 ;; The buffer *Ebnf2ps Log* is where the ebnf2ps log messages are inserted.
 ;; These messages are intended to help debugging ebnf2ps.
 ;;
-;; The log messages are enabled by `ebnf-log' option (which see).  The default
+;; The log messages are enabled by `ebnf-log' option (q.v.).  The default
 ;; value is nil, that is, no log messages are generated.
 ;;
 ;;
@@ -1964,7 +1964,7 @@ ebnf-eps-header
 
    %H	prints the `ebnf-eps-header' value.
 
-   %F	prints the `ebnf-eps-footer' (which see) value.
+   %F	prints the `ebnf-eps-footer' (q.v.) value.
 
 Any other format is ignored, that is, if, for example, it's used %s then %s
 characters are stripped out from the header.  If header action comment is an
@@ -2022,7 +2022,7 @@ ebnf-eps-footer
 
    %%	prints a % character.
 
-   %H	prints the `ebnf-eps-header' (which see) value.
+   %H	prints the `ebnf-eps-header' (q.v.) value.
 
    %F	prints the `ebnf-eps-footer' value.
 
@@ -2224,7 +2224,7 @@ ebnf-print-directory
 
 If DIRECTORY is nil, it's used `default-directory'.
 
-The files in DIRECTORY that matches `ebnf-file-suffix-regexp' (which see) are
+The files in DIRECTORY that matches `ebnf-file-suffix-regexp' (q.v.) are
 processed.
 
 See also `ebnf-print-buffer'."
@@ -2282,7 +2282,7 @@ ebnf-spool-directory
 
 If DIRECTORY is nil, it's used `default-directory'.
 
-The files in DIRECTORY that matches `ebnf-file-suffix-regexp' (which see) are
+The files in DIRECTORY that matches `ebnf-file-suffix-regexp' (q.v.) are
 processed.
 
 See also `ebnf-spool-buffer'."
@@ -2335,7 +2335,7 @@ ebnf-eps-directory
 
 If DIRECTORY is nil, it's used `default-directory'.
 
-The files in DIRECTORY that matches `ebnf-file-suffix-regexp' (which see) are
+The files in DIRECTORY that matches `ebnf-file-suffix-regexp' (q.v.) are
 processed.
 
 See also `ebnf-eps-buffer'."
@@ -2420,7 +2420,7 @@ ebnf-syntax-directory
 
 If DIRECTORY is nil, use `default-directory'.
 
-Only the files in DIRECTORY that match `ebnf-file-suffix-regexp' (which see)
+Only the files in DIRECTORY that match `ebnf-file-suffix-regexp' (q.v.)
 are processed.
 
 See also `ebnf-syntax-buffer'."
@@ -4960,7 +4960,7 @@ ebnf-directory
 
 If DIRECTORY is nil, use `default-directory'.
 
-Only files in DIRECTORY that match `ebnf-file-suffix-regexp' (which see) are
+Only files in DIRECTORY that match `ebnf-file-suffix-regexp' (q.v.) are
 processed."
   (let ((files (directory-files (or directory default-directory)
 				t ebnf-file-suffix-regexp)))
diff --git a/lisp/progmodes/elisp-mode.el b/lisp/progmodes/elisp-mode.el
index 99a4841e318..21d621a95e2 100644
--- a/lisp/progmodes/elisp-mode.el
+++ b/lisp/progmodes/elisp-mode.el
@@ -1317,8 +1317,8 @@ eval-defun
 
 If not acting on a `defun', the result of evaluation is displayed in
 the echo area.  This display is controlled by the variables
-`eval-expression-print-length' and `eval-expression-print-level',
-which see."
+`eval-expression-print-length' and `eval-expression-print-level'
+(q.v.)."
   (interactive "P")
   (cond (edebug-it
 	 (require 'edebug)
@@ -1344,7 +1344,7 @@ elisp--eldoc-last-data
   2 - `function' if function args, `variable' if variable documentation.")
 
 (defun elisp-eldoc-documentation-function ()
-  "`eldoc-documentation-function' (which see) for Emacs Lisp."
+  "`eldoc-documentation-function' (q.v.) for Emacs Lisp."
   (let ((current-symbol (elisp--current-symbol))
 	(current-fnsym  (elisp--fnsym-in-current-sexp)))
     (cond ((null current-fnsym)
diff --git a/lisp/progmodes/etags.el b/lisp/progmodes/etags.el
index 619c2ed6877..a6fbdcc0eaa 100644
--- a/lisp/progmodes/etags.el
+++ b/lisp/progmodes/etags.el
@@ -223,11 +223,11 @@ tags-table-format-functions
 of the format-parsing tags function variables if successful.")
 
 (defvar file-of-tag-function nil
-  "Function to do the work of `file-of-tag' (which see).
+  "Function to do the work of `file-of-tag' (q.v.).
 One optional argument, a boolean specifying to return complete path (nil) or
 relative path (non-nil).")
 (defvar tags-table-files-function nil
-  "Function to do the work of function `tags-table-files' (which see).")
+  "Function to do the work of function `tags-table-files' (q.v.).")
 (defvar tags-completion-table-function nil
   "Function to build the `tags-completion-table'.")
 (defvar snarf-tag-function nil
@@ -250,11 +250,11 @@ find-tag-tag-order
 (defvar find-tag-next-line-after-failure-p nil
   "Flag passed to `find-tag-in-order' for finding a tag.")
 (defvar list-tags-function nil
-  "Function to do the work of `list-tags' (which see).")
+  "Function to do the work of `list-tags' (q.v.).")
 (defvar tags-apropos-function nil
-  "Function to do the work of `tags-apropos' (which see).")
+  "Function to do the work of `tags-apropos' (q.v.).")
 (defvar tags-included-tables-function nil
-  "Function to do the work of function `tags-included-tables' (which see).")
+  "Function to do the work of function `tags-included-tables' (q.v.).")
 (defvar verify-tags-table-function nil
   "Function to return t if current buffer contains valid tags file.")
 \f
@@ -1811,7 +1811,7 @@ tags-loop-eval
 (defun tags-loop-continue (&optional first-time)
   "Continue last \\[tags-search] or \\[tags-query-replace] command.
 Used noninteractively with non-nil argument to begin such a command (the
-argument is passed to `next-file', which see).
+argument is passed to `next-file' (q.v.)).
 
 Two variables control the processing we do on each file: the value of
 `tags-loop-scan' is a form to be executed on each file to see if it is
@@ -2081,7 +2081,7 @@ complete-tag
   "Perform tags completion on the text around point.
 Completes to the set of names listed in the current tags table.
 The string to complete is chosen in the same way as the default
-for \\[find-tag] (which see)."
+for \\[find-tag] (q.v.)."
   (interactive)
   (or tags-table-list
       tags-file-name
diff --git a/lisp/progmodes/flymake-proc.el b/lisp/progmodes/flymake-proc.el
index 52cb1985327..f731e6c7aca 100644
--- a/lisp/progmodes/flymake-proc.el
+++ b/lisp/progmodes/flymake-proc.el
@@ -169,7 +169,7 @@ flymake-proc-diagnostic-type-pred
   "Predicate matching against diagnostic text to detect its type.
 Takes a single argument, the diagnostic's text and should return
 a value suitable for indexing
-`flymake-diagnostic-types-alist' (which see). If the returned
+`flymake-diagnostic-types-alist' (q.v.). If the returned
 value is nil, a type of `:error' is assumed. For some backward
 compatibility, if a non-nil value is returned that that doesn't
 index that alist, a type of `:warning' is assumed.
diff --git a/lisp/progmodes/flymake.el b/lisp/progmodes/flymake.el
index 45f0adfeba1..74dd423f4d8 100644
--- a/lisp/progmodes/flymake.el
+++ b/lisp/progmodes/flymake.el
@@ -398,7 +398,7 @@ flymake-diagnostic-types-alist
 
 * `bitmap', an image displayed in the fringe according to
   `flymake-fringe-indicator-position'.  The value actually
-  follows the syntax of `flymake-error-bitmap' (which see).  It
+  follows the syntax of `flymake-error-bitmap' (q.v.).  It
   is overridden by any `before-string' overlay property.
 
 * `severity', a non-negative integer specifying the diagnostic's
diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el
index 3ef1d90ab58..9862dece308 100644
--- a/lisp/progmodes/gud.el
+++ b/lisp/progmodes/gud.el
@@ -2554,7 +2554,7 @@ gud-mode
 commands.
 
 Other commands for interacting with the debugger process are inherited from
-comint mode, which see."
+comint mode (q.v.)."
   (setq mode-line-process '(":%s"))
   (define-key (current-local-map) "\C-c\C-l" 'gud-refresh)
   (set (make-local-variable 'gud-last-frame) nil)
diff --git a/lisp/progmodes/idlw-help.el b/lisp/progmodes/idlw-help.el
index 244e2b38436..4585f03b496 100644
--- a/lisp/progmodes/idlw-help.el
+++ b/lisp/progmodes/idlw-help.el
@@ -82,7 +82,7 @@ idlwave-help-use-assistant
 
 (defcustom idlwave-help-browser-function browse-url-browser-function
   "Function to use to display HTML help.
-Defaults to `browse-url-browser-function', which see."
+Defaults to `browse-url-browser-function' (q.v.)."
   :group 'idlwave-online-help
   :type 'function)
 
@@ -387,7 +387,7 @@ idlwave-system-variables-alist
 (defvar idlwave-executive-commands-alist)
 (defvar idlwave-system-class-info)
 (defun idlwave-do-context-help1 (&optional arg)
-  "The work-horse version of `idlwave-context-help', which see."
+  "The work-horse version of `idlwave-context-help' (q.v.)."
   (save-excursion
     (if (equal (char-after) ?/)
 	(forward-char 1)
diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el
index 92a42b1cb94..222407c48b3 100644
--- a/lisp/progmodes/idlwave.el
+++ b/lisp/progmodes/idlwave.el
@@ -5821,7 +5821,7 @@ idlwave-complete
 \\[idlwave-complete].
 
 The function also knows about object methods.  When it needs a class
-name, the action depends upon `idlwave-query-class', which see.  You
+name, the action depends upon `idlwave-query-class' (q.v.).  You
 can force IDLWAVE to ask you for a class name with a
 \\[universal-argument] prefix argument to this command.
 
diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el
index 2bbacf7bae4..eb0e7844dc0 100644
--- a/lisp/progmodes/js.el
+++ b/lisp/progmodes/js.el
@@ -2168,7 +2168,7 @@ js--jsx-end-tag-re
 (defconst js--jsx-after-tag-re "[),]"
   "Find where JSX ends.
 This complements the assumption of where JSX appears from
-`js--jsx-before-tag-re', which see.")
+`js--jsx-before-tag-re' (q.v.).")
 
 (defun js--jsx-indented-element-p ()
   "Determine if/how the current line should be indented as JSX.
diff --git a/lisp/progmodes/octave.el b/lisp/progmodes/octave.el
index 103b6ce7c51..5f9b486f4f2 100644
--- a/lisp/progmodes/octave.el
+++ b/lisp/progmodes/octave.el
@@ -52,10 +52,10 @@ octave-comment-char
   "Character to start an Octave comment.")
 
 (defvar octave-comment-start (char-to-string octave-comment-char)
-  "Octave-specific `comment-start' (which see).")
+  "Octave-specific `comment-start' (q.v.).")
 
 (defvar octave-comment-start-skip "\\(^\\|\\S<\\)\\(?:%!\\|\\s<+\\)\\s-*"
-  "Octave-specific `comment-start-skip' (which see).")
+  "Octave-specific `comment-start-skip' (q.v.).")
 
 (defvar octave-function-header-regexp
   (concat "^\\s-*\\_<\\(function\\)\\_>"
@@ -455,7 +455,7 @@ octave-smie-rules
        nil))))
 
 (defun octave-indent-comment ()
-  "A function for `smie-indent-functions' (which see)."
+  "A function for `smie-indent-functions' (q.v.)."
   (save-excursion
     (back-to-indentation)
     (cond
@@ -1313,7 +1313,7 @@ octave-mark-block
   (mark-sexp))
 
 (defun octave-beginning-of-defun (&optional arg)
-  "Octave-specific `beginning-of-defun-function' (which see)."
+  "Octave-specific `beginning-of-defun-function' (q.v.)."
   (or arg (setq arg 1))
   ;; Move out of strings or comments.
   (when (octave-in-string-or-comment-p)
@@ -1415,7 +1415,7 @@ octave-completion-at-point
                         octave-reserved-words)))))
 
 (defun octave-add-log-current-defun ()
-  "A function for `add-log-current-defun-function' (which see)."
+  "A function for `add-log-current-defun-function' (q.v.)."
   (save-excursion
     (end-of-line)
     (and (beginning-of-defun)
@@ -1601,7 +1601,7 @@ octave-eldoc-function-signatures
   (cdr octave-eldoc-cache))
 
 (defun octave-eldoc-function ()
-  "A function for `eldoc-documentation-function' (which see)."
+  "A function for `eldoc-documentation-function' (q.v.)."
   (when (inferior-octave-process-live-p)
     (let* ((ppss (syntax-ppss))
            (paren-pos (cadr ppss))
diff --git a/lisp/progmodes/prog-mode.el b/lisp/progmodes/prog-mode.el
index f727e458b2b..647c9658acb 100644
--- a/lisp/progmodes/prog-mode.el
+++ b/lisp/progmodes/prog-mode.el
@@ -243,7 +243,7 @@ prettify-symbols-mode
 
 When Prettify Symbols mode and font-locking are enabled, symbols are
 prettified (displayed as composed characters) according to the rules
-in `prettify-symbols-alist' (which see), which are locally defined
+in `prettify-symbols-alist' (q.v.), which are locally defined
 by major modes supporting prettifying.  To add further customizations
 for a given major mode, you can modify `prettify-symbols-alist' thus:
 
diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el
index 80cdcb3f18b..be2e9a1766a 100644
--- a/lisp/progmodes/xref.el
+++ b/lisp/progmodes/xref.el
@@ -37,7 +37,7 @@
 ;; `xref-backend-identifier-at-point',
 ;; `xref-backend-identifier-completion-table',
 ;; `xref-backend-definitions', `xref-backend-references',
-;; `xref-backend-apropos', which see.
+;; `xref-backend-apropos' (q.v.).
 ;;
 ;; A major mode would normally use `add-hook' to add the backend
 ;; constructor to `xref-backend-functions'.
diff --git a/lisp/ps-mule.el b/lisp/ps-mule.el
index 393de9ff7a7..72bec7bc358 100644
--- a/lisp/ps-mule.el
+++ b/lisp/ps-mule.el
@@ -352,7 +352,7 @@ ps-mule-font-info-database-ps-bdf
 ;; ID is an identification number for this FONT-SPEC and is unique in the list.
 ;;
 ;; CHARSET, FONT-SRC, FONT-NAME, ENCODING, and BYTES are the same as those in
-;; `ps-mule-font-info-database' (which see).
+;; `ps-mule-font-info-database' (q.v.).
 ;;
 ;; EXTRA-DATA is a data attached by external libraries.
 
diff --git a/lisp/ps-print.el b/lisp/ps-print.el
index b50363812e3..6996241fede 100644
--- a/lisp/ps-print.el
+++ b/lisp/ps-print.el
@@ -1746,7 +1746,7 @@ ps-lpr-switches
 
 The list element can be:
 
-   string	it should be an option for `ps-lpr-command' (which see).
+   string	it should be an option for `ps-lpr-command' (q.v.).
 		For example: \"-o Duplex=DuplexNoTumble\"
 
    symbol	it can be a function or variable symbol.  If it's a function
@@ -1760,7 +1760,7 @@ ps-lpr-switches
 
 Any other value is silently ignored.
 
-It is recommended to set `ps-printer-name' (which see) instead of including an
+It is recommended to set `ps-printer-name' (q.v.) instead of including an
 explicit switch on this list.
 
 See `ps-lpr-command'."
@@ -1916,7 +1916,7 @@ ps-selected-pages
 latest `ps-selected-pages' is saved in `ps-last-selected-pages' (which
 see).  So you can restore the latest selected pages by using
 `ps-last-selected-pages' or with the `ps-restore-selected-pages'
-command (which see).
+command (q.v.).
 
 See also `ps-even-or-odd-pages'."
   :type '(repeat :tag "Selected Pages"
@@ -3006,7 +3006,7 @@ ps-default-fg
 
 Any other value is ignored and black color will be used.
 
-This variable is used only when `ps-print-color-p' (which see) is neither nil
+This variable is used only when `ps-print-color-p' (q.v.) is neither nil
 nor black-white."
   :type '(choice :menu-tag "Default Foreground Gray/Color"
 		 (const :tag "Session Foreground" t)
@@ -3050,7 +3050,7 @@ ps-default-bg
 
 Any other value is ignored and white color will be used.
 
-This variable is used only when `ps-print-color-p' (which see) is neither nil
+This variable is used only when `ps-print-color-p' (q.v.) is neither nil
 nor black-white.
 
 See also `ps-use-face-background'."
@@ -3095,8 +3095,8 @@ ps-fg-list
 
 Any other value is ignored and black color will be used.
 
-This variable is used only when `ps-fg-validate-p' (which see) is non-nil and
-when `ps-print-color-p' (which see) is neither nil nor black-white."
+This variable is used only when `ps-fg-validate-p' (q.v.) is non-nil and
+when `ps-print-color-p' (q.v.) is neither nil nor black-white."
   :type '(repeat
 	  (choice :menu-tag "Foreground Gray/Color"
 		  :tag "Foreground Gray/Color"
@@ -3139,7 +3139,7 @@ ps-black-white-faces
     (font-lock-warning-face       "black"  nil bold italic))
   "Specify list of face attributes to print colors on black/white printers.
 
-The list elements are the same as defined on `ps-extend-face' (which see).
+The list elements are the same as defined on `ps-extend-face' (q.v.).
 
 This variable is used only when `ps-print-color-p' is set to `black-white'."
   :version "21.1"
@@ -3272,7 +3272,7 @@ ps-right-header
    `ps-time-stamp-iso8601'		Alias for `ps-time-stamp-yyyy-mm-dd'.
 
 You can also create your own time stamp function by using `format-time-string'
-\(which see)."
+\(q.v.)."
   :type '(repeat (choice :menu-tag "Right Header"
 			 :tag "Right Header"
 			 string symbol))
@@ -3327,7 +3327,7 @@ ps-right-footer
    `ps-time-stamp-iso8601'		Alias for `ps-time-stamp-yyyy-mm-dd'.
 
 You can also create your own time stamp function by using `format-time-string'
-\(which see)."
+\(q.v.)."
   :type '(repeat (choice :menu-tag "Right Footer"
 			 :tag "Right Footer"
 			 string symbol))
@@ -3622,7 +3622,7 @@ ps-nb-pages-region
   (ps-nb-pages nb-lines))
 
 (defvar ps-prefix-quote nil
-  "Used for `ps-print-quote' (which see).")
+  "Used for `ps-print-quote' (q.v.).")
 
 ;;;###autoload
 (defun ps-setup ()
@@ -3873,7 +3873,7 @@ ps-time-stamp-yyyy-mm-dd
   (format-time-string "%Y-%m-%d"))
 
 
-;; Alias for `ps-time-stamp-yyyy-mm-dd' (which see).
+;; Alias for `ps-time-stamp-yyyy-mm-dd' (q.v.).
 (defalias 'ps-time-stamp-iso8601 'ps-time-stamp-yyyy-mm-dd)
 
 
@@ -4004,7 +4004,7 @@ ps-paragraph-spacing-internal
 (defvar ps-black-white-faces-alist nil
   "Alist of symbolic faces used for black/white PostScript printers.
 An element of this list has the same form as `ps-print-face-extension-alist'
-\(which see).
+\(q.v.).
 
 Don't change this list directly; instead,
 use `ps-extend-face' and `ps-extend-face-list'.
diff --git a/lisp/replace.el b/lisp/replace.el
index a5548f461d8..5d95d773c33 100644
--- a/lisp/replace.el
+++ b/lisp/replace.el
@@ -462,7 +462,7 @@ query-replace-regexp-eval
 TO-EXPR is a Lisp expression evaluated to compute each replacement.  It may
 reference `replace-count' to get the number of replacements already made.
 If the result of TO-EXPR is not a string, it is converted to one using
-`prin1-to-string' with the NOESCAPE argument (which see).
+`prin1-to-string' with the NOESCAPE argument (q.v.).
 
 For convenience, when entering TO-EXPR interactively, you can use `\\&'
 to stand for whatever matched the whole of REGEXP, and `\\N' (where
@@ -708,7 +708,7 @@ regexp-history
   "History list for some commands that read regular expressions.
 
 Maximum length of the history list is determined by the value
-of `history-length', which see.")
+of `history-length' (q.v.).")
 
 (defvar occur-collect-regexp-history '("\\1")
   "History of regexp for occur's collect operation")
@@ -2109,7 +2109,7 @@ replace-match-data
 (defun replace-match-maybe-edit (newtext fixedcase literal noedit match-data
                                  &optional backward)
   "Make a replacement with `replace-match', editing `\\?'.
-FIXEDCASE, LITERAL are passed to `replace-match' (which see).
+FIXEDCASE, LITERAL are passed to `replace-match' (q.v.).
 After possibly editing it (if `\\?' is present), NEWTEXT is also
 passed to `replace-match'.  If NOEDIT is true, no check for `\\?'
 is made (to save time).
diff --git a/lisp/select.el b/lisp/select.el
index d950d705934..d2016d3d06d 100644
--- a/lisp/select.el
+++ b/lisp/select.el
@@ -291,7 +291,7 @@ gui-get-selection
 `PRIMARY', are `SECONDARY' and `CLIPBOARD'.
 
 DATA-TYPE is usually `STRING', but can also be one of the symbols
-in `selection-converter-alist', which see.  This argument is
+in `selection-converter-alist' (q.v.).  This argument is
 ignored on NS, MS-Windows and MS-DOS."
   (let ((data (gui-backend-get-selection (or type 'PRIMARY)
                                          (or data-type 'STRING))))
diff --git a/lisp/simple.el b/lisp/simple.el
index 5ef511ce0a0..de094b222c6 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -1858,7 +1858,7 @@ minibuffer-history
 except when an alternate history list is specified.
 
 Maximum length of the history list is determined by the value
-of `history-length', which see.")
+of `history-length' (q.v.).")
 (defvar minibuffer-history-sexp-flag nil
   "Control whether history list elements are expressions or strings.
 If the value of this variable equals current minibuffer depth,
@@ -3188,7 +3188,7 @@ shell-command-history
   "History list for some commands that read shell commands.
 
 Maximum length of the history list is determined by the value
-of `history-length', which see.")
+of `history-length' (q.v.).")
 
 (defvar shell-command-switch (purecopy "-c")
   "Switch used to have the shell execute its command line argument.")
@@ -5937,7 +5937,7 @@ track-eol
 
 (defcustom goal-column nil
   "Semipermanent goal column for vertical motion, as set by \\[set-goal-column], or nil.
-A non-nil setting overrides the variable `line-move-visual', which see."
+A non-nil setting overrides the variable `line-move-visual' (q.v.)."
   :type '(choice integer
 		 (const :tag "None" nil))
   :group 'editing-basics)
@@ -7899,7 +7899,7 @@ set-variable-value-history
   "History of values entered with `set-variable'.
 
 Maximum length of the history list is determined by the value
-of `history-length', which see.")
+of `history-length' (q.v.).")
 
 (defun set-variable (variable value &optional make-local)
   "Set VARIABLE to VALUE.  VALUE is a Lisp object.
@@ -7909,7 +7909,7 @@ set-variable
 VALUE is used literally, not evaluated.
 
 If VARIABLE has a `variable-interactive' property, that is used as if
-it were the arg to `interactive' (which see) to interactively read VALUE.
+it were the arg to `interactive' (q.v.) to interactively read VALUE.
 
 If VARIABLE has been defined with `defcustom', then the type information
 in the definition is used to check that VALUE is valid.
@@ -8612,7 +8612,7 @@ normal-erase-is-backspace
 setting if you don't have both Backspace, Delete and F1 keys.
 
 Setting this variable with setq doesn't take effect.  Programmatically,
-call `normal-erase-is-backspace-mode' (which see) instead."
+call `normal-erase-is-backspace-mode' (q.v.) instead."
   :type '(choice (const :tag "Off" nil)
 		 (const :tag "Maybe" maybe)
 		 (other :tag "On" t))
diff --git a/lisp/subr.el b/lisp/subr.el
index c1eae8d752b..b1294b04ced 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -104,7 +104,7 @@ lambda
 DOCSTRING is an optional documentation string.
  If present, it should describe how to call the function.
  But documentation strings are usually not useful in nameless functions.
-INTERACTIVE should be a call to the function `interactive', which see.
+INTERACTIVE should be a call to the function `interactive' (q.v.).
 It may also be omitted.
 BODY should be a list of Lisp expressions.
 
@@ -2117,7 +2117,7 @@ start-process
 this process is not associated with any buffer.
 
 PROGRAM is the program file name.  It is searched for in `exec-path'
-\(which see).  If nil, just associate a pty with the buffer.  Remaining
+\(q.v.).  If nil, just associate a pty with the buffer.  Remaining
 arguments PROGRAM-ARGS are strings to give program as arguments.
 
 If you want to separate standard output from standard error, use
@@ -2638,14 +2638,14 @@ prepare-change-group
     (list (cons (current-buffer) buffer-undo-list))))
 
 (defun activate-change-group (handle)
-  "Activate a change group made with `prepare-change-group' (which see)."
+  "Activate a change group made with `prepare-change-group' (q.v.)."
   (dolist (elt handle)
     (with-current-buffer (car elt)
       (if (eq buffer-undo-list t)
 	  (setq buffer-undo-list nil)))))
 
 (defun accept-change-group (handle)
-  "Finish a change group made with `prepare-change-group' (which see).
+  "Finish a change group made with `prepare-change-group' (q.v.).
 This finishes the change group by accepting its changes as final."
   (dolist (elt handle)
     (with-current-buffer (car elt)
@@ -2653,7 +2653,7 @@ accept-change-group
 	  (setq buffer-undo-list t)))))
 
 (defun cancel-change-group (handle)
-  "Finish a change group made with `prepare-change-group' (which see).
+  "Finish a change group made with `prepare-change-group' (q.v.).
 This finishes the change group by reverting all of its changes."
   (dolist (elt handle)
     (with-current-buffer (car elt)
@@ -3040,7 +3040,7 @@ insert-for-yank
   (insert-for-yank-1 string))
 
 (defun insert-for-yank-1 (string)
-  "Helper for `insert-for-yank', which see."
+  "Helper for `insert-for-yank' (q.v.)."
   (let* ((handler (and (stringp string)
 		       (get-text-property 0 'yank-handler string)))
 	 (param (or (nth 1 handler) string))
@@ -4195,7 +4195,7 @@ eval-next-after-load
 \f
 (defun display-delayed-warnings ()
   "Display delayed warnings from `delayed-warnings-list'.
-Used from `delayed-warnings-hook' (which see)."
+Used from `delayed-warnings-hook' (q.v.)."
   (dolist (warning (nreverse delayed-warnings-list))
     (apply 'display-warning warning))
   (setq delayed-warnings-list nil))
@@ -4203,7 +4203,7 @@ display-delayed-warnings
 (defun collapse-delayed-warnings ()
   "Remove duplicates from `delayed-warnings-list'.
 Collapse identical adjacent warnings into one (plus count).
-Used from `delayed-warnings-hook' (which see)."
+Used from `delayed-warnings-hook' (q.v.)."
   (let ((count 1)
         collapsed warning)
     (while delayed-warnings-list
@@ -4958,7 +4958,7 @@ version-regexp-alist
   "Specify association between non-numeric version and its priority.
 
 This association is used to handle version string like \"1.0pre2\",
-\"0.9alpha1\", etc.  It's used by `version-to-list' (which see) to convert the
+\"0.9alpha1\", etc.  It's used by `version-to-list' (q.v.) to convert the
 non-numeric part of a version string to an integer.  For example:
 
    String Version    Integer List Version
@@ -4996,8 +4996,8 @@ version-to-list
 
    NUMBER ::= (0|1|2|3|4|5|6|7|8|9)+.
 
-   SEPARATOR ::= `version-separator' (which see)
-	       | `version-regexp-alist' (which see).
+   SEPARATOR ::= `version-separator' (q.v.)
+	       | `version-regexp-alist' (q.v.).
 
 The NUMBER part is optional if SEPARATOR is a match for an element
 in `version-regexp-alist'.
diff --git a/lisp/term/common-win.el b/lisp/term/common-win.el
index 2cf1e84768e..bb45a3e7dd7 100644
--- a/lisp/term/common-win.el
+++ b/lisp/term/common-win.el
@@ -407,7 +407,7 @@ x-colors
 (defvar w32-color-map)
 
 (defun xw-defined-colors (&optional frame)
-  "Internal function called by `defined-colors', which see."
+  "Internal function called by `defined-colors' (q.v.)."
   (if (featurep 'ns)
       x-colors
     (or frame (setq frame (selected-frame)))
diff --git a/lisp/term/xterm.el b/lisp/term/xterm.el
index b7d0cfb4792..661568e06e6 100644
--- a/lisp/term/xterm.el
+++ b/lisp/term/xterm.el
@@ -945,7 +945,7 @@ xterm-register-default-colors
 
 This function registers the number of colors returned by `display-color-cells'
 for the currently selected frame.  The first (16) colors are taken from
-COLORS, which see, while the rest are computed assuming
+COLORS (q.v.) while the rest are computed assuming
 either the 88- or 256-color standard color scheme supported by latest
 versions of xterm."
   (let* ((ncolors (display-color-cells))
diff --git a/lisp/textmodes/bibtex.el b/lisp/textmodes/bibtex.el
index b6b12e6a9c9..a5031213e79 100644
--- a/lisp/textmodes/bibtex.el
+++ b/lisp/textmodes/bibtex.el
@@ -92,7 +92,7 @@ bibtex-user-optional-fields
   '(("annote" "Personal annotation (ignored)"))
   "List of optional fields the user wants to have always present.
 Entries should be of the same form as the OPTIONAL list
-in `bibtex-BibTeX-entry-alist' (which see)."
+in `bibtex-BibTeX-entry-alist' (q.v.)."
   :group 'bibtex
   :type '(repeat (group (string :tag "Field")
                         (string :tag "Comment")
diff --git a/lisp/textmodes/reftex-index.el b/lisp/textmodes/reftex-index.el
index 120370a149a..3a24820458f 100644
--- a/lisp/textmodes/reftex-index.el
+++ b/lisp/textmodes/reftex-index.el
@@ -45,7 +45,7 @@ reftex-index-selection-or-word
 macro and other stuff.
 When called inside TeX math mode as determined by the `texmathp.el' library
 which is part of AUCTeX, the string is first processed with the
-`reftex-index-math-format', which see."
+`reftex-index-math-format' (q.v.)."
   (interactive "P")
   (let* ((use-default (not (equal arg '(16))))  ; check for double prefix
          ;; check if we have an active selection
diff --git a/lisp/textmodes/texnfo-upd.el b/lisp/textmodes/texnfo-upd.el
index 46977e1411f..5bf3186156d 100644
--- a/lisp/textmodes/texnfo-upd.el
+++ b/lisp/textmodes/texnfo-upd.el
@@ -885,7 +885,7 @@ texinfo-master-menu
 existing menus, including the menu in the Top node, are not
 updated according to the buffer contents, so all the menus should
 be updated first using `texinfo-make-menu' or
-`texinfo-all-menus-update', which see.  Alternatively, invoke
+`texinfo-all-menus-update' (q.v.).  Alternatively, invoke
 this function with a prefix argument, see below.
 
 Non-nil, non-numeric argument (C-u prefix, if interactive) means
diff --git a/lisp/url/url-queue.el b/lisp/url/url-queue.el
index 06a77404b58..c4900ed208c 100644
--- a/lisp/url/url-queue.el
+++ b/lisp/url/url-queue.el
@@ -57,7 +57,7 @@ url-queue-progress-timer
 ;;;###autoload
 (defun url-queue-retrieve (url callback &optional cbargs silent inhibit-cookies)
   "Retrieve URL asynchronously and call CALLBACK with CBARGS when finished.
-This is like `url-retrieve' (which see for details of the arguments),
+This is like `url-retrieve' (q.v. for details of the arguments),
 but with limits on the degree of parallelism.  The variable
 `url-queue-parallel-processes' sets the number of concurrent processes.
 The variable `url-queue-timeout' sets a timeout."
diff --git a/lisp/vc/ediff-mult.el b/lisp/vc/ediff-mult.el
index 4ed6661dee0..abc507a6ffb 100644
--- a/lisp/vc/ediff-mult.el
+++ b/lisp/vc/ediff-mult.el
@@ -59,7 +59,7 @@
 ;;         Typically these are directories where the files to be compared are
 ;;         found.
 ;;	   Also, keep in mind that the function ediff-prepare-meta-buffer
-;;	   (which see) prepends the session group buffer to the descriptor, so
+;;	   (q.v.) prepends the session group buffer to the descriptor, so
 ;;	   the descriptor becomes 7-long.
 ;;	   Ediff expects that your function (in 2 above) will arrange to
 ;;	   replace this prepended nil (via setcar) with the actual ediff
diff --git a/lisp/vc/ediff-util.el b/lisp/vc/ediff-util.el
index 3430d046c0c..e88cc14f782 100644
--- a/lisp/vc/ediff-util.el
+++ b/lisp/vc/ediff-util.el
@@ -1295,8 +1295,8 @@ ediff-toggle-wide-display
 ;;;###autoload
 (defun ediff-toggle-multiframe ()
   "Switch from multiframe display to single-frame display and back.
-To change the default, set the variable `ediff-window-setup-function',
-which see."
+To change the default, set the variable `ediff-window-setup-function'
+(q.v.)."
   (interactive)
   (let (window-setup-func)
     (or (ediff-window-display-p)
@@ -1341,7 +1341,7 @@ ediff-toggle-multiframe
 (defun ediff-toggle-use-toolbar ()
   "Enable or disable Ediff toolbar.
 Works only in versions of Emacs that support toolbars.
-To change the default, set the variable `ediff-use-toolbar-p', which see."
+To change the default, set the variable `ediff-use-toolbar-p' (q.v.)."
   (interactive)
   (if (featurep 'ediff-tbar)
       (progn
diff --git a/lisp/whitespace.el b/lisp/whitespace.el
index 14247646d49..194cdb6e4a7 100644
--- a/lisp/whitespace.el
+++ b/lisp/whitespace.el
@@ -57,7 +57,7 @@
 ;;
 ;; When whitespace is on, it takes care of highlighting some special
 ;; characters over the default mechanism of `nobreak-char-display'
-;; (which see) and `show-trailing-whitespace' (which see).
+;; (q.v.) and `show-trailing-whitespace' (q.v.).
 ;;
 ;; The trailing spaces are not highlighted while point is at end of line.
 ;; Also the spaces at beginning of buffer are not highlighted while point is at
@@ -188,7 +188,7 @@
 ;; -------
 ;;
 ;; Whitespace's behavior can be changed with `M-x customize-group
-;; whitespace', which see for the full list of options.
+;; whitespace' (q.v. for the full list of options).
 ;;
 ;;
 ;; Hooks
@@ -366,7 +366,7 @@ whitespace-style
 
    space-after-tab		`tab-width' or more SPACEs after a TAB
 				are visualized, if `indent-tabs-mode'
-				(which see) is non-nil; otherwise,
+				(q.v.) is non-nil; otherwise,
 				the TABs are visualized via faces.
 				It has effect only if `face' (see above)
 				is present in `whitespace-style'.
@@ -382,7 +382,7 @@ whitespace-style
 				is present in `whitespace-style'.
 
    space-before-tab		SPACEs before TAB are visualized, if
-				`indent-tabs-mode' (which see) is
+				`indent-tabs-mode' (q.v.) is
 				non-nil; otherwise, the TABs are
 				visualized via faces.
 				It has effect only if `face' (see above)
@@ -1136,26 +1136,26 @@ whitespace-active-style
 
 (defvar whitespace-point (point)
   "Used to save locally current point value.
-Used by function `whitespace-trailing-regexp' (which see).")
+Used by function `whitespace-trailing-regexp' (q.v.).")
 (defvar-local whitespace-point--used nil
   "Region whose highlighting depends on `whitespace-point'.")
 
 (defvar whitespace-font-lock-refontify nil
   "Used to save locally the font-lock refontify state.
-Used by function `whitespace-post-command-hook' (which see).")
+Used by function `whitespace-post-command-hook' (q.v.).")
 
 (defvar whitespace-bob-marker nil
   "Used to save locally the bob marker value.
-Used by function `whitespace-post-command-hook' (which see).")
+Used by function `whitespace-post-command-hook' (q.v.).")
 
 (defvar whitespace-eob-marker nil
   "Used to save locally the eob marker value.
-Used by function `whitespace-post-command-hook' (which see).")
+Used by function `whitespace-post-command-hook' (q.v.).")
 
 (defvar whitespace-buffer-changed nil
   "Used to indicate locally if buffer changed.
 Used by `whitespace-post-command-hook' and `whitespace-buffer-changed'
-functions (which see).")
+functions (q.v.).")
 
 
 ;;;###autoload
diff --git a/src/bidi.c b/src/bidi.c
index fd73b548376..372963f2a2e 100644
--- a/src/bidi.c
+++ b/src/bidi.c
@@ -2237,7 +2237,7 @@ bidi_resolve_weak (struct bidi_it *bidi_it)
 		{
 		  /* This includes the Unicode 8.0 correction for N0,
 		     due to how we set prev.type in bidi_resolve_explicit,
-		     which see.  */
+		     (q.v.).  */
 		  type = bidi_it->prev.type;
 		}
 	    }
diff --git a/src/buffer.c b/src/buffer.c
index 76670b89545..d60744ab665 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -5566,8 +5566,8 @@ it is not marked as "special".  */);
   DEFVAR_PER_BUFFER ("mode-name", &BVAR (current_buffer, mode_name),
                      Qnil,
 		     doc: /* Pretty name of current buffer's major mode.
-Usually a string, but can use any of the constructs for `mode-line-format',
-which see.
+Usually a string, but can use any of the constructs for `mode-line-format'
+(q.v.).
 Format with `format-mode-line' to produce a string value.  */);
 
   DEFVAR_PER_BUFFER ("local-abbrev-table", &BVAR (current_buffer, abbrev_table), Qnil,
@@ -5628,7 +5628,7 @@ unless some coding system is specified in `file-coding-system-alist'
 for the buffer file.
 
 If the text to be saved cannot be encoded as specified by this variable,
-an alternative encoding is selected by `select-safe-coding-system', which see.
+an alternative encoding is selected by `select-safe-coding-system' (q.v.).
 
 The variable `coding-system-for-write', if non-nil, overrides this variable.
 
diff --git a/src/callint.c b/src/callint.c
index 5d88082e38d..16373d8981a 100644
--- a/src/callint.c
+++ b/src/callint.c
@@ -927,7 +927,7 @@ This is what `(interactive \"P\")' returns.  */);
 Each command is represented as a form to evaluate.
 
 Maximum length of the history list is determined by the value
-of `history-length', which see.  */);
+of `history-length' (q.v.).  */);
   Vcommand_history = Qnil;
 
   DEFVAR_LISP ("command-debug-status", Vcommand_debug_status,
diff --git a/src/charset.c b/src/charset.c
index ab207eaa1b6..8d4a42e44ef 100644
--- a/src/charset.c
+++ b/src/charset.c
@@ -1341,7 +1341,7 @@ by CHARSET's `:unify-map' property.
 
 Optional second arg UNIFY-MAP is a file name string or a vector.  It has
 the same meaning as the `:unify-map' attribute in the function
-`define-charset' (which see).
+`define-charset' (q.v.).
 
 Optional third argument DEUNIFY, if non-nil, means to de-unify CHARSET.  */)
   (Lisp_Object charset, Lisp_Object unify_map, Lisp_Object deunify)
diff --git a/src/cmds.c b/src/cmds.c
index e4c0c866916..8f94d7302f4 100644
--- a/src/cmds.c
+++ b/src/cmds.c
@@ -83,7 +83,7 @@ If N is omitted or nil, move point 1 character forward.
 
 Depending on the bidirectional context, the movement may be to the
 right or to the left on the screen.  This is in contrast with
-\\[right-char], which see.  */)
+\\[right-char] (q.v.).  */)
   (Lisp_Object n)
 {
   return move_point (n, 1);
@@ -97,7 +97,7 @@ If N is omitted or nil, move point 1 character backward.
 
 Depending on the bidirectional context, the movement may be to the
 right or to the left on the screen.  This is in contrast with
-\\[left-char], which see.  */)
+\\[left-char] (q.v.).  */)
   (Lisp_Object n)
 {
   return move_point (n, 0);
diff --git a/src/coding.c b/src/coding.c
index d790ad08ea9..dc5c46adecb 100644
--- a/src/coding.c
+++ b/src/coding.c
@@ -8879,7 +8879,7 @@ DEFUN ("detect-coding-region", Fdetect_coding_region, Sdetect_coding_region,
        doc: /* Detect coding system of the text in the region between START and END.
 Return a list of possible coding systems ordered by priority.
 The coding systems to try and their priorities follows what
-the function `coding-system-priority-list' (which see) returns.
+the function `coding-system-priority-list' (q.v.) returns.
 
 If only ASCII characters are found (except for such ISO-2022 control
 characters as ESC), it returns a list of single element `undecided'
@@ -8914,7 +8914,7 @@ DEFUN ("detect-coding-string", Fdetect_coding_string, Sdetect_coding_string,
        doc: /* Detect coding system of the text in STRING.
 Return a list of possible coding systems ordered by priority.
 The coding systems to try and their priorities follows what
-the function `coding-system-priority-list' (which see) returns.
+the function `coding-system-priority-list' (q.v.) returns.
 
 If only ASCII characters are found (except for such ISO-2022 control
 characters as ESC), it returns a list of single element `undecided'
@@ -11204,7 +11204,7 @@ coding system used in each operation can't encode the text.  The
 function should take care that the buffer is not modified while
 the coding system is being selected.
 
-The default value is `select-safe-coding-system' (which see).  */);
+The default value is `select-safe-coding-system' (q.v.).  */);
   Vselect_safe_coding_system_function = Qnil;
 
   DEFVAR_BOOL ("coding-system-require-warning",
diff --git a/src/dired.c b/src/dired.c
index 28d1cffb44c..4d9ad08314b 100644
--- a/src/dired.c
+++ b/src/dired.c
@@ -366,8 +366,8 @@ If NOSORT is non-nil, the list is not sorted--its order is unpredictable.
  NOSORT is useful if you plan to sort the result yourself.
 ID-FORMAT specifies the preferred format of attributes uid and gid, see
 `file-attributes' for further documentation.
-On MS-Windows, performance depends on `w32-get-true-file-attributes',
-which see.  */)
+On MS-Windows, performance depends on `w32-get-true-file-attributes'
+(q.v.).  */)
   (Lisp_Object directory, Lisp_Object full, Lisp_Object match, Lisp_Object nosort, Lisp_Object id_format)
 {
   Lisp_Object handler;
@@ -401,7 +401,7 @@ completion (in absolute form) and ignore it if PREDICATE returns nil.
 
 This function ignores some of the possible completions as determined
 by the variables `completion-regexp-list' and
-`completion-ignored-extensions', which see.  `completion-regexp-list'
+`completion-ignored-extensions' (q.v.).  `completion-regexp-list'
 is matched against file and directory names relative to DIRECTORY.  */)
   (Lisp_Object file, Lisp_Object directory, Lisp_Object predicate)
 {
@@ -429,7 +429,7 @@ DEFUN ("file-name-all-completions", Ffile_name_all_completions,
 These are all file names in directory DIRECTORY which begin with FILE.
 
 This function ignores some of the possible completions as determined
-by `completion-regexp-list', which see.  `completion-regexp-list'
+by `completion-regexp-list' (q.v.).  `completion-regexp-list'
 is matched against file and directory names relative to DIRECTORY.  */)
   (Lisp_Object file, Lisp_Object directory)
 {
@@ -897,8 +897,8 @@ Elements of the attribute list are:
 On most filesystems, the combination of the inode and the device
 number uniquely identifies the file.
 
-On MS-Windows, performance depends on `w32-get-true-file-attributes',
-which see.
+On MS-Windows, performance depends on `w32-get-true-file-attributes'
+(q.v.).
 
 On some FAT-based filesystems, only the date of last access is recorded,
 so last access time will always be midnight of that day.  */)
diff --git a/src/dispextern.h b/src/dispextern.h
index 2f55d8cbc87..cb5cd342928 100644
--- a/src/dispextern.h
+++ b/src/dispextern.h
@@ -2221,7 +2221,7 @@ struct it
   enum it_method method;
 
   /* The next position at which to check for face changes, invisible
-     text, overlay strings, end of text etc., which see.  */
+     text, overlay strings, end of text etc. (q.v.).  */
   ptrdiff_t stop_charpos;
 
   /* Previous stop position, i.e. the last one before the current
diff --git a/src/editfns.c b/src/editfns.c
index c00457b0a5c..9946b912c62 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -2203,7 +2203,7 @@ check_tm_member (Lisp_Object obj, int offset)
 
 DEFUN ("encode-time", Fencode_time, Sencode_time, 6, MANY, 0,
        doc: /* Convert SECOND, MINUTE, HOUR, DAY, MONTH, YEAR and ZONE to internal time.
-This is the reverse operation of `decode-time', which see.
+This is the reverse operation of `decode-time' (q.v.).
 
 The optional ZONE is omitted or nil for Emacs local time, t for
 Universal Time, `wall' for system wall clock time, or a string as in
@@ -2903,7 +2903,7 @@ Any other markers at the point of insertion remain before the text.
 
 If the current buffer is multibyte and BUFFER is unibyte, or vice
 versa, strings are converted from unibyte to multibyte or vice versa
-using `string-make-multibyte' or `string-make-unibyte', which see.  */)
+using `string-make-multibyte' or `string-make-unibyte' (q.v.).  */)
   (Lisp_Object buffer, Lisp_Object start, Lisp_Object end)
 {
   register EMACS_INT b, e, temp;
diff --git a/src/fileio.c b/src/fileio.c
index d460f123a82..de18567d773 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -3415,7 +3415,7 @@ This function does code conversion according to the value of
 variable `last-coding-system-used' to the coding system actually used.
 
 In addition, this function decodes the inserted text from known formats
-by calling `format-decode', which see.  */)
+by calling `format-decode' (q.v.).  */)
   (Lisp_Object filename, Lisp_Object visit, Lisp_Object beg, Lisp_Object end, Lisp_Object replace)
 {
   struct stat st;
@@ -5903,10 +5903,10 @@ syms_of_fileio (void)
 
   DEFVAR_LISP ("file-name-coding-system", Vfile_name_coding_system,
 	       doc: /* Coding system for encoding file names.
-If it is nil, `default-file-name-coding-system' (which see) is used.
+If it is nil, `default-file-name-coding-system' (q.v.) is used.
 
 On MS-Windows, the value of this variable is largely ignored if
-`w32-unicode-filenames' (which see) is non-nil.  Emacs on Windows
+`w32-unicode-filenames' (q.v.) is non-nil.  Emacs on Windows
 behaves as if file names were encoded in `utf-8'.  */);
   Vfile_name_coding_system = Qnil;
 
@@ -5921,7 +5921,7 @@ instead use `file-name-coding-system' to get a constant encoding
 of file names regardless of the current language environment.
 
 On MS-Windows, the value of this variable is largely ignored if
-`w32-unicode-filenames' (which see) is non-nil.  Emacs on Windows
+`w32-unicode-filenames' (q.v.) is non-nil.  Emacs on Windows
 behaves as if file names were encoded in `utf-8'.  */);
   Vdefault_file_name_coding_system = Qnil;
 
diff --git a/src/font.c b/src/font.c
index 51625b49fa8..34cdd8b2111 100644
--- a/src/font.c
+++ b/src/font.c
@@ -4176,7 +4176,7 @@ DEFUN ("font-put", Ffont_put, Sfont_put, 3, 3, 0,
 FONT is a font-spec, a font-entity, or a font-object.
 
 If FONT is a font-spec, KEY can be any symbol.  But if KEY is the one
-accepted by the function `font-spec' (which see), VAL must be what
+accepted by the function `font-spec' (q.v.), VAL must be what
 allowed in `font-spec'.
 
 If FONT is a font-entity or a font-object, KEY must not be the one
diff --git a/src/fontset.c b/src/fontset.c
index 35586ad5c7d..7a14025d22b 100644
--- a/src/fontset.c
+++ b/src/fontset.c
@@ -1457,7 +1457,7 @@ TARGET may be nil.  In that case, use FONT-SPEC for any characters for
 that no FONT-SPEC is specified.
 
 FONT-SPEC may one of these:
- * A font-spec object made by the function `font-spec' (which see).
+ * A font-spec object made by the function `font-spec' (q.v.).
  * A cons (FAMILY . REGISTRY), where FAMILY is a font family name and
    REGISTRY is a font registry name.  FAMILY may contain foundry
    name, and REGISTRY may contain encoding name.
diff --git a/src/keyboard.c b/src/keyboard.c
index ee353d2b078..59cb7f99a4d 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -11717,7 +11717,7 @@ whenever `deferred-action-list' is non-nil.  */);
   DEFVAR_LISP ("delayed-warnings-list", Vdelayed_warnings_list,
                doc: /* List of warnings to be displayed after this command.
 Each element must be a list (TYPE MESSAGE [LEVEL [BUFFER-NAME]]),
-as per the args of `display-warning' (which see).
+as per the args of `display-warning' (q.v.).
 If this variable is non-nil, `delayed-warnings-hook' will be run
 immediately after running `post-command-hook'.  */);
   Vdelayed_warnings_list = Qnil;
@@ -11781,7 +11781,7 @@ just after executing the command.  */);
 
 The default value is nil, in which case point adjustments are
 suppressed only after special commands that leave
-`disable-point-adjustment' (which see) at a non-nil value.  */);
+`disable-point-adjustment' (q.v.) at a non-nil value.  */);
   Vglobal_disable_point_adjustment = Qnil;
 
   DEFVAR_LISP ("minibuffer-message-timeout", Vminibuffer_message_timeout,
diff --git a/src/keymap.c b/src/keymap.c
index ccf8ce79175..41af78e8f8c 100644
--- a/src/keymap.c
+++ b/src/keymap.c
@@ -1698,7 +1698,7 @@ DEFUN ("global-key-binding", Fglobal_key_binding, Sglobal_key_binding, 1, 2, 0,
 KEYS is a string or vector, a sequence of keystrokes.
 The binding is probably a symbol with a function definition.
 This function's return values are the same as those of `lookup-key'
-\(which see).
+\(q.v.).
 
 If optional argument ACCEPT-DEFAULT is non-nil, recognize default
 bindings; see the description of `lookup-key' for more details about this.  */)
diff --git a/src/lcms.c b/src/lcms.c
index c7da57658a9..6fce6313182 100644
--- a/src/lcms.c
+++ b/src/lcms.c
@@ -318,8 +318,8 @@ jab_to_jch (const lcmsJab_t *jab, cmsJCh *jch, double FL, double c1, double c2)
 DEFUN ("lcms-xyz->jch", Flcms_xyz_to_jch, Slcms_xyz_to_jch, 1, 3, 0,
        doc: /* Convert CIE CAM02 JCh to CIE XYZ.
 COLOR is a list (X Y Z), with Y scaled about unity.
-Optional arguments WHITEPOINT and VIEW are the same as in `lcms-cam02-ucs',
-which see.  */)
+Optional arguments WHITEPOINT and VIEW are the same as in `lcms-cam02-ucs'
+(q.v.).  */)
   (Lisp_Object color, Lisp_Object whitepoint, Lisp_Object view)
 {
   cmsViewingConditions vc;
@@ -355,8 +355,8 @@ DEFUN ("lcms-jch->xyz", Flcms_jch_to_xyz, Slcms_jch_to_xyz, 1, 3, 0,
        doc: /* Convert CIE XYZ to CIE CAM02 JCh.
 COLOR is a list (J C h), where lightness of white is equal to 100, and hue
 is given in degrees.
-Optional arguments WHITEPOINT and VIEW are the same as in `lcms-cam02-ucs',
-which see.  */)
+Optional arguments WHITEPOINT and VIEW are the same as in `lcms-cam02-ucs'
+(q.v.).  */)
   (Lisp_Object color, Lisp_Object whitepoint, Lisp_Object view)
 {
   cmsViewingConditions vc;
@@ -392,9 +392,9 @@ which see.  */)
 
 DEFUN ("lcms-jch->jab", Flcms_jch_to_jab, Slcms_jch_to_jab, 1, 3, 0,
        doc: /* Convert CIE CAM02 JCh to CAM02-UCS J'a'b'.
-COLOR is a list (J C h) as described in `lcms-jch->xyz', which see.
-Optional arguments WHITEPOINT and VIEW are the same as in `lcms-cam02-ucs',
-which see.  */)
+COLOR is a list (J C h) as described in `lcms-jch->xyz' (q.v.).
+Optional arguments WHITEPOINT and VIEW are the same as in `lcms-cam02-ucs'
+(q.v.).  */)
   (Lisp_Object color, Lisp_Object whitepoint, Lisp_Object view)
 {
   cmsViewingConditions vc;
@@ -434,8 +434,8 @@ which see.  */)
 DEFUN ("lcms-jab->jch", Flcms_jab_to_jch, Slcms_jab_to_jch, 1, 3, 0,
        doc: /* Convert CAM02-UCS J'a'b' to CIE CAM02 JCh.
 COLOR is a list (J' a' b'), where white corresponds to lightness J equal to 100.
-Optional arguments WHITEPOINT and VIEW are the same as in `lcms-cam02-ucs',
-which see.  */)
+Optional arguments WHITEPOINT and VIEW are the same as in `lcms-cam02-ucs'
+(q.v.).  */)
   (Lisp_Object color, Lisp_Object whitepoint, Lisp_Object view)
 {
   cmsViewingConditions vc;
diff --git a/src/lread.c b/src/lread.c
index 6bc93b14817..eea60f93437 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -2146,7 +2146,7 @@ This function does not move point.  */)
 \f
 DEFUN ("read", Fread, Sread, 0, 1, 0,
        doc: /* Read one Lisp expression as text from STREAM, return as Lisp object.
-If STREAM is nil, use the value of `standard-input' (which see).
+If STREAM is nil, use the value of `standard-input' (q.v.).
 STREAM or the value of `standard-input' may be:
  a buffer (read from point and advance it)
  a marker (read from where it points and advance it)
diff --git a/src/msdos.c b/src/msdos.c
index a8aef9ac405..61c3e0f5f03 100644
--- a/src/msdos.c
+++ b/src/msdos.c
@@ -1824,7 +1824,7 @@ internal_terminal_init (void)
 
       reset_mouse_highlight (&the_only_display_info.mouse_highlight);
 
-      if (have_mouse)	/* detected in dos_ttraw, which see */
+      if (have_mouse)	/* detected in dos_ttraw (q.v.) */
 	{
 	  have_mouse = 1;	/* enable mouse */
 	  mouse_visible = 0;
diff --git a/src/nsfns.m b/src/nsfns.m
index ba363629686..2011bc67d21 100644
--- a/src/nsfns.m
+++ b/src/nsfns.m
@@ -2385,7 +2385,7 @@ and GNUstep implementations ("distributor-specific release
 
 
 DEFUN ("xw-color-defined-p", Fxw_color_defined_p, Sxw_color_defined_p, 1, 2, 0,
-       doc: /* Internal function called by `color-defined-p', which see.
+       doc: /* Internal function called by `color-defined-p' (q.v.).
 \(Note that the Nextstep version of this function ignores FRAME.)  */)
      (Lisp_Object color, Lisp_Object frame)
 {
@@ -2396,7 +2396,7 @@ and GNUstep implementations ("distributor-specific release
 
 
 DEFUN ("xw-color-values", Fxw_color_values, Sxw_color_values, 1, 2, 0,
-       doc: /* Internal function called by `color-values', which see.  */)
+       doc: /* Internal function called by `color-values' (q.v.).  */)
      (Lisp_Object color, Lisp_Object frame)
 {
   NSColor * col;
@@ -2421,7 +2421,7 @@ and GNUstep implementations ("distributor-specific release
 
 
 DEFUN ("xw-display-color-p", Fxw_display_color_p, Sxw_display_color_p, 0, 1, 0,
-       doc: /* Internal function called by `display-color-p', which see.  */)
+       doc: /* Internal function called by `display-color-p' (q.v.).  */)
      (Lisp_Object terminal)
 {
   NSWindowDepth depth;
diff --git a/src/print.c b/src/print.c
index f280616af8a..66a6f59493a 100644
--- a/src/print.c
+++ b/src/print.c
@@ -496,7 +496,7 @@ print_string (Lisp_Object string, Lisp_Object printcharfun)
 \f
 DEFUN ("write-char", Fwrite_char, Swrite_char, 1, 2, 0,
        doc: /* Output character CHARACTER to stream PRINTCHARFUN.
-PRINTCHARFUN defaults to the value of `standard-output' (which see).  */)
+PRINTCHARFUN defaults to the value of `standard-output' (q.v.).  */)
   (Lisp_Object character, Lisp_Object printcharfun)
 {
   if (NILP (printcharfun))
@@ -602,7 +602,7 @@ DEFUN ("prin1", Fprin1, Sprin1, 1, 2, 0,
        doc: /* Output the printed representation of OBJECT, any Lisp object.
 Quoting characters are printed when needed to make output that `read'
 can handle, whenever this is possible.  For complex objects, the behavior
-is controlled by `print-level' and `print-length', which see.
+is controlled by `print-level' and `print-length' (q.v.).
 
 OBJECT is any of the Lisp data types: a number, a string, a symbol,
 a list, a buffer, a window, a frame, etc.
@@ -619,7 +619,7 @@ of these:
    - a symbol, in which case that symbol's function definition is called; or
    - t, in which case the output is displayed in the echo area.
 
-If PRINTCHARFUN is omitted, the value of `standard-output' (which see)
+If PRINTCHARFUN is omitted, the value of `standard-output' (q.v.)
 is used instead.  */)
   (Lisp_Object object, Lisp_Object printcharfun)
 {
@@ -639,7 +639,7 @@ DEFUN ("prin1-to-string", Fprin1_to_string, Sprin1_to_string, 1, 2, 0,
 OBJECT can be any Lisp object.  This function outputs quoting characters
 when necessary to make output that `read' can handle, whenever possible,
 unless the optional second argument NOESCAPE is non-nil.  For complex objects,
-the behavior is controlled by `print-level' and `print-length', which see.
+the behavior is controlled by `print-level' and `print-length' (q.v.).
 
 OBJECT is any of the Lisp data types: a number, a string, a symbol,
 a list, a buffer, a window, a frame, etc.
@@ -699,7 +699,7 @@ of these:
    - a symbol, in which case that symbol's function definition is called; or
    - t, in which case the output is displayed in the echo area.
 
-If PRINTCHARFUN is omitted, the value of `standard-output' (which see)
+If PRINTCHARFUN is omitted, the value of `standard-output' (q.v.)
 is used instead.  */)
   (Lisp_Object object, Lisp_Object printcharfun)
 {
@@ -715,7 +715,7 @@ DEFUN ("print", Fprint, Sprint, 1, 2, 0,
        doc: /* Output the printed representation of OBJECT, with newlines around it.
 Quoting characters are printed when needed to make output that `read'
 can handle, whenever this is possible.  For complex objects, the behavior
-is controlled by `print-level' and `print-length', which see.
+is controlled by `print-level' and `print-length' (q.v.).
 
 OBJECT is any of the Lisp data types: a number, a string, a symbol,
 a list, a buffer, a window, a frame, etc.
@@ -732,7 +732,7 @@ of these:
    - a symbol, in which case that symbol's function definition is called; or
    - t, in which case the output is displayed in the echo area.
 
-If PRINTCHARFUN is omitted, the value of `standard-output' (which see)
+If PRINTCHARFUN is omitted, the value of `standard-output' (q.v.)
 is used instead.  */)
   (Lisp_Object object, Lisp_Object printcharfun)
 {
diff --git a/src/regex.h b/src/regex.h
index 9fa83560116..489ab09dfe3 100644
--- a/src/regex.h
+++ b/src/regex.h
@@ -181,7 +181,7 @@ typedef unsigned long reg_syntax_t;
    string; if it's nil, we are matching text in the current buffer; if
    it's t, we are matching text in a C string.
 
-   This is defined as a macro in thread.h, which see.  */
+   This is defined as a macro in thread.h (q.v.).  */
 /* extern Lisp_Object re_match_object; */
 #endif
 
diff --git a/src/search.c b/src/search.c
index 0cb1ec41f59..2ce9b2abebd 100644
--- a/src/search.c
+++ b/src/search.c
@@ -2194,7 +2194,7 @@ With COUNT positive, the match found is the COUNTth to last one (or
   the origin of the search; correspondingly with COUNT negative.
 
 Search case-sensitivity is determined by the value of the variable
-`case-fold-search', which see.
+`case-fold-search' (q.v.).
 
 See also the functions `match-beginning', `match-end' and `replace-match'.  */)
   (Lisp_Object string, Lisp_Object bound, Lisp_Object noerror, Lisp_Object count)
@@ -2219,7 +2219,7 @@ With COUNT positive, the match found is the COUNTth one (or first,
   origin of the search; correspondingly with COUNT negative.
 
 Search case-sensitivity is determined by the value of the variable
-`case-fold-search', which see.
+`case-fold-search' (q.v.).
 
 See also the functions `match-beginning', `match-end' and `replace-match'.  */)
   (Lisp_Object string, Lisp_Object bound, Lisp_Object noerror, Lisp_Object count)
@@ -2262,7 +2262,7 @@ With COUNT positive/negative, the match found is the COUNTth/-COUNTth
   search.
 
 Search case-sensitivity is determined by the value of the variable
-`case-fold-search', which see.
+`case-fold-search' (q.v.).
 
 See also the functions `match-beginning', `match-end', `match-string',
 and `replace-match'.  */)
@@ -2290,7 +2290,7 @@ With COUNT positive, the match found is the COUNTth to last one (or
   the origin of the search; correspondingly with COUNT negative.
 
 Search case-sensitivity is determined by the value of the variable
-`case-fold-search', which see.
+`case-fold-search' (q.v.).
 
 See also the functions `match-beginning', `match-end', `match-string',
 and `replace-match'.  */)
@@ -2318,7 +2318,7 @@ With COUNT positive, the match found is the COUNTth one (or first,
   origin of the search; correspondingly with COUNT negative.
 
 Search case-sensitivity is determined by the value of the variable
-`case-fold-search', which see.
+`case-fold-search' (q.v.).
 
 See also the functions `match-beginning', `match-end', `match-string',
 and `replace-match'.  */)
diff --git a/src/w32fns.c b/src/w32fns.c
index e3de22d68ab..a6efe86b586 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -6096,7 +6096,7 @@ x_get_focus_frame (struct frame *frame)
 }
 
 DEFUN ("xw-color-defined-p", Fxw_color_defined_p, Sxw_color_defined_p, 1, 2, 0,
-       doc: /* Internal function called by `color-defined-p', which see.
+       doc: /* Internal function called by `color-defined-p' (q.v.).
 \(Note that the Nextstep version of this function ignores FRAME.)  */)
   (Lisp_Object color, Lisp_Object frame)
 {
@@ -6112,7 +6112,7 @@ DEFUN ("xw-color-defined-p", Fxw_color_defined_p, Sxw_color_defined_p, 1, 2, 0,
 }
 
 DEFUN ("xw-color-values", Fxw_color_values, Sxw_color_values, 1, 2, 0,
-       doc: /* Internal function called by `color-values', which see.  */)
+       doc: /* Internal function called by `color-values' (q.v.).  */)
   (Lisp_Object color, Lisp_Object frame)
 {
   XColor foo;
@@ -6129,7 +6129,7 @@ DEFUN ("xw-color-values", Fxw_color_values, Sxw_color_values, 1, 2, 0,
 }
 
 DEFUN ("xw-display-color-p", Fxw_display_color_p, Sxw_display_color_p, 0, 1, 0,
-       doc: /* Internal function called by `display-color-p', which see.  */)
+       doc: /* Internal function called by `display-color-p' (q.v.).  */)
   (Lisp_Object display)
 {
   struct w32_display_info *dpyinfo = check_x_display_info (display);
@@ -10185,7 +10185,7 @@ DEFUN ("w32-notification-notify",
        doc: /* Display an MS-Windows tray notification as specified by PARAMS.
 
 Value is the integer unique ID of the notification that can be used
-to remove the notification using `w32-notification-close', which see.
+to remove the notification using `w32-notification-close' (q.v.).
 If the function fails, the return value is nil.
 
 Tray notifications, a.k.a. \"taskbar messages\", are messages that
@@ -10452,7 +10452,7 @@ When nil, Emacs will translate the Alt key to the ALT modifier, not to META.  */
 
 When non-nil, the Start menu is opened by tapping the key.
 If you set this to nil, the left \"Windows\" key is processed by Emacs
-according to the value of `w32-lwindow-modifier', which see.
+according to the value of `w32-lwindow-modifier' (q.v.).
 
 Note that some combinations of the left \"Windows\" key with other
 keys are caught by Windows at low level.  For example, <lwindow>-r
@@ -10471,7 +10471,7 @@ For Windows 98/ME, see the doc string of `w32-phantom-key-code'.  */);
 
 When non-nil, the Start menu is opened by tapping the key.
 If you set this to nil, the right \"Windows\" key is processed by Emacs
-according to the value of `w32-rwindow-modifier', which see.
+according to the value of `w32-rwindow-modifier' (q.v.).
 
 Note that some combinations of the right \"Windows\" key with other
 keys are caught by Windows at low level.  For example, <rwindow>-r
diff --git a/src/window.c b/src/window.c
index ba86d73911f..32354ae51e3 100644
--- a/src/window.c
+++ b/src/window.c
@@ -6306,7 +6306,7 @@ DEFUN ("set-window-configuration", Fset_window_configuration,
        Sset_window_configuration, 1, 1, 0,
        doc: /* Set the configuration of windows and buffers as specified by CONFIGURATION.
 CONFIGURATION must be a value previously returned
-by `current-window-configuration' (which see).
+by `current-window-configuration' (q.v.).
 If CONFIGURATION was made from a frame that is now deleted,
 only frame-independent values can be restored.  In this case,
 the return value is nil.  Otherwise the value is t.  */)
diff --git a/src/xdisp.c b/src/xdisp.c
index 141275f15a0..2d53646253c 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -4731,14 +4731,14 @@ handle_display_prop (struct it *it)
    replace the text covered by `display' property with something else,
    such as an image or a display string.  If SPEC includes any kind or
    `(space ...) specification, the value is 2; this is used by
-   compute_display_string_pos, which see.
+   compute_display_string_pos (q.v.).
 
    See handle_single_display_spec for documentation of arguments.
    FRAME_WINDOW_P is true if the window being redisplayed is on a
    GUI frame; this argument is used only if IT is NULL, see below.
 
    IT can be NULL, if this is called by the bidi reordering code
-   through compute_display_string_pos, which see.  In that case, this
+   through compute_display_string_pos (q.v.).  In that case, this
    function only examines SPEC, but does not otherwise "handle" it, in
    the sense that it doesn't set up members of IT from the display
    spec.  */
@@ -16458,7 +16458,7 @@ set_horizontal_scroll_bar (struct window *w)
     . The text that changed since last redisplay could include the
       previous window-start position.  In that case, we try to salvage
       what we can from the current glyph matrix by calling
-      try_scrolling, which see.
+      try_scrolling (q.v.).
 
     . Some Emacs command could force us to use a specific window-start
       position by setting the window's force_start flag, or gently
@@ -32491,7 +32491,7 @@ which no explicit name has been set (see `modify-frame-parameters').  */);
   DEFVAR_LISP ("icon-title-format", Vicon_title_format,
     doc: /* Template for displaying the title bar of an iconified frame.
 \(Assuming the window manager supports this feature.)
-This variable has the same structure as `mode-line-format' (which see),
+This variable has the same structure as `mode-line-format' (q.v.),
 and is used only on frames for which no explicit name has been set
 \(see `modify-frame-parameters').  */);
   Vicon_title_format
diff --git a/src/xfns.c b/src/xfns.c
index 9022e4a9674..79b9f01dd20 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -4125,7 +4125,7 @@ x_focus_frame (struct frame *f, bool noactivate)
 
 \f
 DEFUN ("xw-color-defined-p", Fxw_color_defined_p, Sxw_color_defined_p, 1, 2, 0,
-       doc: /* Internal function called by `color-defined-p', which see.
+       doc: /* Internal function called by `color-defined-p' (q.v.).
 \(Note that the Nextstep version of this function ignores FRAME.)  */)
   (Lisp_Object color, Lisp_Object frame)
 {
@@ -4141,7 +4141,7 @@ DEFUN ("xw-color-defined-p", Fxw_color_defined_p, Sxw_color_defined_p, 1, 2, 0,
 }
 
 DEFUN ("xw-color-values", Fxw_color_values, Sxw_color_values, 1, 2, 0,
-       doc: /* Internal function called by `color-values', which see.  */)
+       doc: /* Internal function called by `color-values' (q.v.).  */)
   (Lisp_Object color, Lisp_Object frame)
 {
   XColor foo;
@@ -4156,7 +4156,7 @@ DEFUN ("xw-color-values", Fxw_color_values, Sxw_color_values, 1, 2, 0,
 }
 
 DEFUN ("xw-display-color-p", Fxw_display_color_p, Sxw_display_color_p, 0, 1, 0,
-       doc: /* Internal function called by `display-color-p', which see.  */)
+       doc: /* Internal function called by `display-color-p' (q.v.).  */)
   (Lisp_Object terminal)
 {
   struct x_display_info *dpyinfo = check_x_display_info (terminal);
diff --git a/test/manual/etags/c-src/emacs/src/keyboard.c b/test/manual/etags/c-src/emacs/src/keyboard.c
index 960e5c71322..19df54e04f0 100644
--- a/test/manual/etags/c-src/emacs/src/keyboard.c
+++ b/test/manual/etags/c-src/emacs/src/keyboard.c
@@ -11700,7 +11700,7 @@ whenever `deferred-action-list' is non-nil.  */);
   DEFVAR_LISP ("delayed-warnings-list", Vdelayed_warnings_list,
                doc: /* List of warnings to be displayed after this command.
 Each element must be a list (TYPE MESSAGE [LEVEL [BUFFER-NAME]]),
-as per the args of `display-warning' (which see).
+as per the args of `display-warning' (q.v.).
 If this variable is non-nil, `delayed-warnings-hook' will be run
 immediately after running `post-command-hook'.  */);
   Vdelayed_warnings_list = Qnil;
@@ -11764,7 +11764,7 @@ just after executing the command.  */);
 
 The default value is nil, in which case, point adjustment are
 suppressed only after special commands that set
-`disable-point-adjustment' (which see) to non-nil.  */);
+`disable-point-adjustment' (q.v.) to non-nil.  */);
   Vglobal_disable_point_adjustment = Qnil;
 
   DEFVAR_LISP ("minibuffer-message-timeout", Vminibuffer_message_timeout,
diff --git a/test/manual/etags/el-src/emacs/lisp/progmodes/etags.el b/test/manual/etags/el-src/emacs/lisp/progmodes/etags.el
index 090645c789c..9ade39df042 100644
--- a/test/manual/etags/el-src/emacs/lisp/progmodes/etags.el
+++ b/test/manual/etags/el-src/emacs/lisp/progmodes/etags.el
@@ -222,11 +222,11 @@ tags-table-format-functions
 of the format-parsing tags function variables if successful.")
 
 (defvar file-of-tag-function nil
-  "Function to do the work of `file-of-tag' (which see).
+  "Function to do the work of `file-of-tag' (q.v.).
 One optional argument, a boolean specifying to return complete path (nil) or
 relative path (non-nil).")
 (defvar tags-table-files-function nil
-  "Function to do the work of function `tags-table-files' (which see).")
+  "Function to do the work of function `tags-table-files' (q.v.).")
 (defvar tags-completion-table-function nil
   "Function to build the `tags-completion-table'.")
 (defvar snarf-tag-function nil
@@ -249,11 +249,11 @@ find-tag-tag-order
 (defvar find-tag-next-line-after-failure-p nil
   "Flag passed to `find-tag-in-order' for finding a tag.")
 (defvar list-tags-function nil
-  "Function to do the work of `list-tags' (which see).")
+  "Function to do the work of `list-tags' (q.v.).")
 (defvar tags-apropos-function nil
-  "Function to do the work of `tags-apropos' (which see).")
+  "Function to do the work of `tags-apropos' (q.v.).")
 (defvar tags-included-tables-function nil
-  "Function to do the work of function `tags-included-tables' (which see).")
+  "Function to do the work of function `tags-included-tables' (q.v.).")
 (defvar verify-tags-table-function nil
   "Function to return t if current buffer contains valid tags file.")
 \f
@@ -1782,7 +1782,7 @@ tags-loop-eval
 (defun tags-loop-continue (&optional first-time)
   "Continue last \\[tags-search] or \\[tags-query-replace] command.
 Used noninteractively with non-nil argument to begin such a command (the
-argument is passed to `next-file', which see).
+argument is passed to `next-file'  (q.v.)).
 
 Two variables control the processing we do on each file: the value of
 `tags-loop-scan' is a form to be executed on each file to see if it is
@@ -2050,7 +2050,7 @@ complete-tag
   "Perform tags completion on the text around point.
 Completes to the set of names listed in the current tags table.
 The string to complete is chosen in the same way as the default
-for \\[find-tag] (which see)."
+for \\[find-tag] (q.v.)."
   (interactive)
   (or tags-table-list
       tags-file-name
-- 
2.15.0.rc0.271.g36b669edcc-goog


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* bug#28790: [PATCH] Replaced "which see" with "q.v.".
  2017-10-11 21:22 bug#28790: [PATCH] Replaced "which see" with "q.v." John Williams
@ 2017-10-12  1:44 ` Nick Helm
  2017-10-12  3:51   ` Drew Adams
  2017-10-12  6:48 ` Eli Zaretskii
  2017-10-13  0:26 ` bug#28790: " Richard Stallman
  2 siblings, 1 reply; 17+ messages in thread
From: Nick Helm @ 2017-10-12  1:44 UTC (permalink / raw)
  To: 28790

On Wed, 11 Oct 2017 at 14:22:50 -0700, John Williams wrote:

> This patch fixes a grammar issue that's been bugging me for a while.
> Full description from the patch:
>
> While it may seem strange to replace an English phrase with a
> relatively obscure Latin abbreviation, there are a number of
> advantages.  As someone whose first language is English, I've never
> seen "which see" used anywhere else the way it is in Emacs.  It looks
> totally ungrammatical to me, and I found it quite confusing when I
> first encountered it.

Please don't do this.

I agree that the phrase "which see" may appear awkward to many fluent
English readers, but I don't think correctness is at issue here. "Which
see" and qv are recommended and discouraged in equal measure by the
style manuals I have here, but they all agree that both usages are
correct.

More importantly though, I think "which see" is a more accessible form
for those who are less familiar with written English. Awkwardness aside,
the writer's meaning should be fairly obvious to most readers without
reaching for the dictionary. In a sense, "which see" is an intuitively
shortened version of "which you should see for more information".

"Quod vide" (qv) is arguably more conventional, but for those who
haven't encountered the abbreviation or learned its meaning, it's a much
tougher nut to crack.

If there /must/ be a change here, I'd advocate removing the phrase
altogether. When a text mentions a related topic, it creates an implicit
suggestion for further reading – there's no need to point it out. This
is especially true for Emacs, where almost all such topics exist and
are in the same resource – Emacs itself – making qv redundant.





^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#28790: [PATCH] Replaced "which see" with "q.v.".
  2017-10-12  1:44 ` Nick Helm
@ 2017-10-12  3:51   ` Drew Adams
  0 siblings, 0 replies; 17+ messages in thread
From: Drew Adams @ 2017-10-12  3:51 UTC (permalink / raw)
  To: Nick Helm, 28790

+1 to what Nick Helm said, every point.





^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#28790: [PATCH] Replaced "which see" with "q.v.".
  2017-10-11 21:22 bug#28790: [PATCH] Replaced "which see" with "q.v." John Williams
  2017-10-12  1:44 ` Nick Helm
@ 2017-10-12  6:48 ` Eli Zaretskii
  2017-10-14 22:07   ` Glenn Morris
  2017-10-13  0:26 ` bug#28790: " Richard Stallman
  2 siblings, 1 reply; 17+ messages in thread
From: Eli Zaretskii @ 2017-10-12  6:48 UTC (permalink / raw)
  To: John Williams; +Cc: 28790

> From: John Williams <jrw@pobox.com>
> Date: Wed, 11 Oct 2017 14:22:50 -0700
> 
> While it may seem strange to replace an English phrase with a
> relatively obscure Latin abbreviation, there are a number of
> advantages.  As someone whose first language is English, I've never
> seen "which see" used anywhere else the way it is in Emacs.  It looks
> totally ungrammatical to me, and I found it quite confusing when I
> first encountered it.  It's a difficult phrase to search for because
> it's formed from such common words.  OTOH, q.v. is easily searchable,
> it has a well-defined meaning, and the conventional way to use it
> serves as a drop-in replacement for the way "which see" is used in
> Emacs.

Thanks, but we've discussed similar ideas in the past, and eventually
decided not to install such changes, certainly not summarily replacing
every "which see" with a "q.v.".

The absolute majority of your proposed changes are in the doc strings,
where we already have a direct link to the documentation of a symbol
whose name precedes "which see".  So whether the reader understands
that or doesn't, the link is already there to click on, and no harm is
done by a relatively rare use of this phrase.





^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#28790: Replaced "which see" with "q.v.".
  2017-10-11 21:22 bug#28790: [PATCH] Replaced "which see" with "q.v." John Williams
  2017-10-12  1:44 ` Nick Helm
  2017-10-12  6:48 ` Eli Zaretskii
@ 2017-10-13  0:26 ` Richard Stallman
  2017-10-13 18:34   ` John Williams
  2019-06-24 15:39   ` Lars Ingebrigtsen
  2 siblings, 2 replies; 17+ messages in thread
From: Richard Stallman @ 2017-10-13  0:26 UTC (permalink / raw)
  To: John Williams; +Cc: 28790

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

"This is about foobar, which see" is a customary usage in English.
Perhaps not used so much nowadays as 50 years ago.  People who don't
know it will have a good chance of figuring it out from the meanings
of the two words."

As for "q.v.", that is an erudite abbreviation that most people won't know,
and won't have any way to figure out.

Thus, this change would make the text harder to understand.  Please
don't make this change.

-- 
Dr Richard Stallman
President, Free Software Foundation (gnu.org, fsf.org)
Internet Hall-of-Famer (internethalloffame.org)
Skype: No way! See stallman.org/skype.html.






^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#28790: Replaced "which see" with "q.v.".
  2017-10-13  0:26 ` bug#28790: " Richard Stallman
@ 2017-10-13 18:34   ` John Williams
  2017-10-13 18:55     ` Eli Zaretskii
  2019-06-24 15:39   ` Lars Ingebrigtsen
  1 sibling, 1 reply; 17+ messages in thread
From: John Williams @ 2017-10-13 18:34 UTC (permalink / raw)
  To: rms; +Cc: 28790

What about just deleting it in all the places where it adds nothing
because there's already a hyperlink?

On Thu, Oct 12, 2017 at 5:26 PM, Richard Stallman <rms@gnu.org> wrote:
> [[[ To any NSA and FBI agents reading my email: please consider    ]]]
> [[[ whether defending the US Constitution against all enemies,     ]]]
> [[[ foreign or domestic, requires you to follow Snowden's example. ]]]
>
> "This is about foobar, which see" is a customary usage in English.
> Perhaps not used so much nowadays as 50 years ago.  People who don't
> know it will have a good chance of figuring it out from the meanings
> of the two words."
>
> As for "q.v.", that is an erudite abbreviation that most people won't know,
> and won't have any way to figure out.
>
> Thus, this change would make the text harder to understand.  Please
> don't make this change.
>
> --
> Dr Richard Stallman
> President, Free Software Foundation (gnu.org, fsf.org)
> Internet Hall-of-Famer (internethalloffame.org)
> Skype: No way! See stallman.org/skype.html.
>





^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#28790: Replaced "which see" with "q.v.".
  2017-10-13 18:34   ` John Williams
@ 2017-10-13 18:55     ` Eli Zaretskii
  0 siblings, 0 replies; 17+ messages in thread
From: Eli Zaretskii @ 2017-10-13 18:55 UTC (permalink / raw)
  To: John Williams; +Cc: rms, 28790

> From: John Williams <jrw@pobox.com>
> Date: Fri, 13 Oct 2017 11:34:34 -0700
> Cc: 28790@debbugs.gnu.org
> 
> What about just deleting it in all the places where it adds nothing
> because there's already a hyperlink?

It doesn't add nothing, it adds something.





^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#28790: [PATCH] Replaced "which see" with "q.v.".
  2017-10-12  6:48 ` Eli Zaretskii
@ 2017-10-14 22:07   ` Glenn Morris
  2017-10-14 22:52     ` John Williams
                       ` (2 more replies)
  0 siblings, 3 replies; 17+ messages in thread
From: Glenn Morris @ 2017-10-14 22:07 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: John Williams, 28790

Eli Zaretskii wrote:

> The absolute majority of your proposed changes are in the doc strings,
> where we already have a direct link to the documentation of a symbol
> whose name precedes "which see".  So whether the reader understands
> that or doesn't, the link is already there to click on, and no harm is
> done by a relatively rare use of this phrase.

IMO there is no benefit either, as you explain above. "which see" is an
anachronism in the age of hyperlinks. Is there any logic to where these
"rare uses" appear - why do some links get them and most not? If there's
no logic and no benefit, they should be removed as unnecessary verbiage.





^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#28790: [PATCH] Replaced "which see" with "q.v.".
  2017-10-14 22:07   ` Glenn Morris
@ 2017-10-14 22:52     ` John Williams
  2017-10-15  2:36       ` Eli Zaretskii
  2017-10-15  0:19     ` João Távora
  2017-10-15  2:36     ` Eli Zaretskii
  2 siblings, 1 reply; 17+ messages in thread
From: John Williams @ 2017-10-14 22:52 UTC (permalink / raw)
  To: Glenn Morris; +Cc: 28790

[-- Attachment #1: Type: text/plain, Size: 905 bytes --]

I was trying to make the least disruptive change I could, but if simply
removing the redundant text would be more acceptable, I'd be happy to
rework my patch to do that.

On Oct 14, 2017 3:07 PM, "Glenn Morris" <rgm@gnu.org> wrote:

> Eli Zaretskii wrote:
>
> > The absolute majority of your proposed changes are in the doc strings,
> > where we already have a direct link to the documentation of a symbol
> > whose name precedes "which see".  So whether the reader understands
> > that or doesn't, the link is already there to click on, and no harm is
> > done by a relatively rare use of this phrase.
>
> IMO there is no benefit either, as you explain above. "which see" is an
> anachronism in the age of hyperlinks. Is there any logic to where these
> "rare uses" appear - why do some links get them and most not? If there's
> no logic and no benefit, they should be removed as unnecessary verbiage.
>

[-- Attachment #2: Type: text/html, Size: 1272 bytes --]

^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#28790: [PATCH] Replaced "which see" with "q.v.".
  2017-10-14 22:07   ` Glenn Morris
  2017-10-14 22:52     ` John Williams
@ 2017-10-15  0:19     ` João Távora
  2017-10-15  1:03       ` John Williams
  2017-10-15  2:36     ` Eli Zaretskii
  2 siblings, 1 reply; 17+ messages in thread
From: João Távora @ 2017-10-15  0:19 UTC (permalink / raw)
  To: Glenn Morris; +Cc: John Williams, 28790

Glenn Morris <rgm@gnu.org> writes:

> Eli Zaretskii wrote:
>
>> The absolute majority of your proposed changes are in the doc strings,
>> where we already have a direct link to the documentation of a symbol
>> whose name precedes "which see".  So whether the reader understands
>> that or doesn't, the link is already there to click on, and no harm is
>> done by a relatively rare use of this phrase.
>
> IMO there is no benefit either, as you explain above. "which see" is an
> anachronism in the age of hyperlinks.

For me, it has the benefit that it allows me emphasize that the
hyperlink preceding is more important than usual, almost a pre-requisite
for understanding the current one.  I use "which see" because it's terse
and a conventional phrase. Until this discussion I thought it was a
widely accepted convention, even outside Emacs, I now understand that it
is not, but if you "forbid it" I have to start writing things like "(the
documentation of which is required/suggested to fully understand this
item)" which says the same but is a bit long-winded.

João





^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#28790: [PATCH] Replaced "which see" with "q.v.".
  2017-10-15  0:19     ` João Távora
@ 2017-10-15  1:03       ` John Williams
  2017-10-15 15:31         ` Drew Adams
  2017-10-16 21:47         ` Alan Third
  0 siblings, 2 replies; 17+ messages in thread
From: John Williams @ 2017-10-15  1:03 UTC (permalink / raw)
  To: João Távora; +Cc: 28790

To replace "which see" with something more conventional, I think you'd
have to re-word the whole sentence in most cases. So like, "See also
cromulate-frobnicator, which is called by snarf-spavicle in GUI
environments", as opposed to something like "In GUI environments,
snarf-spavicle calls cromulate-frobnicator, which see." At the moment
I can't think of any any natural-sounding way to introduce a cross
reference in English prose that isn't some type of imperative verb
phrase.

Tangent: "which see" fails to parse for me because it sounds like
"cromulate-frobnicator" is supposed to be the subject of "see" rather
than the object. The only time I'd expect to see "which see" would be
as a modifier to a noun phrase like "the cameras, which see everything
that happens". I suspect you could get away with something like "quod
vide" because Latin is a lot more flexible about word order, and
English-speaking authors just blindly copied the Latin phrase without
accounting for the rather large grammatical differences between
English and Latin. It wouldn't be the first time English-speaking
academics tried to apply Latin rules to English grammar in a totally
silly way, like when they invented the concept of a split infinitive,
or when they started insisting you can't end a sentence with a
preposition.

I still maintain that "which see" is an anachronism that the vast
majority of English speakers will find meaningless at best, and
confusing at worst, but since RMS already said he disagrees, I don't
see much point in pressing the issue further without collecting some
hard data on English usage, and that seems like it would be an
excessively quixotic pursuit.

On Sat, Oct 14, 2017 at 5:19 PM, João Távora <joaotavora@gmail.com> wrote:
> Glenn Morris <rgm@gnu.org> writes:
>
>> Eli Zaretskii wrote:
>>
>>> The absolute majority of your proposed changes are in the doc strings,
>>> where we already have a direct link to the documentation of a symbol
>>> whose name precedes "which see".  So whether the reader understands
>>> that or doesn't, the link is already there to click on, and no harm is
>>> done by a relatively rare use of this phrase.
>>
>> IMO there is no benefit either, as you explain above. "which see" is an
>> anachronism in the age of hyperlinks.
>
> For me, it has the benefit that it allows me emphasize that the
> hyperlink preceding is more important than usual, almost a pre-requisite
> for understanding the current one.  I use "which see" because it's terse
> and a conventional phrase. Until this discussion I thought it was a
> widely accepted convention, even outside Emacs, I now understand that it
> is not, but if you "forbid it" I have to start writing things like "(the
> documentation of which is required/suggested to fully understand this
> item)" which says the same but is a bit long-winded.
>
> João





^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#28790: [PATCH] Replaced "which see" with "q.v.".
  2017-10-14 22:07   ` Glenn Morris
  2017-10-14 22:52     ` John Williams
  2017-10-15  0:19     ` João Távora
@ 2017-10-15  2:36     ` Eli Zaretskii
  2 siblings, 0 replies; 17+ messages in thread
From: Eli Zaretskii @ 2017-10-15  2:36 UTC (permalink / raw)
  To: Glenn Morris; +Cc: jrw, 28790

> From: Glenn Morris <rgm@gnu.org>
> Cc: John Williams <jrw@pobox.com>,  28790@debbugs.gnu.org
> Date: Sat, 14 Oct 2017 18:07:02 -0400
> 
> Eli Zaretskii wrote:
> 
> > The absolute majority of your proposed changes are in the doc strings,
> > where we already have a direct link to the documentation of a symbol
> > whose name precedes "which see".  So whether the reader understands
> > that or doesn't, the link is already there to click on, and no harm is
> > done by a relatively rare use of this phrase.
> 
> IMO there is no benefit either, as you explain above. "which see" is an
> anachronism in the age of hyperlinks. Is there any logic to where these
> "rare uses" appear - why do some links get them and most not? If there's
> no logic and no benefit, they should be removed as unnecessary verbiage.

In my book, if there's no benefit and no harm, the text should stay as
it is.





^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#28790: [PATCH] Replaced "which see" with "q.v.".
  2017-10-14 22:52     ` John Williams
@ 2017-10-15  2:36       ` Eli Zaretskii
  0 siblings, 0 replies; 17+ messages in thread
From: Eli Zaretskii @ 2017-10-15  2:36 UTC (permalink / raw)
  To: John Williams; +Cc: 28790

> From: John Williams <jrw@pobox.com>
> Date: Sat, 14 Oct 2017 15:52:16 -0700
> Cc: Eli Zaretskii <eliz@gnu.org>, 28790@debbugs.gnu.org
> 
> I was trying to make the least disruptive change I could, but if simply removing the redundant text would be
> more acceptable, I'd be happy to rework my patch to do that.

Thanks, but I don't think we should remove that harmless text, if only
out of respect to those who wrote it.





^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#28790: [PATCH] Replaced "which see" with "q.v.".
  2017-10-15  1:03       ` John Williams
@ 2017-10-15 15:31         ` Drew Adams
  2017-10-16  1:55           ` Richard Stallman
  2017-10-16 21:47         ` Alan Third
  1 sibling, 1 reply; 17+ messages in thread
From: Drew Adams @ 2017-10-15 15:31 UTC (permalink / raw)
  To: John Williams, João Távora; +Cc: 28790

> To replace "which see" with something more conventional, I think you'd
> have to re-word the whole sentence in most cases. So like, "See also
> cromulate-frobnicator, which is called by snarf-spavicle in GUI
> environments", as opposed to something like "In GUI environments,
> snarf-spavicle calls cromulate-frobnicator, which see."

Yes, this is true.  It is conventional and clear to say
"See XXX for information about YYY."  IOW, it's good to
make very clear (a) what you're pointing to and (b) why.





^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#28790: [PATCH] Replaced "which see" with "q.v.".
  2017-10-15 15:31         ` Drew Adams
@ 2017-10-16  1:55           ` Richard Stallman
  0 siblings, 0 replies; 17+ messages in thread
From: Richard Stallman @ 2017-10-16  1:55 UTC (permalink / raw)
  To: Drew Adams; +Cc: joaotavora, 28790, jrw

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

  > Yes, this is true.  It is conventional and clear to say
  > "See XXX for information about YYY."  IOW, it's good to
  > make very clear (a) what you're pointing to and (b) why.

I think it is good to make doc strings clearer in that sort of way.

-- 
Dr Richard Stallman
President, Free Software Foundation (gnu.org, fsf.org)
Internet Hall-of-Famer (internethalloffame.org)
Skype: No way! See stallman.org/skype.html.






^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#28790: [PATCH] Replaced "which see" with "q.v.".
  2017-10-15  1:03       ` John Williams
  2017-10-15 15:31         ` Drew Adams
@ 2017-10-16 21:47         ` Alan Third
  1 sibling, 0 replies; 17+ messages in thread
From: Alan Third @ 2017-10-16 21:47 UTC (permalink / raw)
  To: John Williams; +Cc: João Távora, 28790

On Sat, Oct 14, 2017 at 06:03:31PM -0700, John Williams wrote:
> I still maintain that "which see" is an anachronism that the vast
> majority of English speakers will find meaningless at best, and
> confusing at worst, but since RMS already said he disagrees, I don't
> see much point in pressing the issue further without collecting some
> hard data on English usage, and that seems like it would be an
> excessively quixotic pursuit.

I had to use Google to find out what it meant when I was reading the
Emacs manual. I don’t believe I’ve ever seen it used anywhere else.

For me, the only advantage of replacing it with ‘q.v.’ would have been
that I’d immediately know that I didn’t know what it meant, rather
than assuming the writer made a grammatical mistake.
-- 
Alan Third





^ permalink raw reply	[flat|nested] 17+ messages in thread

* bug#28790: Replaced "which see" with "q.v.".
  2017-10-13  0:26 ` bug#28790: " Richard Stallman
  2017-10-13 18:34   ` John Williams
@ 2019-06-24 15:39   ` Lars Ingebrigtsen
  1 sibling, 0 replies; 17+ messages in thread
From: Lars Ingebrigtsen @ 2019-06-24 15:39 UTC (permalink / raw)
  To: Richard Stallman; +Cc: John Williams, 28790

Richard Stallman <rms@gnu.org> writes:

> "This is about foobar, which see" is a customary usage in English.
> Perhaps not used so much nowadays as 50 years ago.  People who don't
> know it will have a good chance of figuring it out from the meanings
> of the two words."
>
> As for "q.v.", that is an erudite abbreviation that most people won't know,
> and won't have any way to figure out.
>
> Thus, this change would make the text harder to understand.  Please
> don't make this change.

It seems like most agreed, so I'm closing this bug report.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2019-06-24 15:39 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-10-11 21:22 bug#28790: [PATCH] Replaced "which see" with "q.v." John Williams
2017-10-12  1:44 ` Nick Helm
2017-10-12  3:51   ` Drew Adams
2017-10-12  6:48 ` Eli Zaretskii
2017-10-14 22:07   ` Glenn Morris
2017-10-14 22:52     ` John Williams
2017-10-15  2:36       ` Eli Zaretskii
2017-10-15  0:19     ` João Távora
2017-10-15  1:03       ` John Williams
2017-10-15 15:31         ` Drew Adams
2017-10-16  1:55           ` Richard Stallman
2017-10-16 21:47         ` Alan Third
2017-10-15  2:36     ` Eli Zaretskii
2017-10-13  0:26 ` bug#28790: " Richard Stallman
2017-10-13 18:34   ` John Williams
2017-10-13 18:55     ` Eli Zaretskii
2019-06-24 15:39   ` Lars Ingebrigtsen

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).