开发者

Gitweb: How I see source code in tree view with color

I use gitweb.

In the tree view I see my source code开发者_开发问答. But this code is all in black, I like configurated to added highlight


To enable syntax highlighting in 'blob' view in modern gitweb, you need

  1. Have highlight program installed (the one from 'highlight' package, not from 'source-highlight' or 'src-highlight'; they are different programs).

  2. Configure gitweb to enable source highlighting. This can be done by adding the following line

    $feature{'highlight'}{'default'} = [1];
    

    to gitweb configuration file for your installation, usually /etc/gitweb.conf.

    See "Configuring gitweb features" section in gitweb.conf manpage (and said manpage in general), the part about 'highlight' feature, or relevant lines in gitweb sources.

    Note: if you use gitweb with persistent web server environment, like mod_perl, FastCGI or PSGI, you might need to restart gitweb script if it is configured to read configuration only once.


Original response (historical)

It is currently not supported, but take a look at gitweb/web branch of my git/jnareb-git.git repository - those two commits adding syntax highlighting to gitweb were sent to git mailing list (as RFC = Request For Comments patches). Those patches use highlight tool from http://www.andre-simon.de/

You can try to cherry pick those two commits: 5f7b6461 and 4edcf10d.


If you don't want to change the package files, an alternative to Todochangeusername procedure is to install highlight and then add to the bottom of the file /etc/gitweb.conf:

$feature{'highlight'}{'default'} = [1];

(without the \ escape character).


  1. install at least git version 1.7.5 Ubuntu: https://launchpad.net/~git-core/+archive/ppa
  2. install gitweb and programm called highlight Ubuntu: sudo apt-get install gitweb highlight
  3. Add to the file: sudo vim /usr/lib/git-core/git-instaweb
    line 586: \$feature{'highlight'}{'default'} = [1];


I had a similar issue: syntax highlighting was only enabled on a few languages (C, Makefile, etc.). It was not working for verilog, even though it is working when using highlight with the command line.

Looking at gitweb.cgi make me realize that gitweb only supports a subset of languages. It is also mentioned in the gitweb.conf man page mentionned in the first answer. The solution is to add this to gitweb.conf:

our %highlight_ext;
$highlight_ext{'v'} = 'verilog';
$highlight_ext{'ucf'} = 'verilog';

Change verilogbyt the language you would like to support. The full list of available languages is in /etc/highlight/filetypes.conf. Of course, you also have to adapt the file extensions to your case.


With Git 2.11+ (Q4 2016), you can force the language detection for syntax highlighting based on the shebang (for instance: #!/bin/perl)

In other words, the syntax highlighting does not depend anymore only on filename or file extension. It can rely on its content if asked.

See commit 779a206, commit c151aa3 (24 Sep 2016) by Ian Kelling (ian-kelling).
(Merged by Junio C Hamano -- gitster -- in commit 3474084, 03 Oct 2016)

gitweb: use highlight's shebang detection

"gitweb" can spawn "highlight" to show blob contents with (programming) language-specific syntax highlighting, but only when the language is known.
"highlight" can however be told to make the guess itself by giving it "--force" option, which has been enabled.

The "highlight" binary can, in some cases, determine the language type by the means of file contents, for example the shebang in the first line for some scripting languages.
Make use of this autodetection for files which syntax is not known by gitweb.
In that case, pass the blob contents to "highlight --force"; the parameter is needed to make it always generate HTML output (which includes HTML-escaping).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