unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* word-wrap (visual-line) and indents
@ 2010-05-25 15:37 David Reitter
  2010-05-25 16:30 ` Lennart Borgman
  2010-05-25 17:05 ` Stefan Monnier
  0 siblings, 2 replies; 8+ messages in thread
From: David Reitter @ 2010-05-25 15:37 UTC (permalink / raw
  To: Emacs-Devel devel

Speaking of word-wrapping, I thought now would be a good time to bring up the missing feature of per-line indentation when word wrapping.

A recent conversation is quoted below, pointing out that word-wrap is less than ideal when it comes to displaying e-mail (and the like).
A similar example would be org-mode, where you would begin a (buffer) line with "- " or "  - "  and where word-wrap would, ideally, recognize such indentations.  

A buffer-local variable indicating a regexp that matches indentation prefixes would be ideal.  (As a feature, I would even suggest that if the regexp has a \\(group\\), the only the length of that group is taken as the indentation length.

To display the actual indentation, I think auto-fill-mode used the same prefix string that was recognized.  This was fine for e-mail quotes, but always very annoying visually for lists with "- ".  I can see that the latter used to be necessary for org-mode, because buffer lines were created when auto-filling, but the visual word-wrap doesn't have to respect that.

Indentation with spaces would be sufficient, given that e-mail quotes can also be highlighted by color.   However, if repeating the prefix is desired, then one could make this configurable per buffer (either prefix or spaces).



On May 24, 2010, at 3:06 PM, Ralf Angeli wrote:
>>> By the way, speaking of nuisances, the lines in your mails are too long
>>> which makes them hard to read.
>> 
>> What mail client do you use? 
>> If in Emacs, try M-x visual-line-mode.  Or set word-wrap to t.
> 
> Visual Line mode does not seem to be able to cope with prefixes like
> quote markers.
> 
>> I can't predict how wide your window is today, so lines can't be broken here.




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

* Re: word-wrap (visual-line) and indents
  2010-05-25 15:37 word-wrap (visual-line) and indents David Reitter
@ 2010-05-25 16:30 ` Lennart Borgman
  2010-05-25 17:29   ` David Reitter
  2010-05-25 17:05 ` Stefan Monnier
  1 sibling, 1 reply; 8+ messages in thread
From: Lennart Borgman @ 2010-05-25 16:30 UTC (permalink / raw
  To: David Reitter; +Cc: Emacs-Devel devel

On Tue, May 25, 2010 at 5:37 PM, David Reitter <david.reitter@gmail.com> wrote:
> Speaking of word-wrapping, I thought now would be a good time to bring up the missing feature of per-line indentation when word wrapping.
>
> A recent conversation is quoted below, pointing out that word-wrap is less than ideal when it comes to displaying e-mail (and the like).
> A similar example would be org-mode, where you would begin a (buffer) line with "- " or "  - "  and where word-wrap would, ideally, recognize such indentations.
>
> A buffer-local variable indicating a regexp that matches indentation prefixes would be ideal.  (As a feature, I would even suggest that if the regexp has a \\(group\\), the only the length of that group is taken as the indentation length.
>
> To display the actual indentation, I think auto-fill-mode used the same prefix string that was recognized.  This was fine for e-mail quotes, but always very annoying visually for lists with "- ".  I can see that the latter used to be necessary for org-mode, because buffer lines were created when auto-filling, but the visual word-wrap doesn't have to respect that.
>
> Indentation with spaces would be sufficient, given that e-mail quotes can also be highlighted by color.   However, if repeating the prefix is desired, then one could make this configurable per buffer (either prefix or spaces).


I have tried to implement this in `wrap-to-fill-column' (which is part
of nXhtml currently). Can you test it and see how it fits? I can
imagine you may want to split out the indentation part, I just have
not done that yet (since no one has seemed very interested until today
;-) ).


> On May 24, 2010, at 3:06 PM, Ralf Angeli wrote:
>>>> By the way, speaking of nuisances, the lines in your mails are too long
>>>> which makes them hard to read.
>>>
>>> What mail client do you use?
>>> If in Emacs, try M-x visual-line-mode.  Or set word-wrap to t.
>>
>> Visual Line mode does not seem to be able to cope with prefixes like
>> quote markers.
>>
>>> I can't predict how wide your window is today, so lines can't be broken here.
>
>
>



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

