changeset 81667:538ded3c7fd1

(rcirc-server-alist): Rename from rcirc-connections. (rcirc-default-full-name): Rename from rcirc-default-user-full-name. (rcirc-clear-activity): Make sure RCIRC-ACTIVITY isn't modified. (rcirc-print): Never ignore messages from ourself.
author Thien-Thi Nguyen <ttn@gnuvola.org>
date Fri, 29 Jun 2007 07:31:42 +0000
parents 5b21f07d3106
children 5cba81c25d1d
files lisp/net/rcirc.el
diffstat 1 files changed, 73 insertions(+), 48 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/net/rcirc.el	Fri Jun 29 04:37:34 2007 +0000
+++ b/lisp/net/rcirc.el	Fri Jun 29 07:31:42 2007 +0000
@@ -55,7 +55,7 @@
   :link '(custom-manual "(rcirc)")
   :group 'applications)
 
-(defcustom rcirc-connections
+(defcustom rcirc-server-alist
   '(("irc.freenode.net" :channels ("#rcirc")))
   "An alist of IRC connections to establish when running `rcirc'.
 Each element looks like (SERVER-NAME PARAMETERS).
@@ -63,11 +63,36 @@
 SERVER-NAME is a string describing the server to connect
 to.
 
-PARAMETERS is a plist of optional connection parameters.  Valid
-properties are: nick (a string), port (number or string),
-user-name (string), full-name (string), and channels (list of
-strings)."
-  :type '(alist :key-type string 
+The optional PARAMETERS come in pairs PARAMETER VALUE.
+
+The following parameters are recognized:
+
+`:nick'
+
+VALUE must be a string.  If absent, `rcirc-default-nick' is used
+for this connection.
+
+`:port'
+
+VALUE must be a number or string.  If absent,
+`rcirc-default-port' is used.
+
+`:user-name'
+
+VALUE must be a string.  If absent, `rcirc-default-user-name' is
+used.
+
+`:full-name'
+
+VALUE must be a string.  If absent, `rcirc-default-full-name' is
+used.
+
+`:channels'
+
+VALUE must be a list of strings describing which channels to join
+when connecting to this server.  If absent, no channels will be
+connected to automatically."
+  :type '(alist :key-type string
 		:value-type (plist :options ((nick string)
 					     (port integer)
 					     (user-name string)
@@ -90,9 +115,9 @@
   :type 'string
   :group 'rcirc)
 
-(defcustom rcirc-default-user-full-name (if (string= (user-full-name) "")
-					    rcirc-default-user-name
-					  (user-full-name))
+(defcustom rcirc-default-full-name (if (string= (user-full-name) "")
+				       rcirc-default-user-name
+				     (user-full-name))
   "The full name sent to the server when connecting."
   :type 'string
   :group 'rcirc)
@@ -335,19 +360,19 @@
 
 ;;;###autoload
 (defun rcirc (arg)
-  "Connect to all servers in `rcirc-connections'.
+  "Connect to all servers in `rcirc-server-alist'.
 
 Do not connect to a server if it is already connected.
 
 If ARG is non-nil, instead prompt for connection parameters."
   (interactive "P")
   (if arg
-      (let* ((server (completing-read "IRC Server: " 
-				      rcirc-connections
+      (let* ((server (completing-read "IRC Server: "
+				      rcirc-server-alist
 				      nil nil
-				      (caar rcirc-connections)))
-	     (server-plist (cdr (assoc-string server rcirc-connections)))
-	     (port (read-string "IRC Port: " 
+				      (caar rcirc-server-alist)))
+	     (server-plist (cdr (assoc-string server rcirc-server-alist)))
+	     (port (read-string "IRC Port: "
 				(number-to-string
 				 (or (plist-get server-plist 'port)
 				     rcirc-default-port))))
@@ -356,25 +381,25 @@
 				    rcirc-default-nick)))
 	     (channels (split-string
 			(read-string "IRC Channels: "
-				     (mapconcat 'identity 
+				     (mapconcat 'identity
 						(plist-get server-plist
 							   'channels)
 						" "))
 			"[, ]+" t)))
 	(rcirc-connect server port nick rcirc-default-user-name
-		       rcirc-default-user-full-name
+		       rcirc-default-full-name
 		       channels))
-    ;; connect to servers in `rcirc-connections'
+    ;; connect to servers in `rcirc-server-alist'
     (let (connected-servers)
-      (dolist (c rcirc-connections)
+      (dolist (c rcirc-server-alist)
 	(let ((server (car c))
-	      (port (or (plist-get (cdr c) 'port) rcirc-default-port))
-	      (nick (or (plist-get (cdr c) 'nick) rcirc-default-nick))
-	      (user-name (or (plist-get (cdr c) 'user-name)
+	      (nick (or (plist-get (cdr c) :nick) rcirc-default-nick))
+	      (port (or (plist-get (cdr c) :port) rcirc-default-port))
+	      (user-name (or (plist-get (cdr c) :user-name)
 			     rcirc-default-user-name))
-	      (full-name (or (plist-get (cdr c) 'full-name) 
-			     rcirc-default-user-full-name))
-	      (channels (plist-get (cdr c) 'channels)))
+	      (full-name (or (plist-get (cdr c) :full-name)
+			     rcirc-default-full-name))
+	      (channels (plist-get (cdr c) :channels)))
 	  (when server
 	    (let (connected)
 	      (dolist (p (rcirc-process-list))
@@ -382,9 +407,9 @@
 		  (setq connected p)))
 	      (if (not connected)
 		  (condition-case e
-		      (rcirc-connect server port nick user-name 
+		      (rcirc-connect server port nick user-name
 				     full-name channels)
-		    (quit (message "Quit connecting to %s" server))) 
+		    (quit (message "Quit connecting to %s" server)))
 		(with-current-buffer (process-buffer connected)
 		  (setq connected-servers
 			(cons (process-contact (get-buffer-process
@@ -411,7 +436,7 @@
 (defvar rcirc-process nil)
 
 ;;;###autoload
-(defun rcirc-connect (server &optional port nick user-name full-name 
+(defun rcirc-connect (server &optional port nick user-name full-name
 			     startup-channels)
   (save-excursion
     (message "Connecting to %s..." server)
@@ -423,7 +448,7 @@
 			  rcirc-default-port))
 	   (nick (or nick rcirc-default-nick))
 	   (user-name (or user-name rcirc-default-user-name))
-	   (full-name (or full-name rcirc-default-user-full-name))
+	   (full-name (or full-name rcirc-default-full-name))
 	   (startup-channels startup-channels)
            (process (make-network-process :name server :host server :service port-number)))
       ;; set up process
@@ -494,7 +519,7 @@
       (mapc (lambda (process)
 	      (with-rcirc-process-buffer process
 		(when (not rcirc-connecting)
-		  (rcirc-send-string process 
+		  (rcirc-send-string process
 				     (format "PRIVMSG %s :\C-aKEEPALIVE %f\C-a"
 					     rcirc-nick
 					     (time-to-seconds
@@ -550,7 +575,7 @@
     ;; set rcirc-target to nil for each channel so cleanup
     ;; doesnt happen when we reconnect
     (setq rcirc-target nil)
-    (setq mode-line-process ":disconnected")))  
+    (setq mode-line-process ":disconnected")))
 
 (defun rcirc-process-list ()
   "Return a list of rcirc processes."
@@ -590,7 +615,6 @@
 					       process))))))
 
 (defun rcirc-delete-process (process)
-  (message "delete process %S" process)
   (delete-process process))
 
 (defvar rcirc-trap-errors-flag t)
@@ -1162,7 +1186,7 @@
 		:value-type string)
   :group 'rcirc)
 
-(defcustom rcirc-omit-responses 
+(defcustom rcirc-omit-responses
   '("JOIN" "PART" "QUIT")
   "Responses which will be hidden when `rcirc-omit-mode' is enabled."
   :type '(repeat string)
@@ -1202,7 +1226,7 @@
 				    (cond ((string= sender my-nick)
 					   'rcirc-my-nick)
 					  ((and rcirc-bright-nicks
-						(string-match 
+						(string-match
 						 (regexp-opt rcirc-bright-nicks
 							     'words)
 						 sender))
@@ -1262,11 +1286,12 @@
 Format based on SENDER and RESPONSE.  If ACTIVITY is non-nil,
 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*\\)[:,]" text)
-			  (match-string 1 text)))
-		      rcirc-ignore-list))
+  (unless (and (or (member sender rcirc-ignore-list)
+		   (member (with-syntax-table rcirc-nick-syntax-table
+			     (when (string-match "^\\([^/]\\w*\\)[:,]" text)
+			       (match-string 1 text)))
+			   rcirc-ignore-list))
+	       (not (string= sender (rcirc-nick process))))
     (let* ((buffer (rcirc-target-buffer process sender response target text))
 	   (inhibit-read-only t))
       (with-current-buffer buffer
@@ -1291,12 +1316,12 @@
 	  (set-marker-insertion-type rcirc-prompt-end-marker t)
 
 	  (let ((start (point)))
-	    (insert (rcirc-format-response-string process sender response nil 
+	    (insert (rcirc-format-response-string process sender response nil
 						  text)
 		    (propertize "\n" 'hard t))
 
  	    ;; squeeze spaces out of text before rcirc-text
-	    (fill-region fill-start 
+	    (fill-region fill-start
 			 (1- (or (next-single-property-change fill-start
 							      'rcirc-text)
 				 rcirc-prompt-end-marker)))
@@ -1549,7 +1574,7 @@
 
 (defun rcirc-omit-mode ()
   "Toggle the Rcirc-Omit mode.
-If enabled, \"uninteresting\" lines are not shown.  
+If enabled, \"uninteresting\" lines are not shown.
 Uninteresting lines are those whose responses are listed in
 `rcirc-omit-responses'."
   (interactive)
@@ -1635,7 +1660,7 @@
 
 (defun rcirc-clear-activity (buffer)
   "Clear the BUFFER activity."
-  (setq rcirc-activity (delete buffer rcirc-activity))
+  (setq rcirc-activity (remove buffer rcirc-activity))
   (with-current-buffer buffer
     (setq rcirc-activity-types nil)))
 
@@ -2065,7 +2090,7 @@
     rcirc-markup-keywords
     rcirc-markup-bright-nicks
     rcirc-markup-fill)
-    
+
   "List of functions used to manipulate text before it is printed.
 
 Each function takes two arguments, SENDER, RESPONSE.  The buffer
@@ -2074,7 +2099,7 @@
 
 (defun rcirc-markup-timestamp (sender response)
   (goto-char (point-min))
-  (insert (rcirc-facify (format-time-string rcirc-time-format) 
+  (insert (rcirc-facify (format-time-string rcirc-time-format)
 			'rcirc-timestamp)))
 
 (defun rcirc-markup-attributes (sender response)
@@ -2095,15 +2120,15 @@
 
 (defun rcirc-markup-my-nick (sender response)
   (with-syntax-table rcirc-nick-syntax-table
-    (while (re-search-forward (concat "\\b" 
-				      (regexp-quote (rcirc-nick 
+    (while (re-search-forward (concat "\\b"
+				      (regexp-quote (rcirc-nick
 						     (rcirc-buffer-process)))
 				      "\\b")
 			      nil t)
       (rcirc-add-face (match-beginning 0) (match-end 0)
 		      'rcirc-nick-in-message)
       (when (string= response "PRIVMSG")
-	(rcirc-add-face (point-min) (point-max) 
+	(rcirc-add-face (point-min) (point-max)
 			'rcirc-nick-in-message-full-line)
 	(rcirc-record-activity (current-buffer) 'nick)))))