;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
;;; Commentary:
(defvar hexl-mode-old-isearch-search-fun-function)
(defvar hexl-mode-old-require-final-newline)
(defvar hexl-mode-old-syntax-table)
+(defvar hexl-mode-old-font-lock-keywords)
(defvar hexl-ascii-overlay nil
"Overlay used to highlight ASCII element corresponding to current point.")
(make-variable-buffer-local 'hexl-ascii-overlay)
+(defvar hexl-font-lock-keywords
+ '(("^\\([0-9a-f]+:\\).\\{40\\} \\(.+$\\)"
+ ;; "^\\([0-9a-f]+:\\).+ \\(.+$\\)"
+ (1 'hexl-address-area t t)
+ (2 'hexl-ascii-area t t)))
+ "Font lock keywords used in `hexl-mode'.")
+
;; routines
(put 'hexl-mode 'mode-class 'special)
(make-local-variable 'require-final-newline)
(setq require-final-newline nil)
+ (make-local-variable 'hexl-mode-old-font-lock-keywords)
+ (setq hexl-mode-old-font-lock-keywords font-lock-defaults)
+ (make-local-variable 'font-lock-defaults)
+ (setq font-lock-defaults '(hexl-font-lock-keywords t))
+
;; Add hooks to rehexlify or dehexlify on various events.
(add-hook 'after-revert-hook 'hexl-after-revert-hook nil t)
(add-hook 'change-major-mode-hook 'hexl-maybe-dehexlify-buffer nil t)
;; Set a callback function for eldoc.
- (set (make-local-variable 'eldoc-print-current-symbol-info-function)
+ (set (make-local-variable 'eldoc-documentation-function)
'hexl-print-current-point-info)
(eldoc-add-command-completions "hexl-")
- (eldoc-remove-command "hexl-save-buffer"
+ (eldoc-remove-command "hexl-save-buffer"
"hexl-current-address")
(if hexl-follow-ascii (hexl-follow-ascii 1)))
- (run-hooks 'hexl-mode-hook))
+ (run-mode-hooks 'hexl-mode-hook))
(defun hexl-isearch-search-function ()
(setq isearch-search-fun-function hexl-mode-old-isearch-search-fun-function)
(use-local-map hexl-mode-old-local-map)
(set-syntax-table hexl-mode-old-syntax-table)
+ (setq font-lock-defaults hexl-mode-old-font-lock-keywords)
(setq major-mode hexl-mode-old-major-mode)
(force-mode-line-update))
(apply 'call-process-region (point-min) (point-max)
(expand-file-name hexl-program exec-directory)
t t nil (split-string hexl-options))
- (save-excursion
- (goto-char (point-min))
- (while (re-search-forward "^[0-9a-f]+:" nil t)
- (put-text-property (match-beginning 0) (match-end 0)
- 'font-lock-face 'hexl-address-area))
- (goto-char (point-min))
- (while (re-search-forward " \\(.+$\\)" nil t)
- (put-text-property (match-beginning 1) (match-end 1)
- 'font-lock-face 'hexl-ascii-area)))
(if (> (point) (hexl-address-to-marker hexl-max-address))
(hexl-goto-address hexl-max-address))))
(defun hexl-insert-decimal-char (arg)
"Insert a character given by its decimal code ARG times at point."
(interactive "p")
- (let ((num (string-to-int (read-string "Decimal Number: "))))
+ (let ((num (string-to-number (read-string "Decimal Number: "))))
(if (< num 0)
(error "Decimal number out of range")
(hexl-insert-multibyte-char num arg))))
(defun hexl-activate-ruler ()
"Activate `ruler-mode'"
(require 'ruler-mode)
- (set (make-local-variable 'ruler-mode-ruler-function)
+ (set (make-local-variable 'ruler-mode-ruler-function)
'hexl-mode-ruler)
(ruler-mode 1))
"Activate `hl-line-mode'"
(require 'frame)
(require 'hl-line)
- (set (make-local-variable 'hl-line-range-function)
- 'hexl-highlight-line-range)
- (set (make-local-variable 'hl-line-face)
- 'highlight)
+ (with-no-warnings
+ (set (make-local-variable 'hl-line-range-function)
+ 'hexl-highlight-line-range)
+ (set (make-local-variable 'hl-line-face)
+ 'highlight))
(hl-line-mode 1))
(defun hexl-highlight-line-range ()
(define-key hexl-mode-map [up] 'hexl-previous-line)
(define-key hexl-mode-map [down] 'hexl-next-line)
(define-key hexl-mode-map [M-left] 'hexl-backward-short)
+ (define-key hexl-mode-map [?\e left] 'hexl-backward-short)
(define-key hexl-mode-map [M-right] 'hexl-forward-short)
+ (define-key hexl-mode-map [?\e right] 'hexl-forward-short)
(define-key hexl-mode-map [next] 'hexl-scroll-up)
(define-key hexl-mode-map [prior] 'hexl-scroll-down)
(define-key hexl-mode-map [home] 'hexl-beginning-of-line)
(define-key hexl-mode-map "\C-e" 'hexl-end-of-line)
(define-key hexl-mode-map "\C-f" 'hexl-forward-char)
- (if (not (eq (key-binding (char-to-string help-char)) 'help-command))
+ (if (not (memq (key-binding (char-to-string help-char))
+ '(help-command ehelp-command)))
(define-key hexl-mode-map (char-to-string help-char) 'undefined))
(define-key hexl-mode-map "\C-k" 'undefined)