;; vars here
;;
-(defvar hexl-program "hexl"
+(defgroup hexl nil
+ "Edit a file in a hex dump format using the hexl filter."
+ :group 'data)
+
+
+(defcustom hexl-program "hexl"
"The program that will hexlify and dehexlify its stdin.
`hexl-program' will always be concatenated with `hexl-options'
-and \"-de\" when dehexlifying a buffer.")
+and \"-de\" when dehexlifying a buffer."
+ :type 'string
+ :group 'hexl)
-(defvar hexl-iso ""
+(defcustom hexl-iso ""
"If your emacs can handle ISO characters, this should be set to
-\"-iso\" otherwise it should be \"\".")
+\"-iso\" otherwise it should be \"\"."
+ :type 'string
+ :group 'hexl)
-(defvar hexl-options (format "-hex %s" hexl-iso)
- "Options to hexl-program that suit your needs.")
+(defcustom hexl-options (format "-hex %s" hexl-iso)
+ "Options to hexl-program that suit your needs."
+ :type 'string
+ :group 'hexl)
-(defvar hexlify-command
+(defcustom hexlify-command
(format "%s%s %s" exec-directory hexl-program hexl-options)
- "The command to use to hexlify a buffer.")
+ "The command to use to hexlify a buffer."
+ :type 'string
+ :group 'hexl)
-(defvar dehexlify-command
+(defcustom dehexlify-command
(format "%s%s -de %s" exec-directory hexl-program hexl-options)
- "The command to use to unhexlify a buffer.")
+ "The command to use to unhexlify a buffer."
+ :type 'string
+ :group 'hexl)
(defvar hexl-max-address 0
"Maximum offset into hexl buffer.")
;; routines
+(put 'hexl-mode 'mode-class 'special)
+
;;;###autoload
(defun hexl-mode (&optional arg)
"\\<hexl-mode-map>
Signal error if ADDRESS out of range."
(interactive "nAddress: ")
(if (or (< address 0) (> address hexl-max-address))
- (error "Out of hexl region."))
+ (error "Out of hexl region"))
(goto-char (hexl-address-to-marker address)))
(defun hexl-goto-hex-address (hex-address)
(let ((ch (logior character 32)))
(if (and (>= ch ?a) (<= ch ?f))
(- ch (- ?a 10))
- (error "Invalid hex digit `%c'." ch)))))
+ (error "Invalid hex digit `%c'" ch)))))
(defun hexl-oct-char-to-integer (character)
"Take a char and return its value as if it was a octal digit."
(if (and (>= character ?0) (<= character ?7))
(- character ?0)
- (error "Invalid octal digit `%c'." character)))
+ (error "Invalid octal digit `%c'" character)))
(defun hexl-printable-character (ch)
"Return a displayable string for character CH."
(interactive "p")
(let ((num (hexl-hex-string-to-integer (read-string "Hex number: "))))
(if (or (> num 255) (< num 0))
- (error "Hex number out of range.")
+ (error "Hex number out of range")
(hexl-insert-char num arg))))
(defun hexl-insert-decimal-char (arg)
(interactive "p")
(let ((num (string-to-int (read-string "Decimal Number: "))))
(if (or (> num 255) (< num 0))
- (error "Decimal number out of range.")
+ (error "Decimal number out of range")
(hexl-insert-char num arg))))
(defun hexl-insert-octal-char (arg)
(interactive "p")
(let ((num (hexl-octal-string-to-integer (read-string "Octal Number: "))))
(if (or (> num 255) (< num 0))
- (error "Decimal number out of range.")
+ (error "Decimal number out of range")
(hexl-insert-char num arg))))
;; startup stuff.
(define-key hexl-mode-map "\C-x\C-s" 'hexl-save-buffer)
(define-key hexl-mode-map "\C-x\C-t" 'undefined))
+(provide 'hexl)
+
;;; hexl.el ends here