From 9f6bff44411c75a856b3c426090c8fa7821bfcbf Mon Sep 17 00:00:00 2001 From: Gerd Moellmann Date: Wed, 19 Apr 2000 19:10:46 +0000 Subject: [PATCH] (hexl-insert-hex-string): New command. --- lisp/hexl.el | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) 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") -- 2.39.5