]> git.eshelyaron.com Git - emacs.git/commitdiff
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-73
authorMiles Bader <miles@gnu.org>
Sun, 12 Feb 2006 12:02:53 +0000 (12:02 +0000)
committerMiles Bader <miles@gnu.org>
Sun, 12 Feb 2006 12:02:53 +0000 (12:02 +0000)
Creator:  Michael Olson <mwolson@gnu.org>

Merge from erc--emacs--0

lisp/erc/ChangeLog
lisp/erc/erc-dcc.el
lisp/erc/erc-list.el
lisp/erc/erc-match.el
lisp/erc/erc-menu.el
lisp/erc/erc-spelling.el
lisp/erc/erc-stamp.el
lisp/erc/erc-xdcc.el
lisp/erc/erc.el

index 50b37eb044f6fa85819a9bc04d34e7b5cfb5a6bc..6abf4021a60c7eb393340dd104b4b3d23fa482ba 100644 (file)
@@ -1,3 +1,60 @@
+2006-02-11  Michael Olson  <mwolson@gnu.org>
+
+       * erc.el (erc-update-modules): Make some requirements shorter, so
+       that it's easier to see why they are needed.
+
+       * erc-stamp.el (erc-timestamp-use-align-to): Renamed from
+       `erc-timestamp-right-align-by-pixel'.  Set the default based on
+       whether we are in Emacs 22, and using X.  Improve documentation.
+       (erc-insert-aligned): Remove calculation of offset, since
+       :align-to pos works after all.  Unlike the previous solution, this
+       one works when erc-stamp.el is compiled.
+       (erc-insert-timestamp-right): Don't add length of string, and then
+       later remove its displayed width.  This puts timestamps after
+       erc-fill-column when erc-timestamp-right-column is nil, rather
+       than before it.  It also fixes a subtle bug.  Remove use of
+       `current-window', since there is no variable by that name in
+       Emacs21, Emacs22, or XEmacs21 beta.  Check to see whether
+       `erc-fill-column' is non-nil before using it.
+
+2006-02-11  Diane Murray  <disumu@x3y2z1.net>
+
+       * erc-list.el: Define `list' module which sets the alias
+       `erc-cmd-LIST' to `erc-list-channels' when enabled and
+       `erc-list-channels-simple' when disabled.
+       (erc-list-channels): Was `erc-cmd-LIST', renamed.
+       (erc-list-channels-simple): New function.
+
+       * erc.el (erc-modules): Added `list' to enabled modules.  Moved
+       customization options left in source code.
+
+       * erc-menu.el (erc-menu-definition): Use `erc-list-channels'.
+
+       * erc-spelling.el (define-erc-module): Make sure there's a buffer
+       before calling `with-current-buffer'.
+
+2006-02-10  Michael Olson  <mwolson@gnu.org>
+
+       * Makefile (debbuild): Split from debrelease.
+       (debrevision-mwolson): New rule that causes a Debian revision to
+       be built.
+
+       * erc.el (erc-migrate-modules): Use a better algorithm.  Thanks to
+       Johan Bockgård.
+       (erc-modules): Change use of 'pcomplete to 'completion.
+
+2006-02-09  Diane Murray  <disumu@x3y2z1.net>
+
+       * erc.el (erc-get-parsed-vector, erc-get-parsed-vector-nick)
+       (erc-get-parsed-vector-type): Moved here from erc-match.el.
+
+       * erc-match.el (erc-get-parsed-vector, erc-get-parsed-vector-nick)
+       (erc-get-parsed-vector-type): Moved these functions to erc.el
+       since they can be useful outside of the text matching module.
+
+       * erc-dcc.el, erc-stamp.el, erc-xdcc.el: Changed "Emacs IRC Client"
+       to "ERC".
+
 2006-02-07  Michael Olson  <mwolson@gnu.org>
 
        * ChangeLog.01, ChangeLog.02, ChangeLog.03, ChangeLog.04,
index d5789a51708e2865e9a84dc0de88d9ae82a3f073..0848b202e1ca8a7e6551ab36f924c37d26f4f4bb 100644 (file)
@@ -29,7 +29,7 @@
 
 ;;; Commentary:
 
-;; This file provides Direct Client-to-Client support for the Emacs IRC Client.
+;; This file provides Direct Client-to-Client support for ERC.
 ;;
 ;; The original code was taken from zenirc-dcc.el, heavily mangled and
 ;; rewritten to support the way how ERC operates.  Server socket support
index 9bc561523d9a20ae996f325f4368d12d11742170..2243a2f4985637b29e91a35483d429d356cdc595 100644 (file)
@@ -140,12 +140,19 @@ display the channel list."
   (setq truncate-lines t)
   (add-hook 'post-command-hook 'erc-chanlist-post-command-hook 'append 'local))
 
+;; Define module:
+;;;###autoload (autoload 'erc-list-mode "erc-list")
+(define-erc-module list nil
+  "List channels nicely in a separate buffer."
+  ((defalias 'erc-cmd-LIST 'erc-list-channels))
+  ((defalias 'erc-cmd-LIST 'erc-list-channels-simple)))
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Functions.
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 ;;;###autoload
-(defun erc-cmd-LIST (&rest channel)
+(defun erc-list-channels (&rest channel)
   "Display a buffer containing a list of channels on the current server.
 Optional argument CHANNEL specifies a single channel to list (instead of every
 available channel)."
@@ -163,6 +170,18 @@ available channel)."
     (erc-chanlist channel))
   t)
 
+(defun erc-list-channels-simple (&optional line)
+  "Send the LIST command to the current server with optional channels LINE."
+  (when (string-match "^\\s-*\\(.*\\)$" line)
+    (let ((channels (match-string 1 line)))
+      (erc-log (format "cmd: LIST: %s" channels))
+      (erc-server-send
+       (if (string= channels "")
+          "LIST"
+        (concat "LIST :" channels))))
+    t))
+(put 'erc-list-channels-simple 'do-not-parse-args t)
+
 ;;;###autoload
 (defun erc-chanlist (&optional channels)
   "Show a channel listing of the current server in a special mode.
index a5e3bf88ccf6a79f6b7614df5fdabb9d7fd9b6d1..ad875ceee99e950744207b38dc8d8bca157022b6 100644 (file)
@@ -428,24 +428,6 @@ In any of the following situations, MSG is directed at an entry FOOL:
     (or (erc-list-match fools-beg msg)
        (erc-list-match fools-end msg))))
 
-(defun erc-get-parsed-vector (point)
-  "Return the whole parsed vector on POINT."
-  (get-text-property point 'erc-parsed))
-
-(defun erc-get-parsed-vector-nick (vect)
-  "Return nickname in the parsed vector VECT."
-  (let* ((untreated-nick (and vect (erc-response.sender vect)))
-        (maybe-nick (when untreated-nick
-                      (car (split-string untreated-nick "!")))))
-    (when (and (not (null maybe-nick))
-              (erc-is-valid-nick-p maybe-nick))
-      untreated-nick)))
-
-(defun erc-get-parsed-vector-type (vect)
-  "Return message type in the parsed vector VECT."
-  (and vect
-       (erc-response.command vect)))
-
 (defun erc-match-message ()
   "Mark certain keywords in a region.
 Use this defun with `erc-insert-modify-hook'."
