;;; wcheck-mode.el --- General interface for text checkers
-;; Copyright (C) 2009-2014 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2016 Free Software Foundation, Inc.
;; Author: Teemu Likonen <tlikonen@iki.fi>
;; Maintainer: Teemu Likonen <tlikonen@iki.fi>
;; Created: 2009-07-04
;; URL: https://github.com/tlikonen/wcheck-mode
;; Keywords: text spell check languages ispell
-;; Version: 2014.6.21
+;; Version: 2016.1.30
;; This program is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
The default values for the regular expressions are
- \\=\\<'* (regexp-start)
+ \\=\\<\\='* (regexp-start)
\\w+? (regexp-body)
- '*\\=\\> (regexp-end)
+ \\='*\\=\\> (regexp-end)
Effectively they match a series of word characters defined in
- the effective syntax table. Single quotes (') at the start
+ the effective syntax table. Single quotes (\\=') at the start
and end of a word are excluded. This is probably a good thing
when using `wcheck-mode' as a spelling checker.
to define exceptions to the `regexp-body' match. The default
value is
- \\`'+\\'
+ \\\\=`\\='+\\\\='
which discards the body string if it consists only of single
quotes. This was chosen as the default because the default
(connection . nil)
(face . wcheck-default-face)
(syntax . text-mode-syntax-table)
- (regexp-start . \"\\\\=\\<'*\")
+ (regexp-start . \"\\\\=\\<\\='*\")
(regexp-body . \"\\\\w+?\")
- (regexp-end . \"'*\\\\=\\>\")
- (regexp-discard . \"\\\\`'+\\\\'\")
+ (regexp-end . \"\\='*\\\\=\\>\")
+ (regexp-discard . \"\\\\\\=`\\='+\\\\\\='\")
(case-fold . nil)
(read-or-skip-faces
((emacs-lisp-mode c-mode) read
(when font-lock-mode
(save-excursion
- (jit-lock-fontify-now (min beg end) (max beg end))))
+ (funcall (if (fboundp 'font-lock-ensure)
+ #'font-lock-ensure
+ #'font-lock-fontify-region)
+ (min beg end) (max beg end))))
(wcheck--with-language-data
(language (wcheck--buffer-data-get :buffer buffer :language))
(match-beginning 1) 'invisible buffer
end)))
- ((and (eval face-p)
+ ((and (funcall face-p)
(or (equal regexp-discard "")
(not (string-match
regexp-discard
(goto-char (next-single-char-property-change
(match-beginning 1) 'invisible buffer
end)))
- ((eval face-p)
+ ((funcall face-p)
;; Make an overlay.
(wcheck--make-overlay
buffer ol-face ol-mouse-face ol-help-echo ol-keymap
(mode (nth 1 face-settings))
(faces (nthcdr 2 face-settings)))
(cond ((not font-lock-mode)
- t)
+ (lambda () t))
((eq mode 'read)
- `(wcheck--face-found-p
- ',faces (wcheck--collect-faces
- (match-beginning 1) (match-end 1))))
+ `(lambda ()
+ (wcheck--face-found-p
+ ',faces (wcheck--collect-faces
+ (match-beginning 1) (match-end 1)))))
((eq mode 'skip)
- `(not (wcheck--face-found-p
- ',faces (wcheck--collect-faces
- (match-beginning 1) (match-end 1)))))
- (t t))))
+ `(lambda ()
+ (not (wcheck--face-found-p
+ ',faces (wcheck--collect-faces
+ (match-beginning 1) (match-end 1))))))
+ (t (lambda () t)))))
;;; Miscellaneous low-level functions
(high (nth 0 idle))
(low (nth 1 idle))
(micros (nth 2 idle)))
- (+ (* high
- (expt 2 16))
+ (+ (* high 65536)
low
(/ micros 1000000.0))))
If optional TARGET-KEY is not given return all data associated
with the matching KEY VALUE."
(catch 'answer
- (dolist (item wcheck--buffer-data)
- (when (equal value (aref item (wcheck--buffer-data-key-index key)))
- (throw 'answer (if target-key
- (aref item (wcheck--buffer-data-key-index
- target-key))
- item))))))
+ (let ((index (wcheck--buffer-data-key-index key)))
+ (dolist (item wcheck--buffer-data)
+ (when (equal value (aref item index))
+ (throw 'answer (if target-key
+ (aref item (wcheck--buffer-data-key-index
+ target-key))
+ item)))))))
(defun wcheck--buffer-data-get-all (&optional key)