[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Error with fill-paragraph in my own major mode
From: |
Andreas Röhler |
Subject: |
Re: Error with fill-paragraph in my own major mode |
Date: |
Wed, 30 Jan 2008 22:15:42 +0100 |
User-agent: |
KMail/1.9.5 |
Am Mittwoch, 30. Januar 2008 17:41 schrieb Stefan Kamphausen:
> Hi,
>
> a good while back (actually I started this in 2004) I wrote a major
> mode to write articles for the (German) linux magazin ([1]). This
> major mode can be found on my website at
>
> http://www.skamphausen.de/cgi-bin/ska/linmag-mode
>
> Today it has been brought to my attention that there is an error when
> one tries to fill a paragraph (M-q) using that major mode in Gnu Emacs
> 22. Back then I wrote that mode in XEmacs, today I seem to be a Gnu
> Emacs user so I'd like to fix that issue.
>
> Hitting M-q leads to an error
> Args out of range: "", -1, 0
>
> Using debug-on-error and edebug I could track that error down to the
> following code in function fill-comment-paragraph in fill.el:
>
> (if (string-match comment-start-skip (concat "\0" commark "a"))
> (concat "[ \t]*" (regexp-quote commark)
> ;; Make sure we only match comments that
> ;; use the exact same comment marker.
> "[^" (substring commark -1) "]")
> ^^^^^^^^^^^^^^^^^^^^^^
>
> I tried to understand the workings there but to no avail and I would
> appreciate any pointers to what I may be doing wrong in my major mode.
>
> To reproduce:
>
> * emacs -q
> * Load linmag-mode.el (M-x load-file)
> * Save the sample article from below ([2]) in a file with suffix
> .linmag
> * Open the file, the buffer should be in linmag-mode.
> * Move to the lorem ispum text
> * Hit M-q.
> * Voila.
>
>
>
> Regards,
> stefan
>
...
Seems a clash with your comment-start setting.
Error occurs if form in line 871 from
`fill-comment-paragraph'
"[^" (substring commark -1) "]")
is called.
A comment there says
,----
|
| The specialized regexp only works for "normal" comment
| ;; syntax, not for Texinfo's "@c" (w
`----
BTW, when substring's `from' was set to 0, filling
worked. However, didn't check the results further,
other nasty things may happen than.
Andreas Röhler