mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-30 12:21:25 -08:00
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-73
Creator: Michael Olson <mwolson@gnu.org> Merge from erc--emacs--0
This commit is contained in:
parent
f828c6fc00
commit
9cc8d0b62e
9 changed files with 176 additions and 105 deletions
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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'."
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
"-"
|
||||
|
|
|
|||
|
|
@ -41,11 +41,13 @@
|
|||
;; 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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
||||
|
|
|
|||
118
lisp/erc/erc.el
118
lisp/erc/erc.el
|
|
@ -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)))
|
||||
;; 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 pcomplete readonly
|
||||
(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.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue