branch: externals/visual-filename-abbrev
commit 4af7868db7bbc6a3c185540ba4e257d4c4c560c0
Author: Tassilo Horn <t...@gnu.org>
Commit: Tassilo Horn <t...@gnu.org>

    Release visual-filename-abbrev 1.3
    
    There's a new predicate
    visual-filename-abbrev--line-wider-than-window-p one can add to
    visual-filename-abbrev-predicates in which case it is only abbreviated
    if the line the filename is on is wider than the width of the window.
---
 visual-filename-abbrev.el | 24 +++++++++++++++++++++---
 1 file changed, 21 insertions(+), 3 deletions(-)

diff --git a/visual-filename-abbrev.el b/visual-filename-abbrev.el
index c5e9017ade..b06084cab0 100644
--- a/visual-filename-abbrev.el
+++ b/visual-filename-abbrev.el
@@ -1,12 +1,12 @@
 ;;; visual-filename-abbrev.el --- Visually abbreviate filenames  -*- 
lexical-binding: t; -*-
 
-;; Copyright (C) 2019-2022 Free Software Foundation, Inc
+;; Copyright (C) 2019-2022, 2024 Free Software Foundation, Inc
 
 ;; Author: Tassilo Horn <t...@gnu.org>
 ;; Maintainer: Tassilo Horn <t...@gnu.org>
 ;; Keywords: tools
 ;; Package-Requires: ((emacs "26.1"))
-;; Version: 1.2
+;; Version: 1.3
 
 ;; This file is part of GNU Emacs.
 
@@ -122,6 +122,15 @@ This takes the font at POS into account."
        (< (visual-filename-abbrev--get-visual-width abbrev font)
           (visual-filename-abbrev--get-visual-width filename font))))))
 
+(defun visual-filename-abbrev--line-wider-than-window-p (_buffer pos _filename 
_abbrev)
+  "Return non-nil if the line with POS is wider than the width of the window."
+  (save-excursion
+    (goto-char pos)
+    (< (window-width nil t)
+       (string-pixel-width
+        (buffer-substring (line-beginning-position)
+                          (line-end-position))))))
+
 (defcustom visual-filename-abbrev-predicates
   (list #'visual-filename-abbrev--abbrev-visually-shorter-p)
   "A list of predicates inhibiting abbreviation of a filename.
@@ -148,7 +157,16 @@ These predicates are available:
     that an abbreviation is only shown if it is visually shorter
     than the original filename, i.e., it takes the current font
     and, e.g., double-width unicode characters into account.
-    This predicate is a bit more expensive to compute."
+    This predicate is a bit more expensive to compute.
+
+  - `visual-filename-abbrev--line-wider-than-window-p' allows
+    abbreviations only if the line the filename is on is wider than the
+    width of the window, i.e., abbreviations are only shown if the
+    window is too narrow for the unabbreviated filename.  This predicate
+    is best used together with one of the other predicates.  It also
+    allows to relax `visual-filename-abbrev-regex' a bit to cover
+    filenames without extension which can lead to too many false
+    positives otherwise."
   :group 'visual-filename-abbrev
   :type '(repeat function))
 

Reply via email to