Clean up code releated for handling messages. Add a new plugin for

pps (portable ps)
This commit is contained in:
eknauel 2005-05-20 15:20:34 +00:00
parent 1e8cb9369c
commit 725e58f2a1
9 changed files with 133 additions and 85 deletions

View File

@ -176,7 +176,7 @@
browse-obj)))) browse-obj))))
((print-message? message) ((print-message? message)
(let* ((model (print-message-object message)) (let* ((model (message-result-object message))
(pos-y (browse-dir-list-res-obj-pos-y model)) (pos-y (browse-dir-list-res-obj-pos-y model))
(pos-x (browse-dir-list-res-obj-pos-x model)) (pos-x (browse-dir-list-res-obj-pos-x model))
(text (browse-dir-list-res-obj-result-text model)) (text (browse-dir-list-res-obj-result-text model))
@ -186,7 +186,7 @@
(make-print-object pos-y pos-x text (list pos-y) marked-pos))) (make-print-object pos-y pos-x text (list pos-y) marked-pos)))
((key-pressed-message? message) ((key-pressed-message? message)
(let* ((model (key-pressed-message-result-model message)) (let* ((model (message-result-object message))
(key (key-pressed-message-key message)) (key (key-pressed-message-key message))
(c-x-pressed (browse-dir-list-res-obj-c-x-pressed model))) (c-x-pressed (browse-dir-list-res-obj-c-x-pressed model)))
@ -344,12 +344,12 @@
((restore-message? message) ((restore-message? message)
(let* ((model (restore-message-object message)) (let* ((model (message-result-object message))
(initial-wd (browse-dir-list-res-obj-initial-wd model))) (initial-wd (browse-dir-list-res-obj-initial-wd model)))
(chdir initial-wd))) (chdir initial-wd)))
((selection-message? message) ((selection-message? message)
(let* ((model (selection-message-object message)) (let* ((model (message-result-object message))
(marked-items (browse-dir-list-res-obj-res-marked-items model))) (marked-items (browse-dir-list-res-obj-res-marked-items model)))
(string-append "'" (exp->string marked-items))))))) (string-append "'" (exp->string marked-items)))))))

View File

