]> code.delx.au - gnu-emacs/blobdiff - lisp/net/rcirc.el
Fix a few problems with directed quotes
[gnu-emacs] / lisp / net / rcirc.el
index 5ea10475cea5e457c382f3e24e06292ae0633f7e..d58f3ebd4ea4db9b2802c44740c5f1c413eddcd8 100644 (file)
@@ -904,7 +904,10 @@ The list is updated automatically by `defun-rcirc-command'.")
   "Function used for `completion-at-point-functions' in `rcirc-mode'."
   (and (rcirc-looking-at-input)
        (let* ((beg (save-excursion
-                    (if (re-search-backward " " rcirc-prompt-end-marker t)
+                     ;; On some networks it is common to message or
+                     ;; mention someone using @nick instead of just
+                     ;; nick.
+                    (if (re-search-backward "[[:space:]@]" rcirc-prompt-end-marker t)
                         (1+ (point))
                       rcirc-prompt-end-marker)))
              (table (if (and (= beg rcirc-prompt-end-marker)
@@ -923,7 +926,7 @@ The list is updated automatically by `defun-rcirc-command'.")
 
 (defun rcirc-complete ()
   "Cycle through completions from list of nicks in channel or IRC commands.
-IRC command completion is performed only if '/' is the first input char."
+IRC command completion is performed only if `/' is the first input char."
   (interactive)
   (unless (rcirc-looking-at-input)
     (error "Point not located after rcirc prompt"))
@@ -1372,7 +1375,7 @@ if ARG is omitted or nil."
     (t         . "%fp*** %fs%n %r %m"))
   "An alist of formats used for printing responses.
 The format is looked up using the response-type as a key;
-if no match is found, the default entry (with a key of `t') is used.
+if no match is found, the default entry (with a key of t) is used.
 
 The entry's value part should be a string, which is inserted with
 the of the following escape sequences replaced by the described values:
@@ -1924,17 +1927,13 @@ Uninteresting lines are those whose responses are listed in
       (goto-char overlay-arrow-position)
     (message "No unread messages")))
 
-(defun rcirc-non-irc-buffer ()
-  (let ((buflist (buffer-list))
-       buffer)
-    (while (and buflist (not buffer))
-      (with-current-buffer (car buflist)
-       (unless (or (eq major-mode 'rcirc-mode)
-                   (= ?\s (aref (buffer-name) 0)) ; internal buffers
-                   (get-buffer-window (current-buffer)))
-         (setq buffer (current-buffer))))
-      (setq buflist (cdr buflist)))
-    buffer))
+(defun rcirc-bury-buffers ()
+  "Bury all RCIRC buffers."
+  (interactive)
+  (dolist (buf (buffer-list))
+    (when (eq 'rcirc-mode (with-current-buffer buf major-mode))
+      (bury-buffer buf)         ; buffers not shown
+      (quit-windows-on buf))))  ; buffers shown in a window
 
 (defun rcirc-next-active-buffer (arg)
   "Switch to the next rcirc buffer with activity.
@@ -1949,15 +1948,13 @@ With prefix ARG, go to the next low priority buffer with activity."
          (switch-to-buffer (car (if arg lopri hipri)))
          (when (> (point) rcirc-prompt-start-marker)
            (recenter -1)))
-      (if (eq major-mode 'rcirc-mode)
-         (switch-to-buffer (rcirc-non-irc-buffer))
-       (message "%s" (concat
-                      "No IRC activity."
-                      (when lopri
-                        (concat
-                         "  Type C-u "
-                         (key-description (this-command-keys))
-                         " for low priority activity."))))))))
+      (rcirc-bury-buffers)
+      (message "No IRC activity.%s"
+               (if lopri
+                   (concat
+                    "  Type C-u " (key-description (this-command-keys))
+                    " for low priority activity.")
+                 "")))))
 
 (define-obsolete-variable-alias 'rcirc-activity-hooks
   'rcirc-activity-functions "24.3")
@@ -2603,7 +2600,7 @@ If ARG is given, opens the URL in a new browser window."
                   (cond ((rcirc-channel-p target)
                          target)
                         ;;; -ChanServ- [#gnu] Welcome...
-                        ((string-match "\\[\\(#[^\] ]+\\)\\]" message)
+                        ((string-match "\\[\\(#[^] ]+\\)\\]" message)
                          (match-string 1 message))
                         (sender
                          (if (string= sender (rcirc-server-name process))