From: Chris W. <ch...@qw...> - 2004-09-19 14:25:44
|
Hi all, Sorry if this is a stupid question (knowing me it probably is!) but I've searched the docs and the web, and I can't find an answer to this: Is it possible to automatically wrap long lines in a plain text buffer (preferably without changing the buffer itself)? I tried to select the whole document and run wrapRegion (which doesn't autocomplete for some reason) but that was a disaster. wrapParagraphs on each para takes forever, and changes the document. toggleWrap and messageToggleWrap apparently do nothing. What should I do? (I'm running 0.20.2). If J doesn't have this feature (I'm sure it does, but too well hidden for me), and Peter doesn't have time to add it, then I could try adding it myself. I've been known to hack at Java code occasionally, but the results are perhaps not best described as "pretty" :-) Thanks Peter, and indeed all of J's users, for making J such a superb editor! Cheers, Chris. -- _ ___ __ _ / __/ / ,__(_)_ | Chris Wilson <0000 at qwirx.com> - Cambs UK | / (_/ ,\/ _/ /_ \ | Security/C/C++/Java/Perl/SQL/HTML Developer | \ _/_/_/_//_/___/ | We are GNU-free your mind-and your software | |
From: Peter G. <pe...@ar...> - 2004-09-19 15:13:49
|
On Sun, 19 Sep 2004 at 15:25:37 +0100, Chris Wilson wrote: > Is it possible to automatically wrap long lines in a plain text > buffer (preferably without changing the buffer itself)? In a word, no, assuming you want something like what emacs does by default for long lines. The various wrap commands in j all modify the text in the buffer. > I tried to select the whole document and run wrapRegion (which > doesn't autocomplete for some reason) but that was a disaster. > wrapParagraphs on each para takes forever, and changes the document. > toggleWrap and messageToggleWrap apparently do nothing. What should I > do? (I'm running 0.20.2). If you really need a way to have the lines wrap for display purposes without changing the text in the buffer, I don't have a solution. It would be, I think, a very big deal to change the display code to provide this behavior as an option. There's quite a bit of code that relies on a one-to-one correspondence between display lines and actual lines of text in editable buffers; basic things like cursor movement and selection are sure to break if that assumption no longer holds. In theory one could go on to fix the breakage and eventually come out on the other side, but it would be an architectural change and a big undertaking. On the other hand, if you can live with changing the text in the buffer, but the current wrap commands don't work well for you, that's much more likely to be a solvable problem in the short term. wrapRegion wants to wrap everything into a single paragraph, so that won't work on a whole multi-paragraph document. toggleWrap doesn't affect the text that's already in the buffer (it toggles automatic word wrap for long lines that you might subsequently type), and messageToggleWrap applies only to mail messages, so those commands aren't going to help. I think maybe what you need is a new command that works its way through the document calling wrapParagraph on each paragraph. Would that do the trick? I'm not sure whether "takes forever", above, means that the operation itself is intrinsically slow or that it just takes forever because you have to do it by hand, and I'm also not sure whether wrapParagraph does the right thing for you on all of your paragraphs, taken one at a time. Please let me know. -Peter |
From: Chris W. <ch...@qw...> - 2004-09-19 15:30:49
|
Hi Peter, Thanks for your quick response! > On the other hand, if you can live with changing the text in the > buffer, but the current wrap commands don't work well for you, that's > much more likely to be a solvable problem in the short term. I can live with it, but it's a little less than ideal for the (admittedly rare) cases where I receive a document from someone else that's not word wrapped, and need to edit the document in a sensible way and then return it. I'm afraid I haven't used J's email mode yet, but if you have implemented support displaying messages with flowed text, would that not work as well for plain text documents of this kind? > toggleWrap doesn't affect the text that's already in the buffer (it > toggles automatic word wrap for long lines that you might subsequently > type), and messageToggleWrap applies only to mail messages, so those > commands aren't going to help. Would it be difficult to make messageToggleWrap apply to plain text buffers as well? Sorry for not diving into the source (yet) to find out for myself, your comments about the difficulty of the task have dissuaded me somewhat. Were I to make such sweeping changes, how likely is it that you would incorporate them into J? > I think maybe what you need is a new command that works its way through > the document calling wrapParagraph on each paragraph. Would that do the > trick? Yes, that would certainly be enough for now. > I'm not sure whether "takes forever", above, means that the operation > itself is intrinsically slow or that it just takes forever because you > have to do it by hand, and I'm also not sure whether wrapParagraph does > the right thing for you on all of your paragraphs, taken one at a time. Sorry, I was unclear, I meant that it takes me forever to do it by hand, not that the process is slow (it's very fast on my machine). Cheers, Chris. -- _ ___ __ _ / __/ / ,__(_)_ | Chris Wilson <0000 at qwirx.com> - Cambs UK | / (_/ ,\/ _/ /_ \ | Security/C/C++/Java/Perl/SQL/HTML Developer | \ _/_/_/_//_/___/ | We are GNU-free your mind-and your software | |
From: Peter G. <pe...@ar...> - 2004-09-19 16:36:49
|
On Sun, 19 Sep 2004 at 16:30:39 +0100, Chris Wilson wrote: > I'm afraid I haven't used J's email mode yet, but if you have implemented > support displaying messages with flowed text, would that not work as well > for plain text documents of this kind? In a read-only situation (as with received mail messages) it's easy: you just wrap the text by modifying it, but don't save the modified buffer. > > toggleWrap doesn't affect the text that's already in the buffer (it > > toggles automatic word wrap for long lines that you might subsequently > > type), and messageToggleWrap applies only to mail messages, so those > > commands aren't going to help. > > Would it be difficult to make messageToggleWrap apply to plain text > buffers as well? See above. It's easy if the buffer is read-only. It's a much harder problem to do display-only wrapping in an editable buffer so that the original format is preserved around minor edits. > Sorry for not diving into the source (yet) to find out for myself, > your comments about the difficulty of the task have dissuaded me > somewhat. Were I to make such sweeping changes, how likely is it that > you would incorporate them into J? If I could snap my fingers and have a clean, bug-free implementation of emacs-style display-only line wrapping as an option for editable buffers, I'd take it in a heartbeat. But realistically, I think it's a huge job. It would tend to introduce breakage everywhere, and some of the breakage might not be noticed right away (j has a lot of obscure and/or undocumented features), and it would amount to progress in the wrong direction until all that breakage was fixed. It would take a very long time to get it right, and I don't think it's worth the disruption. I do think that one day j may have this feature, but it will happen because the architecture gets nudged in that direction gradually over a long period of time, until one day the remaining changes are easy, rather than as the result of a direct frontal assault. > > I think maybe what you need is a new command that works its way > > through the document calling wrapParagraph on each paragraph. Would > > that do the trick? > > Yes, that would certainly be enough for now. > > > I'm not sure whether "takes forever", above, means that the > > operation itself is intrinsically slow or that it just takes > > forever because you have to do it by hand, and I'm also not sure > > whether wrapParagraph does the right thing for you on all of your > > paragraphs, taken one at a time. > > Sorry, I was unclear, I meant that it takes me forever to do it by > hand, not that the process is slow (it's very fast on my machine). OK. I'll try to come up with a "wrap-paragraphs-in-region" command (or something similar). That shouldn't be too hard, but the 0.21.0 release is imminent, so I may not get around to it until after 0.21.0 is out the door (I'm targeting the end of the month for that). Thanks for your comments! -Peter |
From: Peter G. <pe...@ar...> - 2004-09-20 02:50:34
|
On Sun, 19 Sep 2004 at 09:36:36 -0700, Peter Graves wrote: > OK. I'll try to come up with a "wrap-paragraphs-in-region" command > (or something similar). That shouldn't be too hard, but the 0.21.0 > release is imminent, so I may not get around to it until after 0.21.0 > is out the door (I'm targeting the end of the month for that). As it happens, I've implemented wrapParagraphsInRegion in tonight's development snapshot, available here: http://armedbear.org/j.zip (source) http://armedbear.org/j-jar.zip (just j.jar) wrapParagraphsInRegion is mapped by default to Alt F12 in plain text buffers (and in mail composition buffers). If you get a chance to try out the snapshot, please let me know it works for you. Thanks! -Peter |