Argh, wish I could delete this post.  I was using a defective macro definition (I pasted the wrong code in my original post!):

(defun get-ts+7 ()
  (interactive)
  (let ((base-date (save-excursion
               (re-search-backward
                (org-re-timestamp 'all))
               (match-string 0)))
        (result nil))
    (with-temp-buffer
      (org-mode)
      (insert base-date )
      (backward-char)
      (org-timestamp-change 7 'day)
      (end-of-buffer)
      (insert "  ")
      (end-of-buffer)
      (setq result (save-excursion
                     (re-search-backward
                      (org-re-timestamp 'all))
                     (match-string 0))))
    result))

--
something about that buffer switching gets org confused -- maybe the value of hte {{{n}}} gets reset when the temp buffer is initialized? -- anyway, this much simpler defun solves the problem:

(defun get-ts+7 ()
    (interactive)
    (let ((base-date (save-excursion
                 (re-search-backward
                  (org-re-timestamp 'all))
                 (match-string 0)))
          (result nil))
    
      (format-time-string "<%Y-%m-%d %a>"
                          (time-add
                           (date-to-time base-date) (days-to-time (1+ 7)))) ))


On Sat, Aug 26, 2017 at 5:09 PM, Matt Price <moptop99@gmail.com> wrote:

the {{{n}}} macro seems to reset to "1" if it is located on the same line as another macro that I've defined.  I'm not sure if it's error with my macro or some kind or race condition-ish problem in macro expansion.  Here's a minimal example:

--------
#+MACRO: ts (eval (get-ts+7))

#+BEGIN_SRC emacs-lisp
  (defun mwp-add-week-to-next-ts ()
    (interactive )
    (save-excursion
      (re-search-forward org-ts-regexp)

      (let ((base (match-string 0)))
        (message base)
        (message (format-time-string "<%Y-%m-%d %a>"
                                     (time-add (date-to-time base) (days-to-time (1+ 7)))))

        (replace-match (format-time-string "<%Y-%m-%d %a>"
                                           (time-add (date-to-time base) (seconds-to-time (1+(* 7 60 60 24))))) nil nil nil nil))))
#+END_SRC

(week {{{n(w)}}})

(week {{{n(w)}}})

(week {{{n(w)}}})


** <2017-09-12 Tue> (Week {{{n(w)}}}) Hacking History in the Himalaya

** {{{ts}}} (Week {{{n(w)}}}) Language of the Web

-----------------

And here's the ASCII export:

------
Matt Price


,----
| (defun mwp-add-week-to-next-ts ()
|   (interactive )
|   (save-excursion
|     (re-search-forward org-ts-regexp)
|
|     (let ((base (match-string 0)))
|       (message base)
|       (message (format-time-string "<%Y-%m-%d %a>"
|                                    (time-add (date-to-time base) (days-to-time (1+ 7)))))
|
|       (replace-match (format-time-string "<%Y-%m-%d %a>"
|                                          (time-add (date-to-time base) (seconds-to-time (1+(* 7 60 60 24))))) nil nil nil nil))))
`----

1

2

3


<2017-09-12 Tue>  (Week 4) Hacking History in the Himalaya
==========================================================


<2017-09-19 Tue>  (Week 1) Language of the Web
==============================================
-----------------

Any thoughts? thank you!