Network names now complete.
authorplugd <plugd@thelambdalab.xyz>
Tue, 13 Jul 2021 19:21:33 +0000 (21:21 +0200)
committerplugd <plugd@thelambdalab.xyz>
Tue, 13 Jul 2021 19:21:33 +0000 (21:21 +0200)
lurk.el

diff --git a/lurk.el b/lurk.el
index 36f39b4..7b46aae 100644 (file)
--- a/lurk.el
+++ b/lurk.el
@@ -957,16 +957,26 @@ in which case they match anything.")
     (lurk-zoom-in lurk-current-context))
   (setq lurk-zoomed (not lurk-zoomed)))
 
-(defun lurk-complete-nick ()
+(defun lurk-complete-input ()
   (interactive)
-  (when (and (>= (point) lurk-input-marker) lurk-current-context)
-    (let* ((end (max lurk-input-marker (point)))
-           (space-idx (save-excursion
-                        (re-search-backward " " lurk-input-marker t)))
-           (start (if space-idx (+ 1 space-idx) lurk-input-marker))
-           (completion-ignore-case t))
-      (unless (string-prefix-p "/" (buffer-substring start end))
-        (completion-in-region start end (lurk-get-context-users lurk-current-context))))))
+  (when (and (>= (point) lurk-input-marker))
+    (pcase (buffer-substring lurk-input-marker (point))
+      ((rx (: "/connect" (+ " ")
+              (opt (let network (* (not whitespace))))
+              string-end))
+       (let ((space-idx (save-excursion
+                          (re-search-backward " " lurk-input-marker t))))
+         (completion-in-region (+ 1 space-idx)
+                               (point)
+                               (mapcar (lambda (row) (car row)) lurk-networks))))
+      (_
+       (let* ((end (max lurk-input-marker (point)))
+              (space-idx (save-excursion
+                           (re-search-backward " " lurk-input-marker t)))
+              (start (if space-idx (+ 1 space-idx) lurk-input-marker))
+              (completion-ignore-case t))
+         (unless (string-prefix-p "/" (buffer-substring start end))
+           (completion-in-region start end (lurk-get-context-users lurk-current-context))))))))
 
 
 ;;; Mode
@@ -975,7 +985,7 @@ in which case they match anything.")
 (defvar lurk-mode-map
   (let ((map (make-sparse-keymap)))
     (define-key map (kbd "RET") 'lurk-enter)
-    (define-key map (kbd "<tab>") 'lurk-complete-nick)
+    (define-key map (kbd "<tab>") 'lurk-complete-input)
     (define-key map (kbd "C-c C-z") 'lurk-toggle-zoom)
     (define-key map (kbd "<C-tab>") 'lurk-cycle-contexts-forward)
     (define-key map (kbd "<C-S-tab>") 'lurk-cycle-contexts-reverse)