mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-21 18:38:08 +01:00
emacs: Sanitize authors and subjects in search and show
Authors and subjects can contain embedded, encoded control characters like "\n" and "\t" that mess up display. Transform control characters into spaces everywhere we display them in search and show.
This commit is contained in:
parent
45444eebe5
commit
a7964c86d1
3 changed files with 14 additions and 5 deletions
|
@ -243,6 +243,12 @@ depending on the value of `notmuch-poll-script'."
|
||||||
"[No Subject]"
|
"[No Subject]"
|
||||||
subject)))
|
subject)))
|
||||||
|
|
||||||
|
(defun notmuch-sanitize (str)
|
||||||
|
"Sanitize control character in STR.
|
||||||
|
|
||||||
|
This includes newlines, tabs, and other funny characters."
|
||||||
|
(replace-regexp-in-string "[[:cntrl:]\x7f\u2028\u2029]+" " " str))
|
||||||
|
|
||||||
(defun notmuch-escape-boolean-term (term)
|
(defun notmuch-escape-boolean-term (term)
|
||||||
"Escape a boolean term for use in a query.
|
"Escape a boolean term for use in a query.
|
||||||
|
|
||||||
|
|
|
@ -407,7 +407,8 @@ unchanged ADDRESS if parsing fails."
|
||||||
message at DEPTH in the current thread."
|
message at DEPTH in the current thread."
|
||||||
(let ((start (point)))
|
(let ((start (point)))
|
||||||
(insert (notmuch-show-spaces-n (* notmuch-show-indent-messages-width depth))
|
(insert (notmuch-show-spaces-n (* notmuch-show-indent-messages-width depth))
|
||||||
(notmuch-show-clean-address (plist-get headers :From))
|
(notmuch-sanitize
|
||||||
|
(notmuch-show-clean-address (plist-get headers :From)))
|
||||||
" ("
|
" ("
|
||||||
date
|
date
|
||||||
") ("
|
") ("
|
||||||
|
@ -417,7 +418,7 @@ message at DEPTH in the current thread."
|
||||||
|
|
||||||
(defun notmuch-show-insert-header (header header-value)
|
(defun notmuch-show-insert-header (header header-value)
|
||||||
"Insert a single header."
|
"Insert a single header."
|
||||||
(insert header ": " header-value "\n"))
|
(insert header ": " (notmuch-sanitize header-value) "\n"))
|
||||||
|
|
||||||
(defun notmuch-show-insert-headers (headers)
|
(defun notmuch-show-insert-headers (headers)
|
||||||
"Insert the headers of the current message."
|
"Insert the headers of the current message."
|
||||||
|
@ -1156,7 +1157,7 @@ function is used."
|
||||||
(jit-lock-register #'notmuch-show-buttonise-links)
|
(jit-lock-register #'notmuch-show-buttonise-links)
|
||||||
|
|
||||||
;; Set the header line to the subject of the first message.
|
;; Set the header line to the subject of the first message.
|
||||||
(setq header-line-format (notmuch-show-strip-re (notmuch-show-get-subject)))
|
(setq header-line-format (notmuch-sanitize (notmuch-show-strip-re (notmuch-show-get-subject))))
|
||||||
|
|
||||||
(run-hooks 'notmuch-show-hook))))
|
(run-hooks 'notmuch-show-hook))))
|
||||||
|
|
||||||
|
|
|
@ -811,11 +811,13 @@ non-authors is found, assume that all of the authors match."
|
||||||
(plist-get result :total)))
|
(plist-get result :total)))
|
||||||
'face 'notmuch-search-count)))
|
'face 'notmuch-search-count)))
|
||||||
((string-equal field "subject")
|
((string-equal field "subject")
|
||||||
(insert (propertize (format format-string (plist-get result :subject))
|
(insert (propertize (format format-string
|
||||||
|
(notmuch-sanitize (plist-get result :subject)))
|
||||||
'face 'notmuch-search-subject)))
|
'face 'notmuch-search-subject)))
|
||||||
|
|
||||||
((string-equal field "authors")
|
((string-equal field "authors")
|
||||||
(notmuch-search-insert-authors format-string (plist-get result :authors)))
|
(notmuch-search-insert-authors
|
||||||
|
format-string (notmuch-sanitize (plist-get result :authors))))
|
||||||
|
|
||||||
((string-equal field "tags")
|
((string-equal field "tags")
|
||||||
(let ((tags (plist-get result :tags)))
|
(let ((tags (plist-get result :tags)))
|
||||||
|
|
Loading…
Reference in a new issue