* Long lines prevent Org mode! @ 2014-01-08 1:24 François Pinard 2014-01-08 4:41 ` Nick Dokos 0 siblings, 1 reply; 8+ messages in thread From: François Pinard @ 2014-01-08 1:24 UTC (permalink / raw) To: emacs-orgmode Hi, Org maintainers. This morning, while using my little org-grep tool, I got a "Stack overflow in regexp matcher" diagnostic. I first looked for a bug in my things, but the problem lies in Org mode. It cannot be activated if the Org buffer happens to contain a long line. In the *Scratch* buffer, I wrote this little function: (defun essai (n) (with-temp-buffer (insert (make-string n ?x)) (org-mode))) and called it with various values of N. It works fine for small N, but breaks when (on the machine here) N reaches 33333. I wonder if the following article could help: [[https://groups.google.com/forum/#!topic/gnu.emacs.help/pxfMC5f7JHg][Stack overflow in regexp matcher - Google Groupes]] François P.S. Would someone be kind enough to teach me the wisdom about how to insert Org mode fragments in an email so it is received the most legibly possible at the other end? Presumably, there is a Gnus way (which is it?) yet many people do not use it. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Long lines prevent Org mode! 2014-01-08 1:24 Long lines prevent Org mode! François Pinard @ 2014-01-08 4:41 ` Nick Dokos 2014-01-08 5:21 ` François Pinard 0 siblings, 1 reply; 8+ messages in thread From: Nick Dokos @ 2014-01-08 4:41 UTC (permalink / raw) To: emacs-orgmode François Pinard <pinard@iro.umontreal.ca> writes: > Hi, Org maintainers. > > This morning, while using my little org-grep tool, I got a "Stack > overflow in regexp matcher" diagnostic. I first looked for a bug in my > things, but the problem lies in Org mode. It cannot be activated if the > Org buffer happens to contain a long line. > > In the *Scratch* buffer, I wrote this little function: > > (defun essai (n) > (with-temp-buffer > (insert (make-string n ?x)) > (org-mode))) > > and called it with various values of N. It works fine for small N, but > breaks when (on the machine here) N reaches 33333. > > I wonder if the following article could help: > > [[https://groups.google.com/forum/#!topic/gnu.emacs.help/pxfMC5f7JHg][Stack overflow in regexp matcher - Google Groupes]] > I think it is the same problem. The backtrace in this case is ,---- | Debugger entered--Lisp error: (error "Stack overflow in regexp matcher") | looking-at(".*:ARCHIVE:") | (if (looking-at (concat ".*:" org-archive-tag ":")) (message "%s" (substitute-command-keys "Subtree is archived and stays closed. Use \\[org-force-cycle-archived] to cycle it anyway."))) | ... | org-mode() | (progn (insert (make-string n 120)) (org-mode)) | (unwind-protect (progn (insert (make-string n 120)) (org-mode)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))) | (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (insert (make-string n 120)) (org-mode)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))) | (let ((temp-buffer (generate-new-buffer " *temp*"))) ...) | essai(33333) | eval((essai 33333) nil) `---- and in fact, you can leave org out of the picture altogether: create an empty buffer, insert 33333 x's by hand, go to the beginning and evaluate (looking-at ".*foo") As Stefan says in the thread you pointed out, it's a limitation of the emacs regexp engine. > François > > P.S. Would someone be kind enough to teach me the wisdom about how to > insert Org mode fragments in an email so it is received the most legibly > possible at the other end? Presumably, there is a Gnus way (which is > it?) yet many people do not use it. > > I cut and paste and then use either C-c m (bound to message-mark-inserted-region) which produces this style: --8<---------------cut here---------------start------------->8--- some code --8<---------------cut here---------------end--------------->8--- or C-c q (bound to boxquote-region) which produces this style: ,---- | some quoted material `---- I use the first one for things that a recipient might want to cut and paste in order to experiment with them. I use the second to quote immutable stuff (e.g. doc strings). Of course, if your problem is that your mailer (or some mailer along the way) mangles the content, then the safest thing to do is to put it in an attachment or post it on some pastebin and send a link. -- Nick ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Long lines prevent Org mode! 2014-01-08 4:41 ` Nick Dokos @ 2014-01-08 5:21 ` François Pinard 2014-01-08 6:05 ` Nick Dokos 2014-01-08 9:18 ` Sebastien Vauban 0 siblings, 2 replies; 8+ messages in thread From: François Pinard @ 2014-01-08 5:21 UTC (permalink / raw) To: emacs-orgmode Nick Dokos <ndokos@gmail.com> writes: > you can leave org out of the picture altogether: create an empty > buffer, insert 33333 x's by hand, go to the beginning and evaluate > (looking-at ".*foo") > As Stefan says in the thread you pointed out, it's a limitation of the > emacs regexp engine. Yes, I got this from his article. However, it seems that "[^\nf]*foo" would succeed, avoiding the stack explosion. So, it is possible to rework the regexpes around the limitation. Surely not a fun job to do for Org regexpes, I know. Maybe not worth doing as very long lines are unusual, yet maybe worth doing nevertheless for Org files because long lines are still possible. The fact is that I was hit by this problem in the Org buffers generated by org-grep. However, as I am tempted to think that the problem is unlikely to be solved soon, I tried to alleviate it. org-grep now shortens the lines by removing, within each line, a good part of the context between hits. This does not guarantee that the above problem will never occur, but it considerably decreases the chance that it occurs. > I cut and paste and then use either C-c m (bound to > message-mark-inserted-region) or C-c q (bound to boxquote-region) Thanks for these hints, which I saved on keys here! :-) > Of course, if your problem is that your mailer (or some mailer along > the way) mangles the content, then the safest thing to do is to put it > in an attachment or post it on some pastebin and send a link. Sure. My little problem was different. If I use Org in-line markup, like bold, italics, or links to Web sites, or even block markup like fragments between #+BEGIN_SRC and #+END_SRC, say, I was wondering how this is best transmitted within a message, in the text, without resorting to an attachment. Gnus as a reader surely has some capability somewhere, as I think I saw messages displaying Org code nicely; I just do not remember how it was done. Outside Gnus, it might be more problematic to find a useful way to have Org included. Sending Org all raw is sometimes a bit noisy, especially for links. Someone recently mentioned org-mime.el, new to me, maybe this is the proper avenue? I should at least play and experiment with it! :-). François ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Long lines prevent Org mode! 2014-01-08 5:21 ` François Pinard @ 2014-01-08 6:05 ` Nick Dokos 2014-01-08 9:18 ` Sebastien Vauban 1 sibling, 0 replies; 8+ messages in thread From: Nick Dokos @ 2014-01-08 6:05 UTC (permalink / raw) To: emacs-orgmode François Pinard <pinard@iro.umontreal.ca> writes: > Nick Dokos <ndokos@gmail.com> writes: > >> you can leave org out of the picture altogether: create an empty >> buffer, insert 33333 x's by hand, go to the beginning and evaluate > >> (looking-at ".*foo") > >> As Stefan says in the thread you pointed out, it's a limitation of the >> emacs regexp engine. > > Yes, I got this from his article. However, it seems that "[^\nf]*foo" > would succeed, avoiding the stack explosion. So, it is possible to > rework the regexpes around the limitation. > > Surely not a fun job to do for Org regexpes, I know. Maybe not worth > doing as very long lines are unusual, yet maybe worth doing nevertheless > for Org files because long lines are still possible. The fact is that I > was hit by this problem in the Org buffers generated by org-grep. > It would be better to reimplement the regexp engine using e.g. an NDFA. IIRC, it requires constant stack but it limits the regexps allowed. See e.g. http://swtch.com/~rsc/regexp/regexp1.html It might make sense to pair the NDFA with a backtracker. The pattern compiler could then choose which one to use based on the regexp. -- Nick ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Long lines prevent Org mode! 2014-01-08 5:21 ` François Pinard 2014-01-08 6:05 ` Nick Dokos @ 2014-01-08 9:18 ` Sebastien Vauban 2014-01-08 12:10 ` Nick Dokos 2014-01-08 12:29 ` François Pinard 1 sibling, 2 replies; 8+ messages in thread From: Sebastien Vauban @ 2014-01-08 9:18 UTC (permalink / raw) To: emacs-orgmode-mXXj517/zsQ Hello Nick and François, François Pinard wrote: > Nick Dokos <ndokos-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> writes: > >> I cut and paste and then use either C-c m (bound to >> message-mark-inserted-region) or C-c q (bound to boxquote-region) > > Thanks for these hints, which I saved on keys here! :-) Please note it is `C-c M-m' (bound in `message.el') for adding "cut here" lines above and below the region. OTOH, `C-c q' seems to be Nick's own binding. >> Of course, if your problem is that your mailer (or some mailer along >> the way) mangles the content, then the safest thing to do is to put it >> in an attachment or post it on some pastebin and send a link. > > Sure. > > My little problem was different. If I use Org in-line markup, like > bold, italics, or links to Web sites, or even block markup like > fragments between #+BEGIN_SRC and #+END_SRC, say, I was wondering how > this is best transmitted within a message, in the text, without > resorting to an attachment. Gnus as a reader surely has some capability > somewhere, as I think I saw messages displaying Org code nicely; I just > do not remember how it was done. Outside Gnus, it might be more > problematic to find a useful way to have Org included. Sending Org all > raw is sometimes a bit noisy, especially for links. Using `C-c M-m' will add "cut here" lines, and Gnus will highlight the code inside it with one common color: so, no syntax highlighting depending on the language. Using `C-c C-v C-d' to demarcate your region as code, and give the language, you'll get a nice highlighting of the code inside Gnus (for the readers): that was on my first real patch for Org (in fact, for Gnus), back in November 2010 or so. > Someone recently mentioned org-mime.el, new to me, maybe this is the > proper avenue? I should at least play and experiment with it! :-). This is mainly useful for sending HTML-export (or Org-export) of an Org section. Best regards, Seb -- Sebastien Vauban ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Long lines prevent Org mode! 2014-01-08 9:18 ` Sebastien Vauban @ 2014-01-08 12:10 ` Nick Dokos 2014-01-08 12:29 ` François Pinard 1 sibling, 0 replies; 8+ messages in thread From: Nick Dokos @ 2014-01-08 12:10 UTC (permalink / raw) To: emacs-orgmode "Sebastien Vauban" <sva-news@mygooglest.com> writes: >>> I cut and paste and then use either C-c m (bound to >>> message-mark-inserted-region) or C-c q (bound to boxquote-region) >> >> Thanks for these hints, which I saved on keys here! :-) > > Please note it is `C-c M-m' (bound in `message.el') for adding "cut > here" lines above and below the region. > > OTOH, `C-c q' seems to be Nick's own binding. > Indeed C-C M-m is the "official" binding in message.el. The ones I posted are both my own private bindings. Sorry for the confusion and thanks for correcting me. -- Nick ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Long lines prevent Org mode! 2014-01-08 9:18 ` Sebastien Vauban 2014-01-08 12:10 ` Nick Dokos @ 2014-01-08 12:29 ` François Pinard 2014-01-09 8:57 ` Sebastien Vauban 1 sibling, 1 reply; 8+ messages in thread From: François Pinard @ 2014-01-08 12:29 UTC (permalink / raw) To: emacs-orgmode "Sebastien Vauban" <sva-news-D0wtAvR13HarG/iDocfnWg@public.gmane.org> writes: > Using `C-c C-v C-d' to demarcate your region as code, and give the > language, you'll get a nice highlighting of the code inside Gnus You mean that demarcated code #+BEGIN_SRC elisp ((lambda (x y) (+ x y))(length "abc") 2) #+END_SRC will be automatically shown nicely by Gnus? Trying it right in this message! :-) > (for the readers): that was on my first real patch for Org (in fact, > for Gnus), back in November 2010 or so. A nice one then! Thanks! François ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Long lines prevent Org mode! 2014-01-08 12:29 ` François Pinard @ 2014-01-09 8:57 ` Sebastien Vauban 0 siblings, 0 replies; 8+ messages in thread From: Sebastien Vauban @ 2014-01-09 8:57 UTC (permalink / raw) To: emacs-orgmode-mXXj517/zsQ Hi François, François Pinard wrote: > "Sebastien Vauban" writes: > >> Using `C-c C-v C-d' to demarcate your region as code, and give the >> language, you'll get a nice highlighting of the code inside Gnus > > You mean that demarcated code > > #+BEGIN_SRC elisp > ((lambda (x y) (+ x y))(length "abc") 2) > #+END_SRC > > will be automatically shown nicely by Gnus? Yes, I do! > Trying it right in this message! :-) Yep: see http://screencast.com/t/cgkg1gg24Wpg... >> (for the readers): that was on my first real patch for Org (in fact, >> for Gnus), back in November 2010 or so. > > A nice one then! Thanks! Thanks. Best regards, Seb -- Sebastien Vauban ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2014-01-09 8:57 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-01-08 1:24 Long lines prevent Org mode! François Pinard 2014-01-08 4:41 ` Nick Dokos 2014-01-08 5:21 ` François Pinard 2014-01-08 6:05 ` Nick Dokos 2014-01-08 9:18 ` Sebastien Vauban 2014-01-08 12:10 ` Nick Dokos 2014-01-08 12:29 ` François Pinard 2014-01-09 8:57 ` Sebastien Vauban
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/emacs.git https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.