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 /</ conceal cchar=<
> syntax match mkdGreaterThan />/ conceal cchar=>
> syntax match mkdAmpersand /&/ 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 <<[email protected]>>.
>
>
> [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