add a command buffer mode indicator
This commit is contained in:
parent
73e44b5fbd
commit
75500100b3
|
@ -81,9 +81,6 @@
|
||||||
;;lines to be marked
|
;;lines to be marked
|
||||||
(define marked-lines '())
|
(define marked-lines '())
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;;miscelaneous state
|
;;miscelaneous state
|
||||||
;;-------------------
|
;;-------------------
|
||||||
|
|
||||||
|
@ -101,6 +98,21 @@
|
||||||
(define (focus-result-buffer!)
|
(define (focus-result-buffer!)
|
||||||
(set! *focus-buffer* 'result-buffer))
|
(set! *focus-buffer* 'result-buffer))
|
||||||
|
|
||||||
|
;; mode of the command buffer
|
||||||
|
(define *command-buffer-mode* 'scheme)
|
||||||
|
|
||||||
|
(define (command-buffer-in-scheme-mode?)
|
||||||
|
(eq? *command-buffer-mode* 'scheme))
|
||||||
|
|
||||||
|
(define (command-buffer-in-command-mode?)
|
||||||
|
(eq? *command-buffer-mode* 'command))
|
||||||
|
|
||||||
|
(define (enter-scheme-mode!)
|
||||||
|
(set! *command-buffer-mode* 'scheme))
|
||||||
|
|
||||||
|
(define (enter-command-mode!)
|
||||||
|
(set! *command-buffer-mode* 'command))
|
||||||
|
|
||||||
;; History
|
;; History
|
||||||
|
|
||||||
(define history-pos 0)
|
(define history-pos 0)
|
||||||
|
@ -211,6 +223,17 @@
|
||||||
(move-cursor command-buffer)
|
(move-cursor command-buffer)
|
||||||
(refresh-command-window))))
|
(refresh-command-window))))
|
||||||
|
|
||||||
|
(define (toggle-command/scheme-mode)
|
||||||
|
(cond
|
||||||
|
((command-buffer-in-command-mode?)
|
||||||
|
(enter-scheme-mode!))
|
||||||
|
((command-buffer-in-scheme-mode?)
|
||||||
|
(enter-command-mode!)))
|
||||||
|
(paint-command-frame-window)
|
||||||
|
(paint-command-window-contents)
|
||||||
|
(move-cursor command-buffer)
|
||||||
|
(refresh-command-window))
|
||||||
|
|
||||||
;; handle input
|
;; handle input
|
||||||
(define (run)
|
(define (run)
|
||||||
|
|
||||||
|
@ -228,6 +251,11 @@
|
||||||
((= ch key-control-x)
|
((= ch key-control-x)
|
||||||
(loop (wait-for-input) #t))
|
(loop (wait-for-input) #t))
|
||||||
|
|
||||||
|
;; F7 toggle scheme-mode / command-mode (FIXME: find a better key)
|
||||||
|
((= ch key-f7)
|
||||||
|
(toggle-command/scheme-mode)
|
||||||
|
(loop (wait-for-input) #f))
|
||||||
|
|
||||||
;; C-x o --- toggle buffer focus
|
;; C-x o --- toggle buffer focus
|
||||||
((and c-x-pressed? (= ch key-o))
|
((and c-x-pressed? (= ch key-o))
|
||||||
(toggle-buffer-focus)
|
(toggle-buffer-focus)
|
||||||
|
@ -374,9 +402,26 @@
|
||||||
(mvwaddstr (app-window-curses-win bar-1) 0 1 "SCSH-NUIT")
|
(mvwaddstr (app-window-curses-win bar-1) 0 1 "SCSH-NUIT")
|
||||||
(wrefresh (app-window-curses-win bar-1)))
|
(wrefresh (app-window-curses-win bar-1)))
|
||||||
|
|
||||||
|
(define (paint-command-buffer-mode-indicator)
|
||||||
|
(let ((mode-string
|
||||||
|
(string-append
|
||||||
|
"[ "
|
||||||
|
(if (command-buffer-in-command-mode?)
|
||||||
|
"Command"
|
||||||
|
"Scheme")
|
||||||
|
" ]")))
|
||||||
|
(mvwaddstr
|
||||||
|
(app-window-curses-win command-frame-window)
|
||||||
|
0
|
||||||
|
(- (- (app-window-width command-frame-window)
|
||||||
|
(string-length mode-string))
|
||||||
|
2)
|
||||||
|
mode-string)))
|
||||||
|
|
||||||
(define (paint-command-frame-window)
|
(define (paint-command-frame-window)
|
||||||
(box (app-window-curses-win command-frame-window)
|
(box (app-window-curses-win command-frame-window)
|
||||||
(ascii->char 0) (ascii->char 0))
|
(ascii->char 0) (ascii->char 0))
|
||||||
|
(paint-command-buffer-mode-indicator)
|
||||||
(wrefresh (app-window-curses-win command-frame-window)))
|
(wrefresh (app-window-curses-win command-frame-window)))
|
||||||
|
|
||||||
(define (paint-command-window-contents)
|
(define (paint-command-window-contents)
|
||||||
|
|
Loading…
Reference in New Issue