m/fzf
1
0
mirror of https://github.com/junegunn/fzf.git synced 2025-11-18 08:13:40 -05:00

Support CTRL-Z (SIGSTOP)

This commit is contained in:
Junegunn Choi
2017-04-28 22:58:08 +09:00
parent 6b592137b9
commit d34e4cf698
8 changed files with 92 additions and 41 deletions

View File

@@ -25,13 +25,13 @@ const (
Reverse = Attr(1 << 6)
)
func (r *FullscreenRenderer) Init() {}
func (r *FullscreenRenderer) Pause() {}
func (r *FullscreenRenderer) Clear() {}
func (r *FullscreenRenderer) Refresh() {}
func (r *FullscreenRenderer) Close() {}
func (r *FullscreenRenderer) Init() {}
func (r *FullscreenRenderer) Pause(bool) {}
func (r *FullscreenRenderer) Resume(bool) {}
func (r *FullscreenRenderer) Clear() {}
func (r *FullscreenRenderer) Refresh() {}
func (r *FullscreenRenderer) Close() {}
func (r *FullscreenRenderer) Resume() bool { return false }
func (r *FullscreenRenderer) DoesAutoWrap() bool { return false }
func (r *FullscreenRenderer) IsOptimized() bool { return false }
func (r *FullscreenRenderer) GetChar() Event { return Event{} }

View File

@@ -522,27 +522,35 @@ func (r *LightRenderer) rmcup() {
r.csi("?1049l")
}
func (r *LightRenderer) Pause() {
func (r *LightRenderer) Pause(clear bool) {
terminal.Restore(r.fd(), r.origState)
if r.fullscreen {
r.rmcup()
} else {
r.smcup()
r.csi("H")
if clear {
if r.fullscreen {
r.rmcup()
} else {
r.smcup()
r.csi("H")
}
r.flush()
}
r.flush()
}
func (r *LightRenderer) Resume() bool {
func (r *LightRenderer) Resume(clear bool) {
terminal.MakeRaw(r.fd())
if r.fullscreen {
r.smcup()
} else {
r.rmcup()
if clear {
if r.fullscreen {
r.smcup()
} else {
r.rmcup()
}
r.flush()
} else if !r.fullscreen && r.mouse {
// NOTE: Resume(false) is only called on SIGCONT after SIGSTOP.
// And It's highly likely that the offset we obtained at the beginning will
// no longer be correct, so we simply disable mouse input.
r.csi("?1000l")
r.mouse = false
}
r.flush()
// Should redraw
return true
}
func (r *LightRenderer) Clear() {

View File

@@ -176,12 +176,11 @@ func initPairs(theme *ColorTheme) {
}
}
func (r *FullscreenRenderer) Pause() {
func (r *FullscreenRenderer) Pause(bool) {
C.endwin()
}
func (r *FullscreenRenderer) Resume() bool {
return false
func (r *FullscreenRenderer) Resume(bool) {
}
func (r *FullscreenRenderer) Close() {

View File

@@ -282,7 +282,7 @@ func (r *FullscreenRenderer) GetChar() Event {
return Event{keyfn('z'), 0, nil}
case tcell.KeyCtrlSpace:
return Event{CtrlSpace, 0, nil}
case tcell.KeyBackspace, tcell.KeyBackspace2:
case tcell.KeyBackspace2:
if alt {
return Event{AltBS, 0, nil}
}
@@ -308,8 +308,6 @@ func (r *FullscreenRenderer) GetChar() Event {
case tcell.KeyPgDn:
return Event{PgDn, 0, nil}
case tcell.KeyTab:
return Event{Tab, 0, nil}
case tcell.KeyBacktab:
return Event{BTab, 0, nil}
@@ -366,13 +364,12 @@ func (r *FullscreenRenderer) GetChar() Event {
return Event{Invalid, 0, nil}
}
func (r *FullscreenRenderer) Pause() {
func (r *FullscreenRenderer) Pause(bool) {
_screen.Fini()
}
func (r *FullscreenRenderer) Resume() bool {
func (r *FullscreenRenderer) Resume(bool) {
r.initScreen()
return true
}
func (r *FullscreenRenderer) Close() {

View File

@@ -206,8 +206,8 @@ const (
type Renderer interface {
Init()
Pause()
Resume() bool
Pause(clear bool)
Resume(clear bool)
Clear()
RefreshWindows(windows []Window)
Refresh()