On 12:57 Sun 21 Aug     , Peter Odding wrote:
> Hi Marcin,
> 
> > With the conceal feature enabled it happens that a long line that fills
> > several screen lines (without conceal) is break at exactly the same places
> > when conceal is not enabled. For example look at the following line with the
> > following settings: set ft=tex, set cole=2
> > \(\bigcap_{i\in I}\;A\otimes I_i\ni\sum_{l=1}^n a_l\otimes b_l&  
> > \;\Leftrightarrow\;\forall_{i\in I}\ \sum_{l=1}^n a_l\otimes b_l\in 
> > A\otimes I_i\notag\)
> >
> > It would be nice if vim could fill whole the lines, i.e. break them in
> > more accurate places when conceal is enabled.
> 
> I've also noticed this problem and mentioned it on vim-dev, wondering 
> whether it could be fixed or if it would complicate Vim too much, 
> however I got no replies so I guess that means it would indeed be hard 
> too fix, probably for the reasons I expected (see the attached message).
> 
>   - Peter
> 
> -- 
> You received this message from the "vim_dev" maillist.
> Do not top-post! Type your reply below the text you are replying to.
> For more information, visit http://www.vim.org/maillist.php

> Date: Thu, 22 Jul 2010 05:53:44 +0200
> From: Peter Odding <[email protected]>
> To: vim_dev <[email protected]>
> Subject: Markdown syntax script using the new conceal feature
> Reply-To: [email protected]
> 
> Hi list,
> 
> Last night I switched to Vim 7.3 and one of the first things I wanted to 
> try was the new conceal feature. A perfect test subject for me was 
> Markdown text formatting because its goal is to be very readable but its 
> syntax rules kind of get in the way of readability :-) (IMHO).
> 
> After some late night hacking I now have a ~/.vim/syntax/mkd.vim script 
> which can conceal most of the extra syntax in Markdown texts and I 
> really like it so far. Thanks to everyone who made this possible!
> 
> I don't know how far the conceal feature is supposed to be pushed (e.g. 
> my syntax script hides full URLs which can more or less span a whole 
> screen line...) but during testing I found that it's not really 
> compatible with the 'wrap' option, at least not unless you like very 
> jagged paragraphs :-(
> 
> I've attached the syntax script and a test case (a README from one of my 
> Vim plug-ins with a lot of inline hyper links that make the text hard to 
> follow without the conceal feature) for anyone who's interested. These 
> two files could make a good test case for the line wrapping bug, if 
> indeed it is considered a bug and can be fixed with reasonable effort (I 
> suppose if concealing can make full screen lines disappear that might 
> complicate Vim's drawing code significantly...)
> 
>   - Peter Odding

> syntax spell toplevel
> setlocal conceallevel=2
> 
> runtime! syntax/html.vim
> 
> " # Headings
> syntax match mkdHeading /^#.*/ contains=mkdCode,mkdInlineLink,mkdRefLink
> syntax match mkdHeadingMarker /^#\+\s*/ conceal contained 
> containedin=mkdHeading
> 
> " Italic text.
> syntax region mkdItalic matchgroup=mkdMarker start=/\\\@<!\*/ end=/\\\@<!\*/ 
> concealends
> 
> " Bold text.
> syntax region mkdBold matchgroup=mkdMarker start=/\\\@<!\*\*/ 
> end=/\\\@<!\*\*/ concealends
> 
> " Inline `code` fragments.
> syntax region mkdCode matchgroup=mkdMarker start=/\\\@<!`/ end=/\\\@<!`/ 
> concealends
> 
> " Pre-formatted code blocks.
> syntax match mkdCodeBlock /\(\_^    .*\)\+/ contains=@NoSpell
> 
> " <literal-link-syntax>
> syntax match mkdLiteralLink !<\(\w\+://[^>]\+\|[^ \t\n>@]\+@[^ \t\n>]\+\)>! 
> contains=@NoSpell
> syntax match mkdLiteralLinkMarker /[<>]/ conceal contained 
> containedin=mkdLiteralLink
> 
> " [inline](link://syntax)
> syntax match mkdInlineLink /\[\_[^\]]\+]([^)]\+)/
> syntax match mkdInlineLinkLabel /\[\@<=\_[^\]]\+]\@=/ contained 
> containedin=mkdInlineLink contains=@NoSpell
> syntax match mkdInlineLinkTarget /(\@<=[^)]\+)\@=/ contained 
> containedin=mkdInlineLinkEnd contains=@NoSpell
> syntax match mkdInlineLinkStart /\[/ conceal contained 
> containedin=mkdInlineLink
> syntax match mkdInlineLinkEnd /]([^)]\+)/ conceal contained 
> containedin=mkdInlineLink
> 
> " [reference][link-syntax]
> syntax match mkdRefLink /\[\_[^\]]\+]\s*\[[^\]]\+]/
> syntax match mkdRefLinkLabel /\[\@<=\_[^\]]\+\%(]\s*\[\)\@=/ contained 
> containedin=mkdRefLink contains=@NoSpell
> syntax match mkdRefLinkName /\%(]\s*\[\)\@<=[^\]]\+]\@=/ contained 
> containedin=mkdRefLinkEnd contains=@NoSpell
> syntax match mkdRefLinkStart /\[/ conceal contained containedin=mkdRefLink
> syntax match mkdRefLinkEnd /]\s*\[[^\]]\+]/ conceal contained 
> containedin=mkdRefLink
> 
> " [reference]: definitions
> syntax match mkdRefDef /^\[[^\]]\+]:\s\+.*/
> syntax match mkdRefDefName /\(^\[\)\@<=[^\]]\+]\@=/ contained 
> containedin=mkdRefDef contains=@NoSpell
> syntax match mkdRefDefTarget /\(]:\s*\)\@<=.*/ contained 
> containedin=mkdRefDef contains=@NoSpell
> syntax match mkdRefDefStart /^\[/ conceal contained containedin=mkdRefDef
> syntax match mkdRefDefDelim /]:\@=/ conceal contained containedin=mkdRefDef
> 
> " The ability to do this is awesome :-)
> syntax match mkdLessThan /&lt;/ conceal cchar=<
> syntax match mkdGreaterThan /&gt;/ conceal cchar=>
> syntax match mkdAmpersand /&amp;/ conceal cchar=&
> syntax match mkdBullet /\(^\s*\)\@<=[-*+]/ conceal cchar=???
> highlight link mkdBullet Comment
> 
> " Default highlighting styles.
> highlight link mkdBold htmlBold
> highlight link mkdCode String
> highlight link mkdCodeBlock String
> highlight link mkdHeading Title
> highlight link mkdHeadingMarker Comment
> highlight link mkdInlineLinkLabel Underlined
> highlight link mkdInlineLinkTarget String
> highlight link mkdItalic htmlItalic
> highlight link mkdLiteralLink Underlined
> highlight link mkdMarker Comment
> highlight link mkdRefDefName String
> highlight link mkdRefDefTarget Underlined
> highlight link mkdRefLinkLabel Underlined
> highlight link mkdRefLinkName String
> 
> " I know this is a hack but I *really* don't like the default highlighting of
> " concealed text, which isn't gui=standout but it sure does stand out!
> highlight Conceal guifg=fg guibg=bg
> 
> let b:current_syntax = "mkd"

