emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

rcirc update


From: Ryan Yeske
Subject: rcirc update
Date: Sun, 20 Aug 2006 10:50:36 -0700

2006-08-20  Ryan Yeske  <address@hidden>

        * net/rcirc.el (rcirc-show-maximum-output): New var.
        (rcirc-buffer-process): If no buffer argument is supplied, use
        current-buffer.
        (rcirc-complete-nick): Complete to the last completed nick first.
        (rcirc-mode): Preserve the value of `rcirc-urls' across
        connections.  Setup scroll function.
        (rcirc-scroll-to-bottom): New function.
        (rcirc-print): Use nick syntax around regexp work.  Notice
        dim-nicks speaking only if they say our nick.
        (rcirc-update-activity-string): Do not show the modeline indicator
        if there are no live rcirc processes.
        (rcirc-cmd-ignore): Ignore case.
        (rcirc-browse-url-at-point): Fix off-by-one error.

Index: rcirc.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/net/rcirc.el,v
retrieving revision 1.24
diff -c -r1.24 rcirc.el
*** rcirc.el    23 Jun 2006 13:33:08 -0000      1.24
--- rcirc.el    20 Aug 2006 17:41:14 -0000
***************
*** 40,45 ****
--- 40,47 ----
  ;; Open a new irc connection with:
  ;; M-x irc RET
  
+ ;;; Todo:
+ 
  ;;; Code:
  
  (require 'ring)
***************
*** 140,145 ****
--- 142,151 ----
                 (integer :tag "Number of lines"))
    :group 'rcirc)
  
+ (defcustom rcirc-show-maximum-output t
+   "*If non-nil, scroll buffer to keep the point at the bottom of
+ the window.")
+ 
  (defcustom rcirc-authinfo nil
    "List of authentication passwords.
  Each element of the list is a list with a SERVER-REGEXP string
***************
*** 297,302 ****
--- 303,309 ----
  
  (defvar rcirc-urls nil
    "List of urls seen in the current buffer.")
+ (put 'rcirc-urls 'permanent-local t)
  
  (defvar rcirc-keepalive-seconds 60
    "Number of seconds between keepalive pings.
***************
*** 539,545 ****
  (defun rcirc-buffer-process (&optional buffer)
    "Return the process associated with channel BUFFER.
  With no argument or nil as argument, use the current buffer."
!   (get-buffer-process (or buffer rcirc-server-buffer)))
  
  (defun rcirc-server-name (process)
    "Return PROCESS server name, given by the 001 response."
--- 546,555 ----
  (defun rcirc-buffer-process (&optional buffer)
    "Return the process associated with channel BUFFER.
  With no argument or nil as argument, use the current buffer."
!   (get-buffer-process (if buffer
!                         (with-current-buffer buffer
!                           rcirc-server-buffer)
!                       rcirc-server-buffer)))
  
  (defun rcirc-server-name (process)
    "Return PROCESS server name, given by the 001 response."
***************
*** 601,610 ****
  
  (defvar rcirc-nick-completions nil)
  (defvar rcirc-nick-completion-start-offset nil)
  (defun rcirc-complete-nick ()
    "Cycle through nick completions from list of nicks in channel."
    (interactive)
!   (if (eq last-command 'rcirc-complete-nick)
        (setq rcirc-nick-completions
              (append (cdr rcirc-nick-completions)
                      (list (car rcirc-nick-completions))))
--- 611,621 ----
  
  (defvar rcirc-nick-completions nil)
  (defvar rcirc-nick-completion-start-offset nil)
+ 
  (defun rcirc-complete-nick ()
    "Cycle through nick completions from list of nicks in channel."
    (interactive)
!   (if (eq last-command this-command)
        (setq rcirc-nick-completions
              (append (cdr rcirc-nick-completions)
                      (list (car rcirc-nick-completions))))
***************
*** 626,634 ****
                                          rcirc-target))))))
    (let ((completion (car rcirc-nick-completions)))
      (when completion
        (delete-region (+ rcirc-prompt-end-marker
!                         rcirc-nick-completion-start-offset)
!                      (point))
        (insert (concat completion
                        (if (= (+ rcirc-prompt-end-marker
                                  rcirc-nick-completion-start-offset)
--- 637,646 ----
                                          rcirc-target))))))
    (let ((completion (car rcirc-nick-completions)))
      (when completion
+       (rcirc-put-nick-channel (rcirc-buffer-process) completion rcirc-target)
        (delete-region (+ rcirc-prompt-end-marker
!                       rcirc-nick-completion-start-offset)
!                    (point))
        (insert (concat completion
                        (if (= (+ rcirc-prompt-end-marker
                                  rcirc-nick-completion-start-offset)
***************
*** 709,715 ****
    (make-local-variable 'rcirc-short-buffer-name)
    (setq rcirc-short-buffer-name nil)
    (make-local-variable 'rcirc-urls)
-   (setq rcirc-urls nil)
    (setq use-hard-newlines t)
  
    (make-local-variable 'rcirc-decode-coding-system)
--- 721,726 ----
***************
*** 742,747 ****
--- 753,761 ----
    (make-local-variable 'kill-buffer-hook)
    (add-hook 'kill-buffer-hook 'rcirc-kill-buffer-hook)
  
+   (make-local-variable 'window-scroll-functions)
+   (add-hook 'window-scroll-functions 'rcirc-scroll-to-bottom)
+ 
    ;; add to buffer list, and update buffer abbrevs
    (when target                                ; skip server buffer
      (let ((buffer (current-buffer)))
***************
*** 1144,1149 ****
--- 1158,1172 ----
  (make-variable-buffer-local 'rcirc-last-sender)
  (defvar rcirc-gray-toggle nil)
  (make-variable-buffer-local 'rcirc-gray-toggle)
+ 
+ (defun rcirc-scroll-to-bottom (window display-start)
+   "Scroll window to show maximum output if `rcirc-show-maximum-output' is
+ non-nil."
+   (when rcirc-show-maximum-output
+     (with-selected-window window
+       (when (>= (window-point) rcirc-prompt-end-marker)
+       (recenter -1)))))
+ 
  (defun rcirc-print (process sender response target text &optional activity)
    "Print TEXT in the buffer associated with TARGET.
  Format based on SENDER and RESPONSE.  If ACTIVITY is non-nil,
***************
*** 1240,1255 ****
        ;; record modeline activity
        (when activity
          (let ((nick-match
!                (string-match (concat "\\b"
!                                      (regexp-quote (rcirc-nick process))
!                                      "\\b")
!                              text)))
            (when (if rcirc-ignore-buffer-activity-flag
                      ;; - Always notice when our nick is mentioned
                      nick-match
!                   ;; - Never bother us if a dim-nick spoke
!                   (not (and rcirc-dim-nick-regexp sender
!                             (string-match rcirc-dim-nick-regexp sender))))
              (rcirc-record-activity
               (current-buffer)
               (when (or nick-match (and (not (rcirc-channel-p rcirc-target))
--- 1263,1281 ----
        ;; record modeline activity
        (when activity
          (let ((nick-match
!                (with-syntax-table rcirc-nick-syntax-table              
!                  (string-match (concat "\\b"
!                                        (regexp-quote (rcirc-nick process))
!                                        "\\b")
!                                text))))
            (when (if rcirc-ignore-buffer-activity-flag
                      ;; - Always notice when our nick is mentioned
                      nick-match
!                   ;; - unless our nick is mentioned, don't bother us
!                   ;; - with dim-nicks
!                   (or nick-match
!                       (not (and rcirc-dim-nick-regexp sender
!                                 (string-match rcirc-dim-nick-regexp 
sender)))))
              (rcirc-record-activity
               (current-buffer)
               (when (or nick-match (and (not (rcirc-channel-p rcirc-target))
***************
*** 1504,1521 ****
         (lopri (car pair))
         (hipri (cdr pair)))
      (setq rcirc-activity-string
!         (if (or hipri lopri)
!             (concat "-"
!                     (and hipri "[")
!                     (rcirc-activity-string hipri)
!                     (and hipri lopri ",")
!                     (and lopri
!                          (concat "("
!                                  (rcirc-activity-string lopri)
!                                  ")"))
!                     (and hipri "]")
!                     "-")
!           "-[]-"))))
  
  (defun rcirc-activity-string (buffers)
    (mapconcat (lambda (b)
--- 1530,1549 ----
         (lopri (car pair))
         (hipri (cdr pair)))
      (setq rcirc-activity-string
!         (cond ((or hipri lopri)
!                (concat "-"
!                        (and hipri "[")
!                        (rcirc-activity-string hipri)
!                        (and hipri lopri ",")
!                        (and lopri
!                             (concat "("
!                                     (rcirc-activity-string lopri)
!                                     ")"))
!                        (and hipri "]")
!                        "-"))
!               ((not (null (rcirc-process-list)))
!                "-[]-")
!               (t "")))))
  
  (defun rcirc-activity-string (buffers)
    (mapconcat (lambda (b)
***************
*** 1771,1777 ****
  ones added to the list automatically are marked with an asterisk."
    (interactive "sToggle ignoring of nick: ")
    (when (not (string= "" nick))
!     (if (member nick rcirc-ignore-list)
        (setq rcirc-ignore-list (delete nick rcirc-ignore-list))
        (setq rcirc-ignore-list (cons nick rcirc-ignore-list))))
    (rcirc-print process (rcirc-nick process) "IGNORE" target 
--- 1799,1805 ----
  ones added to the list automatically are marked with an asterisk."
    (interactive "sToggle ignoring of nick: ")
    (when (not (string= "" nick))
!     (if (member-ignore-case nick rcirc-ignore-list)
        (setq rcirc-ignore-list (delete nick rcirc-ignore-list))
        (setq rcirc-ignore-list (cons nick rcirc-ignore-list))))
    (rcirc-print process (rcirc-nick process) "IGNORE" target 
***************
*** 1800,1805 ****
--- 1828,1834 ----
                       "://")
                  "www.")
              (1+ (char "-a-zA-Z0-9_."))
+             (1+ (char "-a-zA-Z0-9_"))
              (optional ":" (1+ (char "0-9"))))
             (and (1+ (char "-a-zA-Z0-9_."))
                  (or ".com" ".net" ".org")
***************
*** 1823,1829 ****
  (defun rcirc-browse-url-at-point (point)
    "Send URL at point to `browse-url'."
    (interactive "d")
!   (let ((beg (previous-single-property-change point 'mouse-face))
        (end (next-single-property-change point 'mouse-face)))
      (browse-url (buffer-substring-no-properties beg end))))
  
--- 1852,1858 ----
  (defun rcirc-browse-url-at-point (point)
    "Send URL at point to `browse-url'."
    (interactive "d")
!   (let ((beg (previous-single-property-change (1+ point) 'mouse-face))
        (end (next-single-property-change point 'mouse-face)))
      (browse-url (buffer-substring-no-properties beg end))))
  




reply via email to

[Prev in Thread] Current Thread [Next in Thread]