[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/corfu f721f1b 14/29: Properly compute character size
From: |
Stefan Monnier |
Subject: |
[elpa] externals/corfu f721f1b 14/29: Properly compute character size |
Date: |
Fri, 16 Apr 2021 18:44:15 -0400 (EDT) |
branch: externals/corfu
commit f721f1bed53966cdc340f61aeffa4154a1a05892
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>
Properly compute character size
---
corfu.el | 28 +++++++++++++++++++---------
1 file changed, 19 insertions(+), 9 deletions(-)
diff --git a/corfu.el b/corfu.el
index ee4f699..39aa0e3 100644
--- a/corfu.el
+++ b/corfu.el
@@ -138,13 +138,22 @@
(mapcar (lambda (x) (/ x 256))
(color-values (face-attribute face :background)))))
-(defun corfu--border (color width)
- "Generate border with COLOR and WIDTH."
+(defun corfu--char-size ()
+ "Return character size in pixels."
+ (let ((fra face-remapping-alist))
+ (with-temp-buffer
+ (setq-local face-remapping-alist fra)
+ (cl-letf (((window-buffer) (current-buffer)))
+ (insert " ")
+ (window-text-pixel-size nil (point-min) (1+ (point-min)))))))
+
+;; TODO Is there a better way to generate an image? Bitmap vector?
+(defun corfu--border (w h color width)
+ "Generate border with COLOR and WIDTH and image size W*H."
(or (cdr (assoc (cons color width) corfu--borders))
- (pcase-let* ((`(,w . ,h) (window-text-pixel-size nil (point-min) (1+
(point-min))))
- (data (format
- "/* XPM */\nstatic char *x[] = {\n\"%s %s 2
1\",\n\"# c %s\",\n\". c None\""
- w h (corfu--color color))))
+ (let ((data (format
+ "/* XPM */\nstatic char *x[] = {\n\"%s %s 2 1\",\n\"# c
%s\",\n\". c None\""
+ w h (corfu--color color))))
(dotimes (_ h)
(setq data (concat data ",\n\""
(funcall (if (< width 0) #'reverse #'identity)
@@ -158,9 +167,10 @@
(defun corfu--popup (pos idx lo bar lines)
"Show LINES as popup at POS, with IDX highlighted and scrollbar between LO
and LO+BAR."
- (let* ((lborder (corfu--border 'corfu-border 1))
- (rborder (corfu--border 'corfu-border -1))
- (rbar (corfu--border 'corfu-bar -5))
+ (let* ((size (corfu--char-size))
+ (lborder (corfu--border (car size) (cdr size) 'corfu-border 1))
+ (rborder (corfu--border (car size) (cdr size) 'corfu-border -1))
+ (rbar (corfu--border (car size) (cdr size) 'corfu-bar (- (ceiling
(car size) 3))))
(col (+ (- pos (line-beginning-position)) corfu--base))
(width (- (window-total-width) col 10))
(pixelpos (cdr (window-absolute-pixel-position pos)))
- [elpa] branch externals/corfu created (now a61992d), Stefan Monnier, 2021/04/16
- [elpa] externals/corfu 55d651e 03/29: Improve keybindings for active Corfu popup, Stefan Monnier, 2021/04/16
- [elpa] externals/corfu bff11ca 04/29: Improve readme, Stefan Monnier, 2021/04/16
- [elpa] externals/corfu 15b0eee 05/29: Improve face definitions, Stefan Monnier, 2021/04/16
- [elpa] externals/corfu 3f930bc 06/29: Popup improvements/truncation, Stefan Monnier, 2021/04/16
- [elpa] externals/corfu bb55c62 01/29: initial commit, Stefan Monnier, 2021/04/16
- [elpa] externals/corfu 7d3c6c4 07/29: README: Update features section, Stefan Monnier, 2021/04/16
- [elpa] externals/corfu a2de3f2 11/29: Adjust faces, Stefan Monnier, 2021/04/16
- [elpa] externals/corfu 5571d2b 13/29: Revert "Go back to e0198b4335add183e0673c2b224e3d6c3ac09cab for now", Stefan Monnier, 2021/04/16
- [elpa] externals/corfu 4b32521 12/29: Go back to e0198b4335add183e0673c2b224e3d6c3ac09cab for now, Stefan Monnier, 2021/04/16
- [elpa] externals/corfu f721f1b 14/29: Properly compute character size,
Stefan Monnier <=
- [elpa] externals/corfu 247c79b 16/29: update screenshot, Stefan Monnier, 2021/04/16
- [elpa] externals/corfu 428ef03 08/29: post-command-hook: Make the check more strict, Stefan Monnier, 2021/04/16
- [elpa] externals/corfu e0198b4 09/29: Simplify post-command behavior, Stefan Monnier, 2021/04/16
- [elpa] externals/corfu a497acc 10/29: Experimental border images, Stefan Monnier, 2021/04/16
- [elpa] externals/corfu 17201cd 15/29: Generate image in PBM format, Stefan Monnier, 2021/04/16
- [elpa] externals/corfu f98d239 02/29: Add support for cycling, Stefan Monnier, 2021/04/16
- [elpa] externals/corfu ce983a0 17/29: README: Expand configuration, Stefan Monnier, 2021/04/16
- [elpa] externals/corfu 2f9e154 18/29: Use completion--replace, Stefan Monnier, 2021/04/16
- [elpa] externals/corfu 219afe2 21/29: Deactivate fancy border if line spacing is used (Fix #1), Stefan Monnier, 2021/04/16
- [elpa] externals/corfu 5bacf55 20/29: Simplifications, Stefan Monnier, 2021/04/16