Skip to content

Commit 6538857

Browse files
committed
Fix settings state
1 parent b64a2cd commit 6538857

File tree

6 files changed

+45
-56
lines changed

6 files changed

+45
-56
lines changed
Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
(ns com.github.clojure-lsp.intellij.db
22
(:refer-clojure :exclude [get-in assoc-in update-in])
33
(:import
4-
[com.github.clojure_lsp.intellij.extension SettingsState]
54
[com.intellij.openapi.project Project]))
65

76
(set! *warn-on-reflection* true)
@@ -12,8 +11,6 @@
1211
:server-process nil
1312
:project nil
1413
:diagnostics {}
15-
:settings {:trace-level "off"
16-
:server-path nil}
1714
:on-status-changed-fns []})
1815

1916
(defonce db* (atom {:projects {}}))
@@ -36,33 +33,6 @@
3633
projects
3734
(update projects (.getBasePath project) #(merge (assoc empty-project :project project) %))))))
3835

39-
(defn load-settings-from-state! [^Project project ^SettingsState settings-state]
40-
(update-in project [:settings] (fn [settings]
41-
(if-not (:loaded-settings? settings)
42-
(-> settings
43-
(assoc :loaded-settings? true)
44-
(update :server-path #(or (.getServerPath settings-state) %))
45-
(update :trace-level #(or (.getTraceLevel settings-state) %))
46-
(update :log-path #(or (.getServerLogPath settings-state) %)))
47-
settings))))
48-
49-
(defn set-trace-level-setting! [^SettingsState settings-state trace-level]
50-
(doseq [project-path (keys (:projects @db*))]
51-
(.setTraceLevel settings-state trace-level)
52-
(swap! db* clojure.core/assoc-in [:projects project-path :settings :trace-level] trace-level)))
53-
54-
(defn set-server-log-path-setting! [^SettingsState settings-state log-path]
55-
(doseq [project-path (keys (:projects @db*))]
56-
(let [log-path (not-empty log-path)]
57-
(.setServerLogPath settings-state log-path)
58-
(swap! db* clojure.core/assoc-in [:projects project-path :settings :log-path] log-path))))
59-
60-
(defn set-server-path-setting! [^SettingsState settings-state server-path]
61-
(doseq [project-path (keys (:projects @db*))]
62-
(let [server-path (not-empty server-path)]
63-
(.setServerPath settings-state server-path)
64-
(swap! db* clojure.core/assoc-in [:projects project-path :settings :server-path] server-path))))
65-
6636
(defn all-projects []
6737
(remove nil?
6838
(mapv :project (vals (:projects @db*)))))

src/main/clojure/com/github/clojure_lsp/intellij/extension/general_settings.clj

Lines changed: 17 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@
99
[com.github.clojure-lsp.intellij.config :as config]
1010
[com.github.clojure-lsp.intellij.db :as db]
1111
[com.github.clojure-lsp.intellij.server :as server]
12+
[com.github.clojure-lsp.intellij.settings :as settings]
1213
[seesaw.color :as s.color]
1314
[seesaw.core :as s]
1415
[seesaw.font :as s.font]
1516
[seesaw.mig :as s.mig])
1617
(:import
17-
[com.github.clojure_lsp.intellij.extension SettingsState]
1818
[com.intellij.ui IdeBorderFactory]
1919
[java.awt Toolkit]
2020
[java.awt.datatransfer StringSelection]))
@@ -25,11 +25,11 @@
2525

2626
(def ^:private server-not-started-message "Server not started")
2727

28-
(defn ^:private build-component [{:keys [server-version log-path] :as server-info} settings]
28+
(defn ^:private build-component [{:keys [server-version log-path] :as server-info}]
2929
(let [server-running? (boolean server-info)
30-
custom-server-path (:server-path settings)
30+
custom-server-path (settings/server-path)
3131
server-path (or custom-server-path (.getCanonicalPath (config/download-server-path)))
32-
custom-server-log-path (:log-path settings)
32+
custom-server-log-path (settings/server-log-path)
3333
server-log-path (or custom-server-log-path log-path)]
3434
(s.mig/mig-panel
3535
:items (->> [(when-not server-running?
@@ -96,32 +96,30 @@
9696
(defn -createComponent [_]
9797
(let [project (first (db/all-projects))
9898
server-info (lsp-client/server-info project)
99-
component (build-component server-info (db/get-in project [:settings]))]
99+
component (build-component server-info)]
100100
(reset! component* component)
101101
component))
102102

103103
(defn -getPreferredFocusedComponent [_]
104104
(s/select @component* [:#copy-server-info]))
105105

106106
(defn -isModified [_]
107-
(let [project (first (db/all-projects))
108-
settings-state (SettingsState/get)
109-
server-path (s/config (s/select @component* [:#server-path]) :text)
107+
(let [server-path (s/config (s/select @component* [:#server-path]) :text)
110108
trace-level-combo-box (s/config (s/select @component* [:#trace-level]) :selected-item)
111109
server-log-path (s/config (s/select @component* [:#server-log]) :text)]
112110
(boolean
113-
(or (not= server-path (or (.getServerPath settings-state) ""))
114-
(not= trace-level-combo-box (.getTraceLevel settings-state))
115-
(not= server-log-path (or (.getServerLogPath settings-state) ""))
111+
(or (not= server-path (or (settings/server-path) ""))
112+
(not= trace-level-combo-box (settings/server-trace-level))
113+
(not= server-log-path (or (settings/server-log-path) ""))
116114
(and (str/blank? server-log-path)
117-
(db/get-in project [:settings :log-path]))))))
115+
(settings/server-log-path))))))
118116

119117
(defn -reset [_]
120118
(let [project (first (db/all-projects))
121119
server-info (lsp-client/server-info project)
122-
trace-level-combo-box (db/get-in project [:settings :trace-level])
123-
server-log-path (or (db/get-in project [:settings :log-path]) (:log-path server-info))
124-
server-path (or (db/get-in project [:settings :server-path]) (.getCanonicalPath (config/download-server-path)))]
120+
trace-level-combo-box (settings/server-trace-level)
121+
server-log-path (or (settings/server-log-path) (:log-path server-info))
122+
server-path (or (settings/server-path) (.getCanonicalPath (config/download-server-path)))]
125123
(s/config! (s/select @component* [:#trace-level]) :selected-item trace-level-combo-box)
126124
(s/config! (s/select @component* [:#server-log]) :text server-log-path)
127125
(s/config! (s/select @component* [:#server-path]) :text server-path)))
@@ -130,14 +128,13 @@
130128
(reset! component* nil))
131129

132130
(defn -apply [_]
133-
(let [settings-state (SettingsState/get)
134-
trace-level (s/config (s/select @component* [:#trace-level]) :selected-item)
131+
(let [trace-level (s/config (s/select @component* [:#trace-level]) :selected-item)
135132
server-log-path (when (s/config (s/select @component* [:#custom-server-log?]) :selected?)
136133
(s/config (s/select @component* [:#server-log]) :text))
137134
server-path (when (s/config (s/select @component* [:#custom-server-path?]) :selected?)
138135
(s/config (s/select @component* [:#server-path]) :text))]
139-
(db/set-server-path-setting! settings-state server-path)
140-
(db/set-server-log-path-setting! settings-state server-log-path)
141-
(db/set-trace-level-setting! settings-state trace-level)))
136+
(settings/set-server-path! server-path)
137+
(settings/set-server-log-path! server-log-path)
138+
(settings/set-server-trace-level! trace-level)))
142139

143140
(defn -cancel [_])

src/main/clojure/com/github/clojure_lsp/intellij/extension/init_db_startup.clj

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,8 @@
55
com.intellij.openapi.project.DumbAware])
66
(:require
77
[com.github.clojure-lsp.intellij.db :as db]
8-
[com.github.ericdallo.clj4intellij.logger :as logger]
98
[com.rpl.proxy-plus :refer [proxy+]])
109
(:import
11-
[com.github.clojure_lsp.intellij.extension SettingsState]
1210
[com.intellij.openapi.project Project]
1311
[com.redhat.devtools.lsp4ij LanguageServerWrapper]
1412
[com.redhat.devtools.lsp4ij.lifecycle LanguageServerLifecycleListener LanguageServerLifecycleManager]))
@@ -17,8 +15,6 @@
1715

1816
(defn -runActivity [_this ^Project project]
1917
(db/init-db-for-project project)
20-
(db/load-settings-from-state! project (SettingsState/get))
21-
(logger/info "Loaded settings to memory:" (db/get-in project [:settings]))
2218
(.addLanguageServerLifecycleListener
2319
(LanguageServerLifecycleManager/getInstance project)
2420
(proxy+ [] LanguageServerLifecycleListener

src/main/clojure/com/github/clojure_lsp/intellij/extension/language_server_factory.clj

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
[com.github.clojure-lsp.intellij.config :as config]
1010
[com.github.clojure-lsp.intellij.editor :as editor]
1111
[com.github.clojure-lsp.intellij.server :as server]
12+
[com.github.clojure-lsp.intellij.settings :as settings]
1213
[com.rpl.proxy-plus :refer [proxy+]])
1314
(:import
1415
[com.intellij.execution.configurations GeneralCommandLine]
@@ -31,7 +32,8 @@
3132
(defn -createConnectionProvider [_ ^Project _project]
3233
(let [server-path (loop []
3334
(Thread/sleep 100)
34-
(or (some-> ^File (:path @server) .getCanonicalPath)
35+
(or (settings/server-path)
36+
(some-> ^File (:path @server) .getCanonicalPath)
3537
(recur)))
3638
command [server-path "listen"]]
3739
(doto (proxy+

src/main/clojure/com/github/clojure_lsp/intellij/server.clj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
[com.github.clojure-lsp.intellij.db :as db]
77
[com.github.clojure-lsp.intellij.notification :as notification]
88
[com.github.clojure-lsp.intellij.server :as server]
9+
[com.github.clojure-lsp.intellij.settings :as settings]
910
[com.github.ericdallo.clj4intellij.logger :as logger]
1011
[com.github.ericdallo.clj4intellij.tasks :as tasks])
1112
(:import
@@ -78,7 +79,7 @@
7879
(let [download-path (config/download-server-path)
7980
server-version-path (config/download-server-version-path)
8081
latest-version* (delay (try (string/trim (slurp latest-version-uri)) (catch Exception _ nil)))
81-
custom-server-path (db/get-in project [:settings :server-path])]
82+
custom-server-path (settings/server-path)]
8283
(cond
8384
custom-server-path
8485
(installed-fn {:status :installed :path custom-server-path})
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
(ns com.github.clojure-lsp.intellij.settings
2+
(:import
3+
[com.github.clojure_lsp.intellij.extension SettingsState]))
4+
5+
(set! *warn-on-reflection* true)
6+
7+
(defn server-path []
8+
(.getServerPath (SettingsState/get)))
9+
10+
(defn server-trace-level []
11+
(or (.getTraceLevel (SettingsState/get)) "off"))
12+
13+
(defn server-log-path []
14+
(.getServerLogPath (SettingsState/get)))
15+
16+
(defn set-server-trace-level! [^String trace-level]
17+
(.setTraceLevel (SettingsState/get) trace-level))
18+
19+
(defn set-server-log-path! [^String log-path]
20+
(.setServerLogPath (SettingsState/get) (not-empty log-path)))
21+
22+
(defn set-server-path! [^String server-path]
23+
(.setServerPath (SettingsState/get) (not-empty server-path)))

0 commit comments

Comments
 (0)