Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
273 commits
Select commit Hold shift + click to select a range
9689a93
chore(skip-release): set version to 0.15.1-SNAPSHOT
actions-user Aug 26, 2025
498d5fc
fix: Too many non-blocking read actions submitted at once
angelozerr Aug 27, 2025
d625e08
fix: adds immediate document saving after applying text edits to trig…
sergeysavchuk Aug 28, 2025
e36352b
fix: showMessageRequest does not accept requests without actions
angelozerr Aug 29, 2025
a296c34
fix: java.util.ConcurrentModificationException in
angelozerr Aug 29, 2025
abde60f
fix: Display LSP diagnostics for opened documents which are not
angelozerr Sep 1, 2025
a623ab3
adding file:/// support for link resolver
venmanyarun Sep 1, 2025
66efe8d
fixing tests
venmanyarun Sep 1, 2025
f4e8398
adding comment
venmanyarun Sep 1, 2025
2b6afa1
adding comment
venmanyarun Sep 1, 2025
4496d4c
fix: add workspace/diagnostic information to LSPSuppor.md
sergeysavchuk Sep 5, 2025
043ac0d
fix: enable diagnostic refresh support in DiagnosticWorkspaceCapabili…
sergeysavchuk Sep 5, 2025
833995b
feat: Support for DAP Disassembly (#1254)
angelozerr Sep 5, 2025
ae5add8
feat: Show "Installer" tab only for user defined DAP server
angelozerr Sep 6, 2025
33dedcd
fix: ignore CancellationException when LSP requets is cancelled
angelozerr Sep 9, 2025
0fbcf3a
feat: create an execution stack per DAP thread (active+non active)
angelozerr Sep 9, 2025
deeabcb
build: changelog 0.16.0
angelozerr Sep 10, 2025
bdad173
perf: lazy disassembly source position
angelozerr Sep 9, 2025
1b0f4cb
fix: integrated/external runInTerminal fails with empty cwd on Windows
angelozerr Sep 11, 2025
7526bc8
feat: try to reuse existing integrated terminal
angelozerr Sep 12, 2025
700fc0f
feat: use supportsEvaluateForHovers capability to evaluate variable on
angelozerr Sep 13, 2025
6340251
chore(skip-release): set version to 0.16.0
actions-user Sep 15, 2025
9333c32
chore(skip-release): set version to 0.16.1-SNAPSHOT
actions-user Sep 15, 2025
c4f58bc
fix: java.lang.IllegalStateException: @NotNull method
angelozerr Sep 15, 2025
8e16f90
fix: Hit CancellationException when using "Shift+Shift" (Search
angelozerr Sep 15, 2025
e3d09c7
docs: changelog for 0.16.1
angelozerr Sep 15, 2025
2c8f9f8
chore(skip-release): set version to 0.16.1
actions-user Sep 15, 2025
82bdf01
chore(skip-release): set version to 0.16.2-SNAPSHOT
actions-user Sep 15, 2025
e90cb68
fix: workspace/didChangeWatchedFiles doesn't work with globPattern which
angelozerr Sep 18, 2025
cb3b6b3
fix: Don't override OpenFileDescriptor#getLine() to support 2025.3
angelozerr Sep 18, 2025
2292825
fix: don't use internal OpenFileDescriptor#navigateInEditor
angelozerr Sep 18, 2025
a83df51
fix: Don't use UserDataHolder#get() which is removed on 2025.3
angelozerr Sep 18, 2025
feaff8b
fix: NPE with RunInIntegratedTerminal when title is null
angelozerr Sep 18, 2025
3b58eb2
fix: override getLanguage in LSPUsagePsiElement to return file language
sergeysavchuk Sep 18, 2025
9387c11
fix: fix NPE in RunInIntegratedTerminalService.createNewTerminal when
angelozerr Sep 18, 2025
67588e6
feat: Add documentation and template for debugging Dockerfiles with B…
rcjsuen Sep 18, 2025
14c585e
docs: add intellij-cangjie
lin-qingying Sep 20, 2025
f269b67
fix: catch "content changed" error on codelens resolve
angelozerr Sep 22, 2025
decffc3
feat: Add codelldb documentation
angelozerr Sep 19, 2025
deb1a5c
fix: Watcher globs not interpreted relative to workspace
angelozerr Sep 23, 2025
85a5ba6
fix: Exception thrown when frame selection with source.name is null
angelozerr Sep 26, 2025
8f3da4f
Rename template id to match the Markdown file
rcjsuen Sep 26, 2025
8349df3
fix: fix warnings from JDT (mostly removed unused stuff)
fbricon Sep 26, 2025
d73f275
fix: use DAP source.path to avoid invalid_frame
angelozerr Sep 26, 2025
9ff4d64
fix: initialize server by using a context
angelozerr Sep 29, 2025
ae8c923
build: migrate to Gradle 8.6 to start LSP4IJ plugin with 2025.2
angelozerr Sep 30, 2025
054fac6
fix: Environment variables of a DAP launch config are ignored
angelozerr Oct 1, 2025
0005c5d
feat: Improve window/showMessageRequest client capability
angelozerr Oct 2, 2025
11d681e
build: changelog for 1.17.0
angelozerr Oct 2, 2025
1ec0be7
build: upgrade to 0.17.0 version
angelozerr Oct 3, 2025
54bfc7a
fix: Fix snippet completion bug
angelozerr Oct 3, 2025
c1b6d8d
fix: Quick fix are not available after a restart
angelozerr Oct 4, 2025
cc0f4e2
fix: Variable is not supported in a snippet placeholder
angelozerr Oct 3, 2025
89d94ea
fix: DAP will not remove final breakpoint during a debugging session
angelozerr Oct 5, 2025
555104d
chore(skip-release): set version to 0.17.0
actions-user Oct 7, 2025
4e100b1
chore(skip-release): set version to 0.17.1-SNAPSHOT
actions-user Oct 7, 2025
84a53ba
feat: Custom tabSize value in textDocument/formatting request
angelozerr Oct 7, 2025
0c90519
feat: Implement willRenameFiles, didRenameFiles, willCreateFiles,
angelozerr Oct 6, 2025
40fa78f
feat: disable spell checking in DAP Disassembly
angelozerr Oct 11, 2025
51559ba
feat: Support for disassembly syntax coloration
angelozerr Oct 11, 2025
629cbe4
perf: UI thread freeze caused by LSPFileListener
angelozerr Oct 13, 2025
3115dbb
fix: fix "
angelozerr Oct 14, 2025
20e2dc0
fix: NPE when DAP source is null
angelozerr Oct 14, 2025
e227747
refactor: Use XEvaluationCallbackWithOrigin without Java Reflection
angelozerr Oct 21, 2025
3a64cd7
feat: API to customize DAP debugger expression
angelozerr Oct 21, 2025
5153fc9
fix: XEvaluationCallbackWithOrigin is not available in 2025.3
angelozerr Oct 21, 2025
0cc609a
Update Exe name for Scala Language Server
tribbloid Oct 21, 2025
682741e
build: upgrade to 0.18.0 version
angelozerr Oct 22, 2025
dd2f317
fix: java.lang.IllegalStateException: End size 4 is less than fixed size
angelozerr Oct 27, 2025
ebc7eaf
docs: add notes for 0.18.0
angelozerr Oct 27, 2025
2c60d90
chore(skip-release): set version to 0.18.0
actions-user Oct 27, 2025
67a6e5a
chore(skip-release): set version to 0.18.1-SNAPSHOT
actions-user Oct 27, 2025
ef8c766
feat: scala metals template is now consistent with command in install…
tribbloid Oct 29, 2025
b78f306
perf: filter file events according LSP file operation filters
angelozerr Oct 31, 2025
976ec8d
fix: package.json tooltip shows npm lib name instead of npm lib version
angelozerr Oct 31, 2025
6b08b2c
fix: package.json tooltip shows npm lib name instead of npm lib version
angelozerr Oct 31, 2025
33778d0
feat: Update Chinese localization for DAP and Language Server properties
lin-qingying Nov 1, 2025
1504d55
fix: check in existing run config only for DAP breakpoint type
angelozerr Nov 2, 2025
8cce6e3
fix: clean editor cache in EDT to avoid error with 2025.3 EAP
angelozerr Nov 3, 2025
d667219
fix: NPE when server is not started and files change
angelozerr Nov 3, 2025
c06798d
perf: use cached supported language in LSP breadcrumb
angelozerr Nov 3, 2025
bcb52ab
docs: add poryscript-idea
okafke Nov 10, 2025
aa6a439
fix: fix file URI JAR.
angelozerr Nov 13, 2025
1aced17
fix: tab size (Code Style -> Other File Types) does not take effect on
angelozerr Nov 18, 2025
96db3b2
feat: Support tab size in Client configuration of Language Server
angelozerr Nov 18, 2025
b1f0d4d
fix: Using CSS Languae Server formatting code no longer works
angelozerr Nov 19, 2025
6f41f6d
fix: use isExistingFormatterOverrideable to know which language server
angelozerr Nov 19, 2025
ec16634
feat: Add WGSL language server as user defined
angelozerr Nov 25, 2025
7ba22ae
fix: fix WGSL doc
angelozerr Nov 25, 2025
f755b45
feat: Activate structure view for AbstractFileType (ex: CSS with
angelozerr Nov 28, 2025
e075f3d
fix: In Structure tool window, Always Select Opened Element did not work
angelozerr Nov 28, 2025
b34148b
fix: Fix NPE in LanguageServerWrapper.isSaveSupported
angelozerr Nov 30, 2025
cd04664
feat: Add harper-ls as user defined ls
angelozerr Dec 4, 2025
94474f5
docs: add changelog for 0.19.0
angelozerr Dec 4, 2025
1b60a95
chore(skip-release): set version to 0.18.1
actions-user Dec 4, 2025
60e28c1
chore(skip-release): set version to 0.18.2-SNAPSHOT
actions-user Dec 4, 2025
9edf743
build: bump to 0.19.0-SNAPSHOT
angelozerr Dec 4, 2025
aec203a
chore(skip-release): set version to 0.19.0
actions-user Dec 4, 2025
c183639
chore(skip-release): set version to 0.19.1-SNAPSHOT
actions-user Dec 4, 2025
79d60cf
docs: Add intellij-lumos to 'Who is using LSP4IJ' list (#1395)
rz1989s Dec 11, 2025
60636ca
fix: fix harper demo path
angelozerr Dec 12, 2025
26b72ed
Add t-ruby to 'Who is using LSP4IJ' list
yhk1038 Dec 13, 2025
4ee5a53
fix: use Path.toUri() to handle WSL paths correctly
tim-sh Nov 27, 2025
cd9a433
test: soften assertion to refer to the four slashes only
tim-sh Nov 27, 2025
ef0c2dc
chore: use util method throughout
tim-sh Nov 27, 2025
b15711a
test: add test for paths with spaces
tim-sh Nov 27, 2025
228aee2
refactor: method overload
tim-sh Nov 27, 2025
684df2d
docs: header and javadoc
tim-sh Nov 27, 2025
f53305c
fix: handle edge cases in URI conversion
tim-sh Nov 27, 2025
831c3fe
test: split URI tests for Windows resp. Unix
tim-sh Nov 27, 2025
a84facd
fix: use Path-based URI creation for Windows UNC paths
tim-sh Dec 12, 2025
647e059
fix: enhance URI handling for Windows UNC paths including WSL support
tim-sh Dec 12, 2025
4653c26
fix: improve handling of Windows UNC paths to support WSL authority
tim-sh Dec 12, 2025
18830c3
test: add WSL and UNC path handling tests for URI conversion, condense
tim-sh Dec 12, 2025
33183fb
fix: Navigation fails when using Goto Implementation / Type Declaration
angelozerr Dec 15, 2025
68e3a00
feat: support server-to-client messages for WSL workspaces (#1398)
tim-sh Dec 16, 2025
4fc82a1
fix: support empty inlay hint
angelozerr Dec 17, 2025
9136583
docs: changelog for 0.19.1
angelozerr Dec 17, 2025
8a8fa86
chore(skip-release): set version to 0.19.1
actions-user Dec 17, 2025
178da07
chore(skip-release): set version to 0.19.2-SNAPSHOT
actions-user Dec 17, 2025
31b3426
docs: add rovo to projects that use lsp4ij
Arthurdw Dec 30, 2025
165b4ba
fix: Equality must not contain null but got: [null, CODE_VISION, false]
angelozerr Jan 1, 2026
2cb2809
dap: avoid slow VFS refresh on EDT (#1411)
mobiletoly Jan 25, 2026
19717a9
fix: SlowOperations in
angelozerr Jan 26, 2026
5e63f48
fix: LSP4IJ 0.19.1: EDT "Read access is allowed from inside read-action
angelozerr Jan 30, 2026
4ef588f
fix: Handle TempFileSystem in FileSystemWatcherManager.getProjectBase…
bodiam Jan 30, 2026
91a5b68
Add comment documenting temp:///src basePath format in light tests
bodiam Feb 1, 2026
a714bd6
fix: Support LSP null title command
angelozerr Feb 8, 2026
60d4022
fix: Freeze in FileSystemWatcherManager when JAR changed
angelozerr Feb 8, 2026
ba7d255
fix: Support for full pattern
angelozerr Feb 8, 2026
4ff0f76
docs: Changelog for 0.19.2
angelozerr Feb 13, 2026
11efeb8
chore(skip-release): set version to 0.19.2
actions-user Feb 13, 2026
7a88d95
chore(skip-release): set version to 0.19.3-SNAPSHOT
actions-user Feb 13, 2026
372c37c
Fix DocumentContentSynchronizer not disposed
eliseevh Feb 19, 2026
84e6d55
Add Fish Shell for JetBrains to LSP4IJ users list
gaborbernat Feb 27, 2026
e978a8a
docs: Mention google/gn-language-server as a user (#1429)
nya3jp Mar 7, 2026
9f02bd1
Add OPA IDEA Plugin link to README
charlieegan3 Mar 9, 2026
4061e59
fix: java.lang.UnsupportedOperationException from DAP client by
angelozerr Mar 16, 2026
35afe0f
fix: Long read action in
angelozerr Mar 19, 2026
59b1782
feat: expose createLauncherBuilder in LSPClientFeatures for custom Me…
Haraprosad Mar 26, 2026
6e9137b
Update copyright year in DefaultLauncherBuilder.java
Haraprosad Mar 26, 2026
62c3629
feat: add documentation for custom launcher builder in LSPClientFeatures
Haraprosad Mar 26, 2026
44c39b9
fix: java.util.concurrent.CompletionException:
angelozerr Mar 30, 2026
7d248ab
Add aer Local Apex Debugger link to README
cwarden Mar 30, 2026
7cfeb8f
fix: Plugin causes .js/.jsx/.tsx files breadcrumbs to not appear
angelozerr Mar 31, 2026
65b5cfb
fix: IllegalArgumentException on inverted semantic token offsets caused
angelozerr Mar 23, 2026
57a0f93
fix: Ignore error by using Internal
angelozerr Apr 1, 2026
2c36a1a
fix: Ignore error by using Internal
angelozerr Apr 1, 2026
6b25260
fix: resolve issue that causes most tests to be skipped
jomof Apr 2, 2026
dfca4dd
feat: support IntelliJ Platform 2025.3 (253) while maintaining Java 1…
jomof Mar 29, 2026
660661e
fix: handle virtual files in DAP breakpoint matching (#1447)
ericbodden Apr 7, 2026
34550d9
feat: support IntelliJ Platform 2026.1
jomof Mar 31, 2026
97edb8f
fix: Synchronous execution under ReadAction:
angelozerr Apr 8, 2026
21619c7
fix: display resolved codelens when file is opened.
angelozerr Apr 8, 2026
b510f49
perf: Freeze in EDT for 12 seconds with LSPFileListener
angelozerr Apr 8, 2026
285de4f
fix: Add logging and visual feedback for rejected DAP breakpoints
angelozerr Apr 8, 2026
68700d7
fix: Fixed an issue with DAP code fragment creation for languages wit…
SCWells72 Apr 8, 2026
c862c74
fix: [Split debugger] RunContentDescriptor should not be used in split
angelozerr Apr 8, 2026
d159968
fix: add no-op for workspace/inlineValue/refresh to prevent Unsupport…
jorgsowa Apr 11, 2026
bde077b
Changelog for 0.19.3
angelozerr Apr 15, 2026
89ecd53
chore(skip-release): set version to 0.19.3
actions-user Apr 15, 2026
b1200df
chore(skip-release): set version to 0.19.4-SNAPSHOT
actions-user Apr 15, 2026
8f470d0
fix: Cannot read field "parent" because "comp" is null
angelozerr Apr 22, 2026
a7b228f
Add Rider Unreal Angelscript link to README
scriptacus Apr 23, 2026
2e2a59b
feat: Add support for debugger Smart Step Into action via DAP
angelozerr Apr 25, 2026
f5f27d9
fix: java.lang.AbstractMethodError in DAMSmartStepIntoHandler
angelozerr Apr 25, 2026
0e2c28c
fix: use StepInTarget end line
angelozerr Apr 26, 2026
1e0abbe
fix: java.lang.AssertionError:
angelozerr May 2, 2026
4569801
docs: add agnix to 'Who is using LSP4IJ'
avifenesh May 8, 2026
96e5079
fix: report definition request errors correctly
bodiam May 9, 2026
2549daf
docs(README): add Xonsh plugin
nahoj May 10, 2026
639f36a
docs(README): add Xonsh plugin
nahoj May 10, 2026
f99c8a7
docs(README): add Rell IntelliJ Plugin
CommanderTvis May 10, 2026
18e95b4
feat: support dynamic plugin unloading via disposable listeners and c…
CommanderTvis May 10, 2026
6e32665
refactor: replace Timer with Alarm for improved stop logic in Languag…
CommanderTvis May 10, 2026
8ada3db
refactor: remove daemon flag from dispatcher and listener thread fact…
CommanderTvis May 10, 2026
0a25a7f
refactor: initialize stopAlarm lazily in LanguageServerWrapper
CommanderTvis May 10, 2026
7b1c925
fix: fix NPE with stop alarm
angelozerr May 10, 2026
c79865b
Update README.md with Dart
helin24 May 11, 2026
c00ea90
feat: Advanced Workspace folders support
angelozerr May 11, 2026
f395d72
fix: Fix Harper installer for Mac and Unix
angelozerr May 13, 2026
8b5ee7a
fix: Fix Harper installer for Mac and Unix (2)
angelozerr May 13, 2026
0c679a8
fix: Open references if definition result has the same range than
angelozerr May 13, 2026
f3230bf
fix: replace Internal PluginManagerCore.getPlugin (since 2026.2 eap)
angelozerr May 14, 2026
51bc8b8
fix: Text edits at the same position are not applied in LSP spec order
angelozerr May 14, 2026
f5c196c
fix: java.lang.IllegalArgumentException: Text entry may not be empty.
angelozerr May 15, 2026
7f3054e
fix: don't display hover for empty inlay hint
angelozerr May 15, 2026
f20ed0a
docs: fox Workspace Folder feature doc
angelozerr May 16, 2026
c1296f1
fix: InlayHintsPassFactory ClassNotFound Exception on IJ 2026.2 EAP2
angelozerr May 16, 2026
002d652
feat: Add workingDir in user defined ls
angelozerr May 16, 2026
6107306
fix: Harper Language Server config schema is invalid
angelozerr May 17, 2026
f130423
fix: Support LSP progress with non dynamic token (ex: Dart)
angelozerr May 17, 2026
2cff934
fix: use isEnabled + isSupported for usages
angelozerr May 18, 2026
b97b097
docs: Add Nim plugin
matozoid May 19, 2026
36d759d
fix: LSP Console Mappings table is artificially short
angelozerr May 19, 2026
a3a6077
feat: Allow to override behavior of FindUsages
angelozerr May 19, 2026
1bc0dd9
fix: Infinite Recursion in LSPFindUsagesHandlerFactory
angelozerr May 20, 2026
507a9f2
docs: changelog for 0.19.4
angelozerr May 20, 2026
52e6dca
feat: Improve Workspace Folder UI
angelozerr May 20, 2026
2b104ef
docs: Workspace Folder doc
angelozerr May 20, 2026
85654b5
fix: java.util.concurrent.CancellationException with semantic tokens
angelozerr May 20, 2026
2490e42
fix: Check if alarm is not disposed (can happen during rapid start/stop
angelozerr May 21, 2026
282597d
fix: java.util.concurrent.CancellationException with semantic tokens
angelozerr May 20, 2026
47cda3d
fix: refresh Structure View
angelozerr May 21, 2026
c2750af
feat: add support for Structure elements filtering
angelozerr May 21, 2026
9264420
chore(skip-release): set version to 0.19.4
actions-user May 21, 2026
2d1ff5e
Code Actions and Folding fixes
alexander-shustanov Jun 26, 2025
d613c5a
Code Actions and Folding fixes
andreysubbotin Jul 25, 2025
7300c1d
Prepare for Teamcity build
andreysubbotin Jul 30, 2025
4e85954
Prepare for Teamcity build
andreysubbotin Jul 30, 2025
c829008
add task for checking native dependencies
andreysubbotin Jan 30, 2026
159cb6f
ASPR-3052 [Golang] Navigates to references doesn't work
andreysubbotin Feb 12, 2026
6140f56
ASPR-3052 [Golang] Navigates to references doesn't work
May 27, 2026
3a0df0e
ASPR-3052 [Golang] Navigates to references doesn't work
andreysubbotin Feb 12, 2026
a2677bf
ASPR-2573 Hide the suggestion for language server configuring
Feb 26, 2026
2073ebe
Support include declaration settings
Apr 13, 2026
9d96a45
Performance fix
Jun 1, 2026
871f5cc
Implementation search fix
Jun 8, 2026
6467c7b
Merge pull request #3 from Amplicode/performance_fix
andreysubbotin Jun 8, 2026
d50112a
Merge pull request #4 from Amplicode/fixImplementationSearch
andreysubbotin Jun 8, 2026
6f281be
release v.0.19.4.1
andreysubbotin Jun 11, 2026
645f062
disable searchable options
andreysubbotin Jun 15, 2026
c5fc644
feat: Add parameter to switch of scope filter
Artyom-Safronov Jun 15, 2026
7e61408
add repositories
andreysubbotin Jun 15, 2026
dede9b4
add repositories
andreysubbotin Jun 15, 2026
ec24a78
fix jdk version
andreysubbotin Jun 15, 2026
ce21283
fix jdk version
andreysubbotin Jun 15, 2026
75b481b
Merge pull request #5 from Amplicode/feature/kaiten-64953206
andreysubbotin Jun 16, 2026
f1659e3
ASPR-3487 Error in LSP4IJ
Jun 16, 2026
ccac2bc
Merge pull request #6 from Amplicode/ASPR-3487
andreysubbotin Jun 17, 2026
ad7cb51
release 0.19.4.2
andreysubbotin Jun 18, 2026
ef5688e
Fix find usages
Jun 23, 2026
9610cc9
Fix stale ClosedDocument affecting wolf reporter and highlights opene…
Jul 2, 2026
28524ff
Fix errors disappear from editor after reopening file
Jul 2, 2026
2faf44e
Merge pull request #7 from Amplicode/find-usages-fix
andreysubbotin Jul 8, 2026
9543fef
Merge pull request #8 from eliseevh/error-highlighting-fix
alovar Jul 14, 2026
aca1dac
add custom console
Artyom-Safronov Jun 25, 2026
8746967
add completions for conditional breakpoints
Artyom-Safronov Jun 30, 2026
571d4e0
fix breakpoint baloon size
Artyom-Safronov Jun 30, 2026
060ab68
fix breakpoint logMessage && refactor completions
Artyom-Safronov Jun 30, 2026
2d97324
fix invalid frame values in stack for vscode js debug
Artyom-Safronov Jul 6, 2026
4ffccf7
Merge pull request #10 from Amplicode/feat/kaiten-66159942
Artyom-Safronov Jul 15, 2026
264e9e7
release 0.19.4.3
andreysubbotin Jul 20, 2026
101eac5
Fix hover/definition
Jul 22, 2026
7d70a8f
Fix exceptions
Jul 22, 2026
109c4ff
Merge pull request #12 from Amplicode/fix_hover_and_definition
alovar Jul 22, 2026
10bb866
Add multicaret support
Jul 24, 2026
42397fa
Merge pull request #13 from Amplicode/add-multcaret-support
andreysubbotin Aug 6, 2026
1d76ea8
release 0.19.4.4
andreysubbotin Aug 6, 2026
5e3d1fe
Fix NPE in signature help when parameters list is null
Aug 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/workflows/IJ-latest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: 17
java-version: 21
cache: 'gradle'

# Setup Gradle
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/IJ.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ jobs:
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: 17
java-version: 21
cache: 'gradle'

# Setup Gradle
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/buildZip.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ jobs:
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: 17
java-version: 21
cache: 'gradle'

# Setup Gradle
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ jobs:
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: 17
java-version: 21
cache: 'gradle'

# Setup Gradle
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ jobs:
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: 17
java-version: 21
cache: 'gradle'

# Setup Gradle
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ jobs:
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: 17
java-version: 21
cache: 'gradle'

# Setup Gradle
Expand Down
18 changes: 17 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,13 +66,15 @@ Here are some projects that use LSP4IJ:
* [IntelliJ SumnekoLua](https://github.com/CppCXY/Intellij-SumnekoLua)
* [Haskell LSP for IntelliJ](https://github.com/rockofox/intellij-haskell-lsp)
* [Zowe™ COBOL Language Support](https://github.com/zowe/zowe-cobol-language-support-intellij)
* [Nim using nimlangserver](https://codeberg.org/laamella-gad/nim-intellij-plugin)
* [ZigBrains](https://github.com/FalsePattern/ZigBrains)
* [Pyright for PyCharm](https://github.com/InSyncWithFoo/pyright-for-pycharm)
* [Intellij EmmyLua2](https://github.com/EmmyLua/Intellij-EmmyLua2)
* [Lean4ij](https://github.com/onriv/lean4ij)
* [Intellij KCL](https://github.com/kcl-lang/intellij-kcl)
* [Ruff for PyCharm](https://github.com/koxudaxi/ruff-pycharm-plugin)
* [Intellij Gleam](https://github.com/themartdev/intellij-gleam)
* [intellij-lumos](https://github.com/getlumos/intellij-lumos)
* [Liberty Tools for IntelliJ](https://github.com/OpenLiberty/liberty-tools-intellij)
* [Vespa Schema Language Support](https://github.com/vespa-engine/vespa/tree/master/integration/schema-language-server/clients/intellij)
* [Jimmer DTO LSP](https://github.com/Enaium/jimmer-dto-lsp)
Expand All @@ -89,10 +91,24 @@ Here are some projects that use LSP4IJ:
* [SDLB LSP](https://github.com/smart-data-lake/sdl-lsp)
* [Bloc Linter Support for IntelliJ](https://github.com/felangel/bloc)
* [Vala JetBrains Plugin](https://github.com/Tbusk/vala-jetbrains-plugin)
* [BAML JetBrains Plugin](http://github.com/BoundaryML/baml/tree/canary/jetbrains)
* [intellij-cangjie](https://github.com/lin-qingying/intellij-cangjie)
* [poryscript-idea](https://github.com/okafke/poryscript-idea)
* [t-ruby](https://github.com/type-ruby/t-ruby)
* [Rovo LSP - IntelliJ](https://github.com/arthurdw/rovo)
* [Fish Shell for JetBrains](https://github.com/tox-dev/jetbrains-fish)
* [GN Language Server](https://github.com/google/gn-language-server/)
* [OPA IDEA Plugin](https://github.com/open-policy-agent/opa-idea-plugin)
* [aer Local Apex Debugger](https://www.octoberswimmer.com/tools/aer/docs/intellij-debugging/)
* [Rider Unreal Angelscript](https://github.com/scriptacus/rider-unreal-angelscript)
* [agnix](https://github.com/agent-sh/agnix)
* [Xonsh plugin for JetBrains IDEs](https://github.com/nahoj/xonsh-jetbrains)
* [Rell IntelliJ Plugin](https://bitbucket.org/chromawallet/rell-jetbrains)
* [Dart](https://github.com/flutter/dart-intellij-third-party)

## Requirements

* Intellij IDEA 2023.3 or more recent (we **try** to support the last 4 major IDEA releases)
* Intellij IDEA 2024.2 or more recent (we **try** to support the last 4 major IDEA releases)
* Java JDK (or JRE) 17 or more recent

## Contributing
Expand Down
156 changes: 142 additions & 14 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import com.adarshr.gradle.testlogger.theme.ThemeType
import org.jetbrains.changelog.markdownToHTML
import org.jetbrains.intellij.platform.gradle.IntelliJPlatformType
import org.jetbrains.intellij.platform.gradle.tasks.VerifyPluginTask.FailureLevel.*
import org.jetbrains.intellij.platform.gradle.tasks.VerifyPluginTask.VerificationReportsFormats.*
import org.jetbrains.intellij.platform.gradle.TestFrameworkType
import org.jetbrains.intellij.platform.gradle.models.ProductRelease


fun properties(key: String) = providers.gradleProperty(key)
Expand All @@ -21,8 +23,21 @@ plugins {
jacoco // Code coverage
}

group = prop("pluginGroup")
version = prop("pluginVersion")
val snapshotVersion = providers.gradleProperty("snapshotVersion").orNull
val pluginVersion = providers.gradleProperty("pluginVersion").get()

group = providers.gradleProperty("pluginGroup").get()

version = kotlin.run {
val buildVersion = providers.gradleProperty("buildVersion")
if (buildVersion.isPresent) {
return@run when {
buildVersion.get().startsWith("openide.") -> buildVersion.get().substring(8)
else -> buildVersion.get()
}
}
return@run "${pluginVersion}.${snapshotVersion ?: "SNAPSHOT"}"
}

val lsp4jVersion = prop("lsp4jVersion")
val lsp4jDebugVersion = prop("lsp4jDebugVersion")
Expand All @@ -39,6 +54,7 @@ val ideaVersionInt = when {
// Configure project's dependencies
repositories {
mavenLocal()
maven("https://cache-redirector.jetbrains.com/repo1.maven.org/maven2")
mavenCentral()

// IntelliJ Platform Gradle Plugin Repositories Extension - read more: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-repositories-extension.html
Expand All @@ -54,7 +70,9 @@ dependencies {

// IntelliJ Platform Gradle Plugin Dependencies Extension - read more: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-dependencies-extension.html
intellijPlatform {
create(properties("platformType"), properties("platformVersion"))
// Disabling the installer dependency since IntelliJ 253 (2025.3.x) and potentially other
// early access/snapshot versions may lack direct installer packages in the artifact repositories.
create(properties("platformType"), properties("platformVersion"), useInstaller = false)

// Plugin Dependencies. Uses `platformBundledPlugins` property from the gradle.properties file for bundled IntelliJ Platform plugins.
// starting from 2024.3, all json related code is know on its own plugin
Expand All @@ -72,6 +90,11 @@ dependencies {
// Plugin Dependencies. Uses `platformPlugins` property from the gradle.properties file for plugin from JetBrains Marketplace.
plugins(properties("platformPlugins").map { it.split(',') })

if (ideaVersionInt >= 252) {
// Since 2025.2, JetBrains moved spellchecker in a new "intellij.spellchecker" module
bundledModule("intellij.spellchecker")
}

pluginVerifier()
zipSigner()
testFramework(TestFrameworkType.Platform)
Expand All @@ -97,13 +120,30 @@ dependencies {

testImplementation(libs.junit)
testImplementation(libs.junit.jupiter.api)
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")
testRuntimeOnly(libs.junit.vintage.engine)
// Required for IntelliJ Platform 2026.1 to discover and run tests via JUnit Platform
testRuntimeOnly("org.junit.platform:junit-platform-launcher:1.11.0")
}

// Set the JVM language level used to build the project.
// Set the JDK version used by the toolchain to build the project (Java 21 is required for platform 2025.3).
// Output compatibility and API usage are restricted to Java 17 in the tasks below.
kotlin {
jvmToolchain {
languageVersion = JavaLanguageVersion.of(17)
vendor = JvmVendorSpec.JETBRAINS
languageVersion = JavaLanguageVersion.of(21)
}
}

// Maintain compatibility with Java 17 runtimes, ensuring the built plugin
// can run on older IDEs even though the toolchain uses Java 21 for the 253 platform.
tasks.withType<JavaCompile> {
options.release.set(17)
}

// Set Kotlin JVM language level. While there's currently no Kotlin in this project, it is configured with the Kotlin plugin.
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
compilerOptions {
jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17)
}
}

Expand Down Expand Up @@ -135,23 +175,36 @@ intellijPlatform {
}

signing {
certificateChain = environment("CERTIFICATE_CHAIN")
privateKey = environment("PRIVATE_KEY")
password = environment("PRIVATE_KEY_PASSWORD")
if (providers.gradleProperty("useSign").isPresent) {
certificateChain = providers.environmentVariable("CERTIFICATE_CHAIN")
privateKey = providers.environmentVariable("PRIVATE_KEY")
password = providers.environmentVariable("PRIVATE_KEY_PASSWORD")
}
}

publishing {
token = environment("PUBLISH_TOKEN")
channels = properties("channel").map { listOf(it) }
val publishToken = providers.gradleProperty("publishToken")
if (publishToken.isPresent) {
token = publishToken.get()
host = "https://plugins.openide.ru"
}
}

pluginVerification {
failureLevel = listOf(INVALID_PLUGIN, COMPATIBILITY_PROBLEMS, MISSING_DEPENDENCIES)
verificationReportsFormats = listOf(MARKDOWN, PLAIN)
ides {
recommended()
select {
types = listOf(IntelliJPlatformType.IntellijIdea)
channels = listOf(ProductRelease.Channel.RELEASE) // Only stable releases
sinceBuild = "242" // From your minimum supported version
untilBuild = "261.*" // Up to current major version
}
}
}

// Don't need this since we don't provide any custom settings
buildSearchableOptions.set(false)
}

idea {
Expand Down Expand Up @@ -194,6 +247,7 @@ changelog {
}

tasks.withType<Test> {
useJUnitPlatform()
environment("GRADLE_RELEASE_REPOSITORY","https://services.gradle.org/distributions")
systemProperty("idea.log.leaked.projects.in.tests", "false")
systemProperty( "idea.maven.test.mirror", "https://repo1.maven.org/maven2")
Expand Down Expand Up @@ -240,7 +294,81 @@ tasks {
}
}

check {
dependsOn(jacocoTestReport)
val checkNativeLibraries by registering {
group = "verification"
description = "Checks plugin dependencies for native libraries (.dll, .so, .dylib)"
notCompatibleWithConfigurationCache("Accesses resolved configurations at task execution time")

doLast {
val nativeExtensions = listOf(".dll", ".so", ".dylib", ".jnilib")
val jetbrainsGroups = listOf("org.jetbrains", "com.jetbrains", "com.intellij")

val runtimeConfig = configurations.getByName("runtimeClasspath")
val findings = mutableMapOf<String, MutableList<String>>()

runtimeConfig.resolvedConfiguration.resolvedArtifacts.forEach { artifact ->
val moduleId = artifact.moduleVersion.id
val group = moduleId.group.lowercase()

if (jetbrainsGroups.any { group.startsWith(it.lowercase()) }) {
return@forEach
}

val file = artifact.file
if (file.extension != "jar") {
return@forEach
}

val nativeFiles = mutableListOf<String>()
try {
project.zipTree(file).visit {
if (!isDirectory) {
val path = relativePath.pathString
val lowercasePath = path.lowercase()

val hasNativeExtension = nativeExtensions.any {
lowercasePath.endsWith(it)
}

val isVersionedSo = lowercasePath.matches(Regex(".*\\.so\\.\\d+.*"))

val inNativeDir = lowercasePath.contains("/native/") ||
lowercasePath.contains("/natives/")

if (hasNativeExtension || isVersionedSo || inNativeDir) {
nativeFiles.add(path)
}
}
}
} catch (e: Exception) {
logger.warn("Failed to inspect JAR ${file.name}: ${e.message}")
}

if (nativeFiles.isNotEmpty()) {
val depKey = "${moduleId.group}:${moduleId.name}:${moduleId.version}"
findings[depKey] = nativeFiles
}
}

if (findings.isNotEmpty()) {
logger.error("==========================================")
logger.error("Native libraries found in dependencies:")
logger.error("==========================================")
findings.forEach { (dep, files) ->
logger.error("===> $dep")
files.forEach { file ->
logger.error(" └─ $file")
}
}
logger.error("==========================================")
logger.error("Total: ${findings.size} dependencies with native libraries")

throw GradleException(
"Build failed: Native libraries detected in ${findings.size} dependencies"
)
} else {
logger.lifecycle("✓ No native libraries found in plugin dependencies")
}
}
}
}
Loading
Loading