From: Ryan Yeske <rcyeske@gmail.com>
Subject: rcirc update
Date: Sun, 20 Aug 2006 10:50:36 -0700 [thread overview]
Message-ID: <87zmdzmh3n.fsf@cut.bc.hsia.telus.net> (raw)
2006-08-20 Ryan Yeske <rcyeske@gmail.com>
* 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))))
next reply other threads:[~2006-08-20 17:50 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-08-20 17:50 Ryan Yeske [this message]
2006-08-21 5:36 ` rcirc update Miles Bader
-- strict thread matches above, loose matches on Subject: below --
2006-09-02 0:02 Ryan Yeske
2007-03-07 23:14 Ryan Yeske
2007-06-09 5:21 Ryan Yeske
2007-06-13 20:30 ` Chong Yidong
2007-06-13 21:17 ` Stefan Monnier
2007-06-16 3:02 ` Ryan Yeske
2007-06-16 3:58 ` Miles Bader
2007-06-16 5:08 ` Ryan Yeske
2007-06-16 21:26 ` Miles Bader
2007-06-17 23:33 ` Ryan Yeske
2007-06-20 19:53 ` Ryan Yeske
2007-06-28 9:51 ` Ryan Yeske
2007-06-29 0:54 ` Miles Bader
2007-06-29 7:34 ` Thien-Thi Nguyen
2007-10-22 18:04 Ryan Yeske
2007-10-29 1:25 ` Glenn Morris
2007-10-31 5:21 ` Ryan Yeske
2007-11-01 4:04 ` Glenn Morris
2009-10-02 0:11 Ryan Yeske
2009-10-15 6:50 ` Glenn Morris
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87zmdzmh3n.fsf@cut.bc.hsia.telus.net \
--to=rcyeske@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.