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 -~----------~----~----~----~------~----~------~--~---
