From 27a707947a99d4d526d89a07ff78c2ee7c7824ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Lindqvist?= Date: Tue, 6 Oct 2015 14:02:26 +0200 Subject: [PATCH] fuel.listener: new vocab with a listener better for FUEL (#1486) --- extra/fuel/listener/linux/linux.factor | 13 +++++++++++++ extra/fuel/listener/linux/platforms.txt | 1 + extra/fuel/listener/listener-docs.factor | 6 ++++++ extra/fuel/listener/listener.factor | 13 +++++++++++++ misc/fuel/fuel-listener.el | 2 +- 5 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 extra/fuel/listener/linux/linux.factor create mode 100644 extra/fuel/listener/linux/platforms.txt create mode 100644 extra/fuel/listener/listener-docs.factor create mode 100644 extra/fuel/listener/listener.factor diff --git a/extra/fuel/listener/linux/linux.factor b/extra/fuel/listener/linux/linux.factor new file mode 100644 index 0000000000..1dc062eaca --- /dev/null +++ b/extra/fuel/listener/linux/linux.factor @@ -0,0 +1,13 @@ +USING: accessors fuel.listener io.serial.linux io.serial.linux.ffi +kernel libc math.bitwise sequences system ; +IN: fuel.listener.linux + +: flush-termios ( termios fileno -- ) + TCSAFLUSH rot tcsetattr io-error ; + +: set-raw-flags ( termios -- ) + [ ICANON unmask ECHO unmask ] change-lflag + cc>> [ 1 VMIN rot set-nth ] [ 0 VTIME rot set-nth ] bi ; + +M: linux fuel-pty-setup + 0 get-fd-termios dup set-raw-flags 0 flush-termios ; diff --git a/extra/fuel/listener/linux/platforms.txt b/extra/fuel/listener/linux/platforms.txt new file mode 100644 index 0000000000..a08e1f35eb --- /dev/null +++ b/extra/fuel/listener/linux/platforms.txt @@ -0,0 +1 @@ +linux diff --git a/extra/fuel/listener/listener-docs.factor b/extra/fuel/listener/listener-docs.factor new file mode 100644 index 0000000000..5d5f334315 --- /dev/null +++ b/extra/fuel/listener/listener-docs.factor @@ -0,0 +1,6 @@ +USING: help.syntax ; +IN: fuel.listener + +ARTICLE: "fuel.listener" "FUEL command listener" "This vocab contains the listener started from FUEL. It sets up the pty in non-canonical mode so that you can paste long lines into it from Emacs." ; + +ABOUT: "fuel.listener" diff --git a/extra/fuel/listener/listener.factor b/extra/fuel/listener/listener.factor new file mode 100644 index 0000000000..19de40e32a --- /dev/null +++ b/extra/fuel/listener/listener.factor @@ -0,0 +1,13 @@ +USING: kernel listener system vocabs ; +IN: fuel.listener + +HOOK: fuel-pty-setup os ( -- ) + +M: object fuel-pty-setup ; + +os linux? [ "fuel.listener.linux" require ] when + +: fuel-listener ( -- ) + fuel-pty-setup listener-main ; + +MAIN: fuel-listener diff --git a/misc/fuel/fuel-listener.el b/misc/fuel/fuel-listener.el index ea4392f1bd..2d1b182a75 100644 --- a/misc/fuel/fuel-listener.el +++ b/misc/fuel/fuel-listener.el @@ -137,7 +137,7 @@ sessions." (message "Starting FUEL listener (this may take a while) ...") (pop-to-buffer (fuel-listener--buffer)) (make-comint-in-buffer "fuel listener" (current-buffer) factor nil - "-run=listener" (format "-i=%s" image)) + "-run=fuel.listener" (format "-i=%s" image)) (fuel-listener--wait-for-prompt 60000) (fuel-listener--history-setup) (fuel-con--setup-connection (current-buffer))))