* Re: word-wrap (visual-line) and indents
  2010-05-25 15:37 word-wrap (visual-line) and indents David Reitter
  2010-05-25 16:30 ` Lennart Borgman
@ 2010-05-25 17:05 ` Stefan Monnier
  2010-05-25 19:39   ` Stephen Berman
  1 sibling, 1 reply; 8+ messages in thread
From: Stefan Monnier @ 2010-05-25 17:05 UTC (permalink / raw
  To: David Reitter; +Cc: Emacs-Devel devel

> Speaking of word-wrapping, I thought now would be a good time to bring
> up the missing feature of per-line indentation when word wrapping.
> A recent conversation is quoted below, pointing out that word-wrap is
> less than ideal when it comes to displaying e-mail (and the like).
> A similar example would be org-mode, where you would begin a (buffer)
> line with "- " or "  - "  and where word-wrap would, ideally,
> recognize such indentations.  

The C code already has hooks that make such a thing possible:
Just place a `wrap-prefix' property on the long-line which specify what
prefix to use when wrapping the line.

So all we need is a new minor-mode that uses jit-lock-register and then
sets up this property using something like fill-context-prefix.


        Stefan



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

* Re: word-wrap (visual-line) and indents
  2010-05-25 16:30 ` Lennart Borgman
@ 2010-05-25 17:29   ` David Reitter
  2010-05-25 17:36     ` Lennart Borgman
  0 siblings, 1 reply; 8+ messages in thread
From: David Reitter @ 2010-05-25 17:29 UTC (permalink / raw
  To: Lennart Borgman; +Cc: Emacs-Devel devel

On May 25, 2010, at 12:30 PM, Lennart Borgman wrote:

> 
> I have tried to implement this in `wrap-to-fill-column' (which is part
> of nXhtml currently). Can you test it and see how it fits

Can you give me a pointer to this?
I have tried the master branch (24), in nxml-mode, and couldn't find a variable or function of this name.  I don't seem to have a nxhtml-mode.   Do you mean the latest release of nXhtml on ourcomments.org?

Maybe if you split it out, that'd be easiest, because then I could see how this works in other modes.




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

* Re: word-wrap (visual-line) and indents
  2010-05-25 17:29   ` David Reitter
@ 2010-05-25 17:36     ` Lennart Borgman
  2010-05-25 19:12       ` David Reitter
  0 siblings, 1 reply; 8+ messages in thread
From: Lennart Borgman @ 2010-05-25 17:36 UTC (permalink / raw
  To: David Reitter; +Cc: Emacs-Devel devel

On Tue, May 25, 2010 at 7:29 PM, David Reitter <david.reitter@gmail.com> wrote:
> On May 25, 2010, at 12:30 PM, Lennart Borgman wrote:
>
>>
>> I have tried to implement this in `wrap-to-fill-column' (which is part
>> of nXhtml currently). Can you test it and see how it fits
>
> Can you give me a pointer to this?
> I have tried the master branch (24), in nxml-mode, and couldn't find a variable or function of this name.  I don't seem to have a nxhtml-mode.   Do you mean the latest release of nXhtml on ourcomments.org?

Check out nXhtml from Launchpad and just add a line

   (load "nxhtml/autostart.el")

Then you have the minor mode `wrap-to-fill-column-mode'.

However it does not try to make use of fill-context-prefix yet. It has
its own way to set things up. I hope we can change that later.


> Maybe if you split it out, that'd be easiest, because then I could see how this works in other modes.

wrap-to-fill-column-mode does two things

- Sets margin so that only fill-column columns is left for the text.
- Sets 'wrap-prefix on the lines that it thinks should be indented.

So I think for testing you can use it as it is.



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

* Re: word-wrap (visual-line) and indents
  2010-05-25 17:36     ` Lennart Borgman
@ 2010-05-25 19:12       ` David Reitter
  2010-05-25 21:34         ` Lennart Borgman
  0 siblings, 1 reply; 8+ messages in thread
