[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/org-remark 4156342f88 40/75: refactor(line): make space
From: |
ELPA Syncer |
Subject: |
[elpa] externals/org-remark 4156342f88 40/75: refactor(line): make spacer overlay |
Date: |
Fri, 6 Oct 2023 12:59:19 -0400 (EDT) |
branch: externals/org-remark
commit 4156342f88bb192861fd98c5586ace4ae5539f5b
Author: Noboru Ota <me@nobiot.com>
Commit: Noboru Ota <me@nobiot.com>
refactor(line): make spacer overlay
---
org-remark-line.el | 88 ++++++++++++++++++++++--------------------------------
1 file changed, 35 insertions(+), 53 deletions(-)
diff --git a/org-remark-line.el b/org-remark-line.el
index c55a193695..8155454c48 100644
--- a/org-remark-line.el
+++ b/org-remark-line.el
@@ -65,7 +65,7 @@ in cons cell (or nil) before function
`org-remark-line-set-window-margins' set margins.")
(defvar-local org-remark-line-margins-set-p nil
- "State if margins are set by `org-remark-line' for current buffer.")
+ "Status indicating if margins are set by `org-remark-line'.")
;;;###autoload
(define-minor-mode org-remark-line-mode
@@ -86,13 +86,13 @@ in cons cell (or nil) before function
#'org-remark-line-set-window-margins 95 :local)
;; Need to reload to cater to margin changes done by `olivetti'.
(add-hook 'window-size-change-functions
- #'org-remark-line-redraw-highlights 96 :local)
+ #'org-remark-line-highlights-redraw 96 :local)
(org-remark-line-set-window-margins))
(remove-hook 'org-remark-find-dwim-functions #'org-remark-line-find :local)
(remove-hook 'window-size-change-functions
#'org-remark-line-set-window-margins :local)
(remove-hook 'window-size-change-functions
- #'org-remark-line-redraw-highlights :local)
+ #'org-remark-line-highlights-redraw :local)
(when org-remark-line-margins-set-p
(setq left-margin-width (car org-remark-line-margins-original))
(setq right-margin-width (cdr org-remark-line-margins-original))
@@ -161,7 +161,35 @@ by `overlays-in'."
(let ((bol (org-remark-line-pos-bol (point))))
(list bol bol)))
-(defun org-remark-line-redraw-highlights (&optional window)
+(defun org-remark-line-make-spacer-overlay (pos)
+ "Return a spacer overlay."
+ (let* ((left-margin (or (car (window-margins)) left-margin-width))
+ (right-margin (or (cdr (window-margins)) right-margin-width))
+ (string (with-temp-buffer
+ (insert org-remark-line-icon)
+ (buffer-string)))
+ (string-length (length string))
+ (spaces-base-length (if (eql org-remark-line-margin-side
'right-margin)
+ org-remark-line-margin-padding
+ (- left-margin
+ (+ string-length
org-remark-line-margin-padding))))
+ (spaces-length (if (> spaces-base-length 0) spaces-base-length 0))
+ (spaces (with-temp-buffer (insert-char ?\s spaces-length)
+ (buffer-string)))
+ (spacer-ov (make-overlay pos pos nil :front-advance)))
+ ;; Add a spacing overlay before the line-highlight overlay but we
+ ;; only need one of these; remove it if one already exits
+ (remove-overlays (overlay-start spacer-ov) (overlay-end spacer-ov)
+ 'category 'org-remark-spacer)
+ (overlay-put spacer-ov 'before-string
+ (propertize " "
+ 'display
+ `((margin ,org-remark-line-margin-side)
+ ,spaces)))
+ (overlay-put spacer-ov 'category 'org-remark-spacer)
+ spacer-ov))
+
+(defun org-remark-line-highlights-redraw (&optional window)
(let ((window (or window (get-buffer-window))))
(when (and (windowp window) (not (window-minibuffer-p window)))
(org-with-wide-buffer
@@ -169,31 +197,8 @@ by `overlays-in'."
(seq-filter (lambda (ov) (eql 'line (overlay-get ov
'org-remark-type)))
org-remark-highlights)))
(dolist (ov highlights)
- ;; The following is almost the same as
`org-remark-highlight-make-overlay'.
- ;; TODO Rationalize these two
(let* ((beg (overlay-start ov))
- (left-margin (or (car (window-margins)) left-margin-width))
- (right-margin (or (cdr (window-margins)) right-margin-width))
- (string (with-temp-buffer
- (insert org-remark-line-icon)
- (buffer-string)))
- (string-length (length string))
- (spaces-base-length (if (eql org-remark-line-margin-side
'right-margin)
- org-remark-line-margin-padding
- (- left-margin
- (+ string-length
org-remark-line-margin-padding))))
- (spaces-length (if (> spaces-base-length 0)
spaces-base-length 0))
- (spaces (with-temp-buffer (insert-char ?\s spaces-length)
- (buffer-string)))
- (spacer-ov (make-overlay beg beg nil :front-advance)))
- (remove-overlays (overlay-start spacer-ov) (overlay-end spacer-ov)
- 'category 'org-remark-spacer)
- (overlay-put spacer-ov 'before-string
- (propertize " "
- 'display
- `((margin ,org-remark-line-margin-side)
- ,spaces)))
- (overlay-put spacer-ov 'category 'org-remark-spacer)
+ (spacer-ov (org-remark-line-make-spacer-overlay beg)))
(push (copy-overlay ov) org-remark-highlights)
(copy-overlay spacer-ov)
(delete-overlay ov)
@@ -206,40 +211,17 @@ Return nil when no window is created for current buffer."
(when (get-buffer-window)
(unless org-remark-line-mode (org-remark-line-mode +1))
(let* ((face (or face 'org-remark-line-highlighter))
- (left-margin (or (car (window-margins)) left-margin-width))
- (right-margin (or (cdr (window-margins)) right-margin-width))
(string (with-temp-buffer
(insert org-remark-line-icon)
(buffer-string)))
- (string-length (length string))
- (spaces-base-length (if (eql org-remark-line-margin-side
'right-margin)
- org-remark-line-margin-padding
- (- left-margin
- (+ string-length
org-remark-line-margin-padding))))
- (spaces-length (if (> spaces-base-length 0) spaces-base-length 0))
- (spaces (with-temp-buffer (insert-char ?\s spaces-length)
- (buffer-string)))
- (spacer-ov (make-overlay beg end nil :front-advance))
+ (spacer-ov (org-remark-line-make-spacer-overlay beg))
(ov (make-overlay beg end nil :front-advance)))
- ;; Add a spacing overlay before the line-highlight overlay but we
- ;; only need one of these; remove it if one already exits
- (remove-overlays (overlay-start spacer-ov) (overlay-end spacer-ov)
- 'category 'org-remark-spacer)
- (overlay-put spacer-ov 'before-string
- (propertize " "
- 'display
- `((margin ,org-remark-line-margin-side)
- ,spaces)))
- (overlay-put spacer-ov 'category 'org-remark-spacer)
- ;; Let highlight overlay to take care of the spacer movement
- ;;(overlay-put spacer-ov 'insert-in-front-hooks
- ;; (list 'org-remark-line-highlight-modified))
-
;; line-highlight overlay
(overlay-put ov 'before-string
(propertize " " 'display
`((margin ,org-remark-line-margin-side)
,(propertize string 'face face))))
+ ;; Let highlight overlay to take care of the spacer movement
(overlay-put ov 'insert-in-front-hooks (list
'org-remark-line-highlight-modified))
;; Copy spacer overlay. It is put after the line-highlight to
;; limit and reset the face added by the line-highlight back to
- [elpa] externals/org-remark 0f2bf566ee 10/75: docs(info): source comments, (continued)
- [elpa] externals/org-remark 0f2bf566ee 10/75: docs(info): source comments, ELPA Syncer, 2023/10/06
- [elpa] externals/org-remark f679d00c0a 06/75: refactor(line): loading and renaming the el file, ELPA Syncer, 2023/10/06
- [elpa] externals/org-remark 2bba54b535 05/75: fix: selecting wrong highlight when opening, ELPA Syncer, 2023/10/06
- [elpa] externals/org-remark 51c3d91585 11/75: refactor: create macro & menus, ELPA Syncer, 2023/10/06
- [elpa] externals/org-remark ae376d860d 09/75: refactor(line): method name change, ELPA Syncer, 2023/10/06
- [elpa] externals/org-remark 89ee82935c 14/75: fix: window margins do not persist, ELPA Syncer, 2023/10/06
- [elpa] externals/org-remark 16958accc2 02/75: refactor: org-remark-mark, ELPA Syncer, 2023/10/06
- [elpa] externals/org-remark da73102a2d 19/75: fix(line): When source is narrowed line-hl moves the wrong place, ELPA Syncer, 2023/10/06
- [elpa] externals/org-remark 79ad1baf7e 20/75: refactor(line): no need for text-scale-mode-hook, ELPA Syncer, 2023/10/06
- [elpa] externals/org-remark 0829e27379 39/75: fix(line): redraw instead of reload when window size changes, ELPA Syncer, 2023/10/06
- [elpa] externals/org-remark 4156342f88 40/75: refactor(line): make spacer overlay,
ELPA Syncer <=
- [elpa] externals/org-remark 9f86daaee6 43/75: feat(line):Redraw can now change the margin side, ELPA Syncer, 2023/10/06
- [elpa] externals/org-remark 175ba6d06e 44/75: fix(line):when line-icon is an image, it fails to carry face, ELPA Syncer, 2023/10/06
- [elpa] externals/org-remark a879b66013 59/75: docs: docstring for new auto-delete feature, ELPA Syncer, 2023/10/06
- [elpa] externals/org-remark 03828f44e4 65/75: docs: README to include use-package setup example, ELPA Syncer, 2023/10/06
- [elpa] externals/org-remark 3ea41202e6 58/75: feat: #21 Delete notes when highlight removed if the notes are empty, ELPA Syncer, 2023/10/06
- [elpa] externals/org-remark 1df1fcb331 46/75: feat(line): define various customizing options, ELPA Syncer, 2023/10/06
- [elpa] externals/org-remark 063f68e5a4 36/75: feat(line): right margin, ELPA Syncer, 2023/10/06
- [elpa] externals/org-remark cdcab9e294 73/75: docs: v1.3, ELPA Syncer, 2023/10/06
- [elpa] externals/org-remark c1c120f0c9 45/75: feat(line):defcustom org-remark-line-minimum-margin-width, ELPA Syncer, 2023/10/06
- [elpa] externals/org-remark c506e61017 55/75: fix(line): `org-remark-mark-line` does not autoload, ELPA Syncer, 2023/10/06