* lisp/view.el (view-mode-exit): When view-read-only is non-nil,
don't exit View mode if doing so would leave behind a read-only
buffer not in View mode.
(View-exit): Bind view-read-only to nil to override the above.
(cherry picked from commit
3d04506cf3d0f020f40043d2b8e8be604ba1c2c5)
current buffer."
(when view-mode
(let ((buffer (window-buffer)))
- (unless view-no-disable-on-exit
+ (unless (or view-no-disable-on-exit
+ ;; When `view-read-only' is non-nil, we don't want to
+ ;; leave a buffer read-only but not in `view-mode'.
+ (and view-read-only view-old-buffer-read-only))
(view-mode -1))
(unless exit-only
(defun View-exit ()
"Exit View mode but stay in current buffer."
(interactive)
- (view-mode-exit t))
+ (let ((view-read-only nil)
+ (view-no-disable-on-exit nil))
+ (view-mode-exit t)))
;;;###autoload
(defun View-exit-and-edit ()