From: David Reitter @ 2010-05-25 19:12 UTC (permalink / raw
  To: Lennart Borgman; +Cc: Emacs-Devel devel

On May 25, 2010, at 1:36 PM, Lennart Borgman wrote:
> 
>   (load "nxhtml/autostart.el")
> 
> Then you have the minor mode `wrap-to-fill-column-mode'.
> 
> However it does not try to make use of fill-context-prefix yet. It has
> its own way to set things up. I hope we can change that later.

I'm confused - how does it work then?
It's based on word-wrapping (visual-line-mode), right?





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

* Re: word-wrap (visual-line) and indents
  2010-05-25 17:05 ` Stefan Monnier
@ 2010-05-25 19:39   ` Stephen Berman
  0 siblings, 0 replies; 8+ messages in thread
From: Stephen Berman @ 2010-05-25 19:39 UTC (permalink / raw
  To: emacs-devel

On Tue, 25 May 2010 13:05:08 -0400 Stefan Monnier <monnier@iro.umontreal.ca> wrote:

>> Speaking of word-wrapping, I thought now would be a good time to bring
>> up the missing feature of per-line indentation when word wrapping.
>> A recent conversation is quoted below, pointing out that word-wrap is
>> less than ideal when it comes to displaying e-mail (and the like).
>> A similar example would be org-mode, where you would begin a (buffer)
>> line with "- " or "  - "  and where word-wrap would, ideally,
>> recognize such indentations.  
>
> The C code already has hooks that make such a thing possible:
> Just place a `wrap-prefix' property on the long-line which specify what
> prefix to use when wrapping the line.
>
> So all we need is a new minor-mode that uses jit-lock-register and then
> sets up this property using something like fill-context-prefix.

See <http://thread.gmane.org/gmane.emacs.devel/100184/focus=100375>.
You followed up with some suggestions, incorporated in the code below (I
had included the commented out lines, but you thought they should be
separate features).  Maybe this could be the basis for such a minor
mode.

Steve Berman


(defun srb-adaptive-indent (beg end)
  "Indent the region between BEG and END with adaptive filling."
  (goto-char beg)
  (while
      (let ((lbp (line-beginning-position))
	    (lep (line-end-position)))
	(put-text-property lbp lep 'wrap-prefix (fill-context-prefix lbp lep))
	(search-forward "\n" end t))))

(define-minor-mode srb-adaptive-wrap-mode
  "Wrap the buffer text with adaptive filling."
  :lighter ""
  (save-excursion
    (save-restriction
      (widen)
      (let ((buffer-undo-list t)
	    (inhibit-read-only t)
	    (mod (buffer-modified-p)))
	(if srb-adaptive-wrap-mode
	    (progn
	      ;; (setq word-wrap t)
	      ;; (unless (member '(continuation) fringe-indicator-alist)
	      ;; 	(push '(continuation) fringe-indicator-alist))
	      (jit-lock-register 'srb-adaptive-indent))
	  (jit-lock-unregister 'srb-adaptive-indent)
	  (remove-text-properties (point-min) (point-max) '(wrap-prefix pref))
	  ;; (setq fringe-indicator-alist
	  ;; 	(delete '(continuation) fringe-indicator-alist))
	  ;; (setq word-wrap nil))
	(restore-buffer-modified-p mod))))))




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

* Re: word-wrap (visual-line) and indents
  2010-05-25 19:12       ` David Reitter
@ 2010-05-25 21:34         ` Lennart Borgman
  0 siblings, 0 replies; 8+ messages in thread
From: Lennart Borgman @ 2010-05-25 21:34 UTC (permalink / raw
  To: David Reitter; +Cc: Emacs-Devel devel

On Tue, May 25, 2010 at 9:12 PM, David Reitter <david.reitter@gmail.com> wrote:
> On May 25, 2010, at 1:36 PM, Lennart Borgman wrote:
>>
>>   (load "nxhtml/autostart.el")
>>
>> Then you have the minor mode `wrap-to-fill-column-mode'.
>>
>> However it does not try to make use of fill-context-prefix yet. It has
>> its own way to set things up. I hope we can change that later.
>
> I'm confused - how does it work then?
> It's based on word-wrapping (visual-line-mode), right?


It uses wrap-prefix and sets it by examining the lines during
fontification. I was not aware of fill-context-prefix. That looks like
a much more simple solution. I will switch to it later.



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

end of thread, other threads:[~2010-05-25 21:34 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-05-25 15:37 word-wrap (visual-line) and indents David Reitter
2010-05-25 16:30 ` Lennart Borgman
2010-05-25 17:29   ` David Reitter
2010-05-25 17:36     ` Lennart Borgman
2010-05-25 19:12       ` David Reitter
2010-05-25 21:34         ` Lennart Borgman
2010-05-25 17:05 ` Stefan Monnier
2010-05-25 19:39   ` Stephen Berman

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

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).