I see.  Thanks for the explanation.

So the following works:

-------------------------------
\unprotect
\setvalue{startNotes}%
  {\global\settrue\c_page_comment_enabled
   \grabbufferdatadirect{pagecomment}{startpagecomment}{stopNotes}}
\protect
\def\stopNotes{}
------------------------------

What does the second argument to \grabbufferdatadirect mean?  Nothing changes when I modify that.

The point of redefining the pagecomment environment for me was to style it a bit: add \righttoleft at the beginning, and surround the content in startstopnarrower.  How can I inject prepend/append to a buffer's content?

The solution I can think of is to use a different buffer "pagecomment_internal" in the above definition, and then build buffer "pagecomment" using that.

Thanks,
~MHB

On Sat, Apr 27, 2019 at 1:24 AM Wolfgang Schuster <wolfgang.schuster.lists@gmail.com> wrote:
Mohammad Hossein Bateni schrieb am 27.04.2019 um 05:16:
> Hi,
>
> Look at the following MWE:
>
>
> \setuppagecomment[state=start,location=right]
> %\definestartstop[Notes]
> %[before=\startpagecomment,after=\stoppagecomment]
> \def\startNotes{\startpagecomment}
> \def\stopNotes{\stoppagecomment}
>
> \starttext
> \input knuth
> \startpagecomment
> Hello
> \stoppagecomment
> \page
> \input tufte
> \startNotes
> Testing
> \stopNotes
> \stoptext
>
>
> This snippet does not compile.  Page comments work when I use the
> commands \startpagecomment and \stoppagecomment directly (like in the
> first page), but when I invoke via macros (as in the second page),
> ConTeXt produces errors.
>
> What is wrong there?

The pagecomment environment uses the buffer mechanism to store the content
of the environment but a limitation of buffers is that you can't put
them into other
commands because the scan for a certain delimiter, e.g. \stoppagecomment.

Wolfgang