From 432de377610215219ad9c61ad63950fd914eb883 Mon Sep 17 00:00:00 2001 From: Stefan Kangas Date: Sun, 3 Nov 2019 14:07:37 +0100 Subject: [PATCH] Handle truncate-lines in customize-group * lisp/cus-edit.el (custom-group--draw-horizontal-line): New function to draw horizontal lines which handles a non-nil value of 'truncate-lines'. (Bug#25308) (custom-group-value-create): Use it. Co-authored-by: Jonas Bernoulli --- lisp/cus-edit.el | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el index b9fd3e0a2d..081d4c9213 100644 --- a/lisp/cus-edit.el +++ b/lisp/cus-edit.el @@ -4062,6 +4062,22 @@ custom-group-members (push entry members))) (nreverse members)))) +(defun custom-group--draw-horizontal-line () + "Draw a horizontal line at point. +This works for both graphical and text displays." + (let ((p (point))) + (insert "\n") + (put-text-property p (1+ p) 'face '(:underline t)) + (overlay-put (make-overlay p (1+ p)) + 'before-string + (propertize "\n" 'face '(:underline t) + 'display + (list 'space :align-to + `(+ (0 . right) + ,(min (window-hscroll) + (- (line-end-position) + (line-beginning-position))))))))) + (defun custom-group-value-create (widget) "Insert a customize group for WIDGET in the current buffer." (unless (eq (widget-get widget :custom-state) 'hidden) @@ -4188,15 +4204,7 @@ custom-group-value-create ;; Nested style. (t ;Visible. - ;; Draw a horizontal line (this works for both graphical - ;; and text displays): - (let ((p (point))) - (insert "\n") - (put-text-property p (1+ p) 'face '(:underline t)) - (overlay-put (make-overlay p (1+ p)) - 'before-string - (propertize "\n" 'face '(:underline t) - 'display '(space :align-to 999)))) + (custom-group--draw-horizontal-line) ;; Add parent groups references above the group. (when (eq level 1) @@ -4287,13 +4295,7 @@ custom-group-value-create (widget-put widget :children children) (custom-group-state-update widget)) ;; End line - (let ((p (1+ (point)))) - (insert "\n\n") - (put-text-property p (1+ p) 'face '(:underline t)) - (overlay-put (make-overlay p (1+ p)) - 'before-string - (propertize "\n" 'face '(:underline t) - 'display '(space :align-to 999)))))))) + (custom-group--draw-horizontal-line))))) (defvar custom-group-menu `(("Set for Current Session" custom-group-set -- 2.20.1