From: Gerd Moellmann Date: Wed, 19 Apr 2000 19:10:46 +0000 (+0000) Subject: (hexl-insert-hex-string): New command. X-Git-Tag: emacs-pretest-21.0.90~4190 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=9f6bff44411c75a856b3c426090c8fa7821bfcbf;p=emacs.git (hexl-insert-hex-string): New command. --- diff --git a/lisp/hexl.el b/lisp/hexl.el index e5d55b43ca4..aca123a0ade 100644 --- a/lisp/hexl.el +++ b/lisp/hexl.el @@ -717,6 +717,31 @@ This discards the buffer's undo information." (error "Hex number out of range") (hexl-insert-char num arg)))) +(defun hexl-insert-hex-string (str arg) + "Insert hexadecimal string STR at point ARG times. +Embedded whitespace, dashes, and periods in the string are ignored." + (interactive "sHex string: \np") + (setq str (replace-regexp-in-string "[- \t.]" "" str)) + (let ((chars '())) + (let ((len (length str)) + (idx 0)) + (if (eq (logand len 1) 1) + (let ((num (hexl-hex-string-to-integer (substring str 0 1)))) + (setq chars (cons num chars)) + (setq idx 1))) + (while (< idx len) + (let* ((nidx (+ idx 2)) + (num (hexl-hex-string-to-integer (substring str idx nidx)))) + (setq chars (cons num chars)) + (setq idx nidx)))) + (setq chars (nreverse chars)) + (while (> arg 0) + (let ((chars chars)) + (while chars + (hexl-insert-char (car chars) 1) + (setq chars (cdr chars)))) + (setq arg (- arg 1))))) + (defun hexl-insert-decimal-char (arg) "Insert a ASCII char ARG times at point for a given decimal number." (interactive "p")