Overview
Comment: | show spoilers when point is on one |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | master | trunk |
Files: | files | file ages | folders |
SHA3-256: |
57948904438789257e3920b1ca0dd538 |
User & Date: | philip@warpmail.net on 2020-04-24 09:30:36 |
Other Links: | branch diff | manifest | tags |
Context
2020-05-05
| ||
19:49 | added formatting functions for compose-mode check-in: 9cf3c77a3c user: philip@warpmail.net tags: master, trunk | |
2020-04-24
| ||
09:30 | show spoilers when point is on one check-in: 5794890443 user: philip@warpmail.net tags: master, trunk | |
08:40 | added sbbs-show-replies check-in: 8395dc0011 user: philip@warpmail.net tags: master, trunk | |
Changes
Modified sbbs.el from [dd4c4f4886] to [02e789626c].
51 51 :type 'boolean) 52 52 53 53 (defface sbbs--spoiler-face 54 54 '((((background light)) :background "black" :foreground "black") 55 55 (((background dark)) :background "white" :foreground "white")) 56 56 "Face for spoiler text in threads.") 57 57 58 +(defface sbbs--uncover-spoiler-face 59 + '((((background light)) :background "black" :foreground "white") 60 + (((background dark)) :background "white" :foreground "black")) 61 + "Face for spoiler text in threads.") 62 + 58 63 (defface sbbs--code-face 59 64 '((((background light)) :background "gray89") 60 65 (((background dark)) :background "gray11")) 61 66 "Face for code blocks in threads.") 62 67 63 68 ;; VARIABLES 64 69 ................................................................................ 70 75 (defvar-local sbbs--thread-id nil 71 76 "Buffer local reference to current thread id. 72 77 73 78 Used in thread and reply buffers.") 74 79 75 80 (defvar-local sbbs--limit-stack nil 76 81 "Stack of last limit specs.") 82 + 83 +(defvar-local sbbs--last-spoiler nil 84 + "Point of last spoiler visited.") 77 85 78 86 ;; BOARD OBJECT AND FUNCTIONS 79 87 80 88 (defun sbbs-make-board (domain name &optional tls) 81 89 "Create board object, using DOMAIN, NAME and TLS flag." 82 90 (vector domain name tls)) 83 91 ................................................................................ 307 315 (insert " (VIP)")) 308 316 (newline 2) 309 317 (add-text-properties start (1- (point)) '(face highlight)) 310 318 (set-text-properties (1- (point)) (point) nil) 311 319 (sbbs--insert-sxml (cdr (assq 'content (cdr post)))) 312 320 (add-text-properties start (point) (list 'sbbs-thread-nr (car post))))) 313 321 322 +(defun sbbs--uncover-spoiler () 323 + "" 324 + (cond ((eq (get-text-property (point) 'face) 'sbbs--spoiler-face) 325 + (let* ((start (previous-property-change (1+ (point)))) 326 + (end (next-property-change (point))) 327 + (o (make-overlay start end (current-buffer) t t))) 328 + (overlay-put o 'face 'sbbs--uncover-spoiler-face) 329 + (overlay-put o 'sbbs-uncover-p t)) 330 + (setq sbbs--last-spoiler (point))) 331 + (sbbs--last-spoiler 332 + (dolist (o (overlays-at sbbs--last-spoiler)) 333 + (when (overlay-get o 'sbbs-uncover-p) 334 + (delete-overlay o))) 335 + (setq sbbs--last-spoiler nil)))) 336 + 314 337 ;; URL.EL CALLBACKS 315 338 316 339 (defun sbbs--board-loader (status buf) 317 340 "Callback function for `url-retrieve' when loading board. 318 341 319 342 Load results into buffer BUF. STATUS is used to check for 320 343 errors." ................................................................................ 572 595 (define-key map (kbd "f") #'sbbs-show-replies) 573 596 map)) 574 597 575 598 (define-derived-mode sbbs-read-mode special-mode "SchemeBBS Read" 576 599 "Major mode for reading a thread." 577 600 (buffer-disable-undo) 578 601 (visual-line-mode t) 579 - (setq-local revert-buffer-function #'sbbs--reload-thread)) 602 + (setq-local revert-buffer-function #'sbbs--reload-thread) 603 + (add-hook 'post-command-hook #'sbbs--uncover-spoiler 604 + nil t)) 580 605 581 606 (defvar sbbs-compose-mode-map 582 607 (let ((map (make-sparse-keymap))) 583 608 (define-key map (kbd "C-c C-c") #'sbbs-compose-create) 584 609 map)) 585 610 586 611 (defvar sbbs--font-lock