diff options
author | Miles Bader <miles@gnu.org> | 2006-04-26 03:09:31 +0000 |
---|---|---|
committer | Miles Bader <miles@gnu.org> | 2006-04-26 03:09:31 +0000 |
commit | 02f47e8630d483a99fc20f1011c252004658e05c (patch) | |
tree | 6d3f7f6c6bbf3a7a35ac87c13a3251c57223c2ff /lisp/net | |
parent | 6a7250d806dadd555a9a22c42b0bb51c73327dba (diff) | |
download | emacs-02f47e8630d483a99fc20f1011c252004658e05c.tar.gz |
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-247
Rcirc patch from Ryan Yeske
2006-04-25 Ryan Yeske <rcyeske@gmail.com>
* lisp/net/rcirc.el (rcirc-print): Revert last change with ignored nicks.
(rcirc-toggle-low-priority): Doc fix.
(rcirc-handler-NOTICE): Remove beginning of line anchor in
ChanServ regexp.
(rcirc-startup-channels-alist): Connect to #rcirc by default, not
#emacs.
(rcirc-bright-nick-regexp, rcirc-dim-nick-regexp): Add variables.
(rcirc-decode-coding-system): Use utf-8 as the default.
(rcirc-multiline-minor-mode): Set the fill-column.
(rcirc-format-response-string): Display bright and dim nicks.
(rcirc-browse-url): Update interactive spec to fill ARG.
(rcirc-bright-nick, rcirc-dim-nick): Add faces.
(rcirc-print): Ignore dim-nick messages wrt modeline-activity.
Diffstat (limited to 'lisp/net')
-rw-r--r-- | lisp/net/rcirc.el | 79 |
1 files changed, 61 insertions, 18 deletions
diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el index 53703166e64..a0b328413b0 100644 --- a/lisp/net/rcirc.el +++ b/lisp/net/rcirc.el @@ -74,13 +74,13 @@ :group 'rcirc) (defcustom rcirc-default-user-full-name (if (string= (user-full-name) "") - rcirc-user-name - (user-full-name)) + rcirc-user-name + (user-full-name)) "The full name sent to the server when connecting." :type 'string :group 'rcirc) -(defcustom rcirc-startup-channels-alist '(("^irc.freenode.net$" "#emacs")) +(defcustom rcirc-startup-channels-alist '(("^irc.freenode.net$" "#rcirc")) "Alist of channels to join at startup. Each element looks like (SERVER-REGEXP . CHANNEL-LIST)." :type '(alist :key-type string :value-type (repeat string)) @@ -206,6 +206,18 @@ When an ignored person renames, their nick is added to both lists. Nicks will be removed from the automatic list on follow-up renamings or parts.") +(defcustom rcirc-bright-nick-regexp nil + "Regexp matching nicks to be emphasized. +See `rcirc-bright-nick' face." + :type 'regexp + :group 'rcirc) + +(defcustom rcirc-dim-nick-regexp nil + "Regexp matching nicks to be deemphasized. +See `rcirc-dim-nick' face." + :type 'regexp + :group 'rcirc) + (defcustom rcirc-print-hooks nil "Hook run after text is printed. Called with 5 arguments, PROCESS, SENDER, RESPONSE, TARGET and TEXT." @@ -217,7 +229,7 @@ Called with 5 arguments, PROCESS, SENDER, RESPONSE, TARGET and TEXT." :type 'boolean :group 'rcirc) -(defcustom rcirc-decode-coding-system 'undecided +(defcustom rcirc-decode-coding-system 'utf-8 "Coding system used to decode incoming irc messages." :type 'coding-system :group 'rcirc) @@ -546,7 +558,7 @@ With no argument or nil as argument, use the current buffer." (with-current-buffer rcirc-server-buffer (or rcirc-nick rcirc-default-nick)))) -(defvar rcirc-max-message-length 450 +(defvar rcirc-max-message-length 420 "Messages longer than this value will be split.") (defun rcirc-send-message (process target message &optional noticep) @@ -955,7 +967,8 @@ Create the buffer if it doesn't exist." :global nil :group 'rcirc (make-local-variable 'rcirc-parent-buffer) - (put 'rcirc-parent-buffer 'permanent-local t)) + (put 'rcirc-parent-buffer 'permanent-local t) + (setq fill-column rcirc-max-message-length)) (defun rcirc-multiline-minor-submit () "Send the text in buffer back to parent buffer." @@ -1029,6 +1042,7 @@ is found by looking up RESPONSE in `rcirc-response-formats'." (split-string (or (cdr (assoc response rcirc-response-formats)) (cdr (assq t rcirc-response-formats))) "%")) + (sender (or sender "")) (result "") (face nil) key face-key repl) @@ -1054,9 +1068,16 @@ is found by looking up RESPONSE in `rcirc-response-formats'." (rcirc-facify nick (if (eq key ?n) face - (if (string= sender (rcirc-nick process)) - 'rcirc-my-nick - 'rcirc-other-nick))))) + (cond ((string= sender (rcirc-nick process)) + 'rcirc-my-nick) + ((and rcirc-bright-nick-regexp + (string-match rcirc-bright-nick-regexp sender)) + 'rcirc-bright-nick) + ((and rcirc-dim-nick-regexp + (string-match rcirc-dim-nick-regexp sender)) + 'rcirc-dim-nick) + (t + 'rcirc-other-nick)))))) ((eq key ?T) ;; %T -- timestamp (rcirc-facify @@ -1130,8 +1151,9 @@ record activity." (or text (setq text "")) (unless (or (member sender rcirc-ignore-list) (member (with-syntax-table rcirc-nick-syntax-table - (when (string-match "^\\([^/]\\w*\\)\\b" text) - (match-string 1 text))) rcirc-ignore-list)) + (when (string-match "^\\([^/]\\w*\\)[:,]" text) + (match-string 1 text))) + rcirc-ignore-list)) (let* ((buffer (rcirc-target-buffer process sender response target text)) (inhibit-read-only t)) (with-current-buffer buffer @@ -1222,10 +1244,12 @@ record activity." (regexp-quote (rcirc-nick process)) "\\b") text))) - (when (or (not rcirc-ignore-buffer-activity-flag) - ;; always notice when our nick is mentioned, even - ;; if ignoring channel activity - nick-match) + (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)) @@ -1375,7 +1399,7 @@ if NICK is also on `rcirc-ignore-list-automatic'." (force-mode-line-update)) (defun rcirc-toggle-low-priority () - "Toggle the value of `rcirc-ignore-buffer-activity-flag'." + "Toggle the value of `rcirc-low-priority-flag'." (interactive) (setq rcirc-low-priority-flag (not rcirc-low-priority-flag)) @@ -1788,7 +1812,7 @@ ones added to the list automatically are marked with an asterisk." (defun rcirc-browse-url (&optional arg) "Prompt for URL to browse based on URLs in buffer." - (interactive) + (interactive "P") (let ((completions (mapcar (lambda (x) (cons x nil)) rcirc-urls)) (initial-input (car rcirc-urls)) (history (cdr rcirc-urls))) @@ -1910,7 +1934,7 @@ FUNCTION takes 3 arguments, MATCH-START, MATCH-END, and STRING." (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)) @@ -2211,6 +2235,25 @@ Passwords are stored in `rcirc-authinfo' (which see)." "The face used to highlight other messages." :group 'rcirc-faces) +(defface rcirc-bright-nick + '((((class grayscale) (background light)) + (:foreground "LightGray" :weight bold :underline t)) + (((class grayscale) (background dark)) + (:foreground "Gray50" :weight bold :underline t)) + (((class color) (min-colors 88) (background light)) (:foreground "CadetBlue")) + (((class color) (min-colors 88) (background dark)) (:foreground "Aquamarine")) + (((class color) (min-colors 16) (background light)) (:foreground "CadetBlue")) + (((class color) (min-colors 16) (background dark)) (:foreground "Aquamarine")) + (((class color) (min-colors 8)) (:foreground "magenta")) + (t (:weight bold :underline t))) + "Face used for nicks matched by `rcirc-bright-nick-regexp'." + :group 'rcirc-faces) + +(defface rcirc-dim-nick + '((t :inherit default)) + "Face used for nicks matched by `rcirc-dim-nick-regexp'." + :group 'rcirc-faces) + (defface rcirc-server ; font-lock-comment-face '((((class grayscale) (background light)) (:foreground "DimGray" :weight bold :slant italic)) |