@ -152,7 +152,7 @@
browse-obj)))))) browse-obj))))))
((print-message? message) ((print-message? message)
(let* ((model (print-message-object message)) (let* ((model (message-result-object message))
(pos-y (browse-list-res-obj-pos-y model)) (pos-y (browse-list-res-obj-pos-y model))
(pos-x (browse-list-res-obj-pos-x model)) (pos-x (browse-list-res-obj-pos-x model))
(text (browse-list-res-obj-result-text model)) (text (browse-list-res-obj-result-text model))
@ -169,7 +169,7 @@
(make-print-object pos-y pos-x text highlighted real-marked-pos))) (make-print-object pos-y pos-x text highlighted real-marked-pos)))
((key-pressed-message? message) ((key-pressed-message? message)
(let* ((model (key-pressed-message-result-model message)) (let* ((model (message-result-object message))
(key (key-pressed-message-key message)) (key (key-pressed-message-key message))
(c-x-pressed (browse-list-res-obj-c-x-pressed model))) (c-x-pressed (browse-list-res-obj-c-x-pressed model)))
@ -331,7 +331,7 @@
((selection-message? message) ((selection-message? message)
(let* ((model (selection-message-object message)) (let* ((model (message-result-object message))
(marked-items (browse-list-res-obj-marked-items model))) (marked-items (browse-list-res-obj-marked-items model)))
(string-append "'" (exp->string marked-items)))) (string-append "'" (exp->string marked-items))))

View File

@ -47,7 +47,7 @@
(make-cd-res-obj (browse-dir-list-receiver (make-cd-res-obj (browse-dir-list-receiver
browse-next-command-message))))))))) browse-next-command-message)))))))))
((print-message? message) ((print-message? message)
(let* ((model (print-message-object message)) (let* ((model (message-result-object message))
(width (print-message-width message)) (width (print-message-width message))
(browser (cd-res-obj-browse-obj model)) (browser (cd-res-obj-browse-obj model))
(browse-print-message (browse-print-message
@ -56,7 +56,7 @@
width))) width)))
(browse-dir-list-receiver browse-print-message))) (browse-dir-list-receiver browse-print-message)))
((key-pressed-message? message) ((key-pressed-message? message)
(let* ((model (key-pressed-message-result-model message)) (let* ((model (message-result-object message))
(key (key-pressed-message-key message)) (key (key-pressed-message-key message))
(browser (cd-res-obj-browse-obj model)) (browser (cd-res-obj-browse-obj model))
(browse-key-message (browse-key-message
@ -67,12 +67,12 @@
browse-key-message)))) browse-key-message))))
((restore-message? message) ((restore-message? message)
(let* ((model (restore-message-object message)) (let* ((model (message-result-object message))
(browser (cd-res-obj-browse-obj model)) (browser (cd-res-obj-browse-obj model))
(wd (browse-dir-list-res-obj-working-directory browser))) (wd (browse-dir-list-res-obj-working-directory browser)))
(chdir wd))) (chdir wd)))
((selection-message? message) ((selection-message? message)
(let* ((model (selection-message-object message)) (let* ((model (message-result-object message))
(browser (cd-res-obj-browse-obj model)) (browser (cd-res-obj-browse-obj model))
(browse-sel-message (browse-sel-message
(make-selection-message "browse-dir-list" (make-selection-message "browse-dir-list"

View File

@ -26,7 +26,7 @@
(make-dirfiles-res-obj (browse-dir-list-receiver (make-dirfiles-res-obj (browse-dir-list-receiver
browse-next-command-message)))) browse-next-command-message))))
((print-message? message) ((print-message? message)
(let* ((model (print-message-object message)) (let* ((model (message-result-object message))
(width (print-message-width message)) (width (print-message-width message))
(browser (dirfiles-res-obj-browse-obj model)) (browser (dirfiles-res-obj-browse-obj model))
(browse-print-message (browse-print-message
@ -35,7 +35,7 @@
width))) width)))
(browse-dir-list-receiver browse-print-message))) (browse-dir-list-receiver browse-print-message)))
((key-pressed-message? message) ((key-pressed-message? message)
(let* ((model (key-pressed-message-result-model message)) (let* ((model (message-result-object message))
(key (key-pressed-message-key message)) (key (key-pressed-message-key message))
(browser (dirfiles-res-obj-browse-obj model)) (browser (dirfiles-res-obj-browse-obj model))
(browse-key-message (browse-key-message
@ -46,14 +46,14 @@
browse-key-message)))) browse-key-message))))
((restore-message? message) ((restore-message? message)
(let* ((model (restore-message-object message)) (let* ((model (message-result-object message))
(browser (dirfiles-res-obj-browse-obj model)) (browser (dirfiles-res-obj-browse-obj model))
(browse-restore-message (browse-restore-message
(make-restore-message "browse-dir-list" (make-restore-message "browse-dir-list"
browser))) browser)))
(browse-dir-list-receiver browse-restore-message))) (browse-dir-list-receiver browse-restore-message)))
((selection-message? message) ((selection-message? message)
(let* ((model (selection-message-object message)) (let* ((model (message-result-object message))
(browser (dirfiles-res-obj-browse-obj model)) (browser (dirfiles-res-obj-browse-obj model))
(browse-sel-message (browse-sel-message
(make-selection-message "browse-dir-list" (make-selection-message "browse-dir-list"

View File

@ -45,7 +45,7 @@
(make-find-res-obj (browse-list-receiver (make-find-res-obj (browse-list-receiver
browse-next-command-message)))))) browse-next-command-message))))))
((print-message? message) ((print-message? message)
(let* ((model (print-message-object message)) (let* ((model (message-result-object message))
(width (print-message-width message)) (width (print-message-width message))
(browser (find-res-obj-browse-obj model)) (browser (find-res-obj-browse-obj model))
(browse-print-message (browse-print-message
@ -54,7 +54,7 @@
width))) width)))
(browse-list-receiver browse-print-message))) (browse-list-receiver browse-print-message)))
((key-pressed-message? message) ((key-pressed-message? message)
(let* ((model (key-pressed-message-result-model message)) (let* ((model (message-result-object message))
(key (key-pressed-message-key message)) (key (key-pressed-message-key message))
(browser (find-res-obj-browse-obj model)) (browser (find-res-obj-browse-obj model))
(browse-key-message (browse-key-message
@ -65,14 +65,14 @@
browse-key-message)))) browse-key-message))))
((restore-message? message) ((restore-message? message)
(let* ((model (restore-message-object message)) (let* ((model (message-result-object message))
(browser (find-res-obj-browse-obj model)) (browser (find-res-obj-browse-obj model))
(browse-restore-message (browse-restore-message
(make-restore-message "browse-ist" (make-restore-message "browse-ist"
browser))) browser)))
(browse-list-receiver browse-restore-message))) (browse-list-receiver browse-restore-message)))
((selection-message? message) ((selection-message? message)
(let* ((model (selection-message-object message)) (let* ((model (message-result-object message))
(browser (find-res-obj-browse-obj model)) (browser (find-res-obj-browse-obj model))
(browse-sel-message (browse-sel-message
(make-selection-message "browse-list" (make-selection-message "browse-list"

View File

@ -1,4 +1,5 @@
#!/bin/sh #!/bin/sh
args="-lel module-system/load.scm -lel interaction/load.scm -lm debug-packages.scm -lel scsh-ncurses-0.2/load.scm -lm nuit-packages.scm -o nuit" args="-lel pps/load.scm -lel module-system/load.scm -lel interaction/load.scm -lm debug-packages.scm -lel scsh-ncurses-0.2/load.scm -lm nuit-packages.scm -o nuit"
echo "Starting scsh with options: $args" echo "Starting scsh with options: $args"
exec scsh $args exec scsh $args
#-c "(nuit)"

View File

@ -144,7 +144,7 @@
;;--------------------- ;;---------------------
;;A new command was entered ;;A new command was entered
;;->create a new "object" ;;->create a new "object"
(define-record-type next-command-message next-command-message (define-record-type next-command-message :next-command-message
(make-next-command-message command-string (make-next-command-message command-string
parameters parameters
width) width)
@ -156,27 +156,27 @@
;;key pressed ;;key pressed
;;The object and the key are send to the user-code, who returns the ;;The object and the key are send to the user-code, who returns the
;;changed object. ;;changed object.
(define-record-type key-pressed-message key-pressed-message (define-record-type key-pressed-message :key-pressed-message
(make-key-pressed-message command-string (make-key-pressed-message command-string
result-model result-object
key) key)
key-pressed-message? key-pressed-message?
(command-string key-pressed-command-string) (command-string key-pressed-command-string)
(result-model key-pressed-message-result-model) (result-object key-pressed-message-result-object)
(key key-pressed-message-key)) (key key-pressed-message-key))
;;print ;;print
(define-record-type print-message print-message (define-record-type print-message :print-message
(make-print-message command-string (make-print-message command-string
object result-object
width) width)
print-message? print-message?
(command-string print-message-command-string) (command-string print-message-command-string)
(object print-message-object) (result-object print-message-result-object)
(width print-message-width)) (width print-message-width))
;;->this sort of data-type is returned by a print-message ;;->this sort of data-type is returned by a print-message
(define-record-type print-object print-object (define-record-type print-object :print-object
(make-print-object pos-y (make-print-object pos-y
pos-x pos-x
text text
@ -189,25 +189,56 @@
(marked-lines print-object-marked-lines)) (marked-lines print-object-marked-lines))
;;restore (when side-effects occur) ;;restore (when side-effects occur)
(define-record-type restore-message restore-message (define-record-type restore-message :restore-message
(make-restore-message command-string (make-restore-message command-string
object) result-object)
restore-message? restore-message?
(command-string restore-message-command-string) (command-string restore-message-command-string)
(object restore-message-object)) (result-object restore-message-result-object))
;;request the selection ;;request the selection
(define-record-type selection-message selection-message (define-record-type selection-message :selection-message
(make-selection-message command-string (make-selection-message command-string
object) result-object)
selection-message? selection-message?
(command-string selection-message-command-string) (command-string selection-message-command-string)
(object selection-message-object)) (result-object selection-message-result-object))
(define (message-result-object message)
((cond
((key-pressed-message? message)
key-pressed-message-result-object)
((print-message? message)
print-message-result-object)
((restore-message? message)
restore-message-result-object)
((selection-message? message)
selection-message-result-object message)
(else
(error "This message-type has no field for result-objects"
message)))
message))
(define (message-command-string message)
((cond
((next-command-message? message)
next-command-string)
((key-pressed-message? message)
key-pressed-command-string)
((print-message? message)
print-message-command-string)
((restore-message? message)
restore-message-command-string)
((selection-message? message)
selection-message-command-string)
(else
(error "This message-type has no command field" message)))
message))
;;The "user" (who extends the functionality of NUIT) has to inform NUIT ;;The "user" (who extends the functionality of NUIT) has to inform NUIT
;;about which function is meant to be the receiver, when a certain ;;about which function is meant to be the receiver, when a certain
;;command is active ;;command is active
(define-record-type receiver receiver (define-record-type receiver :receiver
(make-receiver command rec) (make-receiver command rec)
receiver? receiver?
(command receiver-command) (command receiver-command)
@ -330,7 +361,10 @@
(text (sublist (buffer-text command-buffer) 0 (text (sublist (buffer-text command-buffer) 0
(- (length (buffer-text command-buffer)) 1)))) (- (length (buffer-text command-buffer)) 1))))
(begin (begin
(switch restore-message) ;; is this correct?
(switch (make-restore-message
command-string
current-result-object))
(set-buffer-text! (append text (list command-string))) (set-buffer-text! (append text (list command-string)))
(execute-command) (execute-command)
(set-buffer-history-pos! command-buffer (set-buffer-history-pos! command-buffer
@ -633,33 +667,17 @@
;;Message-Passing ;;Message-Passing
;;switch manages that the messages are delivered in the correct way ;;switch manages that the messages are delivered in the correct way
(define (switch message) (define (switch message)
(let ((command "")) (cond
(cond ((get-receiver (message-command-string message))
((next-command-message? message) => (lambda (receiver)
(set! command (next-command-string message))) ((receiver-rec receiver) message)))
((key-pressed-message? message) (else
(set! command (key-pressed-command-string message))) (standard-receiver message))))
((print-message? message)
(set! command (print-message-command-string message)))
((restore-message? message)
(set! command (restore-message-command-string message)))
((selection-message? message)
(set! command (selection-message-command-string message))))
(let ((receiver (get-receiver command)))
(if receiver
(receiver message)
(standard-receiver message)))))
(define (get-receiver command) (define (get-receiver command)
(let loop ((recs receivers)) (find (lambda (r)
(if (= 0 (length recs)) (string=? (receiver-command r) command))
#f receivers))
(let* ((act-rec (car recs))
(act-com (receiver-command act-rec))
(act-rec-proc (receiver-rec act-rec)))
(if (equal? command act-com)
act-rec-proc
(loop (cdr recs)))))))
;;Management of the upper buffer ;;Management of the upper buffer
;;add a char to the buffer ;;add a char to the buffer
@ -821,7 +839,7 @@
;;move cursor to the corrct position ;;move cursor to the corrct position
(define (move-cursor buffer) (define (move-cursor buffer)
(if (focus-on-command-buffer?) (if (focus-on-command-buffer?)
(cursor-right-pos (app-window-curses-win command-window) (cursor-right-pos (app-window-curses-win command-window)
buffer) buffer)
(begin (begin
(compute-y-x) (compute-y-x)
@ -832,22 +850,10 @@
;;compue pos-x and pos-y ;;compue pos-x and pos-y
(define (compute-y-x) (define (compute-y-x)
(if (focus-on-command-buffer?) (if (>= pos-result result-lines)
(begin (set! result-buffer-pos-y result-lines)
(if (>= (buffer-pos-fin-ln command-buffer) (set! result-buffer-pos-y pos-result))
(buffer-num-lines command-buffer)) (set! result-buffer-pos-x pos-result-col))
(set-buffer-pos-y! command-buffer
(buffer-num-lines command-buffer))
(set-buffer-pos-y! command-buffer
(buffer-pos-fin-ln command-buffer)))
(let ((posx (modulo (buffer-pos-col command-buffer)
(buffer-num-cols command-buffer))))
(set-buffer-pos-x! command-buffer posx)))
(begin
(if (>= pos-result result-lines)
(set! result-buffer-pos-y result-lines)
(set! result-buffer-pos-y pos-result))
(set! result-buffer-pos-x pos-result-col))))
; ;;index of shortcuts at the bottom ; ;;index of shortcuts at the bottom
@ -965,7 +971,7 @@
((print-message? message) ((print-message? message)
(make-print-object 1 1 shortcuts '() '())) (make-print-object 1 1 shortcuts '() '()))
((key-pressed-message? message) ((key-pressed-message? message)
(key-pressed-message-result-model message)) (message-result-object message))
((restore-message? message) ((restore-message? message)
(values)) (values))
((selection-message? message) ((selection-message? message)
@ -1012,7 +1018,7 @@
(make-standard-result-obj 1 1 text result))) (make-standard-result-obj 1 1 text result)))
std-obj))) std-obj)))
((print-message? message) ((print-message? message)
(let* ((model (print-message-object message)) (let* ((model (message-result-object message))
(pos-y (standard-result-obj-cur-pos-y model)) (pos-y (standard-result-obj-cur-pos-y model))
(pos-x (standard-result-obj-cur-pos-x model)) (pos-x (standard-result-obj-cur-pos-x model))
(width (print-message-width message)) (width (print-message-width message))
@ -1021,7 +1027,7 @@
result width))) result width)))
(make-print-object pos-y pos-x text '() '()))) (make-print-object pos-y pos-x text '() '())))
((key-pressed-message? message) ((key-pressed-message? message)
(key-pressed-message-result-model message)) (message-result-object message))
((restore-message? message) ((restore-message? message)
(values)) (values))
((selection-message? message) ((selection-message? message)

View File

@ -9,15 +9,20 @@
signals signals
handle handle
ncurses ncurses
srfi-1
srfi-6 srfi-6
srfi-13
debugging debugging
inspect-exception inspect-exception
rt-modules rt-modules
tty-debug) tty-debug
pps)
(files nuit-engine (files nuit-engine
handle-fatal-error handle-fatal-error
directory-files directory-files
find find
cd cd
browse-directory-list browse-directory-list
browse-list)) browse-list
process))

36
scheme/process.scm Normal file
View File

@ -0,0 +1,36 @@
(define (print-processes processes)
(map (lambda (pi)
(apply format
(append
(list #f
"~A ~A ~A ~A '~A ~A'~%")
(map (lambda (s) (s pi))
(list process-info-pid
process-info-ppid
process-info-real-uid
process-info-%cpu
process-info-executable
process-info-command-line)))))
processes))
(define (pps-receiver message)
(cond
((next-command-message? message)
(pps))
((print-message? message)
(let ((processes (message-result-object message)))
(make-print-object 1 1 (print-processes processes)
'() '())))
((key-pressed-message? message)
(pps))
((restore-message? message)
(values))
((selection-message? message)
"'()")))
(set! receivers (cons (make-receiver "ps" pps-receiver)
receivers))