summaryrefslogtreecommitdiff
path: root/lisp/hexl.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/hexl.el')
-rw-r--r--lisp/hexl.el27
1 files changed, 15 insertions, 12 deletions
diff --git a/lisp/hexl.el b/lisp/hexl.el
index 39c313cb3da..f63ed0aafa5 100644
--- a/lisp/hexl.el
+++ b/lisp/hexl.el
@@ -1,7 +1,7 @@
;;; hexl.el --- edit a file in a hex dump format using the hexl filter
;; Copyright (C) 1989, 1994, 1998, 2001, 2002, 2003, 2004,
-;; 2005, 2006 Free Software Foundation, Inc.
+;; 2005, 2006, 2007 Free Software Foundation, Inc.
;; Author: Keith Gabryelski <ag@wheaties.ai.mit.edu>
;; Maintainer: FSF
@@ -283,6 +283,7 @@ You can use \\[hexl-find-file] to visit a file in Hexl mode.
(setq font-lock-defaults '(hexl-font-lock-keywords t))
;; Add hooks to rehexlify or dehexlify on various events.
+ (add-hook 'before-revert-hook 'hexl-before-revert-hook nil t)
(add-hook 'after-revert-hook 'hexl-after-revert-hook nil t)
(add-hook 'change-major-mode-hook 'hexl-maybe-dehexlify-buffer nil t)
@@ -317,10 +318,11 @@ You can use \\[hexl-find-file] to visit a file in Hexl mode.
(let ((isearch-search-fun-function nil))
(isearch-search-fun))))
+(defun hexl-before-revert-hook ()
+ (remove-hook 'change-major-mode-hook 'hexl-maybe-dehexlify-buffer t))
+
(defun hexl-after-revert-hook ()
- (setq hexl-max-address (1- (buffer-size)))
- (hexlify-buffer)
- (set-buffer-modified-p nil))
+ (hexl-mode))
(defvar hexl-in-save-buffer nil)
@@ -386,6 +388,7 @@ With arg, don't unhexlify buffer."
(or (bobp) (setq original-point (1+ original-point))))
(goto-char original-point)))
+ (remove-hook 'before-revert-hook 'hexl-before-revert-hook t)
(remove-hook 'after-revert-hook 'hexl-after-revert-hook t)
(remove-hook 'change-major-mode-hook 'hexl-maybe-dehexlify-buffer t)
(remove-hook 'post-command-hook 'hexl-follow-ascii-find t)
@@ -400,9 +403,9 @@ With arg, don't unhexlify buffer."
(hl-line-mode 0))
(when (boundp 'hexl-mode-old-hl-line-range-function)
(setq hl-line-range-function hexl-mode-old-hl-line-range-function))
- (when (boundp hexl-mode-old-hl-line-face)
+ (when (boundp 'hexl-mode-old-hl-line-face)
(setq hl-line-face hexl-mode-old-hl-line-face))
-
+
(setq require-final-newline hexl-mode-old-require-final-newline)
(setq mode-name hexl-mode-old-mode-name)
(setq isearch-search-fun-function hexl-mode-old-isearch-search-fun-function)
@@ -706,10 +709,10 @@ You may also type octal digits, to insert a character with that code."
"Convert a binary buffer to hexl format.
This discards the buffer's undo information."
(interactive)
- (and buffer-undo-list
+ (and (consp buffer-undo-list)
(or (y-or-n-p "Converting to hexl format discards undo info; ok? ")
- (error "Aborted")))
- (setq buffer-undo-list nil)
+ (error "Aborted"))
+ (setq buffer-undo-list nil))
;; Don't decode text in the ASCII part of `hexl' program output.
(let ((coding-system-for-read 'raw-text)
(coding-system-for-write buffer-file-coding-system)
@@ -731,10 +734,10 @@ This discards the buffer's undo information."
"Convert a hexl format buffer to binary.
This discards the buffer's undo information."
(interactive)
- (and buffer-undo-list
+ (and (consp buffer-undo-list)
(or (y-or-n-p "Converting from hexl format discards undo info; ok? ")
- (error "Aborted")))
- (setq buffer-undo-list nil)
+ (error "Aborted"))
+ (setq buffer-undo-list nil))
(let ((coding-system-for-write 'raw-text)
(coding-system-for-read buffer-file-coding-system)
(buffer-undo-list t))