The Lambda Lab
/
projects
/
lurk.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
b91c95a
)
Lots of tiny fixes. Thanks flycheck!
author
plugd
<plugd@thelambdalab.xyz>
Sun, 19 May 2024 19:47:01 +0000
(21:47 +0200)
committer
plugd
<plugd@thelambdalab.xyz>
Sun, 26 May 2024 19:14:04 +0000
(21:14 +0200)
murk.el
patch
|
blob
|
history
diff --git
a/murk.el
b/murk.el
index
e89df65
..
a10fb2f
100644
(file)
--- a/
murk.el
+++ b/
murk.el
@@
-38,19
+38,23
@@
:group 'network)
(defcustom murk-default-nick "plugd"
:group 'network)
(defcustom murk-default-nick "plugd"
- "Default nick.")
+ "Default nick."
+ :type '(string))
(defcustom murk-default-quit-msg "Bye"
(defcustom murk-default-quit-msg "Bye"
- "Default quit message when none supplied.")
+ "Default quit message when none supplied."
+ :type '(string))
(defcustom murk-networks
'(("debug" "localhost" 6667 :notls)
("libera" "irc.libera.chat" 6697)
("tilde" "tilde.chat" 6697))
(defcustom murk-networks
'(("debug" "localhost" 6667 :notls)
("libera" "irc.libera.chat" 6697)
("tilde" "tilde.chat" 6697))
- "IRC networks.")
+ "IRC networks."
+ :type '(alist :key-type string))
(defcustom murk-display-header t
(defcustom murk-display-header t
- "If non-nil, use buffer header to display information on current host and channel.")
+ "If non-nil, use buffer header to display current host and channel."
+ :type '(boolean))
;;; Faces
;;; Faces
@@
-141,7
+145,7
@@
This includes the process and the response string.")
(setq murk-connection-table (assoc-delete-all server murk-connection-table)))
(defun murk-make-server-filter (server)
(setq murk-connection-table (assoc-delete-all server murk-connection-table)))
(defun murk-make-server-filter (server)
- (lambda (proc string)
+ (lambda (
_
proc string)
(dolist (line (split-string (concat (murk-connection-response server) string)
"\n"))
(if (string-suffix-p "\r" line)
(dolist (line (split-string (concat (murk-connection-response server) string)
"\n"))
(if (string-suffix-p "\r" line)
@@
-149,7
+153,7
@@
This includes the process and the response string.")
(murk-set-connection-response server line)))))
(defun murk-make-server-sentinel (server)
(murk-set-connection-response server line)))))
(defun murk-make-server-sentinel (server)
- (lambda (proc string)
+ (lambda (
_
proc string)
(unless (equal "open" (string-trim string))
(murk-display-error "Disconnected from server.")
(murk-connection-remove server)
(unless (equal "open" (string-trim string))
(murk-display-error "Disconnected from server.")
(murk-connection-remove server)
@@
-182,7
+186,7
@@
This includes the process and the response string.")
(defun murk-connect (server)
(if (assoc server murk-connection-table)
(defun murk-connect (server)
(if (assoc server murk-connection-table)
- (murk-display-error "Already connected to this network
.
")
+ (murk-display-error "Already connected to this network")
(if (not (assoc server murk-networks))
(murk-display-error "Network '" server "' is unknown.")
(let ((proc (murk-start-process server)))
(if (not (assoc server murk-networks))
(murk-display-error "Network '" server "' is unknown.")
(let ((proc (murk-start-process server)))
@@
-198,7
+202,7
@@
This includes the process and the response string.")
(let ((proc (murk-connection-process server)))
(if (and proc (eq (process-status proc) 'open))
(process-send-string proc (concat (murk-msg->string msg) "\r\n"))
(let ((proc (murk-connection-process server)))
(if (and proc (eq (process-status proc) 'open))
(process-send-string proc (concat (murk-msg->string msg) "\r\n"))
- (murk-display-error "No server connection established
.
"))))
+ (murk-display-error "No server connection established"))))
;;; Server messages
;;; Server messages
@@
-250,7
+254,7
@@
portion of the source component of the message, as mURK doesn't use this.")
(append l r))
nil)))
(apply #'murk-msg (append (list tags src cmd) params)))
(append l r))
nil)))
(apply #'murk-msg (append (list tags src cmd) params)))
- (error "Failed to parse string " string)))
+ (error "Failed to parse string
%s
" string)))
(defun murk-msg->string (msg)
(let ((tags (murk-msg-tags msg))
(defun murk-msg->string (msg)
(let ((tags (murk-msg-tags msg))
@@
-331,9
+335,24
@@
The head of this list is always the current context.")
(equal (seq-take ctx 2) test-ctx))
murk-contexts))))
(equal (seq-take ctx 2) test-ctx))
murk-contexts))))
+(defun murk-cycle-contexts (&optional reverse)
+ (setq murk-contexts
+ (if reverse
+ (let ((nminus1 (- (length murk-contexts) 1)))
+ (cons
+ (elt murk-contexts nminus1)
+ (seq-take murk-contexts nminus1)))
+ (append (cdr murk-contexts) (list (car murk-contexts))))))
+
;;; Buffer
;;
;;; Buffer
;;
+(defvar murk-prompt-marker nil
+ "Marker for prompt position in murk buffer.")
+
+(defvar murk-input-marker nil
+ "Marker for prompt position in murk buffer.")
+
(defun murk-render-prompt ()
(with-current-buffer "*murk*"
(let ((update-point (= murk-input-marker (point)))
(defun murk-render-prompt ()
(with-current-buffer "*murk*"
(let ((update-point (= murk-input-marker (point)))
@@
-367,12
+386,6
@@
The head of this list is always the current context.")
(if (car v)
(set-window-point (cadr v) murk-input-marker))))))
(if (car v)
(set-window-point (cadr v) murk-input-marker))))))
-(defvar murk-prompt-marker nil
- "Marker for prompt position in murk buffer.")
-
-(defvar murk-input-marker nil
- "Marker for prompt position in murk buffer.")
-
(defun murk-setup-header ()
(with-current-buffer "*murk*"
(setq-local header-line-format
(defun murk-setup-header ()
(with-current-buffer "*murk*"
(setq-local header-line-format
@@
-493,8
+506,6
@@
The head of this list is always the current context.")
(with-selected-window window
(recenter -1))))))
(with-selected-window window
(recenter -1))))))
-
-
(defconst murk-url-regex
(rx (:
(group (+ alpha))
(defconst murk-url-regex
(rx (:
(group (+ alpha))
@@
-629,7
+640,7
@@
The head of this list is always the current context.")
from " on " server))
((rx (let ping (: "\01PING " (* (not "\01")) "\01")))
from " on " server))
((rx (let ping (: "\01PING " (* (not "\01")) "\01")))
- (murk-send-msg server (
l
urk-msg nil nil "NOTICE" (list from ping)))
+ (murk-send-msg server (
m
urk-msg nil nil "NOTICE" (list from ping)))
(murk-display-notice nil "CTCP ping received from " from " on " server))
("\01USERINFO\01"
(murk-display-notice nil "CTCP ping received from " from " on " server))
("\01USERINFO\01"
@@
-719,10
+730,10
@@
The head of this list is always the current context.")
(murk-connect network))
(murk-display-notice nil "Usage: /connect <network>")))
(murk-connect network))
(murk-display-notice nil "Usage: /connect <network>")))
-(defun murk-command-networks (params)
+(defun murk-command-networks (
_
params)
(murk-display-notice nil "Currently-known networks:")
(dolist (row murk-networks)
(murk-display-notice nil "Currently-known networks:")
(dolist (row murk-networks)
- (seq-let (network server port &rest others) row
+ (seq-let (network server port &rest
_
others) row
(murk-display-notice nil "\t" network
" [" server
" " (number-to-string port) "]")))
(murk-display-notice nil "\t" network
" [" server
" " (number-to-string port) "]")))
@@
-731,7
+742,7
@@
The head of this list is always the current context.")
(defun murk-command-quit (params)
(let ((ctx (murk-current-context)))
(if (not ctx)
(defun murk-command-quit (params)
(let ((ctx (murk-current-context)))
(if (not ctx)
- (murk-display-error "No current context
.
")
+ (murk-display-error "No current context")
(let ((quit-msg (if params (string-join params " ") murk-default-quit-msg)))
(murk-send-msg
(murk-context-server ctx)
(let ((quit-msg (if params (string-join params " ") murk-default-quit-msg)))
(murk-send-msg
(murk-context-server ctx)
@@
-751,14
+762,14
@@
The head of this list is always the current context.")
(murk-context-name (murk-current-context)))))
(if channel
(murk-send-msg server (murk-msg nil nil "PART" channel))
(murk-context-name (murk-current-context)))))
(if channel
(murk-send-msg server (murk-msg nil nil "PART" channel))
- (murk-display-error "No current channel to leave
.
"))))
+ (murk-display-error "No current channel to leave"))))
(defun murk-command-msg (params)
(let ((server (murk-context-server (murk-current-context))))
(if (and params (>= (length params) 2))
(let ((to (car params))
(text (string-join (cdr params) " ")))
(defun murk-command-msg (params)
(let ((server (murk-context-server (murk-current-context))))
(if (and params (>= (length params) 2))
(let ((to (car params))
(text (string-join (cdr params) " ")))
- (murk-send-msg server (
l
urk-msg nil nil "PRIVMSG" to text))
+ (murk-send-msg server (
m
urk-msg nil nil "PRIVMSG" to text))
(murk-display-message server
(murk-connection-nick server)
to text))
(murk-display-message server
(murk-connection-nick server)
to text))
@@
-784,7
+795,7
@@
The head of this list is always the current context.")
(murk-context-server (murk-current-context))
(murk-msg nil nil (upcase cmd-str) params)))))
(_
(murk-context-server (murk-current-context))
(murk-msg nil nil (upcase cmd-str) params)))))
(_
- (murk-display-error "Badly formed command
.
")))
+ (murk-display-error "Badly formed command")))
(unless (string-empty-p string)
(if (murk-current-context)
(let ((server (murk-context-server (murk-current-context))))
(unless (string-empty-p string)
(if (murk-current-context)
(let ((server (murk-context-server (murk-current-context))))
@@
-793,10
+804,10
@@
The head of this list is always the current context.")
(murk-context-name (murk-current-context))
string))
(murk-display-message server
(murk-context-name (murk-current-context))
string))
(murk-display-message server
- murk-nick
+ (murk-connection-nick server)
(murk-context->string (murk-current-context))
string))
(murk-context->string (murk-current-context))
string))
- (murk-display-error "No current context
.
")))))
+ (murk-display-error "No current context")))))
;;; Command history
;;; Command history
@@
-866,7
+877,7
@@
The head of this list is always the current context.")
(re-search-backward " " murk-input-marker t)))
(start (if space-idx (+ 1 space-idx) murk-input-marker)))
(unless (string-prefix-p "/" (buffer-substring start end))
(re-search-backward " " murk-input-marker t)))
(start (if space-idx (+ 1 space-idx) murk-input-marker)))
(unless (string-prefix-p "/" (buffer-substring start end))
- (let* ((users (murk-get-context-users
murk-current-context
))
+ (let* ((users (murk-get-context-users
(murk-current-context)
))
(users-no@ (mapcar
(lambda (u) (car (split-string u "@" t)))
users)))
(users-no@ (mapcar
(lambda (u) (car (split-string u "@" t)))
users)))
@@
-881,6
+892,8
@@
The head of this list is always the current context.")
(define-key map (kbd "TAB") 'murk-complete-input)
(define-key map (kbd "<C-up>") 'murk-history-prev)
(define-key map (kbd "<C-down>") 'murk-history-next)
(define-key map (kbd "TAB") 'murk-complete-input)
(define-key map (kbd "<C-up>") 'murk-history-prev)
(define-key map (kbd "<C-down>") 'murk-history-next)
+ (define-key map (kbd "<C-tab>") 'murk-cycle-contexts-forward)
+ (define-key map (kbd "<C-S-tab>") 'murk-cycle-contexts-reverse)
(when (fboundp 'evil-define-key*)
(evil-define-key* 'motion map
(kbd "TAB") 'murk-complete-input))
(when (fboundp 'evil-define-key*)
(evil-define-key* 'motion map
(kbd "TAB") 'murk-complete-input))