Skip to content

Commit 7b8bc8d

Browse files
committed
got all typing working, arrow key navigation needs to be fixed
1 parent ed788a1 commit 7b8bc8d

File tree

5 files changed

+34
-33
lines changed

5 files changed

+34
-33
lines changed

bettercode/src/bettercode/core.clj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
(def *context
3737
(atom
3838
(fx/create-context {:title ""
39-
:file-path ""
39+
:file-path "/home/tim/foo.txt"
4040
:text-editor ""
4141
:anchor-pos 0
4242
:caret-pos 0

bettercode/src/bettercode/events.clj

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,15 @@
99
(println "non event"))
1010

1111
(defmethod handle-event ::type-text [{:keys [fx/event fx/context tclient]}]
12-
@(s/put! tclient (str "text-edit " (fx/sub-val context :file-path) " " (fx/sub-val context :caret-pos) " " (.getCharacter event)))
12+
@(s/put! tclient ["text-edit" (fx/sub-val context :file-path) (fx/sub-val context :caret-pos) (.getCharacter event)])
1313
(println @(s/take! tclient))
1414
{:context (fx/swap-context context
1515
assoc
1616
:anchor-pos (.getAnchor (.getSource event))
1717
:caret-pos (.getCaretPosition (.getSource event)))})
1818

1919

20+
;similar event must be made for arrow key press
2021
(defmethod handle-event ::mouse-click [{:keys [fx/event fx/context tclient]}]
2122
(println "click")
2223
(println (.getSource event))
@@ -27,22 +28,22 @@
2728

2829
(defmethod handle-event ::open-file [{:keys [fx/event fx/context tclient]}]
2930
(println "getting file")
30-
@(s/put! tclient (str "open-file " (fx/sub-val context :file-path)))
31+
@(s/put! tclient ["open-file" (fx/sub-val context :file-path)])
3132
{:context (fx/swap-context context
3233
assoc
3334
:text-editor
3435
@(s/take! tclient))})
3536

3637
(defmethod handle-event ::close-file [{:keys [fx/event fx/context tclient]}]
3738
(println "requesting close file")
38-
@(s/put! tclient (str "close-file " (fx/sub-val context :file-path))))
39+
@(s/put! tclient ["close-file" (fx/sub-val context :file-path)]))
3940

4041
(defmethod handle-event ::save-file [{:keys [fx/event fx/context tclient]}]
4142
(println "saving file")
42-
@(s/put! tclient (str "save-file " (fx/sub-val context :file-path)))
43+
@(s/put! tclient ["save-file" (fx/sub-val context :file-path)])
4344
@(s/take! tclient))
4445

4546
(defmethod handle-event ::save-all [{:keys [fx/event fx/context tclient]}]
4647
(println "saving all buffers")
47-
@(s/put! tclient "save-all")
48+
@(s/put! tclient ["save-all"])
4849
@(s/take! tclient))

bettercodeserver/src/bettercodeserver/buffer.clj

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,13 @@
2626
(send agent-name update-in [full-file-path] remove-string position length))
2727

2828
(defn del-char [agent-name full-file-path position]
29-
(send agent-name update-in [full-file-path] remove-char position))
29+
(send agent-name update-in [full-file-path] remove-char (- position 1)))
3030

3131
(defn text-edit [agent-name full-file-path string index]
3232
(cond
33-
(= string "\b") (del-char agent-name full-file-path index)
34-
:else (add-string agent-name full-file-path index string)))
33+
(and (= string "\b") (> index 0)) (del-char agent-name full-file-path index)
34+
(> index -1) (add-string agent-name full-file-path index string)
35+
:else false))
3536

3637
(defn save-file [agent-name full-file-path]
3738
(spit full-file-path (@agent-name full-file-path)))

bettercodeserver/src/bettercodeserver/core.clj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
(:gen-class))
66

77
(defn -main []
8-
(def files (agent {}))
8+
(def files (agent {"/home/tim/foo.txt" ""}))
99
(def serv (server/start-server
1010
(server/event-loop server/parse-request files)
1111
8080)))

bettercodeserver/src/bettercodeserver/server.clj

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -25,33 +25,32 @@
2525
(io/decode-stream s protocol))))
2626

2727
(defn parse-request [message agent-name]
28-
(let [split-req (str/split message #" ")]
29-
(println message)
30-
(println (split-req 0))
31-
(case (split-req 0)
32-
"text-edit" (buffer/text-edit agent-name (split-req 1) (split-req 3) (split-req 2))
33-
"open-file" (buffer/add-file agent-name (split-req 1))
34-
"close-file" (buffer/remove-file agent-name (split-req 1))
35-
"save-file" (buffer/save-file agent-name (split-req 1))
36-
"save-all" (buffer/save-all-files agent-name)
37-
"get-dir" (fnav/get-folder-contents (split-req 1)))))
28+
(case (message 0)
29+
"text-edit" (buffer/text-edit agent-name (message 1) (message 3) (message 2))
30+
"open-file" (buffer/add-file agent-name (message 1))
31+
"close-file" (buffer/remove-file agent-name (message 1))
32+
"save-file" (buffer/save-file agent-name (message 1))
33+
"save-all" (buffer/save-all-files agent-name)
34+
"get-dir" (fnav/get-folder-contents (message 1))))
3835

3936
(defn event-loop [f files-agent]
4037
(fn [s info]
4138
(d/loop []
42-
(->
43-
(d/let-flow [msg (s/take! s ::none)]
44-
(when-not (= ::none msg)
45-
(d/let-flow [msg-two (d/future (f msg files-agent))
46-
result (cond
47-
(= (class "") (class msg-two)) @(s/put! s msg-two)
48-
:else @(s/put! s true))]
49-
(when result
50-
(d/recur)))))
51-
(d/catch
52-
(fn [exception]
53-
(s/put! s (str "ERROR: " exception))
54-
(s/close! s)))))))
39+
(->
40+
(d/let-flow [msg (s/take! s ::none)]
41+
(when-not (= ::none msg)
42+
(d/let-flow [msg-two (d/future (f msg files-agent))
43+
result (cond
44+
(= (class "") (class msg-two)) @(s/put! s msg-two)
45+
:else @(s/put! s true))]
46+
(when result
47+
(println @files-agent)
48+
(d/recur)))))
49+
(d/catch
50+
(fn [exception]
51+
(println agent-error exception)
52+
(s/put! s (str "ERROR: " exception))
53+
(s/close! s)))))))
5554

5655
(defn start-server [handler port]
5756
(tcp/start-server

0 commit comments

Comments
 (0)