emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] Changes to emacs/lisp/erc/erc.el,v


From: Miles Bader
Subject: [Emacs-diffs] Changes to emacs/lisp/erc/erc.el,v
Date: Wed, 17 Jan 2007 18:17:27 +0000

CVSROOT:        /cvsroot/emacs
Module name:    emacs
Changes by:     Miles Bader <miles>     07/01/17 18:17:25

Index: lisp/erc/erc.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/erc/erc.el,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -b -r1.23 -r1.24
--- lisp/erc/erc.el     5 Jan 2007 02:09:07 -0000       1.23
+++ lisp/erc/erc.el     17 Jan 2007 18:17:25 -0000      1.24
@@ -1,7 +1,7 @@
 ;; erc.el --- An Emacs Internet Relay Chat client
 
 ;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;;   2006 Free Software Foundation, Inc.
+;;   2006, 2007 Free Software Foundation, Inc.
 
 ;; Author: Alexander L. Belikoff (address@hidden)
 ;; Contributors: Sergey Berezin (address@hidden),
@@ -74,7 +74,6 @@
 (require 'pp)
 (require 'thingatpt)
 (require 'erc-compat)
-(require 'erc-menu)
 
 (defvar erc-official-location
   "http://emacswiki.org/cgi-bin/wiki/ERC (mailing list: address@hidden)"
@@ -782,6 +781,13 @@
   :group 'erc
   :type 'string)
 
+(defcustom erc-system-name nil
+  "Use this as the name of your system.
+If nil, ERC will call `system-name' to get this information."
+  :group 'erc
+  :type '(choice (const :tag "Default system name" nil)
+                string))
+
 (defcustom erc-ignore-list nil
   "*List of regexps matching user identifiers to ignore.
 
@@ -1764,7 +1770,7 @@
 
 (defcustom erc-modules '(netsplit fill button match track completion readonly
                                  ring autojoin noncommands irccontrols
-                                 stamp)
+                                 stamp menu)
   "A list of modules which ERC should enable.
 If you set the value of this without using `customize' remember to call
 \(erc-update-modules) after you change it.  When using `customize', modules
@@ -1791,17 +1797,21 @@
     (const :tag "Set away status automatically" autoaway)
     (const :tag "Join channels automatically" autojoin)
     (const :tag "Buttonize URLs, nicknames, and other text" button)
+    (const
+     :tag
+     "Mark unidentified users on freenode and other servers supporting CAPAB"
+     capab-identify)
     (const :tag "Wrap long lines" fill)
     (const :tag "Launch an identd server on port 8113" identd)
     (const :tag "Highlight or remove IRC control characters"
           irccontrols)
     (const :tag "Save buffers in logs" log)
     (const :tag "Highlight pals, fools, and other keywords" match)
+    (const :tag "Display a menu in ERC buffers" menu)
     (const :tag "Detect netsplits" netsplit)
     (const :tag "Don't display non-IRC commands after evaluation"
           noncommands)
-    (const :tag
-          "Notify when the online status of certain users changes"
+    (const :tag "Notify when the online status of certain users changes"
           notify)
     (const :tag "Complete nicknames and commands (programmable)"
           completion)
@@ -1831,6 +1841,8 @@
       (setq req (concat "erc-" (symbol-name mod)))
       (cond
        ;; yuck. perhaps we should bring the filenames into sync?
+       ((string= req "erc-capab-identify")
+       (setq req "erc-capab"))
        ((string= req "erc-completion")
        (setq req "erc-pcomplete"))
        ((string= req "erc-pcomplete")
@@ -1891,6 +1903,7 @@
        (old-buffer (current-buffer))
        old-point
        continued-session)
+    (when connect (run-hook-with-args 'erc-before-connect server port nick))
     (erc-update-modules)
     (set-buffer buffer)
     (setq old-point (point))
@@ -2104,8 +2117,6 @@
 `erc-compute-port', `erc-compute-nick' and `erc-compute-full-name' will
 be invoked for the values of the other parameters."
   (interactive (erc-select-read-args))
-
-  (run-hook-with-args 'erc-before-connect server port nick)
   (erc-open server port nick full-name t password))
 
 (defalias 'erc-select 'erc)
@@ -4300,8 +4311,10 @@
   nil)
 
 (defun erc-process-away (proc away-p)
-  ;; FIXME: This docstring is AWFUL -- Lawrence 2004-01-08
-  "Process the user being away, or returning from an away break."
+  "Toggle the away status of the user depending on the value of AWAY-P.
+
+If nil, set the user as away.
+If non-nil, return from being away."
   (let ((sessionbuf (process-buffer proc)))
     (when sessionbuf
       (with-current-buffer sessionbuf
@@ -4881,6 +4894,9 @@
    erc-input-marker
    (erc-end-of-input-line)))
 
+(defvar erc-command-regexp "^/\\([A-Za-z]+\\)\\(\\s-+.*\\|\\s-*\\)$"
+  "Regular expression used for matching commands in ERC.")
+
 (defun erc-send-input (input)
   "Treat INPUT as typed in by the user. It is assumed that the input
 and the prompt is already deleted.
@@ -4902,7 +4918,7 @@
       (run-hook-with-args 'erc-send-pre-hook input)
       (when erc-send-this
        (if (or (string-match "\n" str)
-               (not (char-equal (aref str 0) ?/)))
+               (not (string-match erc-command-regexp str)))
            (mapc
             (lambda (line)
               (mapc
@@ -4967,7 +4983,7 @@
   "Extract command and args from the input LINE.
 If no command was given, return nil.  If command matches, return a
 list of the form: (command args) where both elements are strings."
-  (when (string-match "^/\\([A-Za-z]+\\)\\(\\s-+.*\\|\\s-*\\)$" line)
+  (when (string-match erc-command-regexp line)
     (let* ((cmd (erc-command-symbol (match-string 1 line)))
           ;; note: return is nil, we apply this simply for side effects
           (canon-defun (while (and cmd (symbolp (symbol-function cmd)))
@@ -5406,7 +5422,7 @@
   (erc-log (format "login: nick: %s, user: %s %s %s :%s"
                   (erc-current-nick)
                   (user-login-name)
-                  (system-name)
+                  (or erc-system-name (system-name))
                   erc-session-server
                   erc-session-user-full-name))
   (if erc-session-password
@@ -5655,6 +5671,7 @@
 
 The following characters are replaced:
 %a: String indicating away status or \"\" if you are not away
+%l: The estimated lag time to the server
 %m: The modes of the channel
 %n: The current nick name
 %o: The topic of the channel
@@ -5666,9 +5683,9 @@
   :group 'erc-mode-line-and-header
   :type 'string)
 
-(defcustom erc-header-line-format "[IRC] %n on %t %m %o"
+(defcustom erc-header-line-format "%n on %t (%m,%l) %o"
   "A string to be formatted and shown in the header-line in `erc-mode'.
-Only used in Emacs 21.
+Only used starting in Emacs 21.
 
 See `erc-mode-line-format' for which characters are can be used."
   :group 'erc-mode-line-and-header
@@ -5758,12 +5775,9 @@
       "")))
 
 (defun erc-format-channel-modes ()
-  "Return the current channel's modes and the estimated lag."
-  (let ((lag (when (erc-server-buffer-live-p)
-              (with-current-buffer (process-buffer erc-server-process)
-                erc-server-lag))))
+  "Return the current channel's modes."
     (concat (apply 'concat
-                  "(+" erc-channel-modes)
+                "+" erc-channel-modes)
            (cond ((and erc-channel-user-limit erc-channel-key)
                   (if erc-show-channel-key-p
                       (format "lk %.0f %s" erc-channel-user-limit
@@ -5776,15 +5790,22 @@
                   (if erc-show-channel-key-p
                       (format "k %s" erc-channel-key)
                     "k"))
-                 (t ""))
-           (if lag (format ",lag:%.0f" lag) "")
-           ")")))
+               (t nil))))
+
+(defun erc-format-lag-time ()
+  "Return the estimated lag time to server, `erc-server-lag'."
+  (let ((lag (when (erc-server-buffer-live-p)
+              (with-current-buffer (process-buffer erc-server-process)
+                erc-server-lag))))
+    (cond (lag (format "lag:%.0f" lag))
+         (t ""))))
 
 (defun erc-update-mode-line-buffer (buffer)
   "Update the mode line in a single ERC buffer BUFFER."
   (with-current-buffer buffer
     (let ((spec (format-spec-make
                 ?a (erc-format-away-status)
+                ?l (erc-format-lag-time)
                 ?m (erc-format-channel-modes)
                 ?n (or (erc-current-nick) "")
                 ?o (erc-controls-strip erc-channel-topic)
@@ -5831,7 +5852,10 @@
                              (erc-propertize header 'help-echo help-echo
                                              'face face)
                            (erc-propertize header 'help-echo help-echo))))))
-               (t (setq header-line-format header))))))
+               (t (setq header-line-format
+                        (if face
+                            (erc-propertize header 'face face)
+                          header)))))))
     (if (featurep 'xemacs)
        (redraw-modeline)
       (force-mode-line-update))))
@@ -6185,6 +6209,10 @@
 
 ;;; Dealing with `erc-parsed'
 
+(defun erc-find-parsed-property ()
+  "Find the next occurrence of the `erc-parsed' text property."
+  (text-property-not-all (point-min) (point-max) 'erc-parsed nil))
+
 (defun erc-get-parsed-vector (point)
   "Return the whole parsed vector on POINT."
   (get-text-property point 'erc-parsed))




reply via email to

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