The Lambda Lab
/
projects
/
lurk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Maximise visibility of buffer when point on the last line.
[lurk.git]
/
lurk.el
diff --git
a/lurk.el
b/lurk.el
index
fb0178c
..
8967094
100644
(file)
--- a/
lurk.el
+++ b/
lurk.el
@@
-271,10
+271,13
@@
portion of the source component of the message, as LURK doesn't use this.")
(defun lurk-get-context-users (name)
(gethash name lurk-contexts))
(defun lurk-get-context-users (name)
(gethash name lurk-contexts))
+(defun lurk-context-known-p (name)
+ (not (eq (gethash name lurk-contexts 0) 0)))
+
(defun lurk-add-context-users (context users)
(puthash context
(defun lurk-add-context-users (context users)
(puthash context
- (
append
users
- (gethash context lurk-contexts))
+ (
cl-union
users
+
(gethash context lurk-contexts))
lurk-contexts))
(defun lurk-del-context-user (context user)
lurk-contexts))
(defun lurk-del-context-user (context user)
@@
-443,8
+446,14
@@
portion of the source component of the message, as LURK doesn't use this.")
(fill-region (point-min) (point-max) nil t)
(buffer-string))))
(fill-region (point-min) (point-max) nil t)
(buffer-string))))
+(defun lurk--start-of-final-line ()
+ (with-current-buffer "*lurk*"
+ (save-excursion
+ (goto-char (point-max))
+ (line-beginning-position))))
+
(defun lurk-display-string (context prefix &rest strings)
(defun lurk-display-string (context prefix &rest strings)
- (with-current-buffer
(get-buffer-create "*lurk*")
+ (with-current-buffer
"*lurk*"
(save-excursion
(goto-char lurk-prompt-marker)
(let* ((inhibit-read-only t)
(save-excursion
(goto-char lurk-prompt-marker)
(let* ((inhibit-read-only t)
@@
-471,7
+480,11
@@
portion of the source component of the message, as LURK doesn't use this.")
'face (lurk-get-context-facelist context)
'read-only t
'context context
'face (lurk-get-context-facelist context)
'read-only t
'context context
- 'invisible context-atom))))))))
+ 'invisible context-atom))))))
+ (dolist (window (get-buffer-window-list))
+ (if (>= (window-point window) (lurk--start-of-final-line))
+ (with-selected-window window
+ (recenter -1))))))
(defun lurk-display-message (from to text)
(let ((context (if (eq 'channel (lurk-get-context-type to))
(defun lurk-display-message (from to text)
(let ((context (if (eq 'channel (lurk-get-context-type to))
@@
-635,15
+648,19
@@
portion of the source component of the message, as LURK doesn't use this.")
(let* ((params (lurk-msg-params msg))
(channel (elt params 2))
(names (split-string (elt params 3))))
(let* ((params (lurk-msg-params msg))
(channel (elt params 2))
(names (split-string (elt params 3))))
- (lurk-add-context-users channel names)))
+ (if (lurk-context-known-p channel)
+ (lurk-add-context-users channel names)
+ (lurk-display-notice nil "Users in " channel ": " (string-join names " ")))))
("366" ; ENDOFNAMES
(let* ((params (lurk-msg-params msg))
(channel (elt params 1)))
("366" ; ENDOFNAMES
(let* ((params (lurk-msg-params msg))
(channel (elt params 1)))
- (lurk-display-notice
- channel
- (lurk--as-string (length (lurk-get-context-users channel)))
- " users in " channel)))
+ (if (lurk-context-known-p channel)
+ (lurk-display-notice
+ channel
+ (lurk--as-string (length (lurk-get-context-users channel)))
+ " users in " channel)
+ (lurk-display-notice nil "End of " channel " names list."))))
("331"
(let* ((params (lurk-msg-params msg))
("331"
(let* ((params (lurk-msg-params msg))