diff --git a/doc/lispref/help.texi b/doc/lispref/help.texi index b945e438f55..1bb2c7c4d08 100644 --- a/doc/lispref/help.texi +++ b/doc/lispref/help.texi @@ -332,15 +332,13 @@ stands for no text itself. It is used only for a side effect: it specifies @var{mapvar}'s value as the keymap for any following @samp{\[@var{command}]} sequences in this documentation string. -@item ‘ -@itemx ` -(left single quotation mark and grave accent) both stand for a left quote. +@item ` +(grave accent) stands for a left quote. This generates a left single quotation mark, an apostrophe, or a grave accent depending on the value of @code{text-quoting-style}. -@item ’ -@itemx ' -(right single quotation mark and apostrophe) both stand for a right quote. +@item ' +(apostrophe) stands for a right quote. This generates a right single quotation mark or an apostrophe depending on the value of @code{text-quoting-style}. @@ -361,7 +359,8 @@ should use for single quotes in the wording of help and messages. If the variable's value is @code{curve}, the style is @t{‘like this’} with curved single quotes. If the value is @code{straight}, the style is @t{'like this'} with straight -apostrophes. If the value is @code{grave}, the style is @t{`like +apostrophes. If the value is @code{grave}, +quotes are not translated and the style is @t{`like this'} with grave accent and apostrophe, the standard style before Emacs version 25. The default value @code{nil} acts like @code{curve} if curved single quotes are displayable, and diff --git a/doc/lispref/strings.texi b/doc/lispref/strings.texi index 58ab02dbc41..cf0505f4467 100644 --- a/doc/lispref/strings.texi +++ b/doc/lispref/strings.texi @@ -840,9 +840,8 @@ if any. @cindex curved quotes @cindex curly quotes This function acts like @code{format}, except it also converts any -curved single quotes in @var{string} as per the value of -@code{text-quoting-style}, and treats grave accent (@t{`}) and -apostrophe (@t{'}) as if they were curved single quotes. +grave accents (@t{`}) and apostrophes (@t{'}) in @var{string} as per the +value of @code{text-quoting-style}. A format that quotes with grave accents and apostrophes @t{`like this'} typically generates curved quotes @t{‘like this’}. In diff --git a/doc/lispref/tips.texi b/doc/lispref/tips.texi index d12de7aee2d..a8589df031c 100644 --- a/doc/lispref/tips.texi +++ b/doc/lispref/tips.texi @@ -679,8 +679,7 @@ which quotes symbols with grave accent @t{`} and apostrophe @t{'}: @t{`like-this'} rather than @t{‘like-this’}. This older convention was designed for now-obsolete displays in which grave accent and apostrophe were mirror images. - -Documentation using either convention is converted to the user's +Documentation using this convention is converted to the user's preferred format when it is copied into a help buffer. @xref{Keys in Documentation}. diff --git a/etc/NEWS b/etc/NEWS index b4407a661ad..ed0bc5f7626 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -207,7 +207,7 @@ viewing HTML files and the like. *** Ediff can be prevented from pausing 1 second after reaching a breakpoint (e.g. with "f" and "o") by customizing the new option -`edebug-sit-on-break'. +'edebug-sit-on-break'. ** eww @@ -364,13 +364,19 @@ mode bindings: 'C-c @ C-a', 'C-c @ C-t', 'C-c @ C-d', and 'C-c @ C-e.' before running. This is controlled by the 'grep-save-buffers' variable. ++++ +** The variable 'text-quoting-style' no longer affects the treatment +of curved quotes in format arguments to functions like 'message' and +'format-message'. In particular, when this variable's value is +'grave', all quotes in formats are output as-is. + * Lisp Changes in Emacs 25.2 ** New var syntax-ppss-table to control the syntax-table used in syntax-ppss. +++ -** `define-derived-mode' can now specify an :after-hook form, which +** 'define-derived-mode' can now specify an :after-hook form, which gets evaluated after the new mode's hook has run. This can be used to incorporate configuration changes made in the mode hook into the mode's setup. diff --git a/lisp/help-fns.el b/lisp/help-fns.el index d1c8b2dc478..040152a2c9f 100644 --- a/lisp/help-fns.el +++ b/lisp/help-fns.el @@ -626,7 +626,7 @@ FILE is the file where FUNCTION was probably defined." ;; Avoid asking the user annoying questions if she decides ;; to save the help buffer, when her locale's codeset ;; isn't UTF-8. - (unless (memq text-quoting-style '(leave straight grave)) + (unless (memq text-quoting-style '(straight grave)) (set-buffer-file-coding-system 'utf-8)))))))) ;; Add defaults to `help-fns-describe-function-functions'. diff --git a/src/doc.c b/src/doc.c index 53264334ed5..017dd173d0a 100644 --- a/src/doc.c +++ b/src/doc.c @@ -704,8 +704,6 @@ text_quoting_style (void) ? default_to_grave_quoting_style () : EQ (Vtext_quoting_style, Qgrave)) return GRAVE_QUOTING_STYLE; - else if (EQ (Vtext_quoting_style, Qleave)) - return LEAVE_QUOTING_STYLE; else if (EQ (Vtext_quoting_style, Qstraight)) return STRAIGHT_QUOTING_STYLE; else @@ -982,29 +980,12 @@ Otherwise, return a new string. */) nchars++; changed = true; } - else if (! multibyte) - *bufp++ = *strp++, nchars++; else { - int len; - int ch = STRING_CHAR_AND_LENGTH (strp, len); - if ((ch == LEFT_SINGLE_QUOTATION_MARK - || ch == RIGHT_SINGLE_QUOTATION_MARK) - && quoting_style != CURVE_QUOTING_STYLE - && quoting_style != LEAVE_QUOTING_STYLE) - { - *bufp++ = ((ch == LEFT_SINGLE_QUOTATION_MARK - && quoting_style == GRAVE_QUOTING_STYLE) - ? '`' : '\''); - strp += len; - changed = true; - } - else - { - do - *bufp++ = *strp++; - while (--len != 0); - } + *bufp++ = *strp++; + if (multibyte) + while (! CHAR_HEAD_P (*strp)) + *bufp++ = *strp++; nchars++; } } @@ -1036,7 +1017,6 @@ void syms_of_doc (void) { DEFSYM (Qfunction_documentation, "function-documentation"); - DEFSYM (Qleave, "leave"); DEFSYM (Qgrave, "grave"); DEFSYM (Qstraight, "straight"); @@ -1051,15 +1031,16 @@ syms_of_doc (void) DEFVAR_LISP ("text-quoting-style", Vtext_quoting_style, doc: /* Style to use for single quotes in help and messages. Its value should be a symbol. It works by substituting certain single -quotes for certain other single quotes. This is done in help output and -`message' output. It is not done in `format'. +quotes for grave accent and apostrophe. This is done in help output +and in functions like `message' and `format-message'. It is not done +in `format'. -`leave' means do not do any substitutions. `curve' means quote with curved single quotes \\=‘like this\\=’. `straight' means quote with straight apostrophes \\='like this\\='. -`grave' means quote with grave accent and apostrophe \\=`like this\\='. -The default value nil acts like `curve' if curved single quotes are -displayable, and like `grave' otherwise. */); +`grave' means quote with grave accent and apostrophe \\=`like this\\='; +i.e., do not alter quote marks. The default value nil acts like +`curve' if curved single quotes are displayable, and like `grave' +otherwise. */); Vtext_quoting_style = Qnil; DEFVAR_BOOL ("internal--text-quoting-flag", text_quoting_flag, diff --git a/src/editfns.c b/src/editfns.c index afcf1cab72b..6b0996d65eb 100644 --- a/src/editfns.c +++ b/src/editfns.c @@ -3977,8 +3977,6 @@ styled_format (ptrdiff_t nargs, Lisp_Object *args, bool message) multibyte = true; int quoting_style = message ? text_quoting_style () : -1; - if (quoting_style == LEAVE_QUOTING_STYLE) - quoting_style = -1; /* If we start out planning a unibyte result, then discover it has to be multibyte, we jump back to retry. */ @@ -4457,14 +4455,6 @@ styled_format (ptrdiff_t nargs, Lisp_Object *args, bool message) } else { - /* Named constants for the UTF-8 encodings of U+2018 LEFT SINGLE - QUOTATION MARK and U+2019 RIGHT SINGLE QUOTATION MARK. */ - enum - { - uLSQM0 = 0xE2, uLSQM1 = 0x80, uLSQM2 = 0x98, - /* uRSQM0 = 0xE2, uRSQM1 = 0x80, */ uRSQM2 = 0x99 - }; - unsigned char str[MAX_MULTIBYTE_LENGTH]; if ((format_char == '`' || format_char == '\'') @@ -4480,18 +4470,6 @@ styled_format (ptrdiff_t nargs, Lisp_Object *args, bool message) } else if (format_char == '`' && quoting_style == STRAIGHT_QUOTING_STYLE) convsrc = "'"; - else if (format_char == uLSQM0 && CURVE_QUOTING_STYLE < quoting_style - && multibyte_format - && (unsigned char) format[0] == uLSQM1 - && ((unsigned char) format[1] == uLSQM2 - || (unsigned char) format[1] == uRSQM2)) - { - convsrc = (((unsigned char) format[1] == uLSQM2 - && quoting_style == GRAVE_QUOTING_STYLE) - ? "`" : "'"); - format += 2; - memset (&discarded[format0 + 1 - format_start], 2, 2); - } else { /* Copy a single character from format to buf. */ diff --git a/src/lisp.h b/src/lisp.h index de74a47e3d3..1fc6130be0b 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -4198,9 +4198,6 @@ extern void syms_of_callproc (void); /* Defined in doc.c. */ enum text_quoting_style { - /* Leave quotes unchanged. */ - LEAVE_QUOTING_STYLE, - /* Use curved single quotes ‘like this’. */ CURVE_QUOTING_STYLE,