diff --git a/extra/raptor/config.factor b/extra/raptor/config.factor index ecdbf98f17..29e26d4381 100644 --- a/extra/raptor/config.factor +++ b/extra/raptor/config.factor @@ -44,7 +44,10 @@ IN: raptor ! rcS.d "mountvirtfs" start-service - "hostname.sh" start-service + + ! "hostname.sh" start-service + "narodnik" set-hostname + "keymap.sh" start-service "linux-restricted-modules-common" start-service "udev" start-service diff --git a/extra/raptor/cronjobs.factor b/extra/raptor/cronjobs.factor index 894e8e5ce7..91263a31d9 100644 --- a/extra/raptor/cronjobs.factor +++ b/extra/raptor/cronjobs.factor @@ -6,8 +6,6 @@ IN: raptor ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -: fork-exec-args-wait ( args -- ) [ first ] [ ] bi fork-exec-wait ; - : run-script ( path -- ) 1array [ fork-exec-args-wait ] curry in-thread ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! diff --git a/extra/raptor/raptor.factor b/extra/raptor/raptor.factor index e6f960cd8d..ef5359c313 100644 --- a/extra/raptor/raptor.factor +++ b/extra/raptor/raptor.factor @@ -22,6 +22,8 @@ SYMBOL: networking-hook : fork-exec-wait ( pathname args -- ) fork dup 0 = [ drop exec drop ] [ 2nip wait-for-pid drop ] if ; +: fork-exec-args-wait ( args -- ) [ first ] [ ] bi fork-exec-wait ; + ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! : forever ( quot -- ) [ call ] [ forever ] bi ; @@ -59,6 +61,10 @@ SYMBOL: swap-devices : start-networking ( -- ) networking-hook get call ; +: set-hostname ( name -- ) `{ "/bin/hostname" , } fork-exec-args-wait ; + +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + : boot ( -- ) boot-hook get call ; : reboot ( -- ) reboot-hook get call ; : shutdown ( -- ) shutdown-hook get call ; diff --git a/extra/x/x.factor b/extra/x/x.factor index e55dc3f5cd..8d9f869fa3 100644 --- a/extra/x/x.factor +++ b/extra/x/x.factor @@ -29,7 +29,8 @@ define-independent-class "create" !( name -- display ) [ new-empty swap >>name - dup $name dup [ string>char-alien ] [ ] if XOpenDisplay >>ptr + dup $name dup [ string>char-alien ] [ ] if XOpenDisplay + dup [ >>ptr ] [ "XOpenDisplay error" throw ] if dup $ptr XDefaultScreen >>default-screen dup $ptr XDefaultRootWindow dupd new >>default-root dup $ptr over $default-screen XDefaultGC >>default-gc diff --git a/misc/factor.el b/misc/factor.el index 88af0a6dab..985e10e285 100644 --- a/misc/factor.el +++ b/misc/factor.el @@ -113,13 +113,6 @@ (defvar factor-binary "/scratch/repos/Factor/factor") (defvar factor-image "/scratch/repos/Factor/factor.image") -(defun run-factor () - (interactive) - (switch-to-buffer - (make-comint-in-buffer "factor" nil factor-binary nil - (concat "-i=" factor-image) - "-run=listener"))) - (defun factor-telnet-to-port (port) (interactive "nPort: ") (switch-to-buffer @@ -166,12 +159,30 @@ (beginning-of-line) (insert "! ")) -(defun factor-refresh-all () - (interactive) - (comint-send-string "*factor*" "refresh-all\n")) - (define-key factor-mode-map "\C-c\C-f" 'factor-run-file) (define-key factor-mode-map "\C-c\C-r" 'factor-send-region) (define-key factor-mode-map "\C-c\C-s" 'factor-see) -(define-key factor-mode-map "\C-ce" 'factor-edit) +(define-key factor-mode-map "\C-ce" 'factor-edit) (define-key factor-mode-map "\C-c\C-h" 'factor-help) +(define-key factor-mode-map "\C-cc" 'comment-region) +(define-key factor-mode-map [return] 'newline-and-indent) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; factor-listener-mode +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define-derived-mode factor-listener-mode comint-mode "Factor Listener") + +(define-key factor-listener-mode-map [f8] 'factor-refresh-all) + +(defun run-factor () + (interactive) + (switch-to-buffer + (make-comint-in-buffer "factor" nil factor-binary nil + (concat "-i=" factor-image) + "-run=listener")) + (factor-listener-mode)) + +(defun factor-refresh-all () + (interactive) + (comint-send-string "*factor*" "refresh-all\n")) \ No newline at end of file