1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-27 07:37:33 +00:00

* diff-mode.el (diff-mode): Set buffer-read-only to t when

diff-default-read-only is non-nill.

	* diff.el (diff-sentinel, diff): Set inhibit-read-only to t when
	modifying the *Diff* buffer.
	(diff-process-filter): New filter function for diff process that
	sets inhibit-read-only to t when modifying the *Diff* buffer.
This commit is contained in:
Chong Yidong 2006-06-06 14:06:13 +00:00
parent 2e8e9e9195
commit 53dd481c3f
3 changed files with 35 additions and 10 deletions

View File

@ -1,3 +1,13 @@
2006-06-06 Chong Yidong <cyd@stupidchicken.com>
* diff-mode.el (diff-mode): Set buffer-read-only to t when
diff-default-read-only is non-nill.
* diff.el (diff-sentinel, diff): Set inhibit-read-only to t when
modifying the *Diff* buffer.
(diff-process-filter): New filter function for diff process that
sets inhibit-read-only to t when modifying the *Diff* buffer.
2006-06-06 Carsten Dominik <dominik@science.uva.nl>
* textmodes/org.el: (org-archive-subtree): Use end-of-subtree as

View File

@ -993,8 +993,7 @@ a diff with \\[diff-reverse-direction]."
;; compile support
(set (make-local-variable 'next-error-function) 'diff-next-error)
(when (and (> (point-max) (point-min)) diff-default-read-only)
(toggle-read-only t))
(setq buffer-read-only diff-default-read-only)
;; setup change hooks
(if (not diff-update-on-the-fly)
(add-hook 'write-contents-functions 'diff-write-contents-hooks nil t)

View File

@ -67,9 +67,10 @@ CODE is the exit code of the process. It should be 0 iff no diffs were found."
(if diff-new-temp-file (delete-file diff-new-temp-file))
(save-excursion
(goto-char (point-max))
(insert (format "\nDiff finished%s. %s\n"
(if (equal 0 code) " (no differences)" "")
(current-time-string)))))
(let ((inhibit-read-only t))
(insert (format "\nDiff finished%s. %s\n"
(if (equal 0 code) " (no differences)" "")
(current-time-string))))))
;;;###autoload
(defun diff (old new &optional switches no-async)
@ -119,7 +120,8 @@ With prefix arg, prompt for diff switches."
(set-buffer buf)
(setq buffer-read-only nil)
(buffer-disable-undo (current-buffer))
(erase-buffer)
(let ((inhibit-read-only t))
(erase-buffer))
(buffer-enable-undo (current-buffer))
(diff-mode)
(set (make-local-variable 'revert-buffer-function)
@ -128,21 +130,35 @@ With prefix arg, prompt for diff switches."
(set (make-local-variable 'diff-old-temp-file) old-alt)
(set (make-local-variable 'diff-new-temp-file) new-alt)
(setq default-directory thisdir)
(insert command "\n")
(let ((inhibit-read-only t))
(insert command "\n"))
(if (and (not no-async) (fboundp 'start-process))
(progn
(setq proc (start-process "Diff" buf shell-file-name
shell-command-switch command))
(set-process-filter proc 'diff-process-filter)
(set-process-sentinel
proc (lambda (proc msg)
(with-current-buffer (process-buffer proc)
(diff-sentinel (process-exit-status proc))))))
;; Async processes aren't available.
(diff-sentinel
(call-process shell-file-name nil buf nil
shell-command-switch command))))
(let ((inhibit-read-only t))
(diff-sentinel
(call-process shell-file-name nil buf nil
shell-command-switch command)))))
buf))
(defun diff-process-filter (proc string)
(with-current-buffer (process-buffer proc)
(let ((moving (= (point) (process-mark proc))))
(save-excursion
;; Insert the text, advancing the process marker.
(goto-char (process-mark proc))
(let ((inhibit-read-only t))
(insert string))
(set-marker (process-mark proc) (point)))
(if moving (goto-char (process-mark proc))))))
;;;###autoload
(defun diff-backup (file &optional switches)
"Diff this file with its backup file or vice versa.