Skip to content

Commit 42c3eda

Browse files
authored
Merge pull request #8 from vision-05/dev
Dev
2 parents 60ab30f + 00278bd commit 42c3eda

File tree

9 files changed

+81
-81
lines changed

9 files changed

+81
-81
lines changed

bettercode/src/bettercode/core.clj

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,17 +35,20 @@
3535

3636
(def *context
3737
(atom
38-
(fx/create-context {:title "BetterCode"
39-
:file-name "foo.txt"
40-
:text-editor (slurp "/home/tim/foo.txt")
38+
(fx/create-context {:title ""
39+
:file-path "/home/tim/foo.txt"
40+
:text-editor ""
4141
:anchor-pos 0
42-
:caret-pos 0}
42+
:caret-pos 0
43+
:dir-contents {:dir-path ""
44+
:directories []
45+
:files []}}
4346
#(cache/lru-cache-factory % :threshold 4096))))
4447

48+
;create file opening screen
4549
(defn -main []
4650
(Platform/setImplicitExit true)
4751
(let [c @(client "localhost" 8080)]
48-
(println @(s/put! c "made connection"))
4952
(fx/create-app *context
5053
:event-handler bettercode.events/handle-event
5154
:desc-fn (fn [_]

bettercode/src/bettercode/elements.clj

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,4 +67,7 @@
6767
{:fx/type editor-row
6868
:tclient tclient
6969
:v-box/vgrow :always
70-
:v-box/hgrow :always}]})
70+
:v-box/hgrow :always}]})
71+
72+
(defn fs-view [{:keys [fx/context tclient]}]
73+
{:fx/type :list-view})

bettercode/src/bettercode/events.clj

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

1111
(defmethod handle-event ::type-text [{:keys [fx/event fx/context tclient]}]
12-
(println (.getCaretPosition (.getTarget event)))
13-
(println (.getAnchor (.getTarget event)))
14-
@(s/put! tclient "text-edit")
15-
@(s/put! tclient (fx/sub-val context :caret-pos))
16-
@(s/put! tclient (fx/sub-val context :anchor-pos))
17-
@(s/put! tclient (.getCharacter event))
12+
@(s/put! tclient ["text-edit" (fx/sub-val context :file-path) (fx/sub-val context :caret-pos) (.getCharacter event)])
13+
(println @(s/take! tclient))
1814
{:context (fx/swap-context context
1915
assoc
2016
:anchor-pos (.getAnchor (.getSource event))
2117
:caret-pos (.getCaretPosition (.getSource event)))})
2218

2319

20+
;similar event must be made for arrow key press
2421
(defmethod handle-event ::mouse-click [{:keys [fx/event fx/context tclient]}]
2522
(println "click")
2623
(println (.getSource event))
@@ -31,17 +28,22 @@
3128

3229
(defmethod handle-event ::open-file [{:keys [fx/event fx/context tclient]}]
3330
(println "getting file")
34-
@(s/put! tclient "open-file")
35-
@(s/take! tclient))
31+
@(s/put! tclient ["open-file" (fx/sub-val context :file-path)])
32+
{:context (fx/swap-context context
33+
assoc
34+
:text-editor
35+
@(s/take! tclient))})
3636

3737
(defmethod handle-event ::close-file [{:keys [fx/event fx/context tclient]}]
3838
(println "requesting close file")
39-
@(s/put! tclient "close-file"))
39+
@(s/put! tclient ["close-file" (fx/sub-val context :file-path)]))
4040

4141
(defmethod handle-event ::save-file [{:keys [fx/event fx/context tclient]}]
4242
(println "saving file")
43-
@(s/put! tclient "save-file"))
43+
@(s/put! tclient ["save-file" (fx/sub-val context :file-path)])
44+
@(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"])
49+
@(s/take! tclient))

bettercodeserver/project.clj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
[org.clojure/core.cache "1.0.207"]
88
[aleph "0.4.6"]
99
[gloss "0.2.6"]
10-
[manifold "0.1.9-alpha4"]]
10+
[manifold "0.1.9-alpha4"]
11+
[me.raynes/fs "1.4.6"]]
1112
:main ^:skip-aot bettercodeserver.core
1213
:target-path "target/%s"
1314
:profiles {:uberjar {:aot :all

bettercodeserver/src/bettercodeserver/buffer.clj

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
(defn add-file
1414
([agent-name full-file-path]
15-
(send agent-name assoc full-file-path (slurp full-file-path)))
15+
(add-file agent-name full-file-path (slurp full-file-path)))
1616
([agent-name full-file-path string]
1717
(send agent-name assoc full-file-path string)))
1818

@@ -26,7 +26,21 @@
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)))
30+
31+
(defn text-edit [agent-name full-file-path string index]
32+
(cond
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))
36+
37+
(defn save-file [agent-name full-file-path]
38+
(spit full-file-path (@agent-name full-file-path)))
39+
40+
(defn save-all-files [agent-name]
41+
(let [all-files @agent-name]
42+
(doseq [file-name all-files]
43+
(save-file agent-name file-name))))
3044

3145
(defn close-all-buffers []
3246
(shutdown-agents))

bettercodeserver/src/bettercodeserver/core.clj

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +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
10-
(server/event-loop server/handle-events)
11-
8080))
12-
(.close serv))
10+
(server/event-loop server/parse-request files)
11+
8080)))
Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,7 @@
1-
(ns bettercodeserver.filenav)
1+
(ns bettercodeserver.filenav
2+
(:require [me.raynes.fs :as fs]))
3+
4+
(defn get-folder-contents
5+
([] (get-folder-contents fs/*cwd*))
6+
([folder-path] {:dirs (filter fs/directory? (fs/list-dir folder-path))
7+
:files (filter fs/file? (fs/list-dir folder-path))}))

bettercodeserver/src/bettercodeserver/server.clj

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
[gloss.io :as io]
66
[gloss.core :as gloss]
77
[clojure.edn :as edn]
8-
[bettercodeserver.buffer :as buffer]))
8+
[clojure.string :as str]
9+
[bettercodeserver.buffer :as buffer]
10+
[bettercodeserver.filenav :as fnav]))
911

1012
(def protocol
1113
(gloss/compile-frame
@@ -22,20 +24,33 @@
2224
(s/splice out
2325
(io/decode-stream s protocol))))
2426

25-
(defn event-loop [f]
27+
(defn parse-request [message agent-name]
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))))
35+
36+
(defn event-loop [f files-agent]
2637
(fn [s info]
2738
(d/loop []
28-
(->
29-
(d/let-flow [msg (s/take! s ::none)]
30-
(when-not (= ::none msg)
31-
(d/let-flow [msg-two (d/future (f msg))
32-
result (s/put! s msg-two)]
33-
(when result
34-
(d/recur)))))
35-
(d/catch
36-
(fn [exception]
37-
(s/put! s (str "ERROR: " exception))
38-
(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)))))))
3954

4055
(defn start-server [handler port]
4156
(tcp/start-server

makefile

Lines changed: 0 additions & 43 deletions
This file was deleted.

0 commit comments

Comments
 (0)