comparison lisp/kmacro.el @ 57439:e12200cc9b00

(kmacro-insert-counter, kmacro-add-counter): Use and reset kmacro-initial-counter-value if set. (kmacro-set-counter): Only set kmacro-counter if defining or executing macro. Set kmacro-initial-counter-value otherwise. Never set both. (kmacro-display): Show macro counter if non-zero.
author Kim F. Storm <storm@cua.dk>
date Mon, 11 Oct 2004 22:13:20 +0000
parents cf6524063a28
children b017a1c31a53 ff0e824afa37
comparison
equal deleted inserted replaced
57438:0326440c511a 57439:e12200cc9b00
246 246
247 (defun kmacro-insert-counter (arg) 247 (defun kmacro-insert-counter (arg)
248 "Insert macro counter and increment with ARG or 1 if missing. 248 "Insert macro counter and increment with ARG or 1 if missing.
249 With \\[universal-argument], insert previous kmacro-counter (but do not modify counter)." 249 With \\[universal-argument], insert previous kmacro-counter (but do not modify counter)."
250 (interactive "P") 250 (interactive "P")
251 (setq kmacro-initial-counter-value nil) 251 (if kmacro-initial-counter-value
252 (setq kmacro-counter kmacro-initial-counter-value
253 kmacro-initial-counter-value nil))
252 (if (and arg (listp arg)) 254 (if (and arg (listp arg))
253 (insert (format kmacro-counter-format kmacro-last-counter)) 255 (insert (format kmacro-counter-format kmacro-last-counter))
254 (insert (format kmacro-counter-format kmacro-counter)) 256 (insert (format kmacro-counter-format kmacro-counter))
255 (kmacro-add-counter (prefix-numeric-value arg)))) 257 (kmacro-add-counter (prefix-numeric-value arg))))
256 258
273 275
274 (defun kmacro-set-counter (arg) 276 (defun kmacro-set-counter (arg)
275 "Set kmacro-counter to ARG or prompt if missing. 277 "Set kmacro-counter to ARG or prompt if missing.
276 With \\[universal-argument] prefix, reset counter to its value prior to this iteration of the macro." 278 With \\[universal-argument] prefix, reset counter to its value prior to this iteration of the macro."
277 (interactive "NMacro counter value: ") 279 (interactive "NMacro counter value: ")
278 (setq kmacro-last-counter kmacro-counter 280 (if (not (or defining-kbd-macro executing-kbd-macro))
279 kmacro-counter (if (and current-prefix-arg (listp current-prefix-arg)) 281 (kmacro-display-counter (setq kmacro-initial-counter-value arg))
280 kmacro-counter-value-start 282 (setq kmacro-last-counter kmacro-counter
281 arg)) 283 kmacro-counter (if (and current-prefix-arg (listp current-prefix-arg))
282 ;; setup initial macro counter value if we are not executing a macro. 284 kmacro-counter-value-start
283 (setq kmacro-initial-counter-value 285 arg))
284 (and (not (or defining-kbd-macro executing-kbd-macro)) 286 (unless executing-kbd-macro
285 kmacro-counter)) 287 (kmacro-display-counter))))
286 (unless executing-kbd-macro
287 (kmacro-display-counter)))
288 288
289 289
290 (defun kmacro-add-counter (arg) 290 (defun kmacro-add-counter (arg)
291 "Add numeric prefix arg (prompt if missing) to macro counter. 291 "Add numeric prefix arg (prompt if missing) to macro counter.
292 With \\[universal-argument], restore previous counter value." 292 With \\[universal-argument], restore previous counter value."
293 (interactive "NAdd to macro counter: ") 293 (interactive "NAdd to macro counter: ")
294 (setq kmacro-initial-counter-value nil) 294 (if kmacro-initial-counter-value
295 (setq kmacro-counter kmacro-initial-counter-value
296 kmacro-initial-counter-value nil))
295 (let ((last kmacro-last-counter)) 297 (let ((last kmacro-last-counter))
296 (setq kmacro-last-counter kmacro-counter 298 (setq kmacro-last-counter kmacro-counter
297 kmacro-counter (if (and current-prefix-arg (listp current-prefix-arg)) 299 kmacro-counter (if (and current-prefix-arg (listp current-prefix-arg))
298 last 300 last
299 kmacro-counter (+ kmacro-counter arg)))) 301 kmacro-counter (+ kmacro-counter arg))))
392 (if macro 394 (if macro
393 (let* ((x 60) 395 (let* ((x 60)
394 (m (format-kbd-macro macro)) 396 (m (format-kbd-macro macro))
395 (l (length m)) 397 (l (length m))
396 (z (and nil trunc (> l x)))) 398 (z (and nil trunc (> l x))))
397 (message (format "%s: %s%s" (or descr "Macro") 399 (message (format "%s%s: %s%s" (or descr "Macro")
400 (if (= kmacro-counter 0) ""
401 (format " [%s]"
402 (format kmacro-counter-format-start kmacro-counter)))
398 (if z (substring m 0 (1- x)) m) (if z "..." "")))) 403 (if z (substring m 0 (1- x)) m) (if z "..." ""))))
399 (message (or empty "No keyboard macros defined")))) 404 (message (or empty "No keyboard macros defined"))))
400 405
401 406
402 (defun kmacro-repeat-on-last-key (keys) 407 (defun kmacro-repeat-on-last-key (keys)