* Mode for Manuscripts? @ 2003-11-29 20:53 gebser 2003-11-30 1:33 ` Peter S Galbraith 0 siblings, 1 reply; 18+ messages in thread From: gebser @ 2003-11-29 20:53 UTC (permalink / raw) Yeah, it's a funny way to format text, but it's the format required for manuscript submissions to publishers. Since emacs is such a great editor, perhaps the best on the planet, I'm sure there is a mode already constructed for this sort of format you see here in the body of this email. Here are the specifications explicitly stated: Text must be double-spaced. Owing to the need for margins, text should wrap. There should be one space, not two, between sentences. Automatic tabs to indicate breaks between paragraphs. I think by this they mean a ^I character must begin a paragraph. Use regular double spaces between paragraphs (as you see at the beginning of the current paragraph. Use only one space, not two spaces, between sentences. So does such a mode already exist for emacs? Of course I'd want C-n and C-p to move the cursor to a text line and not to a blank line in between text lines. I know that "pr -d" will do the double-spacing for me after I write up the whole thing, but it would be nicer for emacs to do the double-spacing for me as I go along. The M-a and M-e keys should get me to the beginning and end of sentences and M-q should reformat stuff I screw up by editing. Finally, it would be best to have a separate (minor?) mode for this sort of format-- this so I would have to set and unset a lot of variables every time I go in and out of editing in this mode. Any help or tips would be very much appreciated. ken ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Mode for Manuscripts? 2003-11-29 20:53 Mode for Manuscripts? gebser @ 2003-11-30 1:33 ` Peter S Galbraith 2003-11-30 4:14 ` gebser 0 siblings, 1 reply; 18+ messages in thread From: Peter S Galbraith @ 2003-11-30 1:33 UTC (permalink / raw) Cc: help-gnu-emacs gebser@speakeasy.net wrote: > Yeah, it's a funny way to format text, but it's the format required > > for manuscript submissions to publishers. Really? I use LaTeX for manuscript submissions to publishers. -- Peter S. Galbraith <p.galbraith@globetrotter.net> GPG key 1024/D2A913A1 - 97CE 866F F579 96EE 6E68 8170 35FF 799E 6623'rd GNU/Linux user at the Counter - http://counter.li.org/ ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Mode for Manuscripts? 2003-11-30 1:33 ` Peter S Galbraith @ 2003-11-30 4:14 ` gebser 0 siblings, 0 replies; 18+ messages in thread From: gebser @ 2003-11-30 4:14 UTC (permalink / raw) I suppose LaTeX is good if that's what the publishers ask for. I'm afraid that wouldn't do for the people I work with. Still looking for the emacs solution, ken At 20:33 (UTC-0500) on Sat, 29 Nov 2003 Peter S Galbraith said: = gebser@speakeasy.net wrote: = = > Yeah, it's a funny way to format text, but it's the format required = > = > for manuscript submissions to publishers. = = Really? I use LaTeX for manuscript submissions to publishers. = = ^ permalink raw reply [flat|nested] 18+ messages in thread
[parent not found: <mailman.794.1070142961.399.help-gnu-emacs@gnu.org>]
* Re: Mode for Manuscripts? [not found] <mailman.794.1070142961.399.help-gnu-emacs@gnu.org> @ 2003-11-30 1:22 ` Dan Anderson 2003-11-30 4:11 ` gebser 2003-12-01 19:29 ` Stefan Monnier 2003-12-03 16:48 ` Rob Thorpe 2 siblings, 1 reply; 18+ messages in thread From: Dan Anderson @ 2003-11-30 1:22 UTC (permalink / raw) gebser@speakeasy.net writes: I don't suppose you could just write like normal and run a macro against your manuscript? -Dan ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Mode for Manuscripts? 2003-11-30 1:22 ` Dan Anderson @ 2003-11-30 4:11 ` gebser 2003-11-30 7:14 ` Eli Zaretskii ` (2 more replies) 0 siblings, 3 replies; 18+ messages in thread From: gebser @ 2003-11-30 4:11 UTC (permalink / raw) Sure, I could do that. But I'd like to write it in the way I described. ken At 01:22 (UTC-0000) on Sun, 30 Nov 2003 Dan Anderson said: = gebser@speakeasy.net writes: = = I don't suppose you could just write like normal and run a = macro against your manuscript? = = -Dan = _______________________________________________ = Help-gnu-emacs mailing list = Help-gnu-emacs@gnu.org = http://mail.gnu.org/mailman/listinfo/help-gnu-emacs = ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Mode for Manuscripts? 2003-11-30 4:11 ` gebser @ 2003-11-30 7:14 ` Eli Zaretskii 2003-11-30 17:15 ` gebser [not found] ` <mailman.809.1070180065.399.help-gnu-emacs@gnu.org> 2003-12-17 20:44 ` Kai Grossjohann 2 siblings, 1 reply; 18+ messages in thread From: Eli Zaretskii @ 2003-11-30 7:14 UTC (permalink / raw) > From: gebser@speakeasy.net > Newsgroups: gnu.emacs.help > Date: Sat, 29 Nov 2003 23:11:10 -0500 > > Sure, I could do that. But I'd like to write it in the way I described. Does it take anything beyond binding RET to a function that inserts a newline and then calls newline-and-indent? ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Mode for Manuscripts? 2003-11-30 7:14 ` Eli Zaretskii @ 2003-11-30 17:15 ` gebser 2003-12-02 14:57 ` gebser 0 siblings, 1 reply; 18+ messages in thread From: gebser @ 2003-11-30 17:15 UTC (permalink / raw) Cc: help-gnu-emacs At 09:14 (UTC+0200) on 30 Nov 2003 Eli Zaretskii said: = > From: gebser@speakeasy.net = > Newsgroups: gnu.emacs.help = > Date: Sat, 29 Nov 2003 23:11:10 -0500 = > = > ... = = Does it take anything beyond binding RET to a function that inserts a = newline and then calls newline-and-indent? = = ... Yes, I think it would. Here's (most of) the original posting of the question again (and how the text should look in emacs): ... Here are the specifications explicitly stated: Text must be double-spaced. Owing to the need for margins, text should wrap. There should be one space, not two, between sentences. Automatic tabs to indicate breaks between paragraphs. I think by this they mean a ^I character must begin a paragraph. Use regular double spaces between paragraphs (as you see here at the beginning and end of paragraphs. Use only one space, not two spaces, between sentences. So does such a mode already exist for emacs? Of course I'd want C-n and C-p to move the cursor to a text line and not to a blank line in between text lines. I know that "pr -d" will do the double-spacing for me after I write up the whole thing, but it would be nicer for emacs to do the double-spacing for me as I go along. The M-a and M-e keys should get me to the beginning and end of sentences and M-q should reformat stuff I screw up by editing. Finally, it would be best to have a separate (minor?) mode for this sort of format-- this, so I wouldn't have to set and unset a lot of variables every time I go in and out of editing in this mode. ... I found paragraph-indent-text-mode, copied it into .emacs, and modified it so: (defun paragraph-indent-text-mode () "Major mode for editing text, with leading spaces starting a paragraph. In this mode, you do not need blank lines between paragraphs when the first line of the following paragraph starts with whitespace. Special commands: \\{text-mode-map} Turning on Paragraph-Indent Text mode runs the normal hooks `text-mode-hook' and `paragraph-indent-text-mode-hook'." (interactive) (kill-all-local-variables) (use-local-map text-mode-map) (setq mode-name "Parindent") (setq major-mode 'paragraph-indent-text-mode) (setq local-abbrev-table text-mode-abbrev-table) (setq sentence-end "[.?!][]\"')]*\\($\\|\t\\| \\)[ \t\n]*") (setq sentence-end-double-space' nil) (setq paragraph-start "\t.+$") (setq paragraph-separate "\n\n\t") (set-syntax-table text-mode-syntax-table) (run-hooks 'text-mode-hook 'paragraph-indent-text-mode-hook)) However, M-a and M-e will go to locations which aren't really the begin/end of sentences, where the word following punctuation isn't capitalized such as "foo, etc.) bar" where "bar" isn't the begin of a new sentence. Can't we specify that the begin of a sentence should be an uppercase character? How? (Regexps baffle me sometimes.) Also my defs for paragraph-start and paragraph-separate don't work; ESC-{ and ESC-} move the cursor to the begin and end of the file respectively. I'm guessing this is the reason that M-q turns a lot of (tab-indented) paragraphs into one, big paragraph. The Info on these variables demands too much of my pre-mavenistic understanding. To reply to Eli's question specifically, given that I'm looking for double-line spacing ("blank" lines in between text lines), I don't think it would be enough to remap RET to RET RET TAB because this would insert blank lines only between paragraphs, not between every line of text. Can emacs even do double-line spacing at all? Anyone know how to get at this mode? tia, ken ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Mode for Manuscripts? 2003-11-30 17:15 ` gebser @ 2003-12-02 14:57 ` gebser 0 siblings, 0 replies; 18+ messages in thread From: gebser @ 2003-12-02 14:57 UTC (permalink / raw) In hopes that a better understanding of this might move things forward a little, I've posted a bit more on manuscript-mode to <http://www.emacswiki.org/cgi-bin/wiki/WiKen>. At 12:15 (UTC-0500) on Sun, 30 Nov 2003 gebser@speakeasy.net said: = At 09:14 (UTC+0200) on 30 Nov 2003 Eli Zaretskii said: = = = > From: gebser@speakeasy.net = = > Newsgroups: gnu.emacs.help = = > Date: Sat, 29 Nov 2003 23:11:10 -0500 = = > = = > ... = = = = Does it take anything beyond binding RET to a function that inserts a = = newline and then calls newline-and-indent? = = = = ... = = Yes, I think it would. Here's (most of) the original posting of the = question again (and how the text should look in emacs): = = ... = = Here are the specifications explicitly stated: Text must be = = double-spaced. Owing to the need for margins, text should wrap. There = = should be one space, not two, between sentences. Automatic tabs to = = indicate breaks between paragraphs. I think by this they mean a ^I = = character must begin a paragraph. Use regular double spaces between = = paragraphs (as you see here at the beginning and end of paragraphs. Use = = only one space, not two spaces, between sentences. = = So does such a mode already exist for emacs? Of course I'd want C-n = = and C-p to move the cursor to a text line and not to a blank line in = = between text lines. I know that "pr -d" will do the double-spacing for = = me after I write up the whole thing, but it would be nicer for emacs to = = do the double-spacing for me as I go along. The M-a and M-e keys should = = get me to the beginning and end of sentences and M-q should reformat = = stuff I screw up by editing. = = Finally, it would be best to have a separate (minor?) mode for this = = sort of format-- this, so I wouldn't have to set and unset a lot of = = variables every time I go in and out of editing in this mode. = = ... = = I found paragraph-indent-text-mode, copied it into .emacs, and modified = it so: = = (defun paragraph-indent-text-mode () = "Major mode for editing text, with leading spaces starting a = paragraph. = In this mode, you do not need blank lines between paragraphs = when the first line of the following paragraph starts with whitespace. = Special commands: = \\{text-mode-map} = Turning on Paragraph-Indent Text mode runs the normal hooks = `text-mode-hook' and `paragraph-indent-text-mode-hook'." = (interactive) = (kill-all-local-variables) = (use-local-map text-mode-map) = (setq mode-name "Parindent") = (setq major-mode 'paragraph-indent-text-mode) = (setq local-abbrev-table text-mode-abbrev-table) = (setq sentence-end "[.?!][]\"')]*\\($\\|\t\\| \\)[ \t\n]*") = (setq sentence-end-double-space' nil) = (setq paragraph-start "\t.+$") = (setq paragraph-separate "\n\n\t") = (set-syntax-table text-mode-syntax-table) = (run-hooks 'text-mode-hook 'paragraph-indent-text-mode-hook)) = = However, M-a and M-e will go to locations which aren't really the = begin/end of sentences, where the word following punctuation isn't = capitalized such as "foo, etc.) bar" where "bar" isn't the begin of a = new sentence. Can't we specify that the begin of a sentence should be = an uppercase character? How? (Regexps baffle me sometimes.) = = Also my defs for paragraph-start and paragraph-separate don't work; = ESC-{ and ESC-} move the cursor to the begin and end of the file = respectively. I'm guessing this is the reason that M-q turns a lot of = (tab-indented) paragraphs into one, big paragraph. The Info on these = variables demands too much of my pre-mavenistic understanding. = = To reply to Eli's question specifically, given that I'm looking for = double-line spacing ("blank" lines in between text lines), I don't think = it would be enough to remap RET to RET RET TAB because this would insert = blank lines only between paragraphs, not between every line of text. = Can emacs even do double-line spacing at all? = = = Anyone know how to get at this mode? = = = tia, = ken = = = = = _______________________________________________ = Help-gnu-emacs mailing list = Help-gnu-emacs@gnu.org = http://mail.gnu.org/mailman/listinfo/help-gnu-emacs = ^ permalink raw reply [flat|nested] 18+ messages in thread
[parent not found: <mailman.809.1070180065.399.help-gnu-emacs@gnu.org>]
* Re: Mode for Manuscripts? [not found] ` <mailman.809.1070180065.399.help-gnu-emacs@gnu.org> @ 2003-12-01 13:52 ` giacomo boffi 0 siblings, 0 replies; 18+ messages in thread From: giacomo boffi @ 2003-12-01 13:52 UTC (permalink / raw) Eli Zaretskii <eliz@elta.co.il> writes: >> From: gebser@speakeasy.net >> Newsgroups: gnu.emacs.help >> Date: Sat, 29 Nov 2003 23:11:10 -0500 >> >> Sure, I could do that. But I'd like to write it in the way I described. > > Does it take anything beyond binding RET to a function that inserts a > newline and then calls newline-and-indent? if you like auto-fill'ing, probably yes -- TORPEDOED BY AIRCRAFT 29W 32S. SINKING. U-690. ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Mode for Manuscripts? 2003-11-30 4:11 ` gebser 2003-11-30 7:14 ` Eli Zaretskii [not found] ` <mailman.809.1070180065.399.help-gnu-emacs@gnu.org> @ 2003-12-17 20:44 ` Kai Grossjohann 2003-12-18 12:46 ` gebser 2 siblings, 1 reply; 18+ messages in thread From: Kai Grossjohann @ 2003-12-17 20:44 UTC (permalink / raw) gebser@speakeasy.net writes: > Sure, I could do that. But I'd like to write it in the way I described. Maybe you could play with format-alist to frob the file contents on the way from file to Emacs and back. That way, you wouldn't see the double newlines, but they'd be in the file. In order to see double newlines, I would if it might work to use something similar to font-lock to place overlays on every newline with a before-string or after-string property containing one or two newlines. I never tried, so I don't know if it works. Hm. I guess it would be really difficult to change Emacs in such a way that M-q and friends and auto-fill do what you want for double-spaced files. Hm. Isn't there a way to tweak the distance between baselines in Emacs? That would enable people to have the look of double-space without actually having two consecutive newlines in the buffer. Then format-alist could add the newlines to the files. Kai ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Mode for Manuscripts? 2003-12-17 20:44 ` Kai Grossjohann @ 2003-12-18 12:46 ` gebser 0 siblings, 0 replies; 18+ messages in thread From: gebser @ 2003-12-18 12:46 UTC (permalink / raw) At 20:44 (UTC-0000) on Wed, 17 Dec 2003 Kai Grossjohann said: = gebser@speakeasy.net writes: = = > Sure.... = = Maybe you could play with format-alist to frob the file contents on = the way from file to Emacs and back. That way, you wouldn't see the = double newlines, but they'd be in the file. I think you're saying that the formatting of the text would change between disk and buffer. This is an acceptable hack and seems to be the most promising (most easily implementable) way to go about this. Because I'd use paragraph-indent-mode after the file's first ~30 words, format-alist shouldn't have a difficult time understanding what the file is supposed to be. = = In order to see double newlines, I would if it might work to use = something similar to font-lock to place overlays on every newline with = a before-string or after-string property containing one or two = newlines. I never tried, so I don't know if it works. I've used font-lock, but never poked around in the code for it. Doing that for this sort of file format would get pretty tricky-- at least for an elisp neophyte like myself. But it sounds-- on the face of it-- like it would address the issue at the level of coding where it should be addressed-- at least insofar as emacs can address it. = Hm. I guess it would be really difficult to change Emacs in such a = way that M-q and friends and auto-fill do what you want for = double-spaced files. I've done enough C to say that writing the code to do the work of fill-region in double-line-spacing wouldn't be too hard at all. Unfortunately, the C code for such a function would be worthless for emacs (yes?). Getting the double-line-spaced text to snake down and up the page as editing added and deleted text would involve essentially the same code, but invoked after every text-insertion and -deletion. Still not a huge mountain to climb-- but still useless to emacs if done in C (or so I'm guessing). = Hm. Isn't there a way to tweak the distance between baselines in = Emacs? That would enable people to have the look of double-space = without actually having two consecutive newlines in the buffer. Then = format-alist could add the newlines to the files. Poking around in the code, I found a variable for this, called dbl-space, But this is a non-solution. Simply having the text look like it's double-line-spaced would be of no use. Once completed, the manuscript file would either be printed and snail-mailed or directly emailed to an editor (the human kind). This ultimate destination is where the formatting actually matters. And in either case, the line spacing would be lost in the transition. Kai, Thanks much for your reply and suggestions. I hope that, despite the difficulties, it's still possible to make something come of all this. Regards, ken ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Mode for Manuscripts? [not found] <mailman.794.1070142961.399.help-gnu-emacs@gnu.org> 2003-11-30 1:22 ` Dan Anderson @ 2003-12-01 19:29 ` Stefan Monnier 2003-12-03 16:48 ` Rob Thorpe 2 siblings, 0 replies; 18+ messages in thread From: Stefan Monnier @ 2003-12-01 19:29 UTC (permalink / raw) > Yeah, it's a funny way to format text, but it's the format required > for manuscript submissions to publishers. Since emacs is such a great > editor, perhaps the best on the planet, I'm sure there is a mode already > constructed for this sort of format you see here in the body of this > email. I think it's worth it to follow the lead of LaTeX and other systems that try to distinguish between the content and the presentation. I.e. edit the text in whatever format you like (if you like double-spacing on screen, you can tell Emacs to place more pixels between lines) and then use something like `pr -d' to "compile" your text into what the publisher wants. The conversion between the two formats can be done when loading/saving the file or at any other time. If you really want to edit the ascii-double-space version of the document directly, then I'm afraid you'll have to work harder. Stefan ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Mode for Manuscripts? [not found] <mailman.794.1070142961.399.help-gnu-emacs@gnu.org> 2003-11-30 1:22 ` Dan Anderson 2003-12-01 19:29 ` Stefan Monnier @ 2003-12-03 16:48 ` Rob Thorpe 2003-12-03 17:22 ` Stefan Monnier 2 siblings, 1 reply; 18+ messages in thread From: Rob Thorpe @ 2003-12-03 16:48 UTC (permalink / raw) I sometimes use Emacs for similar purposes. What would be useful to me is a mode where: * Tabs that just tab rather than whitespacing to the next word on the line above, which hardly ever makes sense (of course I can do this by binding tab to M-i) * Once tab has been used at the start of a line it would be nice if auto-fill-mode didn't begin at the new indent. This makes sense for programming languages but no sense for text. Personally I deal with things like line spacing later when printing anything out. gebser@speakeasy.net wrote in message news:<mailman.794.1070142961.399.help-gnu-emacs@gnu.org>... > Yeah, it's a funny way to format text, but it's the format required > > for manuscript submissions to publishers. Since emacs is such a great > > editor, perhaps the best on the planet, I'm sure there is a mode already > > constructed for this sort of format you see here in the body of this > > email. > > Here are the specifications explicitly stated: Text must be > > double-spaced. Owing to the need for margins, text should wrap. There > > should be one space, not two, between sentences. Automatic tabs to > > indicate breaks between paragraphs. I think by this they mean a ^I > > character must begin a paragraph. Use regular double spaces between > > paragraphs (as you see at the beginning of the current paragraph. Use > > only one space, not two spaces, between sentences. > > So does such a mode already exist for emacs? Of course I'd want C-n > > and C-p to move the cursor to a text line and not to a blank line in > > between text lines. I know that "pr -d" will do the double-spacing for > > me after I write up the whole thing, but it would be nicer for emacs to > > do the double-spacing for me as I go along. The M-a and M-e keys should > > get me to the beginning and end of sentences and M-q should reformat > > stuff I screw up by editing. > > Finally, it would be best to have a separate (minor?) mode for this > > sort of format-- this so I would have to set and unset a lot of > > variables every time I go in and out of editing in this mode. > > Any help or tips would be very much appreciated. > > > > ken ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Mode for Manuscripts? 2003-12-03 16:48 ` Rob Thorpe @ 2003-12-03 17:22 ` Stefan Monnier 2003-12-05 9:20 ` Rob Thorpe 0 siblings, 1 reply; 18+ messages in thread From: Stefan Monnier @ 2003-12-03 17:22 UTC (permalink / raw) > * Tabs that just tab rather than whitespacing to the next word on the > line above, which hardly ever makes sense (of course I can do this by > binding tab to M-i) > * Once tab has been used at the start of a line it would be nice if > auto-fill-mode didn't begin at the new indent. This makes sense for > programming languages but no sense for text. Ever tried M-x paragraph-indent-text-mode ? Stefan ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Mode for Manuscripts? 2003-12-03 17:22 ` Stefan Monnier @ 2003-12-05 9:20 ` Rob Thorpe 0 siblings, 0 replies; 18+ messages in thread From: Rob Thorpe @ 2003-12-05 9:20 UTC (permalink / raw) Stefan Monnier <monnier@iro.umontreal.ca> wrote in message news:<jwvy8ttkeai.fsf-monnier+gnu.emacs.help@vor.iro.umontreal.ca>... > > * Tabs that just tab rather than whitespacing to the next word on the > > line above, which hardly ever makes sense (of course I can do this by > > binding tab to M-i) > > > * Once tab has been used at the start of a line it would be nice if > > auto-fill-mode didn't begin at the new indent. This makes sense for > > programming languages but no sense for text. > > Ever tried M-x paragraph-indent-text-mode ? Thanks a lot, that's useful. Is there a way either of these modes can be mixed with outline-mode? I normally write points then turn them into paragraphs. ^ permalink raw reply [flat|nested] 18+ messages in thread
[parent not found: <mailman.251.1071755300.868.help-gnu-emacs@gnu.org>]
* Re: Mode for Manuscripts? [not found] <mailman.251.1071755300.868.help-gnu-emacs@gnu.org> @ 2003-12-18 18:24 ` Kai Grossjohann 2003-12-22 13:36 ` gebser 0 siblings, 1 reply; 18+ messages in thread From: Kai Grossjohann @ 2003-12-18 18:24 UTC (permalink / raw) gebser@speakeasy.net writes: > At 20:44 (UTC-0000) on Wed, 17 Dec 2003 Kai Grossjohann said: > > = gebser@speakeasy.net writes: > = > = > Sure.... > = > = Maybe you could play with format-alist to frob the file contents on > = the way from file to Emacs and back. That way, you wouldn't see the > = double newlines, but they'd be in the file. > > I think you're saying that the formatting of the text would change > between disk and buffer. This is an acceptable hack and seems to be the > most promising (most easily implementable) way to go about this. > Because I'd use paragraph-indent-mode after the file's first ~30 words, > format-alist shouldn't have a difficult time understanding what the file > is supposed to be. Yes, I'm afraid that this hack is the best we can do. > = In order to see double newlines, I would if it might work to use > = something similar to font-lock to place overlays on every newline with > = a before-string or after-string property containing one or two > = newlines. I never tried, so I don't know if it works. > > I've used font-lock, but never poked around in the code for it. Doing > that for this sort of file format would get pretty tricky-- at least for > an elisp neophyte like myself. But it sounds-- on the face of it-- like > it would address the issue at the level of coding where it should be > addressed-- at least insofar as emacs can address it. Yes, indeed. Hm. Maybe the dbl-space idea is more workable. > = Hm. I guess it would be really difficult to change Emacs in such a > = way that M-q and friends and auto-fill do what you want for > = double-spaced files. > > I've done enough C to say that writing the code to do the work of > fill-region in double-line-spacing wouldn't be too hard at all. > Unfortunately, the C code for such a function would be worthless for > emacs (yes?). Getting the double-line-spaced text to snake down and up > the page as editing added and deleted text would involve essentially the > same code, but invoked after every text-insertion and -deletion. Still > not a huge mountain to climb-- but still useless to emacs if done in C > (or so I'm guessing). Hm, let's see now. I wonder how filling really works. Ah. It seems that filling first removes all newlines, then adds new newlines. So I guess that calling fill-region-as-paragraph on a double-spaced region will properly fill it. Let's see now... Yeah, it works! So now you just need to tell filling to insert two newlines instead of one. Filling uses the function fill-newline to insert a newline. That function does a lot of stuff. Inserting a newline character is only a small part of it. But you could write a function that does like fill-newline does except that it inserts two newlines. Then you tell filling to use your function: (defun gebser-fill-newline () ...like fill-newline but with two newlines...) Now we need to tell filling to use this function instead of the normal fill-newline: (defun gebser-fill-region-as-paragraph (beg end) (interactive "r") (require 'cl) (flet ((fill-newline () (gebser-fill-newline))) (fill-region-as-paragraph (beg end)))) Now mark a region that corresponds to a paragraph (with double spaces in the middle). Now invoke filling with M-x gebser-fill-region-as-paragraph RET. Does it work up to here? I haven't tested it. > = Hm. Isn't there a way to tweak the distance between baselines in > = Emacs? That would enable people to have the look of double-space > = without actually having two consecutive newlines in the buffer. Then > = format-alist could add the newlines to the files. > > Poking around in the code, I found a variable for this, called > dbl-space, But this is a non-solution. That's not true. It's not a *complete* solution, I admit. But it could be part of a complete solution. So I don't see it as so bad. > Simply having the text look like it's double-line-spaced would be of > no use. Once completed, the manuscript file would either be printed > and snail-mailed or directly emailed to an editor (the human kind). > This ultimate destination is where the formatting actually matters. > And in either case, the line spacing would be lost in the > transition. My impression was that you prefer to see double spacing on screen, and also that the files are double spaced. So my idea was this: Use format-alist to double the newlines on the way from the buffer to the file, and also use dbl-space to make the single newlines in the buffer look like double newlines. This way, the files have the right contents, and the buffer looks right. That seemed to be what you wanted. Only the internal buffer representation isn't what you want -- but who cares... > Thanks much for your reply and suggestions. I hope that, despite the > difficulties, it's still possible to make something come of all this. Difficulties? Don't be so negative. Problems are fascinating things; let them inspire you ;-) But I guess you're not looking for the intellectual challenge in this; you're just trying to get a job done. I understand that this produces a different point of view. Kai ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Mode for Manuscripts? 2003-12-18 18:24 ` Kai Grossjohann @ 2003-12-22 13:36 ` gebser 0 siblings, 0 replies; 18+ messages in thread From: gebser @ 2003-12-22 13:36 UTC (permalink / raw) At 18:24 (UTC-0000) on Thu, 18 Dec 2003 Kai Grossjohann said: = gebser@speakeasy.net writes: = = > At 20:44 (UTC-0000) on Wed, 17 Dec 2003 Kai Grossjohann said: = > = > = gebser@speakeasy.net writes: = > = = > = > Sure.... = > = = > = Maybe you could play with format-alist to frob the file contents on = > = the way from file to Emacs and back. That way, you wouldn't see the = > = double newlines, but they'd be in the file. = > = > I think you're saying that the formatting of the text would change = > between disk and buffer. This is an acceptable hack and seems to be the = > most promising (most easily implementable) way to go about this. = > Because I'd use paragraph-indent-mode after the file's first ~30 words, = > format-alist shouldn't have a difficult time understanding what the file = > is supposed to be. = = Yes, I'm afraid that this hack is the best we can do. Reading the documentation for format-alist, I can see a lot of possibilities. Just to make sure that I'm reading it correctly, the output of the TO-FN argument is what is written to disk, yes? If so, the BUFFER argument to TO-FN would, in this case, be the current buffer, also true? And where do the values for BEGIN and END come from? And the specified conversion will occur each time the buffer is written to disk? Finally, I can understand how, when visiting an encoded file, the buffer will be a converted version of the diskfile. But when a user (like myself) receives a double-spaced file (say, from another person) and reads this unencoded file into a buffer, how does the user tell emacs to use format-alist when writing the buffer to disk? = = > = In order to see double newlines, I would if it might work to use = > = something similar to font-lock to place overlays on every newline with = > = a before-string or after-string property containing one or two = > = newlines. I never tried, so I don't know if it works. = > = > I've used font-lock, but never poked around in the code for it. Doing = > that for this sort of file format would get pretty tricky-- at least for = > an elisp neophyte like myself. But it sounds-- on the face of it-- like = > it would address the issue at the level of coding where it should be = > addressed-- at least insofar as emacs can address it. = = Yes, indeed. Hm. Maybe the dbl-space idea is more workable. Reading the code that contains dbl-space, it seems that it is a local variable, one whose scope is limited to outline-open-topic function (in allout.el). (The concepts of "scope" and "local variables" are applicable to elisp, correct?) Incorporating it into a different formatting mode would be helpful, but we'd still need to amend fill and cursor movement functions to be useful and sensible in double-line-spaced text. None of this would be unfeasible, at least not at first look. = = > = Hm. I guess it would be really difficult to change Emacs in such a = > = way that M-q and friends and auto-fill do what you want for = > = double-spaced files. = > = > I've done enough C to say that writing the code to do the work of = > fill-region in double-line-spacing wouldn't be too hard at all. = > Unfortunately, the C code for such a function would be worthless for = > emacs (yes?). Getting the double-line-spaced text to snake down and up = > the page as editing added and deleted text would involve essentially the = > same code, but invoked after every text-insertion and -deletion. Still = > not a huge mountain to climb-- but still useless to emacs if done in C = > (or so I'm guessing). = = Hm, let's see now. I wonder how filling really works. Ah. It seems = that filling first removes all newlines, then adds new newlines. So I = guess that calling fill-region-as-paragraph on a double-spaced region = will properly fill it. Let's see now... Yeah, it works! So now you = just need to tell filling to insert two newlines instead of one. = = Filling uses the function fill-newline to insert a newline. That = function does a lot of stuff. Inserting a newline character is only a = small part of it. But you could write a function that does like = fill-newline does except that it inserts two newlines. Then you tell = filling to use your function: = = (defun gebser-fill-newline () = ...like fill-newline but with two newlines...) = = Now we need to tell filling to use this function instead of the normal = fill-newline: = = (defun gebser-fill-region-as-paragraph (beg end) = (interactive "r") = (require 'cl) = (flet ((fill-newline () (gebser-fill-newline))) = (fill-region-as-paragraph (beg end)))) = = Now mark a region that corresponds to a paragraph (with double spaces = in the middle). Now invoke filling with M-x = gebser-fill-region-as-paragraph RET. = = Does it work up to here? I haven't tested it. Thanks for looking into this. Being quite the novice at lisp, it'll take me some time to write these little snippets of code. But your tips should prove to be quite helpful. = = > = Hm. Isn't there a way to tweak the distance between baselines in = > = Emacs? That would enable people to have the look of double-space = > = without actually having two consecutive newlines in the buffer. Then = > = format-alist could add the newlines to the files. = > = > Poking around in the code, I found a variable for this, called = > dbl-space, But this is a non-solution. = = That's not true. It's not a *complete* solution, I admit. But it = could be part of a complete solution. So I don't see it as so bad. = = > Simply having the text look like it's double-line-spaced would be of = > no use. Once completed, the manuscript file would either be printed = > and snail-mailed or directly emailed to an editor (the human kind). = > This ultimate destination is where the formatting actually matters. = > And in either case, the line spacing would be lost in the = > transition. = = My impression was that you prefer to see double spacing on screen, and = also that the files are double spaced. So my idea was this: = ... Well, yes and no. Just for my own purposes, having the buffer simply appear that it is double-line-spaced (when it really isn't) would not be desirable. Though true double-spacing would be most preferred, failing that, I could deal with single-spaced text and do other processing outside of emacs to make the text usable. Least preferred would be to have the text appear to be double-spaced when it really isn't. But if workable rewrites can be performed for fill-region, forward-line, sentence-end, other cursor/point movement commands, format-alist, and perhaps a few other functions and variables, then we should have the beginnings of a nice package, maybe even something which will attract others to emacs. Thanks again for lending your experience. ken ^ permalink raw reply [flat|nested] 18+ messages in thread
[parent not found: <mailman.464.1072103900.868.help-gnu-emacs@gnu.org>]
* Re: Mode for Manuscripts? [not found] <mailman.464.1072103900.868.help-gnu-emacs@gnu.org> @ 2003-12-22 16:44 ` Kai Grossjohann 0 siblings, 0 replies; 18+ messages in thread From: Kai Grossjohann @ 2003-12-22 16:44 UTC (permalink / raw) gebser@speakeasy.net writes: > Reading the documentation for format-alist, I can see a lot of > possibilities. Just to make sure that I'm reading it correctly, the > output of the TO-FN argument is what is written to disk, yes? Yep. That's how I read it, too. > If so, the BUFFER argument to TO-FN would, in this case, be the current > buffer, also true? And where do the values for BEGIN and END come from? Yes, BUFFER would be the buffer you're trying to save. But please don't write code depending on BUFFER being equal to (current-buffer). Just do (set-buffer BUFFER) and then that buffer will be current. BEGIN and END are two buffer positions, normally the beginning and the end of the buffer. But people can use M-x write-region RET which I guess would also invoke the function. In that case, BEGIN and END will specify the beginning and the end of the region to be written. > And the specified conversion will occur each time the buffer is written > to disk? In principle, yes. But I don't quite remember what it takes so that format-alist is used at all. Also Emacs uses the given REGEXP to decide whether to use the entry. I think that in longlines.el I required users to say M-x format-find-file RET, specifying the right format-alist entry. > Finally, I can understand how, when visiting an encoded file, the buffer > will be a converted version of the diskfile. But when a user (like > myself) receives a double-spaced file (say, from another person) and > reads this unencoded file into a buffer, how does the user tell emacs to > use format-alist when writing the buffer to disk? Hm. format-find-file is for reading... C-h f format TAB TAB... Ah! format-encode-buffer looks promising, and indeed C-h f tells me that it should do what you need. I wonder if there is a method to say "use this format for saving the buffer, when C-x C-s is used". > Reading the code that contains dbl-space, it seems that it is a local > variable, one whose scope is limited to outline-open-topic function (in > allout.el). (The concepts of "scope" and "local variables" are > applicable to elisp, correct?) Ah. In allout.el. Then surely it's not a general facility. I thought you had discovered a general Emacs feature that existed since Emacs 17 or so, and that I somehow missed. (The variable name somehow looks weird -- either an old-fashioned feature or a local variable, but modern "user-visible" variables wouldn't use abbreviations like this.) >From a superficial skimming of the given source, it seems that allout.el uses the variable to signify whether two spaces are used after an end of sentence period. > Incorporating it into a different formatting mode would be helpful, > but we'd still need to amend fill and cursor movement functions to > be useful and sensible in double-line-spaced text. None of this > would be unfeasible, at least not at first look. I guess you can't use that variable at all. > Thanks for looking into this. Being quite the novice at lisp, it'll > take me some time to write these little snippets of code. But your tips > should prove to be quite helpful. I was hoping someone else would pitch in with the missing bits ;-) Also it's more fun to have the other try little bits, that way I can avoid the debugging and off-load that task to you ;-) > = My impression was that you prefer to see double spacing on screen, and > = also that the files are double spaced. So my idea was this: > > Well, yes and no. Just for my own purposes, having the buffer simply > appear that it is double-line-spaced (when it really isn't) would not be > desirable. Having the buffer appear double-spaced would only be useful in conjunction with the format-alist idea. > Though true double-spacing would be most preferred, failing that, I > could deal with single-spaced text and do other processing outside > of emacs to make the text usable. Okay, so using the format-alist trick would also be fine, right? > Least preferred would be to have the text appear to be double-spaced > when it really isn't. But if workable rewrites can be performed for > fill-region, forward-line, sentence-end, other cursor/point movement > commands, format-alist, and perhaps a few other functions and > variables, then we should have the beginnings of a nice package, > maybe even something which will attract others to emacs. Okay, let's tackle the format-alist thing. (defun gebser-doublespace-format-decode-region (b e) (save-excursion ;; need to convert e into a marker so that it moves ;; with buffer changes (goto-char e) (setq e (point-marker)) ;; now convert the region (goto-char b) (while (and (not (eobp)) (< (point) (marker-position e))) (forward-line 1) (delete-char 1)) ;; return new end (marker-position e))) (defun gebser-doublespace-format-encode-region (b e buf) (save-excursion (copy-to-buffer buf b e) (set-buffer buf) ;; same marker trick as above (goto-char e) (setq e (point-marker)) ;; now convert the region (goto-char b) (while (and (not (eobp)) (< (point) (marker-position e))) (end-of-line) (newline) (forward-char 1)) ;; return new end (marker-position e))) (add-to-list 'format-alist '(doublespace "Double spaced text files." nil ; not sure about regexp yet gebser-doublespace-format-decode-region gebser-doublespace-format-encode-region t ; want to modify the buffer nil)) I think you need to do M-x format-find-file RET to read double-spaced files. I guess that C-x C-s will do the right thing for saving. What does the above do? Hm. Let me test it... No, it doesn't work. It changes the current buffer on save, instead of changing the file on disk. :-( Kai ^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2003-12-22 16:44 UTC | newest] Thread overview: 18+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2003-11-29 20:53 Mode for Manuscripts? gebser 2003-11-30 1:33 ` Peter S Galbraith 2003-11-30 4:14 ` gebser [not found] <mailman.794.1070142961.399.help-gnu-emacs@gnu.org> 2003-11-30 1:22 ` Dan Anderson 2003-11-30 4:11 ` gebser 2003-11-30 7:14 ` Eli Zaretskii 2003-11-30 17:15 ` gebser 2003-12-02 14:57 ` gebser [not found] ` <mailman.809.1070180065.399.help-gnu-emacs@gnu.org> 2003-12-01 13:52 ` giacomo boffi 2003-12-17 20:44 ` Kai Grossjohann 2003-12-18 12:46 ` gebser 2003-12-01 19:29 ` Stefan Monnier 2003-12-03 16:48 ` Rob Thorpe 2003-12-03 17:22 ` Stefan Monnier 2003-12-05 9:20 ` Rob Thorpe [not found] <mailman.251.1071755300.868.help-gnu-emacs@gnu.org> 2003-12-18 18:24 ` Kai Grossjohann 2003-12-22 13:36 ` gebser [not found] <mailman.464.1072103900.868.help-gnu-emacs@gnu.org> 2003-12-22 16:44 ` Kai Grossjohann
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).