On 26-Jan-09 16:30, Ted Pavlic wrote:
> There are several syntax highlighting options available for SCM 
> blame/annotate outputs (e.g., "CVSAnnotate.vim", "HGAnnotate.vim", 
> etc.). However, AFAIK, none of them have the ability to use the 
> annotate-style highlighting on the "left" side of the page (where all of 
> the SCM info is) and filetype highlighting on the "right" side of the page.
> 
> It would be nice if there was some feature that would allow something like:
> 
>       :set scmtype=git
>       :set filetype=c
> 
> That is, an output of "git blame myfile.c | vim -" would get highlighted 
> so that the "left" side of the blame output was highlighted matching 
> "git blame" rules, and the "right" side of the blame output would use 
> standard highlighting rules for c.
> 
> Then left/right autodetection would be the next nice feature... That is, 
> Vim would have to be able to detect that it's looking at a 
> blame/annotate-type file and then detect which SCM format to use on the 
> left and which filetype to use on the right.
> 
> I have a feeling that such a feature is non-trivial. That being said, I 
> think the demand for such a feature is growing.
> 
> Thanks --
> Ted

Hi Ted,

You're right, such a feature would be difficult to accommodate with the current 
mechanism for syntax highlighting (and without duplicating and maintaining an 
entire suite of git-c, git-cpp, ... syntaxes). I also cannot imagine support 
for 
a new ':set scmtype' setting within VIM; after all, it is a text editor, and 
those SCM annotations are usually only viewed, not edited, right?

However, I can imagine a quick solution that could be implemented relatively 
cheaply in vimscript, and might be suitable if all you want is _view_ these 
kinds of output. Here's a sketch:
1. Create two scratch buffers (buftype=nofile, etc), vertically split, with 
:set 
scrollbind.
2. Open the 'git blame' output in a third buffer and use e.g. blockwise Visual 
mode (CTRL-V) to copy-and-paste the left (git) block into the left scratch 
buffer, and the right (programming-language) block into the right one.
3. Close the third buffer, :set filetype=git on the left, trigger a filetype 
detection on the right buffer.
If you put these actions in a custom command, you could "prettify" the output 
with a few keystrokes, or even use the existing filetype detection mechanism to 
auto-detect and auto-prettify this.
Of course, it's two buffers, not one, so jumping around isn't completely 
natural. On the other hand, the two-buffer split may even make certain 
copy-paste actions easier to do.

-- regards, ingo

PS: Ben, just saw your reply coming in when I wanted to press "send". Seems you 
have had the same idea?!

-- 
   -- Ingo Karkat -- /^-- /^-- /^-- /^-- /^-- /^-- http://ingo-karkat.de/ --
-- 
                     Shift happens.              -- Doppler


--~--~---------~--~----~------------~-------~--~----~
You received this message from the "vim_dev" maillist.
For more information, visit http://www.vim.org/maillist.php
-~----------~----~----~----~------~----~------~--~---

Raspunde prin e-mail lui