mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-15 10:30:25 -08:00
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Creator: Michael Olson <mwolson@gnu.org> Install ERC.
This commit is contained in:
parent
33c7860d38
commit
597993cf44
53 changed files with 28894 additions and 8 deletions
93
lisp/erc/erc-spelling.el
Normal file
93
lisp/erc/erc-spelling.el
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
;;; erc-spelling.el --- use flyspell in ERC
|
||||
|
||||
;; Copyright (C) 2005, 2006 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Jorgen Schaefer <forcer@forcix.cx>
|
||||
;; Keywords: irc
|
||||
;; URL: http://www.emacswiki.org/cgi-bin/wiki.pl?ErcSpelling
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
|
||||
;; GNU Emacs is free software; you can redistribute it and/or modify
|
||||
;; it under the terms of the GNU General Public License as published by
|
||||
;; the Free Software Foundation; either version 2, or (at your option)
|
||||
;; any later version.
|
||||
|
||||
;; GNU Emacs is distributed in the hope that it will be useful,
|
||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;; GNU General Public License for more details.
|
||||
|
||||
;; You should have received a copy of the GNU General Public License
|
||||
;; along with GNU Emacs; see the file COPYING. If not, write to the
|
||||
;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
;; Boston, MA 02110-1301, USA.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; This is an ERC module to enable flyspell mode in ERC buffers. This
|
||||
;; ensures correct behavior of flyspell, and even sets up a
|
||||
;; channel-local dictionary if so required.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'erc)
|
||||
(require 'flyspell)
|
||||
|
||||
;;;###autoload (autoload 'erc-spelling-mode "erc-spelling" nil t)
|
||||
(define-erc-module spelling nil
|
||||
"Enable flyspell mode in ERC buffers."
|
||||
;; Use erc-connect-pre-hook instead of erc-mode-hook as pre-hook is
|
||||
;; 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)))
|
||||
(erc-buffer-list)))
|
||||
((remove-hook 'erc-connect-pre-hook 'erc-spelling-init)
|
||||
(mapc (lambda (buffer)
|
||||
(with-current-buffer buffer (flyspell-mode 0)))
|
||||
(erc-buffer-list))))
|
||||
|
||||
(defcustom erc-spelling-dictionaries nil
|
||||
"An alist mapping buffer names to dictionaries.
|
||||
The `car' of every cell is a buffer name, the `cadr' is the
|
||||
string name of an associated dictionary.
|
||||
The dictionary is inherited from server buffers, so if you want a
|
||||
default dictionary for some server, you can use a server buffer
|
||||
name here."
|
||||
:type '(choice (const nil)
|
||||
(repeat (cons (string :tag "Buffer name")
|
||||
(string :tag "Dictionary"))))
|
||||
:group 'erc-spelling)
|
||||
|
||||
(defun erc-spelling-init ()
|
||||
"Enable flyspell mode in an ERC buffer."
|
||||
(let ((name (downcase (buffer-name)))
|
||||
(dicts erc-spelling-dictionaries))
|
||||
(while (and dicts
|
||||
(not (string= name (downcase (caar dicts)))))
|
||||
(setq dicts (cdr dicts)))
|
||||
(setq ispell-local-dictionary
|
||||
(if dicts
|
||||
(cadr (car dicts))
|
||||
(let ((server (erc-server-buffer)))
|
||||
(if server
|
||||
(with-current-buffer server
|
||||
ispell-local-dictionary)
|
||||
nil)))))
|
||||
(setq flyspell-generic-check-word-p 'erc-spelling-flyspell-verify)
|
||||
(flyspell-mode 1))
|
||||
|
||||
(put 'erc-mode
|
||||
'flyspell-mode-predicate
|
||||
'erc-spelling-flyspell-verify)
|
||||
|
||||
(defun erc-spelling-flyspell-verify ()
|
||||
"Flyspell only the input line, nothing else."
|
||||
(> (point)
|
||||
erc-input-marker))
|
||||
|
||||
(provide 'erc-spelling)
|
||||
|
||||
;; arch-tag: 04ae1c46-0fd1-4e1a-8b80-55bfa471c945
|
||||
;;; erc-spelling.el ends here
|
||||
Loading…
Add table
Add a link
Reference in a new issue