From d5a49a857b4986dec2a0a6c90f701bc09ebcf81d Mon Sep 17 00:00:00 2001 From: Benjamin Barenblat Date: Mon, 20 Oct 2014 13:58:59 -0400 Subject: emacs: Query Emacs display table to determine ellipsis string MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Emacs has a slot in its display table, 'selective-display, which it uses to store the character(s) it displays when text gets elided. This commit ensures notmuch does not assume that string is ‘...’ – instead, notmuch examines the display table and bases computations on its actual contents. --- emacs/notmuch-lib.el | 8 ++++++++ emacs/notmuch-tree.el | 2 +- emacs/notmuch.el | 5 +++-- 3 files changed, 12 insertions(+), 3 deletions(-) (limited to 'emacs') diff --git a/emacs/notmuch-lib.el b/emacs/notmuch-lib.el index 1e166c6a..9ad4ab1e 100644 --- a/emacs/notmuch-lib.el +++ b/emacs/notmuch-lib.el @@ -465,6 +465,14 @@ This replaces spaces, percents, and double quotes in STR with (kill-new "") (message "Nothing to stash!"))) +(defun notmuch-common-selective-display-string () + "Determine the selective display string for the current buffer. +This is usually `...', but it can be reset." + (display-table-slot (or (window-display-table) + buffer-display-table + standard-display-table) + 'selective-display)) + ;; (defun notmuch-remove-if-not (predicate list) diff --git a/emacs/notmuch-tree.el b/emacs/notmuch-tree.el index e859cc24..19c35ee4 100644 --- a/emacs/notmuch-tree.el +++ b/emacs/notmuch-tree.el @@ -669,7 +669,7 @@ unchanged ADDRESS if parsing fails." (setq notmuch-tree-previous-subject bare-subject) (propertize (format format-string (if (string= previous-subject bare-subject) - " ..." + (concat " " selective-display-string) bare-subject)) 'face face))) diff --git a/emacs/notmuch.el b/emacs/notmuch.el index b44a907a..62f4c757 100644 --- a/emacs/notmuch.el +++ b/emacs/notmuch.el @@ -689,6 +689,7 @@ non-authors is found, assume that all of the authors match." (save-match-data (let* ((formatted-authors (format format-string authors)) (formatted-sample (format format-string "")) + (selective-display-string (notmuch-common-selective-display-string)) (visible-string formatted-authors) (invisible-string "") (padding "")) @@ -697,7 +698,7 @@ non-authors is found, assume that all of the authors match." (if (> (length formatted-authors) (length formatted-sample)) (let ((visible-length (- (length formatted-sample) - (length "... ")))) + (length (concat selective-display-string " "))))) ;; Truncate the visible string according to the width of ;; the display string. (setq visible-string (substring formatted-authors 0 visible-length) @@ -717,7 +718,7 @@ non-authors is found, assume that all of the authors match." ;; after `invisible-string'. (setq padding (make-string (- (length formatted-sample) (length visible-string) - (length "...")) + (length selective-display-string)) ? )))) ;; Use different faces to show matching and non-matching authors. -- cgit v1.2.3