<?xml version="1.0"?>
<Denemo>
  <merge>
    <title>A Denemo Keymap</title>
    <author>AT, JRR, RTS</author>
    <map>
      <row>
        <after>FreeFermata</after>
        <action>CriticalComment</action>
        <scheme>;; CriticalComment
(let ((tag  "CriticalComment") (lilypond ""))
(define current (d-DirectiveGet-standalone-display tag))
(define position (GetPosition))
(if current
	(set! current (substring current (string-length (GetNthLine current 0)))))
;(disp "we have " current " now\n\n")
(let script ((answer (d-GetUserInputWithSnippets (_ "Critical Comment") (_ "Give Comment") (if current current "")  #f )))
    (if answer
    	(begin
	(set! lilypond (cdr answer))
	(set! answer (car answer))
	(if (not (PositionEqual? position (GetPosition)))
		(begin
			(if (not (equal? (_ "y") (d-GetUserInput (_ "Cursor has Moved") (_ "Apply Command to new position of cursor?")  (_ "y"))))
			(apply d-GoToPosition position))))))
	(if (and answer (not (string=? answer "")))
		(begin
			(d-Directive-score "CriticalCommentsAmended")
			(d-Directive-standalone tag)
			(d-DirectivePut-standalone-minpixels tag 30)
			(d-DirectivePut-standalone-override tag
				(logior DENEMO_OVERRIDE_HIDDEN DENEMO_OVERRIDE_EDITOR))
			(d-DirectivePut-standalone-display tag  (string-append (_ "Critical Comment") "\n" answer))
			(d-DirectivePut-standalone-postfix tag lilypond)
			(d-RefreshDisplay)
			(d-SetSaved #f))
		#f)))
		</scheme>
        <label>Critical Comment</label>
        <tooltip>Adds a comment which can be printed in a critical commentary at the end of all the movements (see CriticalCommentary command to create this).</tooltip>
      </row>
    </map>
  </merge>
</Denemo>
