1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-18 20:00:36 -08:00

Avoid using string-to-multibyte in ispell.el

* lisp/textmodes/ispell.el (ispell-get-decoded-string): Use
decode-coding-string instead. Note that decode-coding-string returns a
string that satisfies multibyte-string-p even if its input is pure
ASCII and the third argument is t, so the result of
ispell-get-decoded-string is always a multibyte string.
This commit is contained in:
Reuben Thomas 2017-08-22 01:46:27 +01:00
parent 22ebde63c9
commit bd9ad2ea10

View file

@ -1485,25 +1485,15 @@ used as key in `ispell-local-dictionary-alist' and `ispell-dictionary-alist'.")
"The name of the current personal dictionary, or nil for the default. "The name of the current personal dictionary, or nil for the default.
This is passed to the Ispell process using the `-p' switch.") This is passed to the Ispell process using the `-p' switch.")
(defun ispell-decode-string (str)
"Decodes multibyte character strings."
(decode-coding-string str (ispell-get-coding-system)))
;; Return a string decoded from Nth element of the current dictionary. ;; Return a string decoded from Nth element of the current dictionary.
(defun ispell-get-decoded-string (n) (defun ispell-get-decoded-string (n)
"Get the decoded string in slot N of the descriptor of the current dict." "Get the decoded string in slot N of the descriptor of the current dict."
(let* ((slot (or (let* ((slot (or
(assoc ispell-current-dictionary ispell-local-dictionary-alist) (assoc ispell-current-dictionary ispell-local-dictionary-alist)
(assoc ispell-current-dictionary ispell-dictionary-alist) (assoc ispell-current-dictionary ispell-dictionary-alist)
(error "No data for dictionary \"%s\", neither in `ispell-local-dictionary-alist' nor in `ispell-dictionary-alist'" (error "No data for dictionary \"%s\" in `ispell-local-dictionary-alist' or `ispell-dictionary-alist'"
ispell-current-dictionary))) ispell-current-dictionary))))
(str (nth n slot))) (decode-coding-string (nth n slot) (ispell-get-coding-system) t)))
(when (and (> (length str) 0)
(not (multibyte-string-p str)))
(setq str (ispell-decode-string str))
(or (multibyte-string-p str)
(setq str (string-to-multibyte str))))
str))
(defun ispell-get-casechars () (defun ispell-get-casechars ()
(ispell-get-decoded-string 1)) (ispell-get-decoded-string 1))