> # Automatic reloading of Vim scripts
> 
> The [reload.vim][reload] plug-in automatically reloads various types of 
> [Vim][vim] scripts as they're being edited in Vim to give you instant 
> feedback on the changes you make. For example while writing a Vim syntax 
> script you can open a split window of the relevant file type and every time 
> you [:update][update] your syntax script, [reload.vim][reload] will refresh 
> the syntax highlighting in the split window. Automatic reloading of Vim 
> scripts is currently supported for the following types of scripts:
> 
>  * [Standard 
> plug-ins](http://vimdoc.sourceforge.net/htmldoc/usr_05.html#standard-plugin) 
> located at `~/.vim/plugin/*.vim` on UNIX, `~\_vimfiles\plugin\*.vim` on 
> Windows;
> 
>  * [Auto-load 
> scripts](http://vimdoc.sourceforge.net/htmldoc/eval.html#autoload) located at 
> `~/.vim/autoload/*.vim` on UNIX, `~\_vimfiles\autoload\*.vim` on Windows;
> 
>  * [File-type 
> plug-ins](http://vimdoc.sourceforge.net/htmldoc/filetype.html#filetype-plugins)
>  located at `~/.vim/ftplugin/*.vim` on UNIX, `~\_vimfiles\ftplugin\*.vim` on 
> Windows;
> 
>  * [Syntax highlighting 
> scripts](http://vimdoc.sourceforge.net/htmldoc/syntax.html#syntax-highlighting)
>  located at `~/.vim/syntax/*.vim` on UNIX, `~\_vimfiles\syntax\*.vim` on 
> Windows;
> 
>  * [File-type indentation 
> plug-ins](http://vimdoc.sourceforge.net/htmldoc/usr_30.html#30.3) located at 
> `~/.vim/indent/*.vim` on UNIX, `~\_vimfiles\indent\*.vim` on Windows;
> 
>  * [Color scheme 
> scripts](http://vimdoc.sourceforge.net/htmldoc/syntax.html#:colorscheme) 
> located at `~/.vim/colors/*.vim` on UNIX, `~\_vimfiles\colors\*.vim` on 
> Windows.
> 
> Note that [vimrc scripts][vimrc] are not reloaded because that seems to cause 
> more trouble than it's worth...
> 
> ## Install & first use
> 
> Unzip the most recent [ZIP 
> archive](http://peterodding.com/code/vim/downloads/reload) file inside your 
> Vim profile directory (usually this is `~/.vim` on UNIX and 
> `%USERPROFILE%\vimfiles` on Windows), restart Vim and execute the command 
> `:helptags ~/.vim/doc` (use `:helptags ~\vimfiles\doc` instead on Windows). 
> Now try it out: Edit any Vim script that's already loaded (you can check 
> using the [:scriptnames command][scriptnames]) and confirm that the script is 
> reloaded when you save it (the reload.vim plug-in will print a message to 
> confirm when a script is reloaded).
> 
> Out of the box the [reload.vim][reload] plug-in is configured to 
> automatically reload all Vim scripts that it knows how to. If you like it 
> this way then you don't need to configure anything! However if you don't like 
> the automatic reloading then you'll need the following:
> 
> ### The `g:reload_on_write` option
> 
> If you don't like automatic reloading because it slows Vim down or causes 
> problems you can add the following line to your [vimrc script][vimrc]:
> 
>     let g:reload_on_write = 0
> 
> This disables automatic reloading which means you'll have to reload scripts 
> using the command discussed below.
> 
> ### The `:ReloadScript` command
> 
> You can execute the `:ReloadScript` command to reload the Vim script you're 
> editing. If you provide a script name as argument to the command then that 
> script will be reloaded instead, e.g.:
> 
>     :ReloadScript ~/.vim/plugin/reload.vim
> 
> If after executing this command you see Vim errors such as "Function already 
> exists" ([E122](http://vimdoc.sourceforge.net/htmldoc/eval.html#E122)) or 
> "Command already exists" 
> ([E174](http://vimdoc.sourceforge.net/htmldoc/map.html#E174)) then you'll 
> need to change your Vim script(s) slightly to enable reloading, see below.
> 
> ## Things that prevent reloading
> 
> If you want your Vim plug-ins and/or other scripts to be automatically 
> reloaded they'll have to be written a certain way, though you can consider 
> the following points good practice for Vim script writing anyway:
> 
> ### Use a bang in command and function definitions!
> 
> Function and command definitions using Vim's 
> [:command](http://vimdoc.sourceforge.net/htmldoc/map.html#:command) and 
> [:function](http://vimdoc.sourceforge.net/htmldoc/eval.html#:function) 
> built-ins should include a [bang 
> (!)](http://vimdoc.sourceforge.net/htmldoc/map.html#:command-bang) symbol, 
> otherwise Vim will complain that the command or function already exists:
> 
>     " Bad:
>     :command MyCmd call MyFun()
>     :function MyFun()
>     :endfunction
>     
>     " Good:
>     :command! MyCmd call MyFun()
>     :function! MyFun()
>     :endfunction
> 
> ### Use automatic command groups
> 
> Automatic commands using Vim's [:autocmd][autocmd] built-in should be defined 
> inside of an [automatic command 
> group](http://vimdoc.sourceforge.net/htmldoc/autocmd.html#:augroup) that's 
> cleared so the automatic commands don't stack indefinitely when your 
> [:autocmd][autocmd] commands are executed several times:
> 
>     " Bad example: If the following line were re-evaluated, the message would
>     " appear multiple times the next time the automatic command fires:
>     :autocmd TabEnter * echomsg "Entered tab page"
>     
>     " Good example: The following three lines can be reloaded without the
>     " message appearing multiple times:
>     :augroup MyPlugin
>     :  autocmd! TabEnter * echomsg "Entered tab page"
>     :augroup END
> 
> ## Alternatives
> 
> The [ReloadScript](http://www.vim.org/scripts/script.php?script_id=1904) 
> plug-in on [www.vim.org][vim] also supports reloading of Vim scripts, but 
> there are a few notable differences:
> 
>  * This plug-in focuses on automatic reloading (I'm lazy) while the other one 
> requires manual reloading;
> 
>  * This plug-in will *never* 
> [:source](http://vimdoc.sourceforge.net/htmldoc/repeat.html#:source) a file 
> that hasn't already been loaded by Vim -- it checks using Vim's 
> [:scriptnames][scriptnames] command;
> 
>  * This plug-in can more or less reload itself ;-)
> 
> ## Contact
> 
> If you have questions, bug reports, suggestions, etc. the author can be 
> contacted at <[email protected]>. The latest version is available at 
> <http://peterodding.com/code/vim/reload/> and 
> <http://github.com/xolox/vim-reload>. If you like the plug-in please vote for 
> it on [www.vim.org](http://www.vim.org/scripts/script.php?script_id=3148).
> 
> ## License
> 
> This software is licensed under the [MIT 
> license](http://en.wikipedia.org/wiki/MIT_License).  
> ?? 2010 Peter Odding &lt;<[email protected]>&gt;.
> 
> 
> [autocmd]: http://vimdoc.sourceforge.net/htmldoc/autocmd.html#:autocmd
> [reload]: http://github.com/xolox/vim-reload/blob/master/reload.vim
> [scriptnames]: http://vimdoc.sourceforge.net/htmldoc/repeat.html#:scriptnames
> [update]: http://vimdoc.sourceforge.net/htmldoc/editing.html#:update
> [vim]: http://www.vim.org/
> [vimrc]: http://vimdoc.sourceforge.net/htmldoc/starting.html#vimrc

> -- 
> You received this message from the "vim_dev" maillist.
> Do not top-post! Type your reply below the text you are replying to.
> For more information, visit http://www.vim.org/maillist.php


Thanks!
Marcin

-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

Raspunde prin e-mail lui