bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#45068: [PATCH] Modus themes 1.2.0


From: Gregory Heytings
Subject: bug#45068: [PATCH] Modus themes 1.2.0
Date: Sat, 06 Mar 2021 13:24:01 +0000


+(deftheme modus-vivendi
+  "Accessible and customizable light theme (WCAG AAA standard).
                                  ^^^^^
                                  dark

[ Answer only if it is easy: how do you draw those ^^^ below the text? ]


Here's a more polished version, which takes care of the prefix / fill-prefix, and works on multiple lines:

(defun undercaret (&optional arg)
  (interactive "p")
  (let* ((begin (if (region-active-p) (region-beginning) 
(line-beginning-position)))
         (end (if (region-active-p) (region-end) (line-end-position)))
         (lines (- (line-number-at-pos end) (line-number-at-pos begin) -1))
         (comment (and (/= arg 1) (= lines 1)))
         (final-forward-line -1))
    (goto-char begin)
    (dotimes (i lines)
      (let* ((line-begin (if (zerop i) begin (line-beginning-position)))
             (line-end (if (= (1+ i) lines) end (line-end-position)))
             (begin-column (progn (goto-char line-begin) (current-column)))
             (prefix-begin (line-beginning-position))
             (prefix-end (progn (beginning-of-line-text) (point)))
             (prefix-end-column (progn (goto-char prefix-end) (current-column)))
             (delta (if (< begin-column prefix-end-column) (- prefix-end-column 
begin-column) 0))
             (prefix-string (buffer-substring-no-properties prefix-begin 
prefix-end))
             (prefix (if (string-blank-p prefix-string) "" prefix-string))
             (whitespace (make-string (- (+ begin-column delta) (length 
prefix)) ?\ ))
             (do-under (< delta (- line-end line-begin)))
             (under (if do-under (make-string (- line-end line-begin delta) ?^) 
""))
             (under-string (concat prefix whitespace under "\n")))
        (forward-line 1)
        (if do-under (insert under-string) (setq final-forward-line -2))
        (setq end (+ end (length under-string)))
        (when comment (insert prefix whitespace "\n"))))
    (forward-line final-forward-line)
    (goto-char (line-end-position))))





reply via email to

[Prev in Thread] Current Thread [Next in Thread]