[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: A simple solution to "Upcoming loss of usability ..."
From: |
Dmitry Gutov |
Subject: |
Re: A simple solution to "Upcoming loss of usability ..." |
Date: |
Sun, 28 Jun 2015 04:04:04 +0300 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.0 |
On 06/28/2015 12:09 AM, Paul Eggert wrote:
How about if you pick a plausible option and give a realistic example
showing (1) what the source code would be, (2) how the source code would
be displayed, (3) what the *Help* buffer would be, (4) how the *Help*
buffer would be displayed normally, and (5) how the *Help* buffer would
be displayed if the user requests ASCII approximations.
Ok, try this, please. "\\" before a quote keeps it untranslated.
However, it order for us to be able to show an arbitrary number of
backslashes before a quote (both translated or not), the backslashes
also escape themselves. I've limited this effect to only before a quote,
so that we don't have to add them in a lot of places (like
substitute-command-keys docstring).
I don't think any single example will illustrate all the gotchas. But
how about if we start with the previously-mentioned example, e.g., type
‘C-h texinfo-format-verb’ after loading textmodes/texinfmt?
It's good to see how escaping works, but I meant an example of a Help
buffer where we must not translate quotes in the value.
diff --git a/lisp/help-fns.el b/lisp/help-fns.el
index 4982ee5..aaaf02b 100644
--- a/lisp/help-fns.el
+++ b/lisp/help-fns.el
@@ -746,7 +746,8 @@ it is displayed along with the global value."
(setq from (point))
(pp origval)
(if (< (point) (+ from 20))
- (delete-region (1- from) from)))))))
+ (delete-region (1- from) from)))))
+ (put-text-property val-start-pos (point) 'help-value t)))
(terpri)
(when locus
(cond
diff --git a/lisp/help-mode.el b/lisp/help-mode.el
index f99e916..b5bf618 100644
--- a/lisp/help-mode.el
+++ b/lisp/help-mode.el
@@ -97,6 +97,18 @@ The format is (FUNCTION ARGS...).")
"Hook run by `help-mode'."
:type 'hook
:group 'help)
+
+(defcustom help-quote-translation nil
+ "Style to use for single quotes in help.
+The value is a left single quote character of some style.
+Quote ‘like this’ if the value is ?‘ (left single quotation mark).
+Quote \\'like this\\' if the value is ?\\' (apostrophe).
+Quote \\`like this\\' if the value is ?\\` (grave accent).
+The default value is nil, which means quote with left single quotation mark
+if displayable, and with grave accent otherwise."
+ :type 'character
+ :group 'help)
+
;; Button types used by help
@@ -287,9 +299,37 @@ Commands:
\\{help-mode-map}"
(set (make-local-variable 'revert-buffer-function)
'help-mode-revert-buffer)
+ (setq font-lock-defaults '(nil t))
+ (font-lock-add-keywords
+ nil '(("\\(?:\\=\\|[^\\]\\)\\(\\\\*\\)[`']"
+ (0 (let* ((mbeg (match-beginning 1))
+ (mend (match-end 1))
+ (escapes (- mend mbeg)))
+ (unless (get-text-property mend 'help-value)
+ ;; Collapse all escaped backslashes.
+ (compose-region mbeg (+ mbeg (- escapes (/ escapes
2))) "")
+ ;; If there's an even number of backslashes,
+ ;; translate the quote.
+ (when (eq (logand escapes 1) 0)
+ (help--translate-quote mend)))
+ nil)))))
(set (make-local-variable 'bookmark-make-record-function)
'help-bookmark-make-record))
+(defun help--translate-quote (beg)
+ (let* ((char (char-after beg))
+ (replacement
+ (cond
+ ((or (and (null help-quote-translation)
+ (char-displayable-p ?‘))
+ (eq help-quote-translation ?‘))
+ (cdr (assq char '((?` . ?‘) (?' . ?’)))))
+ ((eq help-quote-translation ?')
+ ?')
+ (t char))))
+ (unless (eq char replacement)
+ (compose-region beg (1+ beg) replacement))))
+
;;;###autoload
(defun help-mode-setup ()
(help-mode)
diff --git a/lisp/textmodes/texinfmt.el b/lisp/textmodes/texinfmt.el
index e7b6835..392d45b 100644
--- a/lisp/textmodes/texinfmt.el
+++ b/lisp/textmodes/texinfmt.el
@@ -2493,8 +2493,8 @@ surrounded by in angle brackets."
Enclose the verbatim text, including the delimiters, in braces. Print
text exactly as written (but not the delimiters) in a fixed-width.
-For example, @verb\{|@|\} results in @ and
address@hidden@'e?`!`+} results in @'e?`!`."
+For example, @verb{|@|} results in @ and
address@hidden@\\'e?\\`!\\`+} results in @\\'e?\\`!\\`."
(let ((delimiter (buffer-substring-no-properties
(1+ texinfo-command-end) (+ 2 texinfo-command-end))))
- Re: A simple solution to "Upcoming loss of usability ...", (continued)
- Re: A simple solution to "Upcoming loss of usability ...", Dmitry Gutov, 2015/06/25
- Re: A simple solution to "Upcoming loss of usability ...", Paul Eggert, 2015/06/25
- Re: A simple solution to "Upcoming loss of usability ...", Dmitry Gutov, 2015/06/25
- Re: A simple solution to "Upcoming loss of usability ...", Paul Eggert, 2015/06/25
- Re: A simple solution to "Upcoming loss of usability ...", Dmitry Gutov, 2015/06/26
- Re: A simple solution to "Upcoming loss of usability ...", Paul Eggert, 2015/06/27
- Re: A simple solution to "Upcoming loss of usability ...", Dmitry Gutov, 2015/06/27
- Re: A simple solution to "Upcoming loss of usability ...", Paul Eggert, 2015/06/27
- Re: A simple solution to "Upcoming loss of usability ...",
Dmitry Gutov <=
- Re: A simple solution to "Upcoming loss of usability ...", Paul Eggert, 2015/06/28
- Escaping quotes in docstrings, Was: A simple solution to "Upcoming loss of usability ...", Dmitry Gutov, 2015/06/28
- Re: Escaping quotes in docstrings, Was: A simple solution to "Upcoming loss of usability ...", Dmitry Gutov, 2015/06/28
- Re: Escaping quotes in docstrings, Was: A simple solution to "Upcoming loss of usability ...", Paul Eggert, 2015/06/30
- Re: A simple solution to "Upcoming loss of usability ...", Dmitry Gutov, 2015/06/27
- Re: A simple solution to "Upcoming loss of usability ...", João Távora, 2015/06/25
- Re: A simple solution to "Upcoming loss of usability ...", Oleh Krehel, 2015/06/26
- Re: A simple solution to "Upcoming loss of usability ...", Paul Eggert, 2015/06/26
- Re: A simple solution to "Upcoming loss of usability ...", Dmitry Gutov, 2015/06/26
Re: A simple solution to "Upcoming loss of usability ...", Alan Mackenzie, 2015/06/25