[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] /srv/bzr/emacs/trunk r110816: textmodes/ispell.el: Experim
From: |
Agustin Martin |
Subject: |
[Emacs-diffs] /srv/bzr/emacs/trunk r110816: textmodes/ispell.el: Experimental support for support debugging. |
Date: |
Tue, 06 Nov 2012 17:22:09 +0100 |
User-agent: |
Bazaar (2.5.0) |
------------------------------------------------------------
revno: 110816
committer: Agustin Martin <address@hidden>
branch nick: trunk
timestamp: Tue 2012-11-06 17:22:09 +0100
message:
textmodes/ispell.el: Experimental support for support debugging.
* (ispell-create-debug-buffer): Create a `ispell-debug-buffer' debug
buffer for ispell.
* (ispell-print-if-debug): New function to print stuff to
`ispell-debug-buffer' if debugging is enabled.
* (ispell-region, ispell-process-line): Use `ispell-print-if-debug' to
show some debugging info.
* (ispell-buffer-with-debug): New function that creates a debugging
buffer and calls `ispell-buffer' with debugging enabled. This is also
en example of a possible way to use this system.
modified:
lisp/ChangeLog
lisp/textmodes/ispell.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog 2012-11-06 16:04:42 +0000
+++ b/lisp/ChangeLog 2012-11-06 16:22:09 +0000
@@ -3,6 +3,16 @@
* textmodes/ispell.el (ispell-region): Standard re-indent for better
readability.
+ * textmodes/ispell.el: Experimental support for support debugging.
+ (ispell-create-debug-buffer): Create a `ispell-debug-buffer' debug
+ buffer for ispell.
+ (ispell-print-if-debug): New function to print stuff to
+ `ispell-debug-buffer' if debugging is enabled.
+ (ispell-region, ispell-process-line): Use `ispell-print-if-debug' to
+ show some debugging info.
+ (ispell-buffer-with-debug): New function that creates a debugging
+ buffer and calls `ispell-buffer' with debugging enabled.
+
2012-11-06 Dmitry Antipov <address@hidden>
* emacs-lisp/byte-opt.el (toplevel): Add compare-window-configurations,
=== modified file 'lisp/textmodes/ispell.el'
--- a/lisp/textmodes/ispell.el 2012-11-06 16:04:42 +0000
+++ b/lisp/textmodes/ispell.el 2012-11-06 16:22:09 +0000
@@ -907,6 +907,24 @@
(setq default-directory (expand-file-name "~/")))
(apply 'call-process-region args)))
+(defun ispell-create-debug-buffer (&optional append)
+ "Create an ispell debug buffer for debugging output.
+Use APPEND to append the info to previous buffer if exists,
+otherwise is reset. Returns name of ispell debug buffer.
+See `ispell-buffer-with-debug' for an example of use."
+ (let ((ispell-debug-buffer (get-buffer-create "*ispell-debug*")))
+ (with-current-buffer ispell-debug-buffer
+ (if append
+ (insert
+ (format "-----------------------------------------------\n"))
+ (erase-buffer)))
+ ispell-debug-buffer))
+
+(defsubst ispell-print-if-debug (string)
+ "Print STRING to `ispell-debug-buffer' buffer if enabled."
+ (if (boundp 'ispell-debug-buffer)
+ (with-current-buffer ispell-debug-buffer
+ (insert string))))
;; The preparation of the menu bar menu must be autoloaded
@@ -2902,14 +2920,15 @@
(if (not recheckp)
(ispell-accept-buffer-local-defs)) ; set up dictionary, local words, etc.
(let ((skip-region-start (make-marker))
- (rstart (make-marker)))
+ (rstart (make-marker))
+ (region-type (if (and (= reg-start (point-min)) (= reg-end (point-max)))
+ (buffer-name) "region"))
+ (program-basename (file-name-nondirectory ispell-program-name))
+ (dictionary (or ispell-current-dictionary "default")))
(unwind-protect
(save-excursion
(message "Spell-checking %s using %s with %s dictionary..."
- (if (and (= reg-start (point-min)) (= reg-end (point-max)))
- (buffer-name) "region")
- (file-name-nondirectory ispell-program-name)
- (or ispell-current-dictionary "default"))
+ region-type program-basename dictionary)
;; Returns cursor to original location.
(save-window-excursion
(goto-char reg-start)
@@ -2917,18 +2936,30 @@
(case-fold-search case-fold-search)
(query-fcc t)
in-comment key)
- (let (message-log-max)
- (message "searching for regions to skip"))
+ (ispell-print-if-debug
+ (concat
+ (format
+ "ispell-region: (ispell-skip-region-list):\n%s\n"
+ (ispell-skip-region-list))
+ (format
+ "ispell-region: (ispell-begin-skip-region-regexp):\n%s\n"
+ (ispell-begin-skip-region-regexp))
+ "ispell-region: Search for first region to skip after
(ispell-begin-skip-region-regexp)\n"))
(if (re-search-forward (ispell-begin-skip-region-regexp) reg-end
t)
(progn
(setq key (match-string-no-properties 0))
(set-marker skip-region-start (- (point) (length key)))
- (goto-char reg-start)))
- (let (message-log-max)
- (message
- "Continuing spelling check using %s with %s dictionary..."
- (file-name-nondirectory ispell-program-name)
- (or ispell-current-dictionary "default")))
+ (goto-char reg-start)
+ (ispell-print-if-debug
+ (format "ispell-region: First skip: %s at
(pos,line,column): (%s,%s,%s).\n"
+ key
+ (save-excursion (goto-char skip-region-start)
(point))
+ (line-number-at-pos skip-region-start)
+ (save-excursion (goto-char skip-region-start)
(current-column))))))
+ (ispell-print-if-debug
+ (format
+ "ispell-region: Continue spell-checking with %s and %s
dictionary...\n"
+ program-basename dictionary))
(set-marker rstart reg-start)
(set-marker ispell-region-end reg-end)
(while (and (not ispell-quit)
@@ -2961,7 +2992,13 @@
(setq key (match-string-no-properties 0))
(set-marker skip-region-start
(- (point) (length key)))
- (goto-char rstart))
+ (goto-char rstart)
+ (ispell-print-if-debug
+ (format "ispell-region: Next skip: %s at
(pos,line,column): (%s,%s,%s).\n"
+ key
+ (save-excursion (goto-char
skip-region-start) (point))
+ (line-number-at-pos skip-region-start)
+ (save-excursion (goto-char
skip-region-start) (current-column)))))
(set-marker skip-region-start nil))))
(setq reg-end (max (point)
(if (marker-position skip-region-start)
@@ -2971,6 +3008,10 @@
(ispell-end (min (point-at-eol) reg-end))
(string (ispell-get-line
ispell-start ispell-end in-comment)))
+ (ispell-print-if-debug
+ (format
+ "ispell-region: string pos (%s->%s), eol: %s, [in-comment]:
[%s], [string]: [%s]\n"
+ ispell-start ispell-end (point-at-eol) in-comment string))
(if in-comment ; account for comment chars
added
(setq ispell-start (- ispell-start (length in-comment))
in-comment nil))
@@ -3006,10 +3047,7 @@
;; Only save if successful exit.
(ispell-pdict-save ispell-silently-savep)
(message "Spell-checking %s using %s with %s dictionary...done"
- (if (and (= reg-start (point-min)) (= reg-end (point-max)))
- (buffer-name) "region")
- (file-name-nondirectory ispell-program-name)
- (or ispell-current-dictionary "default"))))))
+ region-type program-basename dictionary)))))
(defun ispell-begin-skip-region-regexp ()
@@ -3256,10 +3294,19 @@
;; Alignment cannot be tracked and this error will occur when
;; `query-replace' makes multiple corrections on the starting line.
(or (ispell-looking-at (car poss))
- ;; This occurs due to filter pipe problems
- (error (concat "Ispell misalignment: word "
- "`%s' point %d; probably incompatible versions")
- (car poss) (marker-position word-start)))
+ ;; This error occurs due to filter pipe problems
+ (let* ((ispell-pipe-word (car poss))
+ (actual-point (marker-position word-start))
+ (actual-line (line-number-at-pos actual-point))
+ (actual-column (save-excursion (goto-char actual-point)
(current-column))))
+ (ispell-print-if-debug
+ (concat
+ "ispell-process-line: Ispell misalignment error:\n"
+ (format " [Word from ispell pipe]: [%s], actual
(point,line,column): (%s,%s,%s)\n"
+ ispell-pipe-word actual-point actual-line
actual-column)))
+ (error (concat "Ispell misalignment: word "
+ "`%s' point %d; probably incompatible
versions")
+ ispell-pipe-word actual-point)))
;; ispell-cmd-loop can go recursive & change buffer
(if ispell-keep-choices-win
(setq replace (ispell-command-loop
@@ -3393,6 +3440,13 @@
(interactive)
(ispell-region (point-min) (point-max)))
+;;;###autoload
+(defun ispell-buffer-with-debug (&optional append)
+ "`ispell-buffer' with some output sent to `ispell-debug-buffer' buffer.
+Use APPEND to append the info to previous buffer if exists."
+ (interactive)
+ (let ((ispell-debug-buffer (ispell-create-debug-buffer append)))
+ (ispell-buffer)))
;;;###autoload
(defun ispell-continue ()
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] /srv/bzr/emacs/trunk r110816: textmodes/ispell.el: Experimental support for support debugging.,
Agustin Martin <=