aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Monnier2012-10-01 23:49:28 -0400
committerStefan Monnier2012-10-01 23:49:28 -0400
commit6be9197e60358c3036552eadabd6b49975a87e3d (patch)
tree2ccd1abeb086771f5b50a330ebd990ed0ce50209
parente79186e5b96090f7b2afbb83835c8734f9c470f0 (diff)
downloademacs-6be9197e60358c3036552eadabd6b49975a87e3d.tar.gz
emacs-6be9197e60358c3036552eadabd6b49975a87e3d.zip
* lisp/vc/diff-mode.el (diff--auto-refine-data): New var.
(diff-hunk): Use it to delay refinement. (diff-mode): Remove overlays when we turn off font-lock.
-rw-r--r--lisp/ChangeLog4
-rw-r--r--lisp/vc/diff-mode.el22
2 files changed, 24 insertions, 2 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index fe1bde3b45a..ec975c42e01 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,5 +1,9 @@
12012-10-02 Stefan Monnier <monnier@iro.umontreal.ca> 12012-10-02 Stefan Monnier <monnier@iro.umontreal.ca>
2 2
3 * vc/diff-mode.el (diff--auto-refine-data): New var.
4 (diff-hunk): Use it to delay refinement.
5 (diff-mode): Remove overlays when we turn off font-lock.
6
3 * textmodes/table.el: Use lexical-binding, dolist, define-minor-mode. 7 * textmodes/table.el: Use lexical-binding, dolist, define-minor-mode.
4 (table-initialize-table-fixed-width-mode) 8 (table-initialize-table-fixed-width-mode)
5 (table-set-table-fixed-width-mode): Remove functions. 9 (table-set-table-fixed-width-mode): Remove functions.
diff --git a/lisp/vc/diff-mode.el b/lisp/vc/diff-mode.el
index 586dd2b75e2..0e79c962b47 100644
--- a/lisp/vc/diff-mode.el
+++ b/lisp/vc/diff-mode.el
@@ -565,11 +565,24 @@ next hunk if TRY-HARDER is non-nil; otherwise signal an error."
565 (goto-char (match-beginning 1)) 565 (goto-char (match-beginning 1))
566 (beginning-of-line))) 566 (beginning-of-line)))
567 567
568(defvar diff--auto-refine-data nil)
569
568;; Define diff-{hunk,file}-{prev,next} 570;; Define diff-{hunk,file}-{prev,next}
569(easy-mmode-define-navigation 571(easy-mmode-define-navigation
570 diff-hunk diff-hunk-header-re "hunk" diff-end-of-hunk diff-restrict-view 572 diff-hunk diff-hunk-header-re "hunk" diff-end-of-hunk diff-restrict-view
571 (if diff-auto-refine-mode 573 (when diff-auto-refine-mode
572 (condition-case-unless-debug nil (diff-refine-hunk) (error nil)))) 574 (setq diff--auto-refine-data (cons (current-buffer) (point-marker)))
575 (run-at-time 0.0 nil
576 (lambda ()
577 (when diff--auto-refine-data
578 (let ((buffer (car diff--auto-refine-data))
579 (point (cdr diff--auto-refine-data)))
580 (setq diff--auto-refine-data nil)
581 (with-local-quit
582 (when (buffer-live-p buffer)
583 (with-current-buffer buffer
584 (goto-char point)
585 (diff-refine-hunk))))))))))
573 586
574(easy-mmode-define-navigation 587(easy-mmode-define-navigation
575 diff-file diff-file-header-re "file" diff-end-of-file) 588 diff-file diff-file-header-re "file" diff-end-of-file)
@@ -1317,6 +1330,9 @@ a diff with \\[diff-reverse-direction].
1317 \\{diff-mode-map}" 1330 \\{diff-mode-map}"
1318 1331
1319 (set (make-local-variable 'font-lock-defaults) diff-font-lock-defaults) 1332 (set (make-local-variable 'font-lock-defaults) diff-font-lock-defaults)
1333 (add-hook 'font-lock-mode-hook
1334 (lambda () (remove-overlays nil nil 'diff-mode 'fine))
1335 nil 'local)
1320 (set (make-local-variable 'outline-regexp) diff-outline-regexp) 1336 (set (make-local-variable 'outline-regexp) diff-outline-regexp)
1321 (set (make-local-variable 'imenu-generic-expression) 1337 (set (make-local-variable 'imenu-generic-expression)
1322 diff-imenu-generic-expression) 1338 diff-imenu-generic-expression)
@@ -1390,6 +1406,8 @@ modified lines of the diff."
1390 (set (make-local-variable 'whitespace-style) '(face trailing)) 1406 (set (make-local-variable 'whitespace-style) '(face trailing))
1391 (let ((style (save-excursion 1407 (let ((style (save-excursion
1392 (goto-char (point-min)) 1408 (goto-char (point-min))
1409 ;; FIXME: For buffers filled from async processes, this search
1410 ;; will simply fail because the buffer is still empty :-(
1393 (when (re-search-forward diff-hunk-header-re nil t) 1411 (when (re-search-forward diff-hunk-header-re nil t)
1394 (goto-char (match-beginning 0)) 1412 (goto-char (match-beginning 0))
1395 (diff-hunk-style))))) 1413 (diff-hunk-style)))))