help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How modify numbers in a region by a multiplier?


From: Seweryn Kokot
Subject: Re: How modify numbers in a region by a multiplier?
Date: Fri, 2 Jul 2010 06:41:26 +0000 (UTC)
User-agent: Loom/3.14 (http://gmane.org/)

Juanma Barranquero <lekktu <at> gmail.com> writes:

> 
> Try using a marker instead of just the number value of `point'.
 
Good hint, now it seems ok! For interested see the current function

(defun my-multiply-numbers-in-region-or-buffer (multiplier)
  (interactive "nSpecify a multiplier (default is 0.001): ")
;; if nil - RET multiplier is 0.001
  (let (beg end object end-mark)
        (if (use-region-p)
        (progn
          (setq object "region")
          (setq beg (region-beginning))
          (setq end (region-end)))
      (setq object "buffer")
      (setq beg (point-min))
      (setq end (point-max)))
        (setq end-mark (copy-marker end))
        (unless multiplier
          (setq multiplier 0.001))
        (goto-char beg)
;       (while (re-search-forward "\\([0-9.]+\\)" end t)
        (while (re-search-forward "\\([0-9.]+\\)" (marker-position end-mark) t)
          (replace-match (format "%.2f" (* (string-to-number (match-string 1)) 
multiplier))))
        (message "Numbers in %s modified by multiplier %s." object 
multiplier)))




reply via email to

[Prev in Thread] Current Thread [Next in Thread]