backport: 21.0.0

This commit is contained in:
FalsePattern 2025-02-06 01:14:51 +01:00
parent 13996193ac
commit 97d22f3054
Signed by: falsepattern
GPG key ID: E930CDEC50C50E23
218 changed files with 1273 additions and 607 deletions

View file

@ -17,6 +17,26 @@ Changelog structure reference:
## [Unreleased] ## [Unreleased]
## [21.0.0]
### Added
- Zig
- Changing the zig standard library path in the project settings now properly updates the dependency
- ZLS
- All of the config options are now exposed in the GUI
### Changed
- Project
- New project panel is now much more compact
### Fixed
- Zig
- `zig env` failure causes an IDE error
- A local toolchain disappearing (std directory or zig exe deleted) is now handled properly
## [20.3.0] ## [20.3.0]
- Zig - Zig

View file

@ -1,5 +1,5 @@
ZigBrains ZigBrains
Copyright (C) 2023-2024 FalsePattern Copyright (C) 2023-2025 FalsePattern
All Rights Reserved All Rights Reserved
The above copyright notice and this permission notice shall be included The above copyright notice and this permission notice shall be included

View file

@ -109,6 +109,7 @@ dependencies {
runtimeOnly(project(":core")) runtimeOnly(project(":core"))
runtimeOnly(project(":cidr")) runtimeOnly(project(":cidr"))
runtimeOnly(project(":lsp"))
} }
intellijPlatform { intellijPlatform {

View file

@ -1,18 +1,24 @@
#!/bin/sh #!/bin/sh
# #
# Copyright 2023-2024 FalsePattern # This file is part of ZigBrains.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Copyright (C) 2023-2025 FalsePattern
# you may not use this file except in compliance with the License. # All Rights Reserved
# You may obtain a copy of the License at
# #
# http://www.apache.org/licenses/LICENSE-2.0 # The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
# #
# Unless required by applicable law or agreed to in writing, software # ZigBrains is free software: you can redistribute it and/or modify
# distributed under the License is distributed on an "AS IS" BASIS, # it under the terms of the GNU Lesser General Public License as published by
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # the Free Software Foundation, only version 3 of the License.
# See the License for the specific language governing permissions and #
# limitations under the License. # ZigBrains is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with ZigBrains. If not, see <https://www.gnu.org/licenses/>.
# #
set -e set -e

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,17 +1,23 @@
/* /*
* Copyright 2023-2024 FalsePattern * This file is part of ZigBrains.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Copyright (C) 2023-2025 FalsePattern
* you may not use this file except in compliance with the License. * All Rights Reserved
* You may obtain a copy of the License at
* *
* http://www.apache.org/licenses/LICENSE-2.0 * The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
* *
* Unless required by applicable law or agreed to in writing, software * ZigBrains is free software: you can redistribute it and/or modify
* distributed under the License is distributed on an "AS IS" BASIS, * it under the terms of the GNU Lesser General Public License as published by
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * the Free Software Foundation, only version 3 of the License.
* See the License for the specific language governing permissions and *
* limitations under the License. * ZigBrains is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with ZigBrains. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.falsepattern.zigbrains.debugger.dap package com.falsepattern.zigbrains.debugger.dap

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -7,8 +7,6 @@ plugins {
kotlin("plugin.serialization") kotlin("plugin.serialization")
} }
val lsp4ijVersion: String by project
val lsp4jVersion: String by project
val ideaCommunityVersion: String by project val ideaCommunityVersion: String by project
val useInstaller = property("useInstaller").toString().toBoolean() val useInstaller = property("useInstaller").toString().toBoolean()
@ -16,8 +14,6 @@ dependencies {
intellijPlatform { intellijPlatform {
create(IntelliJPlatformType.IntellijIdeaCommunity, ideaCommunityVersion, useInstaller = useInstaller) create(IntelliJPlatformType.IntellijIdeaCommunity, ideaCommunityVersion, useInstaller = useInstaller)
} }
compileOnly("com.redhat.devtools.intellij:lsp4ij:$lsp4ijVersion")
compileOnly("org.eclipse.lsp4j:org.eclipse.lsp4j:$lsp4jVersion")
compileOnly("org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.3") compileOnly("org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.3")
} }

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included
@ -25,7 +25,6 @@ package com.falsepattern.zigbrains
import com.falsepattern.zigbrains.direnv.DirenvCmd import com.falsepattern.zigbrains.direnv.DirenvCmd
import com.falsepattern.zigbrains.direnv.emptyEnv import com.falsepattern.zigbrains.direnv.emptyEnv
import com.falsepattern.zigbrains.direnv.getDirenv import com.falsepattern.zigbrains.direnv.getDirenv
import com.falsepattern.zigbrains.lsp.settings.zlsSettings
import com.falsepattern.zigbrains.project.settings.zigProjectSettings import com.falsepattern.zigbrains.project.settings.zigProjectSettings
import com.falsepattern.zigbrains.project.toolchain.LocalZigToolchain import com.falsepattern.zigbrains.project.toolchain.LocalZigToolchain
import com.falsepattern.zigbrains.project.toolchain.ZigToolchainProvider import com.falsepattern.zigbrains.project.toolchain.ZigToolchainProvider
@ -89,17 +88,6 @@ class ZBStartup: ProjectActivity {
project.zigProjectSettings.state = zigProjectState project.zigProjectSettings.state = zigProjectState
} }
} }
val zlsState = project.zlsSettings.state
if (zlsState.zlsPath.isBlank()) {
val env = if (DirenvCmd.direnvInstalled() && !project.isDefault && zlsState.direnv)
project.getDirenv()
else
emptyEnv
env.findExecutableOnPATH("zls")?.let {
zlsState.zlsPath = it.pathString
project.zlsSettings.state = zlsState
}
}
} }
} }

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,37 +0,0 @@
/*
* This file is part of ZigBrains.
*
* Copyright (C) 2023-2024 FalsePattern
* All Rights Reserved
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* ZigBrains is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, only version 3 of the License.
*
* ZigBrains is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with ZigBrains. If not, see <https://www.gnu.org/licenses/>.
*/
package com.falsepattern.zigbrains.lsp.config
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import org.jetbrains.annotations.NonNls
@Serializable
data class ZLSConfig(
@SerialName("zig_exe_path") val zigExePath: @NonNls String? = null,
@SerialName("zig_lib_path") val zigLibPath: @NonNls String? = null,
@SerialName("enable_build_on_save") val buildOnSave: Boolean? = null,
@SerialName("build_on_save_step") val buildOnSaveStep: @NonNls String? = null,
@SerialName("dangerous_comptime_experiments_do_not_enable") val comptimeInterpreter: Boolean? = null,
@SerialName("highlight_global_var_declarations") val globalVarDeclarations: Boolean? = null
)

View file

@ -1,39 +0,0 @@
/*
* This file is part of ZigBrains.
*
* Copyright (C) 2023-2024 FalsePattern
* All Rights Reserved
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* ZigBrains is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, only version 3 of the License.
*
* ZigBrains is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with ZigBrains. If not, see <https://www.gnu.org/licenses/>.
*/
package com.falsepattern.zigbrains.lsp.settings
import org.jetbrains.annotations.NonNls
data class ZLSSettings(
var direnv: Boolean = false,
var zlsPath: @NonNls String = "",
var zlsConfigPath: @NonNls String = "",
var debug: Boolean = false,
var messageTrace: Boolean = false,
var buildOnSave: Boolean = false,
var buildOnSaveStep: @NonNls String = "install",
var globalVarDeclarations: Boolean = false,
var comptimeInterpreter: Boolean = false,
var inlayHints: Boolean = true,
var inlayHintsCompact: Boolean = true
)

View file

@ -1,148 +0,0 @@
/*
* This file is part of ZigBrains.
*
* Copyright (C) 2023-2024 FalsePattern
* All Rights Reserved
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* ZigBrains is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, only version 3 of the License.
*
* ZigBrains is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with ZigBrains. If not, see <https://www.gnu.org/licenses/>.
*/
package com.falsepattern.zigbrains.lsp.settings
import com.falsepattern.zigbrains.direnv.DirenvCmd
import com.falsepattern.zigbrains.direnv.Env
import com.falsepattern.zigbrains.direnv.emptyEnv
import com.falsepattern.zigbrains.direnv.getDirenv
import com.falsepattern.zigbrains.lsp.ZLSBundle
import com.falsepattern.zigbrains.shared.coroutine.launchWithEDT
import com.falsepattern.zigbrains.shared.zigCoroutineScope
import com.intellij.openapi.Disposable
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory
import com.intellij.openapi.project.Project
import com.intellij.openapi.util.Disposer
import com.intellij.platform.ide.progress.ModalTaskOwner
import com.intellij.platform.ide.progress.TaskCancellation
import com.intellij.platform.ide.progress.withModalProgress
import com.intellij.ui.components.JBCheckBox
import com.intellij.ui.components.fields.ExtendableTextField
import com.intellij.ui.components.textFieldWithBrowseButton
import com.intellij.ui.dsl.builder.AlignX
import com.intellij.ui.dsl.builder.Panel
import kotlin.io.path.pathString
class ZLSSettingsPanel(private val project: Project?) : Disposable {
private val zlsPath = textFieldWithBrowseButton(
project,
ZLSBundle.message("settings.zls-path.browse.title"),
FileChooserDescriptorFactory.createSingleFileDescriptor(),
).also { Disposer.register(this, it) }
private val zlsConfigPath = textFieldWithBrowseButton(
project,
ZLSBundle.message("settings.zls-config-path.browse.title"),
FileChooserDescriptorFactory.createSingleFileDescriptor()
).also { Disposer.register(this, it) }
private val buildOnSave = JBCheckBox().apply { toolTipText = ZLSBundle.message("settings.build-on-save.tooltip") }
private val buildOnSaveStep = ExtendableTextField().apply { toolTipText = ZLSBundle.message("settings.build-on-save-step.tooltip") }
private val globalVarDeclarations = JBCheckBox()
private val comptimeInterpreter = JBCheckBox()
private val inlayHints = JBCheckBox()
private val inlayHintsCompact = JBCheckBox().apply { toolTipText = ZLSBundle.message("settings.inlay-hints-compact.tooltip") }
private val messageTrace = JBCheckBox()
private val debug = JBCheckBox()
private val direnv = JBCheckBox(ZLSBundle.message("settings.zls-path.use-direnv.label")).apply { addActionListener {
dispatchAutodetect(true)
} }
fun attach(panel: Panel) = with(panel) {
group(ZLSBundle.message("settings.group.title")) {
row(ZLSBundle.message("settings.zls-path.label")) {
cell(zlsPath).resizableColumn().align(AlignX.FILL)
if (DirenvCmd.direnvInstalled() && project?.isDefault == false) {
cell(direnv)
}
}
row(ZLSBundle.message("settings.zls-config-path.label")) { cell(zlsConfigPath).align(AlignX.FILL) }
row(ZLSBundle.message("settings.inlay-hints.label")) { cell(inlayHints) }
row(ZLSBundle.message("settings.inlay-hints-compact.label")) { cell(inlayHintsCompact) }
row(ZLSBundle.message("settings.build-on-save.label")) { cell(buildOnSave) }
row(ZLSBundle.message("settings.build-on-save-step.label")) { cell(buildOnSaveStep).resizableColumn().align(AlignX.FILL) }
row(ZLSBundle.message("settings.global-var-declarations.label")) { cell(globalVarDeclarations) }
row(ZLSBundle.message("settings.comptime-interpreter.label")) { cell(comptimeInterpreter) }
}
group(ZLSBundle.message("dev-settings.group.title")) {
row(ZLSBundle.message("dev-settings.debug.label")) { cell(debug) }
row(ZLSBundle.message("dev-settings.message-trace.label")) { cell(messageTrace) }
}
dispatchAutodetect(false)
}
var data
get() = ZLSSettings(
direnv.isSelected,
zlsPath.text,
zlsConfigPath.text,
debug.isSelected,
messageTrace.isSelected,
buildOnSave.isSelected,
buildOnSaveStep.text,
globalVarDeclarations.isSelected,
comptimeInterpreter.isSelected,
inlayHints.isSelected,
inlayHintsCompact.isSelected
)
set(value) {
direnv.isSelected = value.direnv
zlsPath.text = value.zlsPath
zlsConfigPath.text = value.zlsConfigPath
debug.isSelected = value.debug
messageTrace.isSelected = value.messageTrace
buildOnSave.isSelected = value.buildOnSave
buildOnSaveStep.text = value.buildOnSaveStep
globalVarDeclarations.isSelected = value.globalVarDeclarations
comptimeInterpreter.isSelected = value.comptimeInterpreter
inlayHints.isSelected = value.inlayHints
inlayHintsCompact.isSelected = value.inlayHintsCompact
}
private fun dispatchAutodetect(force: Boolean) {
project.zigCoroutineScope.launchWithEDT {
withModalProgress(ModalTaskOwner.component(zlsPath), "Detecting ZLS...", TaskCancellation.cancellable()) {
autodetect(force)
}
}
}
suspend fun autodetect(force: Boolean) {
if (force || zlsPath.text.isBlank()) {
getDirenv().findExecutableOnPATH("zls")?.let {
if (force || zlsPath.text.isBlank()) {
zlsPath.text = it.pathString
}
}
}
}
override fun dispose() {
}
private suspend fun getDirenv(): Env {
if (DirenvCmd.direnvInstalled() && project?.isDefault == false && direnv.isSelected)
return project.getDirenv()
return emptyEnv
}
}

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included
@ -22,8 +22,7 @@
package com.falsepattern.zigbrains.project.newproject package com.falsepattern.zigbrains.project.newproject
import com.falsepattern.zigbrains.lsp.settings.ZLSSettingsPanel import com.falsepattern.zigbrains.project.settings.ZigProjectConfigurationProvider
import com.falsepattern.zigbrains.project.settings.ZigProjectSettingsPanel
import com.falsepattern.zigbrains.project.template.ZigExecutableTemplate import com.falsepattern.zigbrains.project.template.ZigExecutableTemplate
import com.falsepattern.zigbrains.project.template.ZigInitTemplate import com.falsepattern.zigbrains.project.template.ZigInitTemplate
import com.falsepattern.zigbrains.project.template.ZigLibraryTemplate import com.falsepattern.zigbrains.project.template.ZigLibraryTemplate
@ -44,8 +43,7 @@ import javax.swing.ListSelectionModel
class ZigNewProjectPanel(private var handleGit: Boolean): Disposable { class ZigNewProjectPanel(private var handleGit: Boolean): Disposable {
private val git = JBCheckBox() private val git = JBCheckBox()
private val projConf = ZigProjectSettingsPanel(null).also { Disposer.register(this, it) } private val panels = ZigProjectConfigurationProvider.createNewProjectSettingsPanels().onEach { Disposer.register(this, it) }
private val zlsConf = ZLSSettingsPanel(null).also { Disposer.register(this, it) }
private val templateList = JBList(JBList.createDefaultListModel(defaultTemplates)).apply { private val templateList = JBList(JBList.createDefaultListModel(defaultTemplates)).apply {
selectionMode = ListSelectionModel.SINGLE_SELECTION selectionMode = ListSelectionModel.SINGLE_SELECTION
selectedIndex = 0 selectedIndex = 0
@ -68,7 +66,7 @@ class ZigNewProjectPanel(private var handleGit: Boolean): Disposable {
fun getData(): ZigProjectConfigurationData { fun getData(): ZigProjectConfigurationData {
val selectedTemplate = templateList.selectedValue val selectedTemplate = templateList.selectedValue
return ZigProjectConfigurationData(handleGit && git.isSelected, projConf.data, zlsConf.data, selectedTemplate) return ZigProjectConfigurationData(handleGit && git.isSelected, panels.map { it.data }, selectedTemplate)
} }
fun attach(p: Panel): Unit = with(p) { fun attach(p: Panel): Unit = with(p) {
@ -85,8 +83,7 @@ class ZigNewProjectPanel(private var handleGit: Boolean): Disposable {
.align(AlignY.FILL) .align(AlignY.FILL)
} }
} }
projConf.attach(p) panels.forEach { it.attach(p) }
zlsConf.attach(p)
} }
override fun dispose() { override fun dispose() {

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included
@ -22,10 +22,7 @@
package com.falsepattern.zigbrains.project.newproject package com.falsepattern.zigbrains.project.newproject
import com.falsepattern.zigbrains.lsp.settings.ZLSSettings import com.falsepattern.zigbrains.project.settings.ZigProjectConfigurationProvider
import com.falsepattern.zigbrains.lsp.settings.zlsSettings
import com.falsepattern.zigbrains.project.settings.ZigProjectSettings
import com.falsepattern.zigbrains.project.settings.zigProjectSettings
import com.falsepattern.zigbrains.project.template.ZigInitTemplate import com.falsepattern.zigbrains.project.template.ZigInitTemplate
import com.falsepattern.zigbrains.project.template.ZigProjectTemplate import com.falsepattern.zigbrains.project.template.ZigProjectTemplate
import com.falsepattern.zigbrains.shared.zigCoroutineScope import com.falsepattern.zigbrains.shared.zigCoroutineScope
@ -45,21 +42,21 @@ import kotlinx.coroutines.launch
@JvmRecord @JvmRecord
data class ZigProjectConfigurationData( data class ZigProjectConfigurationData(
val git: Boolean, val git: Boolean,
val projConf: ZigProjectSettings, val conf: List<ZigProjectConfigurationProvider.Settings>,
val zlsConf: ZLSSettings,
val selectedTemplate: ZigProjectTemplate val selectedTemplate: ZigProjectTemplate
) { ) {
@RequiresBackgroundThread @RequiresBackgroundThread
suspend fun generateProject(requestor: Any, project: Project, baseDir: VirtualFile, forceGitignore: Boolean): Boolean { suspend fun generateProject(requestor: Any, project: Project, baseDir: VirtualFile, forceGitignore: Boolean): Boolean {
return reportProgress { reporter -> return reportProgress { reporter ->
project.zigProjectSettings.loadState(projConf) conf.forEach { it.apply(project) }
project.zlsSettings.loadState(zlsConf)
val template = selectedTemplate val template = selectedTemplate
if (!reporter.indeterminateStep("Initializing project") { if (!reporter.indeterminateStep("Initializing project") {
if (template is ZigInitTemplate) { if (template is ZigInitTemplate) {
val toolchain = projConf.toolchain ?: run { val toolchain = conf
.mapNotNull { it as? ZigProjectConfigurationProvider.ToolchainProvider }
.firstNotNullOfOrNull { it.toolchain } ?: run {
Notification( Notification(
"zigbrains", "zigbrains",
"Tried to generate project with zig init, but zig toolchain is invalid", "Tried to generate project with zig init, but zig toolchain is invalid",
@ -77,12 +74,20 @@ data class ZigProjectConfigurationData(
return@indeterminateStep false return@indeterminateStep false
} }
val result = zig.callWithArgs(workDir, "init") val result = zig.callWithArgs(workDir, "init")
if (result == null) {
Notification(
"zigbrains",
"\"zig init\" could not run because the zig executable was missing!",
NotificationType.ERROR
).notify(project)
return@indeterminateStep false
}
if (result.exitCode != 0) { if (result.exitCode != 0) {
Notification( Notification(
"zigbrains", "zigbrains",
"\"zig init\" failed with exit code ${result.exitCode}! Check the IDE log files!", "\"zig init\" failed with exit code ${result.exitCode}! Check the IDE log files!",
NotificationType.ERROR NotificationType.ERROR
) ).notify(project)
System.err.println(result.stderr) System.err.println(result.stderr)
return@indeterminateStep false return@indeterminateStep false
} }

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of ZigBrains. * This file is part of ZigBrains.
* *
* Copyright (C) 2023-2024 FalsePattern * Copyright (C) 2023-2025 FalsePattern
* All Rights Reserved * All Rights Reserved
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included

Some files were not shown because too many files have changed in this diff Show more