diff options
Diffstat (limited to 'lisp/erc/erc.el')
-rw-r--r-- | lisp/erc/erc.el | 120 |
1 files changed, 66 insertions, 54 deletions
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el index 936fffa252f..d444ab2af0f 100644 --- a/lisp/erc/erc.el +++ b/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))) - -(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. |