mirror of
https://github.com/l0ng-ai/openidea.git
synced 2026-11-06 08:07:49 +00:00
* feat(editor): Drag tabs and files between split panes
HTML5 drag and drop never reaches the webview while native file drop is
enabled, so tab, project-file and changelist drags did nothing. They now
run on pointer events:
- Drag an editor tab onto another pane, or onto a pane's edge to split it.
- Drag files from the Project view into an editor pane (center opens them
there, an edge opens them in a new split).
- Drag files between changelists in the Commit view.
- "Drag-and-drop with Alt pressed only" applies to tabs and stripe buttons.
* fix(lsp): Deliver server settings and start servers on a supported JDK
- workspace/configuration answers a server's own section (basedpyright)
from its settings block; basedpyright runs in "standard" mode and keeps
auto search paths on, so `src/` layouts resolve from `tests/`.
- jdtls: formatting follows the editor indent, calls complete without
guessed arguments, and JDK internals stay out of completion.
- `max-java` in a language server config picks an installed JDK no newer
than that (kotlin-language-server fails on JDK 25).
- Server initialization may take up to 5 minutes (first Gradle import).
- `lsp_resend_diagnostics` re-emits stored diagnostics after a reload.
- Spelling only checks declared names (not called methods like
`substring`) and accepts plurals of known software terms.
* feat(editor): Quick fixes, completion and navigation while typing
Quick fixes
- Errors get a red quick-fix bulb; Apply Quick Fix (⌥⇧↵) fixes the most
severe problem at the caret, and the error hover offers the fix directly.
- Code generated by a code action is re-indented to the file's style.
- Python: Implement abstract methods (⌃I or the bulb) from the bases.
- Duplicate code actions are listed once.
Completion
- Overloads sharing a name, and a name importable from several modules,
are no longer merged into one entry.
- Auto-import entries show the module they import from.
- Call snippets without a stop (`new ArrayList<>()`) leave the caret inside
the parentheses with parameter info, or past them when nothing takes
arguments; parameter info also opens after server call snippets.
- The selected item is resolved ahead of acceptance, so its auto-import
is applied (rust-analyzer).
Navigation and diagnostics
- Language server requests wait for pending edits, so Go to Declaration
right after typing answers for the current text; an empty answer right
after an edit is retried while the server catches up.
- Diagnostics come back after a window reload; error underlines stay
visible under typo / unused highlighting.
- Implementation gutter markers no longer refresh in a loop while the
server reports progress.
- A missing alternative server no longer shows as a server error.
* chore(lint): Skip agent worktrees under .claude
* fix(editor): Skip cancelled LSP requests and limit generated-code reformat
- Requests cancelled while waiting for pending edits are not sent.
- Code generated by an action is reformatted per changed hunk, so an added
import doesn't reformat the code between it and the generated lines.
- A long busy spell caused by a settle refresh re-runs it only once.
- Files dropped on a file row of another changelist move to that changelist.
- Python Implement methods: a nested class without bases ends the lookup,
class bodies continue through unindented string lines, and
`@abstractproperty` stubs become `@property`.
- Resend diagnostics goes through the host ops, and custom servers get
`max_java`.
* fix(editor): Rank the exact type first in Java constructor completion
jdtls appends the call or body to filterText (`String(${0})`); matching
on the label instead lets typing `String` rank `String` above
`StringBuilder` and the other types sharing its sort text.
* fix(editor): List identical completion items once
kotlin-language-server repeats a class once per classpath entry declaring
it, so `String()` and `String` were listed three times each.
* fix(editor): Keep the internal cancellation message out of the UI text catalog
53 lines
2.4 KiB
TOML
53 lines
2.4 KiB
TOML
id = "java"
|
||
name = "Java"
|
||
extensions = ["java"]
|
||
line-comment = "//"
|
||
block-comment = ["/*", "*/"]
|
||
indent = { tab-size = 4, insert-spaces = true }
|
||
ui-mode = "Java"
|
||
tree-sitter = "java"
|
||
|
||
# Microsoft java-debug runs inside jdtls as a bundle (`initializationOptions.bundles`,
|
||
# added when installed); sessions start with `vscode.java.startDebugSession` and the
|
||
# client connects to the returned port (`debugServer`).
|
||
[debugger]
|
||
adapter = "java-debug"
|
||
command = "com.microsoft.java.debug.plugin.jar"
|
||
transport = "tcp"
|
||
install-hint = "Install Microsoft java-debug (Settings › Languages & Frameworks › Language Servers › Java Debugger)"
|
||
|
||
[[language-servers]]
|
||
name = "jdtls"
|
||
command = "jdtls"
|
||
root-markers = ["pom.xml", "build.gradle", "build.gradle.kts", "settings.gradle", "settings.gradle.kts", "build.xml", ".project"]
|
||
install-hint = "Install Eclipse JDT Language Server (brew install jdtls, or https://github.com/eclipse-jdtls/eclipse.jdt.ls); requires JDK 21+"
|
||
|
||
[language-servers.initialization-options]
|
||
bundles = []
|
||
|
||
[language-servers.initialization-options.extendedClientCapabilities]
|
||
# Library classes open as `jdt://` virtual documents (`java/classFileContents`).
|
||
classFileContentsSupport = true
|
||
resolveAdditionalTextEditsSupport = true
|
||
|
||
[language-servers.initialization-options.settings.java]
|
||
autobuild = { enabled = true }
|
||
contentProvider = { preferred = "fernflower" }
|
||
maven = { downloadSources = true, updateSnapshots = false }
|
||
eclipse = { downloadSources = true }
|
||
references = { includeDecompiledSources = true }
|
||
signatureHelp = { enabled = true }
|
||
configuration = { updateBuildConfiguration = "automatic" }
|
||
# Generated code (implement methods, getters, toString…) indents like the editor (`indent` above).
|
||
format = { insertSpaces = true, tabSize = 4 }
|
||
# Calls complete as `name()` with the caret inside and parameter info, not guessed arguments;
|
||
# JDK internals (`sun.*`, `com.sun.*`, `jdk.*`) and AWT's `List` stay out of completion and auto-import.
|
||
completion = { guessMethodArguments = "off", filteredTypes = ["java.awt.List", "com.sun.*", "sun.*", "jdk.*", "org.graalvm.*", "io.micrometer.shaded.*"] }
|
||
|
||
[language-servers.initialization-options.settings.java.import]
|
||
# Keep Eclipse metadata (.project, .classpath, .settings) out of the project.
|
||
generatesMetadataFilesAtProjectRoot = false
|
||
exclusions = ["**/node_modules/**", "**/.metadata/**", "**/archetype-resources/**", "**/META-INF/maven/**"]
|
||
maven = { enabled = true }
|
||
gradle = { enabled = true, wrapper = { enabled = true } }
|