Commit 0b4e93f1 authored by Leo Liu's avatar Leo Liu

Handle the case when re-search-backward errs

because point is not located after rcirc-prompt-end-marker.
parent 90346de2
2011-03-22 Leo Liu <sdl.web@gmail.com>
* net/rcirc.el (rcirc-completion-at-point): Return nil if point is
located before rcirc-prompt-end-marker.
(rcirc-complete): Error if point is not after rcirc prompt.
Handle the case when table is nil.
2011-03-22 Chong Yidong <cyd@stupidchicken.com>
* custom.el (custom--inhibit-theme-enable): Make it affect only
......
......@@ -828,18 +828,21 @@ The list is updated automatically by `defun-rcirc-command'.")
(defun rcirc-completion-at-point ()
"Function used for `completion-at-point-functions' in `rcirc-mode'."
(let* ((beg (save-excursion
(if (re-search-backward " " rcirc-prompt-end-marker t)
(1+ (point))
rcirc-prompt-end-marker)))
(table (if (and (= beg rcirc-prompt-end-marker)
(eq (char-after beg) ?/))
(delete-dups
(nconc
(sort (copy-sequence rcirc-client-commands) 'string-lessp)
(sort (copy-sequence rcirc-server-commands) 'string-lessp)))
(rcirc-channel-nicks (rcirc-buffer-process) rcirc-target))))
(list beg (point) table)))
(and (rcirc-looking-at-input)
(let* ((beg (save-excursion
(if (re-search-backward " " rcirc-prompt-end-marker t)
(1+ (point))
rcirc-prompt-end-marker)))
(table (if (and (= beg rcirc-prompt-end-marker)
(eq (char-after beg) ?/))
(delete-dups
(nconc (sort (copy-sequence rcirc-client-commands)
'string-lessp)
(sort (copy-sequence rcirc-server-commands)
'string-lessp)))
(rcirc-channel-nicks (rcirc-buffer-process)
rcirc-target))))
(list beg (point) table))))
(defvar rcirc-completions nil)
(defvar rcirc-completion-start nil)
......@@ -848,6 +851,8 @@ The list is updated automatically by `defun-rcirc-command'.")
"Cycle through completions from list of nicks in channel or IRC commands.
IRC command completion is performed only if '/' is the first input char."
(interactive)
(unless (rcirc-looking-at-input)
(error "Point not located after rcirc prompt"))
(if (eq last-command this-command)
(setq rcirc-completions
(append (cdr rcirc-completions) (list (car rcirc-completions))))
......@@ -855,9 +860,10 @@ IRC command completion is performed only if '/' is the first input char."
(table (rcirc-completion-at-point)))
(setq rcirc-completion-start (car table))
(setq rcirc-completions
(all-completions (buffer-substring rcirc-completion-start
(cadr table))
(nth 2 table)))))
(and rcirc-completion-start
(all-completions (buffer-substring rcirc-completion-start
(cadr table))
(nth 2 table))))))
(let ((completion (car rcirc-completions)))
(when completion
(delete-region rcirc-completion-start (point))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment