unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* renumbering numeric comments
@ 2014-10-28  1:59 Steven Arntson
  2014-10-28  3:53 ` Yuri Khan
  0 siblings, 1 reply; 5+ messages in thread
From: Steven Arntson @ 2014-10-28  1:59 UTC (permalink / raw)
  To: help-gnu-emacs

Greetings! I'm very curious what more knowledgeable souls would do in
the following situation. I'm writing music using emacs' lilypond
mode. In Lilypond, measure numbers are usually (so far in my experience)
entered as comments at the end of a line in the form `%m__':

         \tempo 4=100
         e4 d e8 f | %m1
         \tempo 4=130
         <c a>2. | %m2
         <d e,>2 ~ <d e,>8 e | %m3
         ...
         
These "%m_" numbers are very useful in debugging when the "code" is
compiled. However, in the above case I later inserted two new measures:

         \tempo 4=100
         e4 d e8 f | %m1
         \tempo 4=130
----->   g8 f e d e f |
----->   e d c b c d |
         <c a>2. | %m2
         <d e,>2 ~ <d e,>8 e | %m3
         ...
         
Renumbering everything by hand is a lot of work, because the piece is
many measures long. I have limited technical expertise, but would love
ideas about better methods than "by hand!" Thank you!

Steven Arntson




^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: renumbering numeric comments
  2014-10-28  1:59 Steven Arntson
@ 2014-10-28  3:53 ` Yuri Khan
  2014-10-28 17:11   ` Steven Arntson
  0 siblings, 1 reply; 5+ messages in thread
From: Yuri Khan @ 2014-10-28  3:53 UTC (permalink / raw)
  To: Steven Arntson; +Cc: help-gnu-emacs@gnu.org

On Tue, Oct 28, 2014 at 7:59 AM, Steven Arntson
<steven@stevenarntson.com> wrote:

> In Lilypond, measure numbers are usually (so far in my experience)
> entered as comments at the end of a line in the form `%m__':
>
> These "%m_" numbers are very useful in debugging when the "code" is
> compiled. However, in the above case I later inserted two new measures:
>
>          \tempo 4=100
>          e4 d e8 f | %m1
>          \tempo 4=130
> ----->   g8 f e d e f |
> ----->   e d c b c d |
>          <c a>2. | %m2
>          <d e,>2 ~ <d e,>8 e | %m3
>          ...
>
> Renumbering everything by hand is a lot of work, because the piece is
> many measures long.

1. Select the part of document you want to renumber in, or go the the
beginning of the buffer to renumber throughout the whole document.
2. Hit C-M-% (for “query-replace-regexp”).
3. Compose a regular expression that matches the parts of text you
want to replace, with some context. I don’t know Lilypond and assume
that measures end with a vertical bar and by convention it’s the last
significant character on the line, followed by a single space,
followed by a percent sign, then the letter m, then a sequence of
digits until the end of line. A new measure will end at the vertical
bar, with the space and comment omitted. So the regexp is: “|\(
%m[0-9]+\)?$”. Enter this as the replace regexp.
4. In the replacement string, use the \# marker where you want a
sequential number inserted: “| %m\#”

This is almost what you want but numbers starting with 0. If you want
1-based numbering, you’ll need to surround the \# marker with an
expression that adds 1: “| %m\,(+ 1 \#)”

The part after “\,” can be any Emacs Lisp expression. The one above
just happens to add (+) one (1) to the number of replacements done
(\#) and can be abbreviated as “(1+ \#)”. (If you wanted to renumber
starting with 200, you would write “(+ 200 \#)”, and for numbering
starting with 301 and using only odd numbers, “(+ 301 (* 2 \#))”.)

Final recipe:

query-replace-regexp
|\( %m[0-9]+\)?$
| %m\,(1+ \#)



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: renumbering numeric comments
       [not found] <mailman.12210.1414461603.1147.help-gnu-emacs@gnu.org>
@ 2014-10-28  8:12 ` Pascal J. Bourguignon
  2014-10-28 17:13   ` Steven Arntson
  0 siblings, 1 reply; 5+ messages in thread
From: Pascal J. Bourguignon @ 2014-10-28  8:12 UTC (permalink / raw)
  To: help-gnu-emacs

Steven Arntson <steven@stevenarntson.com> writes:

> Greetings! I'm very curious what more knowledgeable souls would do in
> the following situation. I'm writing music using emacs' lilypond
> mode. In Lilypond, measure numbers are usually (so far in my experience)
> entered as comments at the end of a line in the form `%m__':
>
>          \tempo 4=100
>          e4 d e8 f | %m1
>          \tempo 4=130
>          <c a>2. | %m2
>          <d e,>2 ~ <d e,>8 e | %m3
>          ...
>          
> These "%m_" numbers are very useful in debugging when the "code" is
> compiled. However, in the above case I later inserted two new measures:
>
>          \tempo 4=100
>          e4 d e8 f | %m1
>          \tempo 4=130
> ----->   g8 f e d e f |
> ----->   e d c b c d |
>          <c a>2. | %m2
>          <d e,>2 ~ <d e,>8 e | %m3
>          ...
>          
> Renumbering everything by hand is a lot of work, because the piece is
> many measures long. I have limited technical expertise, but would love
> ideas about better methods than "by hand!" Thank you!

Write yourself a numbering/renumbering command.

For an example, have a look at:

https://gitorious.org/nasium-lse/nasium-lse/source/028c064543abf8ad4043897d8b9029beab18db15:lse-mode.el#L321

In your case, it is even easier, because you don't have GOTOs.

-- 
__Pascal Bourguignon__                 http://www.informatimago.com/
“The factory of the future will have only two employees, a man and a
dog. The man will be there to feed the dog. The dog will be there to
keep the man from touching the equipment.” -- Carl Bass CEO Autodesk


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: renumbering numeric comments
  2014-10-28  3:53 ` Yuri Khan
@ 2014-10-28 17:11   ` Steven Arntson
  0 siblings, 0 replies; 5+ messages in thread
From: Steven Arntson @ 2014-10-28 17:11 UTC (permalink / raw)
  To: help-gnu-emacs

Yuri Khan <yuri.v.khan@gmail.com> writes:

> 1. Select the part of document you want to renumber in, or go the the
> beginning of the buffer to renumber throughout the whole document.
> 2. Hit C-M-% (for “query-replace-regexp”).
> 3. Compose a regular expression that matches the parts of text you
> want to replace, with some context. I don’t know Lilypond and assume
> that measures end with a vertical bar and by convention it’s the last
> significant character on the line, followed by a single space,
> followed by a percent sign, then the letter m, then a sequence of
> digits until the end of line. A new measure will end at the vertical
> bar, with the space and comment omitted. So the regexp is: “|\(
> %m[0-9]+\)?$”. Enter this as the replace regexp.
> 4. In the replacement string, use the \# marker where you want a
> sequential number inserted: “| %m\#”
>
> This is almost what you want but numbers starting with 0. If you want
> 1-based numbering, you’ll need to surround the \# marker with an
> expression that adds 1: “| %m\,(+ 1 \#)”
>
> The part after “\,” can be any Emacs Lisp expression. The one above
> just happens to add (+) one (1) to the number of replacements done
> (\#) and can be abbreviated as “(1+ \#)”. (If you wanted to renumber
> starting with 200, you would write “(+ 200 \#)”, and for numbering
> starting with 301 and using only odd numbers, “(+ 301 (* 2 \#))”.)
>
> Final recipe:
>
> query-replace-regexp
> |\( %m[0-9]+\)?$
> | %m\,(1+ \#)

Thank you so much for this. I have only the barest conception of how
regexps work, but this seems like as excellent an introduction as I
could have hoped for!

-steven




^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: renumbering numeric comments
  2014-10-28  8:12 ` renumbering numeric comments Pascal J. Bourguignon
@ 2014-10-28 17:13   ` Steven Arntson
  0 siblings, 0 replies; 5+ messages in thread
From: Steven Arntson @ 2014-10-28 17:13 UTC (permalink / raw)
  To: help-gnu-emacs

"Pascal J. Bourguignon" <pjb@informatimago.com> writes:

> Write yourself a numbering/renumbering command.
>
> For an example, have a look at:
>
> https://gitorious.org/nasium-lse/nasium-lse/source/028c064543abf8ad4043897d8b9029beab18db15:lse-mode.el#L321
>
> In your case, it is even easier, because you don't have GOTOs.

I've just this week started going through emacs' on-board Lisp
tutorial. This seems like a perfect project! I'll start working on it.

Best!  steven




^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2014-10-28 17:13 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <mailman.12210.1414461603.1147.help-gnu-emacs@gnu.org>
2014-10-28  8:12 ` renumbering numeric comments Pascal J. Bourguignon
2014-10-28 17:13   ` Steven Arntson
2014-10-28  1:59 Steven Arntson
2014-10-28  3:53 ` Yuri Khan
2014-10-28 17:11   ` Steven Arntson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).