index 8e1f81adf75ac47600c8da89b3628b29125d5065..36c28b740f243d7d4563a53758a6b187fa33966c 100644 (file)
@@ -36,8 +36,8 @@
        ["Connect to server..." erc-select t]
        ["Disconnect from server..." erc-quit-server erc-server-connected]
        "-"
-       ["List channels..." erc-cmd-LIST
-        (and erc-server-connected (fboundp 'erc-cmd-LIST))]
+       ["List channels..." erc-list-channels
+        (and erc-server-connected (fboundp 'erc-list-channels))]
        ["Join channel..." erc-join-channel erc-server-connected]
        ["Start a query..." erc-cmd-QUERY erc-server-connected]
        "-"
index 41e342c0e504f4e3a508996d2cff897fd738e81d..528668f48297b2c288d3002aa999ca93564b0e51 100644 (file)
   ;; called AFTER the server buffer is initialized.
   ((add-hook 'erc-connect-pre-hook 'erc-spelling-init)
    (mapc (lambda (buffer)
-           (with-current-buffer buffer (erc-spelling-init)))
+           (when buffer
+             (with-current-buffer buffer (erc-spelling-init))))
          (erc-buffer-list)))
   ((remove-hook 'erc-connect-pre-hook 'erc-spelling-init)
    (mapc (lambda (buffer)
-           (with-current-buffer buffer (flyspell-mode 0)))
+           (when buffer
+             (with-current-buffer buffer (flyspell-mode 0))))
          (erc-buffer-list))))
 
 (defcustom erc-spelling-dictionaries nil
index ead847ff73ff14d1d2ab969789aa1356ab995bda..e5d4250d142f3a1515c74989aa7c44b4e4653973 100644 (file)
@@ -1,4 +1,4 @@
-;;; erc-stamp.el --- Timestamping for Emacs IRC CLient
+;;; erc-stamp.el --- Timestamping for ERC messages
 
 ;; Copyright (C) 2002, 2003, 2004, 2006 Free Software Foundation, Inc.
 
@@ -180,11 +180,17 @@ the correct column."
          (integer :tag "Column number")
          (const :tag "Unspecified" nil)))
 
-(defcustom erc-timestamp-right-align-by-pixel nil
-  "*If non-nil, insert the right timestamp based on a pixel value.
-This is needed when variable-width text precedes a timestamp.
+(defcustom erc-timestamp-use-align-to (and (not (featurep 'xemacs))
+                                          (>= emacs-major-version 22)
+                                          (eq window-system 'x))
+  "*If non-nil, use the :align-to display property to align the stamp.
+This gives better results when variable-width characters (like
+Asian language characters and math symbols) precede a timestamp.
 Unfortunately, it only works in Emacs 22 and when using the X
-Window System."
+Window System.
+
+A side effect of enabling this is that there will only be one
+space before a right timestamp in any saved logs."
   :group 'erc-stamp
   :type 'boolean)
 
@@ -200,18 +206,15 @@ Window System."
     (insert s)))
 
 (defun erc-insert-aligned (string pos)
-  "Insert STRING based on a fraction of the width of the buffer.
-Fraction is roughly (/ POS (window-width)).
+  "Insert STRING at the POSth column.
 
-If `erc-timestamp-right-align-by-pixel' is nil, insert STRING at the
-POSth column, without using pixel coordinates."
-  (if (not erc-timestamp-right-align-by-pixel)
+If `erc-timestamp-use-align-to' is t, use the :align-to display
+property to get to the POSth column."
+  (if (not erc-timestamp-use-align-to)
       (indent-to pos)
     (insert " ")
-    (let ((offset (floor (* (/ (1- pos) (window-width) 1.0)
-                           (nth 2 (window-inside-pixel-edges))))))
-      (put-text-property (1- (point)) (point) 'display
-                        `(space :align-to (,offset)))))
+    (put-text-property (1- (point)) (point) 'display
+                      (list 'space ':align-to pos)))
   (insert string))
 
 (defun erc-insert-timestamp-right (string)
@@ -238,30 +241,26 @@ be printed just before the window-width."
     (forward-char -1);; before the last newline
     (let* ((current-window (get-buffer-window (current-buffer)))
           (pos (cond
-                (erc-timestamp-right-column
-                 (+ erc-timestamp-right-column (length string)))
+                (erc-timestamp-right-column erc-timestamp-right-column)
                 ((and (boundp 'erc-fill-mode)
                       erc-fill-mode
-                      (boundp 'erc-fill-column))
+                      (boundp 'erc-fill-column)
+                      erc-fill-column)
                  (1+ erc-fill-column))
-                (current-window
-                 (- (window-width current-window)
-                    1))
                 (fill-column
                  (1+ fill-column))
                 (t
                  (- (window-width)
+                    (string-width string)
                     1))))
           (from (point))
           (col (current-column))
           indent)
-      ;; deal with variable-width characters
-      (setq pos (- pos (string-width string))
-           ;; The following is a kludge that works with most
-           ;; international input.  It is now only used to calculate
-           ;; whether to move to the next line before inserting a
-           ;; stamp.
-           col (+ col (ceiling (/ (- col (- (point) (point-at-bol))) 1.6))))
+      ;; The following is a kludge used to calculate whether to move
+      ;; to the next line before inserting a stamp.  It allows for
+      ;; some margin of error if what is displayed on the line differs
+      ;; from the number of characters on the line.
+      (setq col (+ col (ceiling (/ (- col (- (point) (point-at-bol))) 1.6))))
       (if (< col pos)
          (erc-insert-aligned string pos)
        (newline)
index 7c8ee6fff623ba98c2ebe336a204406d498ea036..84562e72c2c89fb3ebbb81325a48e2998ea74487 100644 (file)
@@ -24,7 +24,7 @@
 
 ;;; Commentary:
 
-;; This file provides a very simple XDCC file server for the Emacs IRC Client.
+;; This file provides a very simple XDCC file server for ERC.
 
 ;;; Code:
 
index 936fffa252fd42ad5100d6ee2f96fb001f47132e..d444ab2af0faf6d8f8b53f29cdea68299d3c7ab6 100644 (file)
@@ -1719,22 +1719,15 @@ all channel buffers on all servers."
 (defun erc-migrate-modules (mods)
   "Migrate old names of ERC modules to new ones."
   ;; modify `transforms' to specify what needs to be changed
-  ;; each item is in the format '(new .old)
-  (let ((transforms '((pcomplete . completion)))
-       (modules (copy-alist mods)))
-    (dolist (transform transforms)
-      (let ((addp nil))
-       (setq modules (erc-delete-if `(lambda (val)
-                                       (and (eq val ',(car transform))
-                                            (setq addition t)))
-                                    modules))
-       (when addp
-         (add-to-list 'modules (cdr transform)))))
-    (erc-delete-dups modules)))
-
-(defcustom erc-modules '(netsplit fill button match track pcomplete readonly
+  ;; each item is in the format '(old . new)
+  (let ((transforms '((pcomplete . completion))))
+    (erc-delete-dups
+     (mapcar (lambda (m) (or (cdr (assoc m transforms)) m))
+            mods))))
+
+(defcustom erc-modules '(netsplit fill button match track completion readonly
                                  ring autojoin noncommands irccontrols
-                                 stamp)
+                                 stamp list)
   "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
@@ -1755,40 +1748,42 @@ removed from the list will be disabled."
         ;; this test is for the case where erc hasn't been loaded yet
         (when (fboundp 'erc-update-modules)
           (erc-update-modules)))
-  :type '(set :greedy t
-             (const :tag "Set away status automatically" autoaway)
-             (const :tag "Join channels automatically" autojoin)
-             (const :tag "Integrate with Big Brother Database" bbdb)
-             (const :tag "Buttonize URLs, nicknames, and other text" button)
-             (const :tag "Wrap long lines" fill)
-             (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 "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"
-                    notify)
-             (const :tag "Complete nicknames and commands (programmable)"
-                    completion)
-             (const :tag "Complete nicknames and commands (old)" hecomplete)
-             (const :tag "Make displayed lines read-only" readonly)
-             (const :tag "Replace text in messages" replace)
-             (const :tag "Enable an input history" ring)
-             (const :tag "Scroll to the bottom of the buffer" scrolltobottom)
-             (const :tag "Identify to Nickserv (IRC Services) automatically"
-                    services)
-             (const :tag "Convert smileys to pretty icons" smiley)
-             (const :tag "Play sounds when you receive CTCP SOUND requests"
-                    sound)
-             (const :tag "Add timestamps to messages" stamp)
-             (const :tag "Check spelling" spelling)
-             (const :tag "Track channel activity in the mode-line" track)
-             (const :tag "Truncate buffers to a certain size" truncate)
-             (const :tag "Translate morse code in messages" unmorse)
-             (repeat :tag "Others" :inline t symbol))
+  :type
+  '(set
+    :greedy t
+    (const :tag "Set away status automatically" autoaway)
+    (const :tag "Join channels automatically" autojoin)
+    (const :tag "Integrate with Big Brother Database" bbdb)
+    (const :tag "Buttonize URLs, nicknames, and other text" button)
+    (const :tag "Wrap long lines" fill)
+    (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 "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"
+          notify)
+    (const :tag "Complete nicknames and commands (programmable)"
+          completion)
+    (const :tag "Complete nicknames and commands (old)" hecomplete)
+    (const :tag "Make displayed lines read-only" readonly)
+    (const :tag "Replace text in messages" replace)
+    (const :tag "Enable an input history" ring)
+    (const :tag "Scroll to the bottom of the buffer" scrolltobottom)
+    (const :tag "Identify to Nickserv (IRC Services) automatically"
+          services)
+    (const :tag "Convert smileys to pretty icons" smiley)
+    (const :tag "Play sounds when you receive CTCP SOUND requests"
+          sound)
+    (const :tag "Add timestamps to messages" stamp)
+    (const :tag "Check spelling" spelling)
+    (const :tag "Track channel activity in the mode-line" track)
+    (const :tag "Truncate buffers to a certain size" truncate)
+    (const :tag "Translate morse code in messages" unmorse)
+    (repeat :tag "Others" :inline t symbol))
   :group 'erc)
 
 (defun erc-update-modules ()
@@ -1799,14 +1794,11 @@ removed from the list will be disabled."
       (cond
        ;; yuck. perhaps we should bring the filenames into sync?
        ((string= req "erc-completion")
-       (setq req "erc-pcomplete")
-       (setq mod 'completion))
+       (setq req "erc-pcomplete"))
        ((string= req "erc-pcomplete")
-       (setq req "erc-pcomplete")
        (setq mod 'completion))
        ((string= req "erc-autojoin")
-       (setq req "erc-join")
-       (setq mod 'autojoin)))
+       (setq req "erc-join")))
       (condition-case nil
          (require (intern req))
        (error nil))
@@ -6143,6 +6135,26 @@ This function should be on `erc-kill-channel-hook'."
                               (funcall erc-part-reason nil))
                       nil tgt))))
 
+;;; Dealing with `erc-parsed'
+
+(defun erc-get-parsed-vector (point)
+  "Return the whole parsed vector on POINT."
+  (get-text-property point 'erc-parsed))
+
+(defun erc-get-parsed-vector-nick (vect)
+  "Return nickname in the parsed vector VECT."
+  (let* ((untreated-nick (and vect (erc-response.sender vect)))
+        (maybe-nick (when untreated-nick
+                      (car (split-string untreated-nick "!")))))
+    (when (and (not (null maybe-nick))
+              (erc-is-valid-nick-p maybe-nick))
+      untreated-nick)))
+
+(defun erc-get-parsed-vector-type (vect)
+  "Return message type in the parsed vector VECT."
+  (and vect
+       (erc-response.command vect)))
+
 (provide 'erc)
 
 ;;; Deprecated. We might eventually stop requiring the goodies automatically.