summaryrefslogtreecommitdiff
path: root/lisp/erc
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/erc')
-rw-r--r--lisp/erc/erc-backend.el141
-rw-r--r--lisp/erc/erc-button.el10
-rw-r--r--lisp/erc/erc-capab.el3
-rw-r--r--lisp/erc/erc-compat.el5
-rw-r--r--lisp/erc/erc-dcc.el2
-rw-r--r--lisp/erc/erc-goodies.el2
-rw-r--r--lisp/erc/erc-match.el12
-rw-r--r--lisp/erc/erc-stamp.el3
-rw-r--r--lisp/erc/erc-track.el100
-rw-r--r--lisp/erc/erc.el61
10 files changed, 120 insertions, 219 deletions
diff --git a/lisp/erc/erc-backend.el b/lisp/erc/erc-backend.el
index 6d508e203f4..bbb7ccbc99d 100644
--- a/lisp/erc/erc-backend.el
+++ b/lisp/erc/erc-backend.el
@@ -1,4 +1,4 @@
-;;; erc-backend.el --- Backend network communication for ERC
+;;; erc-backend.el --- Backend network communication for ERC -*- lexical-binding:t -*-
;; Copyright (C) 2004-2016 Free Software Foundation, Inc.
@@ -376,7 +376,7 @@ alist."
:type '(repeat (cons (string :tag "Target")
coding-system)))
-(defcustom erc-server-connect-function 'erc-open-network-stream
+(defcustom erc-server-connect-function #'erc-open-network-stream
"Function used to initiate a connection.
It should take same arguments as `open-network-stream' does."
:group 'erc-server
@@ -549,47 +549,45 @@ The current buffer is given by BUFFER."
(defun erc-server-connect (server port buffer)
"Perform the connection and login using the specified SERVER and PORT.
We will store server variables in the buffer given by BUFFER."
- (let ((msg (erc-format-message 'connect ?S server ?p port)))
+ (let ((msg (erc-format-message 'connect ?S server ?p port)) process)
(message "%s" msg)
- (let ((process (funcall erc-server-connect-function
- (format "erc-%s-%s" server port)
- nil server port)))
- (unless (processp process)
- (error "Connection attempt failed"))
+ (setq process (funcall erc-server-connect-function
+ (format "erc-%s-%s" server port) nil server port))
+ (unless (processp process)
+ (error "Connection attempt failed"))
+ ;; Misc server variables
+ (with-current-buffer buffer
+ (setq erc-server-process process)
+ (setq erc-server-quitting nil)
+ (setq erc-server-reconnecting nil)
+ (setq erc-server-timed-out nil)
+ (setq erc-server-banned nil)
+ (setq erc-server-error-occurred nil)
+ (let ((time (erc-current-time)))
+ (setq erc-server-last-sent-time time)
+ (setq erc-server-last-ping-time time)
+ (setq erc-server-last-received-time time))
+ (setq erc-server-lines-sent 0)
+ ;; last peers (sender and receiver)
+ (setq erc-server-last-peers '(nil . nil)))
+ ;; we do our own encoding and decoding
+ (when (fboundp 'set-process-coding-system)
+ (set-process-coding-system process 'raw-text))
+ ;; process handlers
+ (set-process-sentinel process #'erc-process-sentinel)
+ (set-process-filter process #'erc-server-filter-function)
+ (set-process-buffer process buffer)
+ (erc-log "\n\n\n********************************************\n")
+ (message "%s" (erc-format-message
+ 'login ?n
+ (with-current-buffer buffer (erc-current-nick))))
+ ;; wait with script loading until we receive a confirmation (first
+ ;; MOTD line)
+ (if (eq (process-status process) 'connect)
+ ;; waiting for a non-blocking connect - keep the user informed
+ (erc-display-message nil nil buffer "Opening connection..\n")
(message "%s...done" msg)
- ;; Misc server variables
- (with-current-buffer buffer
- (setq erc-server-process process)
- (setq erc-server-quitting nil)
- (setq erc-server-reconnecting nil)
- (setq erc-server-timed-out nil)
- (setq erc-server-banned nil)
- (setq erc-server-error-occurred nil)
- (let ((time (erc-current-time)))
- (setq erc-server-last-sent-time time)
- (setq erc-server-last-ping-time time)
- (setq erc-server-last-received-time time))
- (setq erc-server-lines-sent 0)
- ;; last peers (sender and receiver)
- (setq erc-server-last-peers '(nil . nil)))
- ;; we do our own encoding and decoding
- (when (fboundp 'set-process-coding-system)
- (set-process-coding-system process 'raw-text))
- ;; process handlers
- (set-process-sentinel process 'erc-process-sentinel)
- (set-process-filter process 'erc-server-filter-function)
- (set-process-buffer process buffer)))
- (erc-log "\n\n\n********************************************\n")
- (message "%s" (erc-format-message
- 'login ?n
- (with-current-buffer buffer (erc-current-nick))))
- ;; wait with script loading until we receive a confirmation (first
- ;; MOTD line)
- (if (eq erc-server-connect-function 'open-network-stream-nowait)
- ;; it's a bit unclear otherwise that it's attempting to establish a
- ;; connection
- (erc-display-message nil nil buffer "Opening connection..\n")
- (erc-login)))
+ (erc-login)) ))
(defun erc-server-reconnect ()
"Reestablish the current IRC connection.
@@ -605,11 +603,11 @@ Make sure you are in an ERC buffer when running this."
(setq erc-server-last-sent-time 0)
(setq erc-server-lines-sent 0)
(let ((erc-server-connect-function (or erc-session-connector
- 'erc-open-network-stream)))
+ #'erc-open-network-stream)))
(erc-open erc-session-server erc-session-port erc-server-current-nick
erc-session-user-full-name t erc-session-password)))))
-(defun erc-server-delayed-reconnect (event buffer)
+(defun erc-server-delayed-reconnect (buffer)
(if (buffer-live-p buffer)
(with-current-buffer buffer
(erc-server-reconnect))))
@@ -650,7 +648,6 @@ EVENT is the message received from the closed connection process."
(or erc-server-reconnecting
(and erc-server-auto-reconnect
(not erc-server-banned)
- (not erc-server-error-occurred)
;; make sure we don't infinitely try to reconnect, unless the
;; user wants that
(or (eq erc-server-reconnect-attempts t)
@@ -679,18 +676,18 @@ EVENT is the message received from the closed connection process."
(erc-update-mode-line)
(set-buffer-modified-p nil))
;; reconnect
- (condition-case err
+ (condition-case nil
(progn
(setq erc-server-reconnecting nil
erc-server-reconnect-count (1+ erc-server-reconnect-count))
(setq delay erc-server-reconnect-timeout)
(run-at-time delay nil
- #'erc-server-delayed-reconnect event buffer))
+ #'erc-server-delayed-reconnect buffer))
(error (unless (integerp erc-server-reconnect-attempts)
(message "%s ... %s"
"Reconnecting until we succeed"
"kill the ERC server buffer to stop"))
- (erc-server-delayed-reconnect event buffer))))))))
+ (erc-server-delayed-reconnect buffer))))))))
(defun erc-process-sentinel-1 (event buffer)
"Called when `erc-process-sentinel' has decided that we're disconnecting.
@@ -813,7 +810,7 @@ protection algorithm."
(+ erc-server-flood-penalty
erc-server-flood-last-message))
(erc-log-irc-protocol str 'outbound)
- (condition-case err
+ (condition-case nil
(progn
;; Set encoding just before sending the string
(when (fboundp 'set-process-coding-system)
@@ -880,7 +877,7 @@ protection algorithm."
(erc-log (concat "erc-server-send-queue: "
msg "(" (buffer-name buffer) ")"))
(when (erc-server-process-alive)
- (condition-case err
+ (condition-case nil
;; Set encoding just before sending the string
(progn
(when (fboundp 'set-process-coding-system)
@@ -1071,7 +1068,7 @@ Finds hooks by looking in the `erc-server-responses' hashtable."
(erc-with-server-buffer
(run-hook-with-args 'erc-timer-hook (erc-current-time)))))
-(add-hook 'erc-default-server-functions 'erc-handle-unknown-server-response)
+(add-hook 'erc-default-server-functions #'erc-handle-unknown-server-response)
(defun erc-handle-unknown-server-response (proc parsed)
"Display unknown server response's message."
@@ -1079,7 +1076,7 @@ Finds hooks by looking in the `erc-server-responses' hashtable."
" "
(erc-response.command parsed)
" "
- (mapconcat 'identity (erc-response.command-args parsed)
+ (mapconcat #'identity (erc-response.command-args parsed)
" "))))
(erc-display-message parsed 'notice proc line)))
@@ -1210,10 +1207,11 @@ add things to `%s' instead."
;; value at this point, so I default to nil, and (add-hook)
;; unconditionally
(defvar ,hook-name nil ,(format hook-doc name))
- (add-to-list ',hook-name ',fn-name)
+ (add-hook ',hook-name #',fn-name)
;; Handler function
(defun ,fn-name (proc parsed)
,fn-doc
+ (ignore proc parsed)
,@fn-body)
;; Make find-function and find-variable find them
@@ -1326,7 +1324,7 @@ add things to `%s' instead."
(define-erc-response-handler (MODE)
"Handle server mode changes." nil
(let ((tgt (car (erc-response.command-args parsed)))
- (mode (mapconcat 'identity (cdr (erc-response.command-args parsed))
+ (mode (mapconcat #'identity (cdr (erc-response.command-args parsed))
" ")))
(pcase-let ((`(,nick ,login ,host)
(erc-parse-user (erc-response.sender parsed))))
@@ -1368,11 +1366,11 @@ add things to `%s' instead."
(cons nn (cdr erc-default-recipients)))
(rename-buffer nn t) ; bug#12002
(erc-update-mode-line)
- (add-to-list 'bufs (current-buffer)))))
+ (cl-pushnew (current-buffer) bufs))))
(erc-update-user-nick nick nn host nil nil login)
(cond
((string= nick (erc-current-nick))
- (add-to-list 'bufs (erc-server-buffer))
+ (cl-pushnew (erc-server-buffer) bufs)
(erc-set-current-nick nn)
(erc-update-mode-line)
(setq erc-nick-change-attempt-count 0)
@@ -1493,7 +1491,7 @@ add things to `%s' instead."
;; FIXME: need clean way of specifying extra hooks in
;; define-erc-response-handler.
-(add-hook 'erc-server-PRIVMSG-functions 'erc-auto-query)
+(add-hook 'erc-server-PRIVMSG-functions #'erc-auto-query)
(define-erc-response-handler (QUIT)
"Another user has quit IRC." nil
@@ -1524,7 +1522,7 @@ add things to `%s' instead."
(define-erc-response-handler (WALLOPS)
"Display a WALLOPS message." nil
(let ((message (erc-response.contents parsed)))
- (pcase-let ((`(,nick ,login ,host)
+ (pcase-let ((`(,nick ,_login ,_host)
(erc-parse-user (erc-response.sender parsed))))
(erc-display-message
parsed 'notice nil
@@ -1576,7 +1574,7 @@ certain commands are accepted and more. See documentation for
A server may send more than one 005 message."
nil
- (let ((line (mapconcat 'identity
+ (let ((line (mapconcat #'identity
(setf (erc-response.command-args parsed)
(cdr (erc-response.command-args parsed)))
" ")))
@@ -1595,7 +1593,7 @@ A server may send more than one 005 message."
(define-erc-response-handler (221)
"Display the current user modes." nil
(let* ((nick (car (erc-response.command-args parsed)))
- (modes (mapconcat 'identity
+ (modes (mapconcat #'identity
(cdr (erc-response.command-args parsed)) " ")))
(erc-set-modes nick modes)
(erc-display-message parsed 'notice 'active 's221 ?n nick ?m modes)))
@@ -1623,12 +1621,12 @@ See `erc-display-server-message'." nil
(define-erc-response-handler (275)
"Display secure connection message." nil
- (pcase-let ((`(,nick ,user ,message)
+ (pcase-let ((`(,nick ,_user ,_message)
(cdr (erc-response.command-args parsed))))
(erc-display-message
parsed 'notice 'active 's275
?n nick
- ?m (mapconcat 'identity (cddr (erc-response.command-args parsed))
+ ?m (mapconcat #'identity (cddr (erc-response.command-args parsed))
" "))))
(define-erc-response-handler (290)
@@ -1659,12 +1657,12 @@ See `erc-display-server-message'." nil
(define-erc-response-handler (307)
"Display nick-identified message." nil
- (pcase-let ((`(,nick ,user ,message)
+ (pcase-let ((`(,nick ,_user ,_message)
(cdr (erc-response.command-args parsed))))
(erc-display-message
parsed 'notice 'active 's307
?n nick
- ?m (mapconcat 'identity (cddr (erc-response.command-args parsed))
+ ?m (mapconcat #'identity (cddr (erc-response.command-args parsed))
" "))))
(define-erc-response-handler (311 314)
@@ -1738,12 +1736,12 @@ See `erc-display-server-message'." nil
"Display a message for the 321 event."
(erc-display-message parsed 'notice proc 's321)
nil)
-(add-hook 'erc-server-321-functions 'erc-server-321-message t)
+(add-hook 'erc-server-321-functions #'erc-server-321-message t)
(define-erc-response-handler (322)
"LIST notice." nil
(let ((topic (erc-response.contents parsed)))
- (pcase-let ((`(,channel ,num-users)
+ (pcase-let ((`(,channel ,_num-users)
(cdr (erc-response.command-args parsed))))
(add-to-list 'erc-channel-list (list channel))
(erc-update-channel-topic channel topic))))
@@ -1756,12 +1754,12 @@ See `erc-display-server-message'." nil
(erc-display-message
parsed 'notice proc 's322
?c channel ?u num-users ?t (or topic "")))))
-(add-hook 'erc-server-322-functions 'erc-server-322-message t)
+(add-hook 'erc-server-322-functions #'erc-server-322-message t)
(define-erc-response-handler (324)
"Channel or nick modes." nil
(let ((channel (cadr (erc-response.command-args parsed)))
- (modes (mapconcat 'identity (cddr (erc-response.command-args parsed))
+ (modes (mapconcat #'identity (cddr (erc-response.command-args parsed))
" ")))
(erc-set-modes channel modes)
(erc-display-message
@@ -1803,8 +1801,7 @@ See `erc-display-server-message'." nil
(define-erc-response-handler (331)
"No topic set for channel." nil
- (let ((channel (cadr (erc-response.command-args parsed)))
- (topic (erc-response.contents parsed)))
+ (let ((channel (cadr (erc-response.command-args parsed))))
(erc-display-message parsed 'notice (erc-get-buffer channel proc)
's331 ?c channel)))
@@ -1838,12 +1835,10 @@ See `erc-display-server-message'." nil
(define-erc-response-handler (352)
"WHO notice." nil
- (pcase-let ((`(,channel ,user ,host ,server ,nick ,away-flag)
+ (pcase-let ((`(,channel ,user ,host ,_server ,nick ,away-flag)
(cdr (erc-response.command-args parsed))))
- (let ((full-name (erc-response.contents parsed))
- hopcount)
+ (let ((full-name (erc-response.contents parsed)))
(when (string-match "\\(^[0-9]+ \\)\\(.*\\)$" full-name)
- (setq hopcount (match-string 1 full-name))
(setq full-name (match-string 2 full-name)))
(erc-update-channel-member channel nick nick nil nil nil nil nil nil host user full-name)
(erc-display-message parsed 'notice 'active 's352
diff --git a/lisp/erc/erc-button.el b/lisp/erc/erc-button.el
index 7d509196330..f63ac17ab47 100644
--- a/lisp/erc/erc-button.el
+++ b/lisp/erc/erc-button.el
@@ -390,9 +390,9 @@ REGEXP is the regular expression which matched for this button."
;; merged correctly. If we use overlays, then redisplay will be
;; very slow with lots of buttons. This is why we manually merge
;; face text properties.
- (let ((old (erc-list (get-text-property from 'face)))
+ (let ((old (erc-list (get-text-property from 'font-lock-face)))
(pos from)
- (end (next-single-property-change from 'face nil to))
+ (end (next-single-property-change from 'font-lock-face nil to))
new)
;; old is the face at pos, in list form. It is nil if there is no
;; face at pos. If nil, the new face is FACE. If not nil, the
@@ -400,10 +400,10 @@ REGEXP is the regular expression which matched for this button."
;; where this face changes.
(while (< pos to)
(setq new (if old (cons face old) face))
- (put-text-property pos end 'face new)
+ (put-text-property pos end 'font-lock-face new)
(setq pos end
- old (erc-list (get-text-property pos 'face))
- end (next-single-property-change pos 'face nil to)))))
+ old (erc-list (get-text-property pos 'font-lock-face))
+ end (next-single-property-change pos 'font-lock-face nil to)))))
;; widget-button-click calls with two args, we ignore the first.
;; Since Emacs runs this directly, rather than with
diff --git a/lisp/erc/erc-capab.el b/lisp/erc/erc-capab.el
index 4b956cc01ac..1a93e212100 100644
--- a/lisp/erc/erc-capab.el
+++ b/lisp/erc/erc-capab.el
@@ -191,7 +191,8 @@ PARSED is an `erc-parsed' response struct."
(re-search-forward (regexp-quote nickname) nil t))
(goto-char (match-beginning 0))
(insert (erc-propertize erc-capab-identify-prefix
- 'face 'erc-capab-identify-unidentified))))))
+ 'font-lock-face
+ 'erc-capab-identify-unidentified))))))
(defun erc-capab-identify-get-unidentified-nickname (parsed)
"Return the nickname of the user if unidentified.
diff --git a/lisp/erc/erc-compat.el b/lisp/erc/erc-compat.el
index 5e03d30bf94..e5e63092df3 100644
--- a/lisp/erc/erc-compat.el
+++ b/lisp/erc/erc-compat.el
@@ -54,10 +54,10 @@ See `erc-encoding-coding-alist'."
(set (make-local-variable 'write-file-functions) new-val))
(defvar erc-emacs-build-time
- (if (stringp emacs-build-time)
+ (if (or (stringp emacs-build-time) (not emacs-build-time))
emacs-build-time
(format-time-string "%Y-%m-%d" emacs-build-time))
- "Time at which Emacs was dumped out.")
+ "Time at which Emacs was dumped out, or nil if not available.")
;; Emacs 21 and XEmacs do not have user-emacs-directory, but XEmacs
;; has user-init-directory.
@@ -164,4 +164,3 @@ If START or END is negative, it counts from the end."
;; indent-tabs-mode: t
;; tab-width: 8
;; End:
-
diff --git a/lisp/erc/erc-dcc.el b/lisp/erc/erc-dcc.el
index 1bf380d47d1..9152527d4be 100644
--- a/lisp/erc/erc-dcc.el
+++ b/lisp/erc/erc-dcc.el
@@ -1205,7 +1205,7 @@ other client."
(setq posn (match-end 0))
(erc-display-message
nil nil proc
- 'dcc-chat-privmsg ?n (erc-propertize erc-dcc-from 'face
+ 'dcc-chat-privmsg ?n (erc-propertize erc-dcc-from 'font-lock-face
'erc-nick-default-face) ?m line))
(setq erc-dcc-unprocessed-output (substring str posn)))))
diff --git a/lisp/erc/erc-goodies.el b/lisp/erc/erc-goodies.el
index 2a1d18720aa..afe8c555ce3 100644
--- a/lisp/erc/erc-goodies.el
+++ b/lisp/erc/erc-goodies.el
@@ -475,7 +475,7 @@ to a region in the current buffer."
(font-lock-prepend-text-property
from
to
- 'face
+ 'font-lock-face
(append (if boldp
'(erc-bold-face)
nil)
diff --git a/lisp/erc/erc-match.el b/lisp/erc/erc-match.el
index 1313ecc6072..4104a433995 100644
--- a/lisp/erc/erc-match.el
+++ b/lisp/erc/erc-match.el
@@ -486,7 +486,7 @@ Use this defun with `erc-insert-modify-hook'."
nick-end)
(erc-put-text-property
nick-beg nick-end
- 'face match-face (current-buffer)))
+ 'font-lock-face match-face (current-buffer)))
;; Highlight the nick of the message, or the current
;; nick if there's no nick in the message (e.g. /NAMES
;; output)
@@ -495,17 +495,17 @@ Use this defun with `erc-insert-modify-hook'."
(if nick-end
(erc-put-text-property
nick-beg nick-end
- 'face match-face (current-buffer))
+ 'font-lock-face match-face (current-buffer))
(goto-char (+ 2 (or nick-end
(point-min))))
(while (re-search-forward match-regex nil t)
(erc-put-text-property (match-beginning 0) (match-end 0)
- 'face match-face))))
+ 'font-lock-face match-face))))
;; Highlight the whole message
((eq match-htype 'all)
(erc-put-text-property
(point-min) (point-max)
- 'face match-face (current-buffer)))
+ 'font-lock-face match-face (current-buffer)))
;; Highlight all occurrences of the word to be
;; highlighted.
((and (string= match-type "keyword")
@@ -521,7 +521,7 @@ Use this defun with `erc-insert-modify-hook'."
(while (re-search-forward regex nil t)
(erc-put-text-property
(match-beginning 0) (match-end 0)
- 'face face))))
+ 'font-lock-face face))))
match-regex))
;; Highlight all occurrences of our nick.
((and (string= match-type "current-nick")
@@ -530,7 +530,7 @@ Use this defun with `erc-insert-modify-hook'."
(point-min))))
(while (re-search-forward match-regex nil t)
(erc-put-text-property (match-beginning 0) (match-end 0)
- 'face match-face)))
+ 'font-lock-face match-face)))
;; Else twiddle your thumbs.
(t nil))
(run-hook-with-args
diff --git a/lisp/erc/erc-stamp.el b/lisp/erc/erc-stamp.el
index a4c91ca9fb5..ee4e1d2fb6d 100644
--- a/lisp/erc/erc-stamp.el
+++ b/lisp/erc/erc-stamp.el
@@ -347,7 +347,8 @@ changed, it will then print it off to the right."
Return the empty string if FORMAT is nil."
(if format
(let ((ts (format-time-string format time)))
- (erc-put-text-property 0 (length ts) 'face 'erc-timestamp-face ts)
+ (erc-put-text-property 0 (length ts)
+ 'font-lock-face 'erc-timestamp-face ts)
(erc-put-text-property 0 (length ts) 'invisible 'timestamp ts)
(erc-put-text-property 0 (length ts)
'isearch-open-invisible 'timestamp ts)
diff --git a/lisp/erc/erc-track.el b/lisp/erc/erc-track.el
index 4d8feb52759..a6d72d07d1d 100644
--- a/lisp/erc/erc-track.el
+++ b/lisp/erc/erc-track.el
@@ -480,99 +480,6 @@ START is the minimum length of the name used."
(setq result other)))
result))
-;;; Test:
-
-(cl-assert
- (and
- ;; verify examples from the doc strings
- (equal (let ((erc-track-shorten-aggressively nil))
- (erc-unique-channel-names
- '("#emacs" "#vi" "#electronica" "#folk")
- '("#emacs" "#vi")))
- '("#em" "#vi")) ; emacs is different from electronica
- (equal (let ((erc-track-shorten-aggressively t))
- (erc-unique-channel-names
- '("#emacs" "#vi" "#electronica" "#folk")
- '("#emacs" "#vi")))
- '("#em" "#v")) ; vi is shortened by one letter
- (equal (let ((erc-track-shorten-aggressively 'max))
- (erc-unique-channel-names
- '("#emacs" "#vi" "#electronica" "#folk")
- '("#emacs" "#vi")))
- '("#e" "#v")) ; emacs need not be different from electronica
- (equal (let ((erc-track-shorten-aggressively nil))
- (erc-unique-channel-names
- '("#linux-de" "#linux-fr")
- '("#linux-de" "#linux-fr")))
- '("#linux-de" "#linux-fr")) ; shortening by one letter is too aggressive
- (equal (let ((erc-track-shorten-aggressively t))
- (erc-unique-channel-names
- '("#linux-de" "#linux-fr")
- '("#linux-de" "#linux-fr")))
- '("#linux-d" "#linux-f")); now we want to be aggressive
- ;; specific problems
- (equal (let ((erc-track-shorten-aggressively nil))
- (erc-unique-channel-names
- '("#dunnet" "#lisp" "#sawfish" "#fsf" "#guile"
- "#testgnome" "#gnu" "#fsbot" "#hurd" "#hurd-bunny"
- "#emacs")
- '("#hurd-bunny" "#hurd" "#sawfish" "#lisp")))
- '("#hurd-" "#hurd" "#s" "#l"))
- (equal (let ((erc-track-shorten-aggressively nil))
- (erc-unique-substrings
- '("#emacs" "#vi" "#electronica" "#folk")))
- '("#em" "#vi" "#el" "#f"))
- (equal (let ((erc-track-shorten-aggressively t))
- (erc-unique-substrings
- '("#emacs" "#vi" "#electronica" "#folk")))
- '("#em" "#v" "#el" "#f"))
- (equal (let ((erc-track-shorten-aggressively nil))
- (erc-unique-channel-names
- '("#emacs" "#burse" "+linux.de" "#starwars"
- "#bitlbee" "+burse" "#ratpoison")
- '("+linux.de" "#starwars" "#burse")))
- '("+l" "#s" "#bu"))
- (equal (let ((erc-track-shorten-aggressively nil))
- (erc-unique-channel-names
- '("fsbot" "#emacs" "deego")
- '("fsbot")))
- '("fs"))
- (equal (let ((erc-track-shorten-aggressively nil))
- (erc-unique-channel-names
- '("fsbot" "#emacs" "deego")
- '("fsbot")
- (lambda (s)
- (> (length s) 4))
- 1))
- '("f"))
- (equal (let ((erc-track-shorten-aggressively nil))
- (erc-unique-channel-names
- '("fsbot" "#emacs" "deego")
- '("fsbot")
- (lambda (s)
- (> (length s) 4))
- 2))
- '("fs"))
- (let ((erc-track-shorten-aggressively nil))
- (equal (erc-unique-channel-names '("deego" "#hurd" "#hurd-bunny" "#emacs")
- '("#hurd" "#hurd-bunny"))
- '("#hurd" "#hurd-")))
- ;; general examples
- (let ((erc-track-shorten-aggressively t))
- (and (equal (erc-unique-substring-1 "abc" '("ab" "abcd")) "abcd")
- (not (erc-unique-substring-1 "a" '("xyz" "xab")))
- (equal (erc-unique-substrings '("abc" "xyz" "xab"))
- '("ab" "xy" "xa"))
- (equal (erc-unique-substrings '("abc" "abcdefg"))
- '("abc" "abcd"))))
- (let ((erc-track-shorten-aggressively nil))
- (and (equal (erc-unique-substring-1 "abc" '("ab" "abcd")) "abcd")
- (not (erc-unique-substring-1 "a" '("xyz" "xab")))
- (equal (erc-unique-substrings '("abc" "xyz" "xab"))
- '("abc" "xyz" "xab"))
- (equal (erc-unique-substrings '("abc" "abcdefg"))
- '("abc" "abcd"))))))
-
;;; Minor mode
;; Play nice with other IRC clients (and Emacs development rules) by
@@ -981,13 +888,6 @@ is in `erc-mode'."
(push cur faces)))
faces))
-(cl-assert
- (let ((str "is bold"))
- (put-text-property 3 (length str)
- 'face '(bold erc-current-nick-face)
- str)
- (erc-faces-in str)))
-
;;; Buffer switching
(defvar erc-track-last-non-erc-buffer nil
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index 1a126a80343..8501e2cba7d 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -1474,6 +1474,10 @@ Defaults to the server buffer."
(defconst erc-default-port 6667
"IRC port to use if it cannot be detected otherwise.")
+(defconst erc-default-port-tls 6697
+ "IRC port to use for encrypted connections if it cannot be
+ detected otherwise.")
+
(defcustom erc-join-buffer 'buffer
"Determines how to display a newly created IRC buffer.
@@ -2200,7 +2204,8 @@ be invoked for the values of the other parameters."
(defun erc-tls (&rest r)
"Interactively select TLS connection parameters and run ERC.
Arguments are the same as for `erc'."
- (interactive (erc-select-read-args))
+ (interactive (let ((erc-default-port erc-default-port-tls))
+ (erc-select-read-args)))
(let ((erc-server-connect-function 'erc-open-tls-stream))
(apply #'erc r)))
@@ -2271,7 +2276,7 @@ and appears in face `erc-input-face' in the buffer."
(aref string
(1- (length string))))
"\n"))
- 'face 'erc-input-face)))))
+ 'font-lock-face 'erc-input-face)))))
(let ((orig-win (selected-window))
(debug-buffer-window (get-buffer-window (current-buffer) t)))
(when debug-buffer-window
@@ -2461,9 +2466,9 @@ See also `erc-make-notice'."
(t
(erc-put-text-property
0 (length string)
- 'face (or (intern-soft
- (concat "erc-" (symbol-name type) "-face"))
- "erc-default-face")
+ 'font-lock-face (or (intern-soft
+ (concat "erc-" (symbol-name type) "-face"))
+ "erc-default-face")
string)
string)))
@@ -3576,7 +3581,7 @@ the message given by REASON."
(defun erc-cmd-SV ()
"Say the current ERC and Emacs version into channel."
- (erc-send-message (format "I'm using ERC with %s %s (%s%s) of %s."
+ (erc-send-message (format "I'm using ERC with %s %s (%s%s)%s."
(if (featurep 'xemacs) "XEmacs" "GNU Emacs")
emacs-version
system-configuration
@@ -3597,7 +3602,9 @@ the message given by REASON."
x-toolkit-scroll-bars)))
"")
(if (featurep 'multi-tty) ", multi-tty" ""))
- erc-emacs-build-time))
+ (if erc-emacs-build-time
+ (concat " of " erc-emacs-build-time)
+ "")))
t)
(defun erc-cmd-SM ()
@@ -3890,7 +3897,7 @@ If FACE is non-nil, it will be used to propertize the prompt. If it is nil,
'front-sticky t
'read-only t))
(erc-put-text-property 0 (1- (length prompt))
- 'face (or face 'erc-prompt-face)
+ 'font-lock-face (or face 'erc-prompt-face)
prompt)
(insert prompt))
;; Set the input marker
@@ -4253,11 +4260,11 @@ and as second argument the event parsed as a vector."
(nick-face (if privp 'erc-nick-msg-face 'erc-nick-default-face))
(msg-face (if privp 'erc-direct-msg-face 'erc-default-face)))
;; add text properties to text before the nick, the nick and after the nick
- (erc-put-text-property 0 (length mark-s) 'face msg-face str)
+ (erc-put-text-property 0 (length mark-s) 'font-lock-face msg-face str)
(erc-put-text-property (length mark-s) (+ (length mark-s) (length nick))
- 'face nick-face str)
+ 'font-lock-face nick-face str)
(erc-put-text-property (+ (length mark-s) (length nick)) (length str)
- 'face msg-face str)
+ 'font-lock-face msg-face str)
str))
(defcustom erc-format-nick-function 'erc-format-nick
@@ -4294,7 +4301,7 @@ also `erc-format-nick-function'."
(let ((nick (erc-server-user-nickname user)))
(concat (erc-propertize
(erc-get-user-mode-prefix nick)
- 'face 'erc-nick-prefix-face)
+ 'font-lock-face 'erc-nick-prefix-face)
nick))))
(defun erc-format-my-nick ()
@@ -4305,12 +4312,12 @@ also `erc-format-nick-function'."
(nick (erc-current-nick))
(mode (erc-get-user-mode-prefix nick)))
(concat
- (erc-propertize open 'face 'erc-default-face)
- (erc-propertize mode 'face 'erc-my-nick-prefix-face)
- (erc-propertize nick 'face 'erc-my-nick-face)
- (erc-propertize close 'face 'erc-default-face)))
+ (erc-propertize open 'font-lock-face 'erc-default-face)
+ (erc-propertize mode 'font-lock-face 'erc-my-nick-prefix-face)
+ (erc-propertize nick 'font-lock-face 'erc-my-nick-face)
+ (erc-propertize close 'font-lock-face 'erc-default-face)))
(let ((prefix "> "))
- (erc-propertize prefix 'face 'erc-default-face))))
+ (erc-propertize prefix 'font-lock-face 'erc-default-face))))
(defun erc-echo-notice-in-default-buffer (s parsed buffer _sender)
"Echos a private notice in the default buffer, namely the
@@ -5231,10 +5238,10 @@ See also variable `erc-notice-highlight-type'."
(cond
((eq erc-notice-highlight-type 'prefix)
(erc-put-text-property 0 (length erc-notice-prefix)
- 'face 'erc-notice-face s)
+ 'font-lock-face 'erc-notice-face s)
s)
((eq erc-notice-highlight-type 'all)
- (erc-put-text-property 0 (length s) 'face 'erc-notice-face s)
+ (erc-put-text-property 0 (length s) 'font-lock-face 'erc-notice-face s)
s)
(t s)))
@@ -5246,7 +5253,7 @@ See also variable `erc-notice-highlight-type'."
(defun erc-highlight-error (s)
"Highlight error message S and return it."
- (erc-put-text-property 0 (length s) 'face 'erc-error-face s)
+ (erc-put-text-property 0 (length s) 'font-lock-face 'erc-error-face s)
s)
(defun erc-put-text-property (start end property value &optional object)
@@ -5436,7 +5443,7 @@ This returns non-nil only if we actually send anything."
(let ((beg (point)))
(insert line)
(erc-put-text-property beg (point)
- 'face 'erc-command-indicator-face)
+ 'font-lock-face 'erc-command-indicator-face)
(insert "\n"))
(when (processp erc-server-process)
(set-marker (process-mark erc-server-process) (point)))
@@ -5456,7 +5463,7 @@ current position."
(let ((beg (point)))
(insert line)
(erc-put-text-property beg (point)
- 'face 'erc-input-face))
+ 'font-lock-face 'erc-input-face))
(insert "\n")
(when (processp erc-server-process)
(set-marker (process-mark erc-server-process) (point)))
@@ -5880,7 +5887,7 @@ user input."
(setq args (substring args 1)))
;; prepare the prompt string for echo
(erc-put-text-property 0 (length sp)
- 'face 'erc-command-indicator-face sp)
+ 'font-lock-face 'erc-command-indicator-face sp)
(while lines
(setq s (car lines))
(erc-log (concat "erc-load-script: CMD: " s))
@@ -5890,7 +5897,7 @@ user input."
erc-script-echo)
(progn
(erc-put-text-property 0 (length line)
- 'face 'erc-input-face line)
+ 'font-lock-face 'erc-input-face line)
(erc-display-line (concat sp line) cb)))))
(setq lines (cdr lines)))))
@@ -6000,10 +6007,8 @@ Returns a list of the form (HIGH LOW), compatible with Emacs time format."
(list (truncate (/ n 65536))
(truncate (mod n 65536)))))
-(defalias 'erc-emacs-time-to-erc-time
- (if (featurep 'xemacs) 'time-to-seconds 'float-time))
-
-(defalias 'erc-current-time 'erc-emacs-time-to-erc-time)
+(defalias 'erc-emacs-time-to-erc-time 'float-time)
+(defalias 'erc-current-time 'float-time)
(defun erc-time-diff (t1 t2)
"Return the time difference in seconds between T1 and T2."