]> gitweb.factorcode.org Git - factor.git/commitdiff
fuel.listener: new vocab with a listener better for FUEL (#1486)
authorBjörn Lindqvist <bjourne@gmail.com>
Tue, 6 Oct 2015 12:02:26 +0000 (14:02 +0200)
committerBjörn Lindqvist <bjourne@gmail.com>
Tue, 6 Oct 2015 12:09:51 +0000 (14:09 +0200)
extra/fuel/listener/linux/linux.factor [new file with mode: 0644]
extra/fuel/listener/linux/platforms.txt [new file with mode: 0644]
extra/fuel/listener/listener-docs.factor [new file with mode: 0644]
extra/fuel/listener/listener.factor [new file with mode: 0644]
misc/fuel/fuel-listener.el

diff --git a/extra/fuel/listener/linux/linux.factor b/extra/fuel/listener/linux/linux.factor
new file mode 100644 (file)
index 0000000..1dc062e
--- /dev/null
@@ -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 (file)
index 0000000..a08e1f3
--- /dev/null
@@ -0,0 +1 @@
+linux
diff --git a/extra/fuel/listener/listener-docs.factor b/extra/fuel/listener/listener-docs.factor
new file mode 100644 (file)
index 0000000..5d5f334
--- /dev/null
@@ -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 (file)
index 0000000..19de40e
--- /dev/null
@@ -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
index ea4392f1bde1b491b54e3c8e5273fdb925150ec1..2d1b182a7508817061b816e787457518c323853d 100644 (file)
@@ -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))))