This commit is contained in:
Kinneyzhang 2026-01-05 20:20:12 +08:00
parent d11d109f7b
commit edfb7b2e35
2 changed files with 51 additions and 19 deletions

View File

@ -17,10 +17,6 @@
;;; Code: ;;; Code:
;; ============================================
;; 基础文本样式 (Basic Text Styles)
;; ============================================
(defvar tp-palette-alist nil) (defvar tp-palette-alist nil)
(defmacro define-tp-palette (name &rest plist) (defmacro define-tp-palette (name &rest plist)

66
tp.el
View File

@ -4016,16 +4016,33 @@ Returns the modified object (string) or nil for buffer operations."
(tp-add-to-layers all-indices start end plist obj)))) (tp-add-to-layers all-indices start end plist obj))))
(if (stringp obj) obj nil))) (if (stringp obj) obj nil)))
;;; Utilities
(defmacro tp-pop-to-buffer (buffer-or-name &rest body) (defmacro tp-pop-to-buffer (buffer-or-name &rest body)
(declare (indent defun)) (declare (indent defun))
`(let ((buffer (get-buffer-create ,buffer-or-name))) `(let ((buffer (get-buffer-create ,buffer-or-name)))
(tp-with-current-buffer buffer (tp-with-current-buffer buffer
(erase-buffer) (erase-buffer)
,@body ,@body
(local-set-key "q" (lambda ()
(interactive)
(local-unset-key "q")
(quit-window)))
(read-only-mode 1)) (read-only-mode 1))
(pop-to-buffer buffer))) (pop-to-buffer buffer)))
;;; Utilities (defmacro tp-switch-to-buffer (buffer-or-name &rest body)
(declare (indent defun))
`(let ((buffer (get-buffer-create ,buffer-or-name)))
(tp-with-current-buffer buffer
(erase-buffer)
,@body
(local-set-key "q" (lambda ()
(interactive)
(local-unset-key "q")
(quit-window)))
(read-only-mode 1))
(switch-to-buffer buffer)))
(defun tp-theme-dark-p () (defun tp-theme-dark-p ()
(eq (frame-parameter nil 'background-mode) 'dark)) (eq (frame-parameter nil 'background-mode) 'dark))
@ -4065,23 +4082,42 @@ e.g.3 (tp-parse-color '(:light \"red\" :dark \"green\"))"
,@(when-let ((color (tp-palette-border-color palette))) ,@(when-let ((color (tp-palette-border-color palette)))
`(:box (:color ,color)))))) `(:box (:color ,color))))))
(define-tp tp-fg (color) (define-tp tp-fg (palette)
`(face (:foreground ,color))) (when-let ((color (tp-palette-fg-color palette)))
`(face (:foreground ,color))))
(define-tp tp-bg (color) (define-tp tp-bg (palette)
`(face (:background ,color))) (when-let ((color (tp-palette-bg-color palette)))
`(face (:background ,color))))
(define-tp tp-button (plist) (define-tp tp-border (palette)
(let ((palette (plist-get plist :palette)) (when-let ((color (tp-palette-border-color palette)))
(action (plist-get plist :action))) `(face (:box (:color ,color)))))
`( tp-palette ,palette
keymap ,(let ((keymap (make-sparse-keymap))) (define-tp tp-fbg (palette)
(define-key keymap (kbd "<RET>") action) `(tp-fg ,palette tp-bg ,palette))
(define-key keymap [mouse-1] action)
keymap)))) ;;;###autoload
(defun tp-palette-show ()
(interactive)
(let ((alist (seq-reverse tp-palette-alist)))
(tp-switch-to-buffer "*tp-palette-gallery*"
(insert
"Please set " (tp-set "'tp-palette" 'tp-palette 'code)
" text property with following symbols:\n\n"
(mapconcat (lambda (item)
(tp-set (symbol-name (car item))
'tp-palette (car item)))
alist "\n")))))
(define-tp tp-button (type)
(let ((palette (intern (concat "button-" (symbol-name type)))))
`( tp-palette ,palette
face (:box ( :line-width -1
:style released-button)))))
(define-tp tp-space (pixel) (define-tp tp-space (pixel)
`(display (space :width (,pixel)))) `(display (space :width ,pixel)))
(define-tp tp-headline (props) (define-tp tp-headline (props)
(let (height boldp) (let (height boldp)