diff options
| author | Stefan Monnier | 2012-10-01 23:49:28 -0400 |
|---|---|---|
| committer | Stefan Monnier | 2012-10-01 23:49:28 -0400 |
| commit | 6be9197e60358c3036552eadabd6b49975a87e3d (patch) | |
| tree | 2ccd1abeb086771f5b50a330ebd990ed0ce50209 /lisp | |
| parent | e79186e5b96090f7b2afbb83835c8734f9c470f0 (diff) | |
| download | emacs-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.
Diffstat (limited to 'lisp')
| -rw-r--r-- | lisp/ChangeLog | 4 | ||||
| -rw-r--r-- | lisp/vc/diff-mode.el | 22 |
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 @@ | |||
| 1 | 2012-10-02 Stefan Monnier <monnier@iro.umontreal.ca> | 1 | 2012-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))))) |