Mercurial. Colour output piped to less

9,916

Solution 1

For mercurial, you should use the pager extension rather than piping explicitly to less. This will play nicely with the colored output options of other hg commands.

Solution 2

Do:

$ hg diff --color always | less -R

I would alias "less -R" to less. I'm not sure if there's a way to provide default options to mercurial's commands so that you don't have to remember to type --color always for hg diff all the time.

Solution 3

In your ~/.hgrc put:

[extensions]
color =
pager =

[pager]
pager = LESS='FRSXQ' less
quiet = True
attend = outgoing,incoming,diff,status,log,qdiff,blame,annotate,pdiff,glog

Solution 4

I believe you have to use --color=always for ls if you want it to do colors even when not going to stdout. Then use -r on the less command

ls --color=always -l | less -r

Solution 5

If you don't want to use the Pager Extension for mercurial you can use the following command:

hg diff | cdiff
Share:
9,916

Related videos on Youtube

mmacaulay
Author by

mmacaulay

I like a variety of technologies. Have an open mind.

Updated on September 17, 2022

Comments

  • mmacaulay
    mmacaulay almost 2 years

    Operating system: Mac OS 10.6.2

    I'd like to be able to see colour output when piping certain commands through less.

    Two examples:

    I've got ls aliased to ls --color=auto, so I'd like to be able to see colour when I do this:

    ls -l | less
    

    I've also got the color extension turned on in Mercurial, so I'd like to see colour output from:

    hg diff | less
    

    and

    hg st | less
    

    After some googling, it seems like some versions of less support either -r or -R to make this work, but no dice for me. I can't see anything in the man page that looks like what I need. (-r or -R SEEM to be the right options, but again, they don't seem to work)

  • jpbochi
    jpbochi almost 12 years
    Or use $ hg diff --color always | less -FRSXQ for better less options. It will silently quit if diff fits the screen, for example.
  • blueyed
    blueyed almost 12 years
    You can setup LESS="-R" alternatively to aliasing "less" itself.
  • Evgeni Sergeev
    Evgeni Sergeev over 10 years
    -F is to keep reading file as it's being produced, -S is to not line-wrap, -X something obscure, -Q avoids ringing terminal bell.
  • einpoklum
    einpoklum over 7 years
    Why the quiet = True part?
  • sebastian
    sebastian over 7 years
    Nice! I recommend LESS='eiFRSXQ' to also quit after reaching EOF and ignore case during search