|
60 | 60 | (safe-read file)))
|
61 | 61 |
|
62 | 62 | (defn behavior-diffs-in [path]
|
63 |
| - (->> |
64 |
| - (filter #(= (files/ext %) "behaviors") |
65 |
| - (files/full-path-ls path)) |
66 |
| - (mapv parse-file))) |
| 63 | + (when (files/exists? path) |
| 64 | + (->> |
| 65 | + (filter #(= (files/ext %) "behaviors") |
| 66 | + (files/full-path-ls path)) |
| 67 | + (mapv parse-file)))) |
67 | 68 |
|
68 | 69 | (defn load-all []
|
69 | 70 | (let [final (reduce (fn [fin cur]
|
|
106 | 107 | ;;*********************************************************
|
107 | 108 |
|
108 | 109 | (behavior ::default-behavior-diffs
|
109 |
| - :triggers #{:behaviors.diffs.default+} |
110 |
| - :reaction (fn [this diffs] |
111 |
| - (concat diffs (behavior-diffs-in (files/lt-home "settings/default/"))) |
112 |
| - )) |
| 110 | + :triggers #{:behaviors.diffs.default+} |
| 111 | + :reaction (fn [this diffs] |
| 112 | + (concat diffs (behavior-diffs-in (files/lt-home "settings/default/"))) |
| 113 | + )) |
113 | 114 |
|
114 | 115 | (behavior ::user-behavior-diffs
|
115 |
| - :triggers #{:behaviors.diffs.user+} |
116 |
| - :reaction (fn [this diffs] |
117 |
| - (concat diffs (behavior-diffs-in (files/lt-user-dir "settings/"))) |
118 |
| - )) |
| 116 | + :triggers #{:behaviors.diffs.user+} |
| 117 | + :reaction (fn [this diffs] |
| 118 | + (concat diffs (behavior-diffs-in (files/lt-user-dir "settings/"))) |
| 119 | + )) |
119 | 120 |
|
120 | 121 | (behavior ::initial-behaviors
|
121 |
| - :triggers #{:pre-init} |
122 |
| - :reaction (fn [this] |
123 |
| - (load-all) |
124 |
| - (doseq [inst (vals @object/instances)] |
125 |
| - (object/refresh! inst)))) |
| 122 | + :triggers #{:pre-init} |
| 123 | + :reaction (fn [this] |
| 124 | + (when-not (files/exists? (files/lt-user-dir "settings")) |
| 125 | + (files/mkdir (files/lt-user-dir "settings"))) |
| 126 | + (load-all) |
| 127 | + (doseq [inst (vals @object/instances)] |
| 128 | + (object/refresh! inst)))) |
126 | 129 |
|
127 | 130 | (behavior ::load-behaviors
|
128 |
| - :triggers #{:behaviors.reload} |
129 |
| - :reaction (fn [this] |
130 |
| - (load-all) |
131 |
| - (notifos/working "loading behaviors...") |
132 |
| - (refresh-all (vals @object/instances)))) |
| 131 | + :triggers #{:behaviors.reload} |
| 132 | + :reaction (fn [this] |
| 133 | + (load-all) |
| 134 | + (notifos/working "loading behaviors...") |
| 135 | + (refresh-all (vals @object/instances)))) |
133 | 136 |
|
134 | 137 |
|
135 | 138 | (behavior ::eval-settings
|
136 |
| - :triggers #{:eval :eval.one} |
137 |
| - :reaction (fn [ed] |
138 |
| - (object/raise ed :save))) |
| 139 | + :triggers #{:eval :eval.one} |
| 140 | + :reaction (fn [ed] |
| 141 | + (object/raise ed :save))) |
139 | 142 |
|
140 | 143 | (behavior ::grab-workspace-behaviors
|
141 |
| - :triggers #{:set} |
142 |
| - :reaction (fn [workspace old] |
143 |
| - (let [old (:ws-behaviors old) |
144 |
| - old (when-not (empty? old) |
145 |
| - (reader/read-string old)) |
146 |
| - neue (:ws-behaviors @workspace) |
147 |
| - neue (when-not (empty? neue) |
148 |
| - (reader/read-string neue))] |
149 |
| - (when old |
150 |
| - (apply-diff (reverse-diff old)) |
151 |
| - (refresh-diffed old)) |
152 |
| - (when neue |
153 |
| - (apply-diff neue) |
154 |
| - (refresh-diffed neue))))) |
| 144 | + :triggers #{:set} |
| 145 | + :reaction (fn [workspace old] |
| 146 | + (let [old (:ws-behaviors old) |
| 147 | + old (when-not (empty? old) |
| 148 | + (reader/read-string old)) |
| 149 | + neue (:ws-behaviors @workspace) |
| 150 | + neue (when-not (empty? neue) |
| 151 | + (reader/read-string neue))] |
| 152 | + (when old |
| 153 | + (apply-diff (reverse-diff old)) |
| 154 | + (refresh-diffed old)) |
| 155 | + (when neue |
| 156 | + (apply-diff neue) |
| 157 | + (refresh-diffed neue))))) |
155 | 158 |
|
156 | 159 | (behavior ::workspace-save
|
157 |
| - :triggers #{:save} |
158 |
| - :reaction (fn [editor] |
159 |
| - (let [{:keys [path]} (@editor :info) |
160 |
| - final (object/raise-reduce editor :save+ (editor/->val editor))] |
161 |
| - (object/merge! workspace/current-ws {:ws-behaviors final}) |
162 |
| - (object/merge! editor {:dirty false}) |
163 |
| - (object/raise editor :saved) |
164 |
| - (object/raise editor :clean) |
165 |
| - (object/raise workspace/current-ws :serialize!)))) |
| 160 | + :triggers #{:save} |
| 161 | + :reaction (fn [editor] |
| 162 | + (let [{:keys [path]} (@editor :info) |
| 163 | + final (object/raise-reduce editor :save+ (editor/->val editor))] |
| 164 | + (object/merge! workspace/current-ws {:ws-behaviors final}) |
| 165 | + (object/merge! editor {:dirty false}) |
| 166 | + (object/raise editor :saved) |
| 167 | + (object/raise editor :clean) |
| 168 | + (object/raise workspace/current-ws :serialize!)))) |
166 | 169 |
|
167 | 170 | (def user-behaviors-path (files/lt-user-dir "settings/user.behaviors"))
|
168 | 171 | (def user-keymap-path (files/lt-user-dir "settings/user.keymap"))
|
169 | 172 |
|
170 | 173 | (behavior ::create-user-settings
|
171 |
| - :triggers #{:init} |
172 |
| - :reaction (fn [app] |
173 |
| - (when-not (files/exists? (files/lt-user-dir "settings")) |
174 |
| - (files/mkdir (files/lt-user-dir "settings"))) |
175 |
| - (when-not (files/exists? user-behaviors-path) |
176 |
| - (files/copy (files/lt-home "/core/misc/example.behaviors") user-behaviors-path)) |
177 |
| - (when-not (files/exists? user-keymap-path) |
178 |
| - (files/copy (files/lt-home "/core/misc/example.keymap") user-keymap-path)))) |
| 174 | + :triggers #{:init} |
| 175 | + :reaction (fn [app] |
| 176 | + (when-not (files/exists? user-behaviors-path) |
| 177 | + (files/copy (files/lt-home "/core/misc/example.behaviors") user-behaviors-path)) |
| 178 | + (when-not (files/exists? user-keymap-path) |
| 179 | + (files/copy (files/lt-home "/core/misc/example.keymap") user-keymap-path)))) |
179 | 180 |
|
180 | 181 | ;;*********************************************************
|
181 | 182 | ;; Commands
|
|
226 | 227 | (cmd/exec! :open-path (files/lt-home "/settings/default/default.keymap")))})
|
227 | 228 |
|
228 | 229 | (behavior ::on-close-remove
|
229 |
| - :triggers #{:close} |
230 |
| - :reaction (fn [this] |
231 |
| - (tabs/rem! this))) |
| 230 | + :triggers #{:close} |
| 231 | + :reaction (fn [this] |
| 232 | + (tabs/rem! this))) |
232 | 233 |
|
233 | 234 |
|
234 | 235 | (defn ->ordered-keystr [k]
|
|
252 | 253 | (defn fix-keys [[k v]]
|
253 | 254 | (let [k (string/replace k "pmeta" kb/meta)
|
254 | 255 | keys (string/split k " ")]
|
255 |
| - ;;ctrl cmd alt altgr shift |
256 |
| - [(reduce #(str % " " %2) (map ->ordered-keystr keys)) v])) |
| 256 | + ;;ctrl cmd alt altgr shift |
| 257 | + [(reduce #(str % " " %2) (map ->ordered-keystr keys)) v])) |
257 | 258 |
|
258 | 259 | (defn +keys [cur m]
|
259 | 260 | (reduce (fn [res [k v]]
|
|
280 | 281 | (reader/read-string)))
|
281 | 282 |
|
282 | 283 | (defn keymap-diffs-in [path]
|
283 |
| - (->> |
284 |
| - (filter #(= (files/ext %) "keymap") |
285 |
| - (files/full-path-ls path)) |
286 |
| - (map parse-key-file))) |
| 284 | + (when (files/exists? path) |
| 285 | + (->> |
| 286 | + (filter #(= (files/ext %) "keymap") |
| 287 | + (files/full-path-ls path)) |
| 288 | + (map parse-key-file)))) |
287 | 289 |
|
288 | 290 | (defn load-all-keys []
|
289 | 291 | (let [final (reduce (fn [fin cur]
|
|
295 | 297 | (reset! kb/keys final)))
|
296 | 298 |
|
297 | 299 | (behavior ::default-keymap-diffs
|
298 |
| - :triggers #{:keymap.diffs.default+} |
299 |
| - :reaction (fn [this diffs] |
300 |
| - (concat diffs (keymap-diffs-in (files/lt-home "/settings/default/"))) |
301 |
| - )) |
| 300 | + :triggers #{:keymap.diffs.default+} |
| 301 | + :reaction (fn [this diffs] |
| 302 | + (concat diffs (keymap-diffs-in (files/lt-home "/settings/default/"))) |
| 303 | + )) |
302 | 304 |
|
303 | 305 | (behavior ::user-keymap-diffs
|
304 |
| - :triggers #{:keymap.diffs.user+} |
305 |
| - :reaction (fn [this diffs] |
306 |
| - (concat diffs (keymap-diffs-in (files/lt-user-dir "/settings/"))) |
307 |
| - )) |
| 306 | + :triggers #{:keymap.diffs.user+} |
| 307 | + :reaction (fn [this diffs] |
| 308 | + (concat diffs (keymap-diffs-in (files/lt-user-dir "/settings/"))) |
| 309 | + )) |
308 | 310 |
|
309 | 311 | (behavior ::load-keys
|
310 |
| - :triggers #{:pre-init} |
311 |
| - :reaction (fn [this] |
312 |
| - (load-all-keys) |
313 |
| - (kb/refresh) |
314 |
| - (object/raise (first (object/by-tag :app)) :app.keys.load))) |
| 312 | + :triggers #{:pre-init} |
| 313 | + :reaction (fn [this] |
| 314 | + (load-all-keys) |
| 315 | + (kb/refresh) |
| 316 | + (object/raise (first (object/by-tag :app)) :app.keys.load))) |
315 | 317 |
|
316 | 318 |
|
317 | 319 | (behavior ::on-behaviors-editor-save
|
318 |
| - :triggers #{:saved} |
319 |
| - :reaction (fn [editor] |
320 |
| - (cmd/exec! :behaviors.reload))) |
| 320 | + :triggers #{:saved} |
| 321 | + :reaction (fn [editor] |
| 322 | + (cmd/exec! :behaviors.reload))) |
321 | 323 |
|
322 | 324 | (behavior ::on-keymap-editor-save
|
323 |
| - :triggers #{:saved} |
324 |
| - :reaction (fn [editor] |
325 |
| - (cmd/exec! :keymaps.reload))) |
| 325 | + :triggers #{:saved} |
| 326 | + :reaction (fn [editor] |
| 327 | + (cmd/exec! :keymaps.reload))) |
326 | 328 |
|
327 | 329 |
|
328 | 330 |
|
|
0 commit comments