sbbs.el

Check-in [5794890443]
Login
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: 57948904438789257e3920b1ca0dd5382d6d7de4e83871f0fd6e403a3009d860
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
Hide Diffs Side-by-Side Diffs Ignore Whitespace Patch

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