Mercurial > hg
view contrib/vim/HGAnnotate.vim @ 48185:2f2107c01dee
dispatch: ignore failure to flush ui
When the pager dies, we get a `SIGPIPE`. That causes
`error.SignalInterrupt` to be raised ` (from `ui._catchterm()`). Any
further writes or flushes will cause further `SIGPIPE`s and furhter
`error.SignalInterrupt`. If we write or flush outside of the
try/except that handle `KeyboardInterrupt` (which
`error.SignalInterrupt` is a subclass of), then control will escape
from the `dispatch` module. Let's fix that by ignoring errors from
flushing the ui.
I would have rather fixed this by restoring the stdout and stderr
streams when the pager dies, but it gets complicated because of
multiple ui instances (ui/lui) and different pager setups between
regular hg and chg.
This changes a test in `test-pager.t`, but I don't understand why. I
would have thought that all the output from the command should have
gone to the broken pager.
Differential Revision: https://phab.mercurial-scm.org/D11627
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Fri, 08 Oct 2021 13:36:02 -0700 |
parents | 61f2008cd6bf |
children |
line wrap: on
line source
" $Id: CVSAnnotate.vim,v 1.5 2002/10/01 21:34:02 rhiestan Exp $ " Vim syntax file " Language: CVS annotate output " Maintainer: Bob Hiestand <bob@hiestandfamily.org> " Last Change: $Date: 2002/10/01 21:34:02 $ " Remark: Used by the cvscommand plugin. Originally written by Mathieu " Clabaut if version < 600 syntax clear elseif exists("b:current_syntax") finish endif syn match cvsDate /\S\S\S \S\+ \d\+ \d\+:\d\+:\d\+ \d\+ [+-]\?\d\+/ contained syn match cvsName /^\s*\S\+ / contained nextgroup=cvsVer syn match cvsVer /\d\+ / contained nextgroup=cvsDate syn region cvsHead start="^" end=":" contains=cvsVer,cvsName,cvsDate if !exists("did_cvsannotate_syntax_inits") let did_cvsannotate_syntax_inits = 1 hi link cvsText String hi link cvsDate Comment hi link cvsName Type hi link cvsVer Statement endif let b:current_syntax="CVSAnnotate"