- (delete-char 2)
- (insert (format "%02x" ch))
- (goto-char
- (+ (* (/ address 16) 68) 52 (% address 16)))
- (delete-char 1)
- (insert (hexl-printable-character ch))
- (or (eq address hexl-max-address)
- (setq address (1+ address)))
- (hexl-goto-address address)
+ (let ((hex-position
+ (+ (* (/ address 16) 68)
+ 11
+ (* 2 (% address 16))
+ (/ (% address 16) 2)))
+ (ascii-position
+ (+ (* (/ address 16) 68) 52 (% address 16)))
+ at-ascii-position)
+ (if (= (point) ascii-position)
+ (setq at-ascii-position t))
+ (goto-char hex-position)
+ (delete-char 2)
+ (insert (format "%02x" ch))
+ (goto-char ascii-position)
+ (delete-char 1)
+ (insert (hexl-printable-character ch))
+ (or (eq address hexl-max-address)
+ (setq address (1+ address)))
+ (hexl-goto-address address)
+ (if at-ascii-position
+ (progn
+ (beginning-of-line)
+ (forward-char 51)
+ (forward-char (% address 16)))))