1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-15 18:40:39 -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.
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.
(defun ispell-get-decoded-string (n)
"Get the decoded string in slot N of the descriptor of the current dict."
(let* ((slot (or
(assoc ispell-current-dictionary ispell-local-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'"
ispell-current-dictionary)))
(str (nth n slot)))
(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))
(error "No data for dictionary \"%s\" in `ispell-local-dictionary-alist' or `ispell-dictionary-alist'"
ispell-current-dictionary))))
(decode-coding-string (nth n slot) (ispell-get-coding-system) t)))
(defun ispell-get-casechars ()
(ispell-get-decoded-string 1))