beeender / comrade Goto Github PK
View Code? Open in Web Editor NEWBrings JetBrains/IntelliJ IDEs magic to Neovim with minimal setup.
License: GNU General Public License v3.0
Brings JetBrains/IntelliJ IDEs magic to Neovim with minimal setup.
License: GNU General Public License v3.0
Hi, first of all this is an amazing plugin (Ingratiating neovim's speed and editing power with Jetbrains completion). Thanks a lot.
I just have one request (/ query). Is it possible anyway to invoke basic completion request (or even better, second basic completion request) to Jetbrains from Neovim?
Happens from time to time. Maybe relate to neovim loses sync.
java.lang.IllegalStateException: This SyncBuffer has been released already.
at org.beeender.comradeneovim.buffer.SyncBuffer.checkReleased(SyncBuffer.kt:142)
at org.beeender.comradeneovim.buffer.SyncBuffer.navigate(SyncBuffer.kt:76)
at org.beeender.comradeneovim.buffer.SyncBufferManager$nvimBufLinesEvent$1.invoke(SyncBufferManager.kt:148)
at org.beeender.comradeneovim.buffer.SyncBufferManager$nvimBufLinesEvent$1.invoke(SyncBufferManager.kt:28)
at org.beeender.comradeneovim.UtilsKt$sam$java_lang_Runnable$0.run(Utils.kt)
at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:214)
at com.intellij.openapi.application.TransactionGuardImpl.access$200(TransactionGuardImpl.java:21)
at com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:196)
at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:794)
at com.intellij.openapi.application.impl.ApplicationImpl.lambda$invokeLater$4(ApplicationImpl.java:350)
at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:84)
at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:133)
at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:46)
at com.intellij.openapi.application.impl.FlushQueue$FlushNow.run(FlushQueue.java:189)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:886)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:755)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$7(IdeEventQueue.java:442)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:825)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:441)
at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:794)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:487)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Given:
project/foo.java
project/ui/foo.java
Do:
$ vi project/foo.java
: e project/ui/foo/java
Build of the IDE: IU-201.8538.31
Verdict: Compatible. 6 usages of deprecated API. 2 usages of internal API
JetBrain sends those emails every day.
Need to find a time to fix those.
Loading up a file in Nvim+Comrade connected to Studio, then try and write a copy of the file somewhere to disk via:
:w /tmp/backupFile.java
Fails silently
I generally only reach for nvim when I need to do some heavy lifting that IdeaVim can't afford me. It would be incredible if I could open an IDE terminal tab, launch nvim from the workspace root directory, and then when I need actual nvim for heavy lifting, I can simply hotkey over to the IDE terminal and bang out some normal/global commands and then jump back in the IDE editor for my general workflow....I would also expect the jumplist, registers, marks, etc., to sync as well so everything would be pretty seamless. I think this would be a huge value add!
Does this plugin only work with deoplete? Or would it also work with neovim LSP?
If not, how much work do you think it would be to port it over to other completion engines?
Happens from time to time. Maybe relate to neovim loses sync.
java.lang.Throwable: Too many non-blocking read actions submitted at once. Please use coalesceBy, BoundedTaskExecutor or another way of limiting the number of concurrently running threads.: 14 with similar stack traces are currently active
at com.intellij.openapi.diagnostic.Logger.error(Logger.java:182)
at com.intellij.openapi.application.impl.SubmissionTracker.preventTooManySubmissions(SubmissionTracker.java:45)
at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.<init>(NonBlockingReadActionImpl.java:231)
at com.intellij.openapi.application.impl.NonBlockingReadActionImpl.submit(NonBlockingReadActionImpl.java:191)
at com.intellij.completion.ml.common.RecentPlacesFeatures$StoreRecentPlacesListener.recentPlaceAdded(RecentPlacesFeatures.kt:83)
at com.intellij.util.messages.impl.MessageBusImpl.invokeMethod(MessageBusImpl.java:645)
at com.intellij.util.messages.impl.MessageBusImpl.invokeListener(MessageBusImpl.java:620)
at com.intellij.util.messages.impl.MessageBusImpl.deliverMessage(MessageBusImpl.java:417)
at com.intellij.util.messages.impl.MessageBusImpl.pumpWaitingBuses(MessageBusImpl.java:390)
at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:372)
at com.intellij.util.messages.impl.MessageBusImpl.access$200(MessageBusImpl.java:33)
at com.intellij.util.messages.impl.MessageBusImpl$MessagePublisher.invoke(MessageBusImpl.java:179)
at com.sun.proxy.$Proxy106.recentPlaceAdded(Unknown Source)
at com.intellij.openapi.fileEditor.impl.IdeDocumentHistoryImpl.putLastOrMerge(IdeDocumentHistoryImpl.java:642)
at com.intellij.openapi.fileEditor.impl.IdeDocumentHistoryImpl.setCurrentChangePlace(IdeDocumentHistoryImpl.java:379)
at com.intellij.openapi.fileEditor.impl.IdeDocumentHistoryImpl.onCommandFinished(IdeDocumentHistoryImpl.java:331)
at com.intellij.openapi.fileEditor.impl.IdeDocumentHistoryImpl$3.commandFinished(IdeDocumentHistoryImpl.java:126)
at com.intellij.util.messages.impl.MessageBusImpl.invokeMethod(MessageBusImpl.java:645)
at com.intellij.util.messages.impl.MessageBusImpl.invokeListener(MessageBusImpl.java:620)
at com.intellij.util.messages.impl.MessageBusImpl.access$300(MessageBusImpl.java:33)
at com.intellij.util.messages.impl.MessageBusImpl$MessagePublisher.executeOrAddToQueue(MessageBusImpl.java:208)
at com.intellij.util.messages.impl.CompositeMessageBus$ToDirectChildrenMessagePublisher.publish(CompositeMessageBus.java:125)
at com.intellij.util.messages.impl.MessageBusImpl$MessagePublisher.invoke(MessageBusImpl.java:166)
at com.sun.proxy.$Proxy78.commandFinished(Unknown Source)
at com.intellij.openapi.command.impl.CoreCommandProcessor.fireCommandFinished(CoreCommandProcessor.java:275)
at com.intellij.openapi.command.impl.CoreCommandProcessor.finishCommand(CoreCommandProcessor.java:256)
at com.intellij.openapi.command.impl.CommandProcessorImpl.finishCommand(CommandProcessorImpl.java:34)
at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:222)
at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:182)
at com.intellij.openapi.command.WriteCommandAction$BuilderImpl.doRunWriteCommandAction(WriteCommandAction.java:150)
at com.intellij.openapi.command.WriteCommandAction$BuilderImpl.run(WriteCommandAction.java:117)
at org.beeender.comradeneovim.buffer.SyncBuffer$replaceText$1.run(SyncBuffer.kt:100)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:936)
at org.beeender.comradeneovim.buffer.SyncBuffer.replaceText$ComradeNeovim(SyncBuffer.kt:98)
at org.beeender.comradeneovim.buffer.Synchronizer.onNeovimChange(Synchronizer.kt:201)
at org.beeender.comradeneovim.buffer.Synchronizer.onChange(Synchronizer.kt:46)
at org.beeender.comradeneovim.buffer.SyncBufferManager$nvimBufLinesEvent$1.invoke(SyncBufferManager.kt:146)
at org.beeender.comradeneovim.buffer.SyncBufferManager$nvimBufLinesEvent$1.invoke(SyncBufferManager.kt:28)
at org.beeender.comradeneovim.UtilsKt$sam$java_lang_Runnable$0.run(Utils.kt)
at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:214)
at com.intellij.openapi.application.TransactionGuardImpl.access$200(TransactionGuardImpl.java:21)
at com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:196)
at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:794)
at com.intellij.openapi.application.impl.ApplicationImpl.lambda$invokeLater$4(ApplicationImpl.java:350)
at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:84)
at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:133)
at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:46)
at com.intellij.openapi.application.impl.FlushQueue$FlushNow.run(FlushQueue.java:189)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:886)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:755)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$7(IdeEventQueue.java:442)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:825)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:441)
at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:794)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:487)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
java.lang.IllegalStateException: This SyncBuffer has been released already.
at org.beeender.comradeneovim.buffer.SyncBuffer.checkReleased(SyncBuffer.kt:142)
at org.beeender.comradeneovim.buffer.SyncBuffer.navigate(SyncBuffer.kt:76)
at org.beeender.comradeneovim.buffer.SyncBufferManager$nvimBufLinesEvent$1.invoke(SyncBufferManager.kt:148)
at org.beeender.comradeneovim.buffer.SyncBufferManager$nvimBufLinesEvent$1.invoke(SyncBufferManager.kt:28)
at org.beeender.comradeneovim.UtilsKt$sam$java_lang_Runnable$0.run(Utils.kt)
at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:214)
at com.intellij.openapi.application.TransactionGuardImpl.access$200(TransactionGuardImpl.java:21)
at com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:196)
at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:794)
at com.intellij.openapi.application.impl.ApplicationImpl.lambda$invokeLater$4(ApplicationImpl.java:350)
at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:84)
at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:133)
at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:46)
at com.intellij.openapi.application.impl.FlushQueue$FlushNow.run(FlushQueue.java:189)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:886)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:755)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$7(IdeEventQueue.java:442)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:825)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:441)
at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:794)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:487)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Although the corresponding file is shown correctly, I sometimes find myself needing to go to intellij and perform a find to have both nvim and idea on the same line. Am I missing something or it's not possible?
Thanks
Is it possible to support coc.nvim?
Hi,
I typed 5p
on python, and for some reason, the same line was written 120000 times in the file.
Notice that I might have left autosave on accidently.
Don't know how to reproduce.
Hi there,
This is a great plugin, but I would like to make completion work with ncm2 rather than Deoplete. I know how to write a source (done that already for Vlime), but I need a bit of help understanding how completion is implemented in Comrade.
Looking at the Deoplete source and comrade#RequestCompletion
it appears that you are using a blocking RPC request to fetch completion results. You then use a combination of Deoplete's is_async
context entry and the is_finished
entry of the results
object.
Can you please elaborate how they fit together? NCM2 uses callbacks instead, the idea is that when completion is requested you send off an RPC notification and specify a callback which will be called when the other side notifies Neovim that it is done. See here for an example where I pass a lambda as the callback.
I think once I understand this part I can write the NCM2 source with ease.
The plugin is awesome,and thanks for the hard work of the author.If the comrade can have coordination with coc.nvim,it will be great.
I realize that this may not be an issue with Comrade, however I'm remarking here in the event it is.
Comrade uses the sign column, however it stops GitGutter from working effectively, namely it interferes with GitGutter's navigational commands:
I don't know why, but I'm happy to help look into what is going on if I can maybe get a few hints from the original developer her how to do so (I'm not very familiar with vim plugin dev)
Hi,
This is not conclusive, but when doing :%s
with preview on synced file, after pressing enter, neovim was hanged.
It happened 3 times. When I did /gc, it went OK. I don't really see external reason for this..
Hi, first I just want to say that this is a really cool project! Are there any plans to allow jumping to definition from this plugin or maybe the intelliJ plugin could expose a language server api to do refactoring, find references, etc.
Thanks!
I am unable to begin using Comrade and ComradeNeovim with IntelliJ 2019.2.
Intellij Info:
Build #IC-192.5728.98, built on July 23, 2019
Runtime version: 11.0.3+12-b304.10 x86_64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
macOS 10.14.6
GC: ParNew, ConcurrentMarkSweep
Memory: 1981M
Cores: 8
Registry: debugger.watches.in.variables=false
Non-Bundled Plugins: CheckStyle-IDEA, IdeaVIM, PMDPlugin, SBT, beeender.ComradeNeovim, claims.bold.intellij.avro, com.atlassian.clover, org.intellij.scala, org.jetbrains.plugins.hocon
Neovim:
:version
NVIM v0.3.0-1308-g3585df3f0
Build type: RelWithDebInfo
LuaJIT 2.0.5
Comrade installed using vim/vim-plug and using the 'beeender/Comrade' github repo. I see the following stacktrace in IntelliJ:
java.lang.Exception: [0, Invalid method name]
at org.beeender.neovim.BufferApi.detach(BufferApi.kt:19)
at org.beeender.neovim.BufferApi$detach$1.invokeSuspend(BufferApi.kt)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:32)
at kotlinx.coroutines.DispatchedTask.run(Dispatched.kt:233)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:594)
at kotlinx.coroutines.scheduling.CoroutineScheduler.access$runSafely(CoroutineScheduler.kt:60)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:742)
From within vim, I see the following, and I cannot save any files, or exit the editor:
Error detected while processing function <SNR>156_WriteBuffer:
line 17:
JetBrain failed to save file.Vim(call):java.lang.reflect.InvocationTargetException
Press ENTER or type command to continue
In neovim, Comrade adds errors and warnings from included files to the location list. These do not appear in the buffer in CLion. They make navigation between errors quite frustrating, because it pollutes the buffer and location list and :lnext
can move me out of the current file. Errors from included files are never something I care about: either they are errors in my code, and I will see them when I build or when I edit the erroneous file; or they are warnings from code that I do not control which I cannot do anything about.
Additionally, the file paths in the errors from included files include control characters, so they are not usable. For example, a location list entry:
^[[0m^[[1mbazel-out/k8-opt/bin/external/<censored>/_virtual_includes/<censored>.H|43 col 16 warning| ^[[0moverridden virtual function is here^[[0m
Is there a way Comrade can filter out errors from external files? Failing that, can the presence of control characters be fixed?
Hi. This is a very nice plugin. However, it feels awkward to have both jetbrains and nvim open at the same time to have completion etc. in nvim provided be jetbrains. How about the other way around? Since nvim provides an api to use it as a backend for any UI it should be theoretically possible to have just open jetbrains with all its feautures but with the editing capabilities of nvim. An example from the real world would be vscode-neovim. It works in vscode! You have all the advantages of working directly in vscode but also the power of real nvim and all its plugins. What do you think?
Happens from time to time. Maybe relate to neovim loses sync.
java.lang.IndexOutOfBoundsException: Wrong line: -1. Available lines count: 0
at com.intellij.openapi.editor.impl.LineSet.checkLineIndex(LineSet.java:200)
at com.intellij.openapi.editor.impl.LineSet.getLineEnd(LineSet.java:194)
at com.intellij.openapi.editor.impl.DocumentImpl.getLineEndOffset(DocumentImpl.java:1023)
at org.beeender.comradeneovim.insight.InsightProcessor$process$1.run(InsightProcessor.kt:64)
at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:214)
at com.intellij.openapi.application.TransactionGuardImpl.access$200(TransactionGuardImpl.java:21)
at com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:196)
at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:794)
at com.intellij.openapi.application.impl.ApplicationImpl.lambda$invokeLater$4(ApplicationImpl.java:350)
at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:84)
at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:133)
at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:46)
at com.intellij.openapi.application.impl.FlushQueue$FlushNow.run(FlushQueue.java:189)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:886)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:755)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$7(IdeEventQueue.java:442)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:825)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:441)
at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:794)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:487)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
When intellij open a file, or editing a file, sync it back to neovim, or called two way sync
Why?
Eclipse provide a very useful java LSP: https://github.com/eclipse/eclipse.jdt.ls
Neovim + coc.nvim + eclipse.jdt.ls has provide a very nice java coding experience, but we need a debugger!
neither Vim nor Neovim provide much GUI event(such as mouse hover, interactable floating window, etc) to make a good debugger, event though DAP is included in eclipse.jdt.ls.
so I personally use Idea to debug, I use mission controll on my mac, put Idea and Neovim in one workspace, it just works. With Comrade, it works much better.
But when Idea debugger step into another file, Neovim doesn't open it, so I can't quickly fix bugs and restart debugger session
Attempting to edit the buffer in Neovim 0.4.2 (As well as the previous version 0.3.x i was using)
results in a readonly buffer in neovim (Unable to edit the file) and the following Stack trace in Android Studio 3.5
Build #AI-191.8026.42.35.5791312, built on August 8, 2019
JRE: 1.8.0_202-release-1483-b49-5587405 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
macOS 10.14.6
java.lang.IllegalStateException: This SyncBuffer has been released already.
at org.beeender.comradeneovim.buffer.SyncBuffer.checkReleased(SyncBuffer.kt:142)
at org.beeender.comradeneovim.buffer.SyncBuffer.navigate(SyncBuffer.kt:76)
at org.beeender.comradeneovim.buffer.SyncBufferManager$nvimBufLinesEvent$1.invoke(SyncBufferManager.kt:148)
at org.beeender.comradeneovim.buffer.SyncBufferManager$nvimBufLinesEvent$1.invoke(SyncBufferManager.kt:28)
at org.beeender.comradeneovim.UtilsKt$sam$java_lang_Runnable$0.run(Utils.kt)
at com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:315)
at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.doRun(LaterInvocator.java:435)
at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.runNextEvent(LaterInvocator.java:419)
at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:403)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:764)
at java.awt.EventQueue.access$500(EventQueue.java:98)
at java.awt.EventQueue$3.run(EventQueue.java:715)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:734)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:757)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:706)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:375)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
When apply some quick fixes from IDE, like adding missing functions, the IDE will grab focus to the IDE's editor window for the input of param. This behavior causes neovim loose focus.
We could just disable those kinds of fixes in the comrade, but there is no clear pattern of what kind of quick fix in the IDE will do this (they are not implemented a certain Interface of have any method to tell this.).
We need to find a way to solve this.
I'm new to Neovim and the installation workflow of Comrade in Neovim is very complex :/
I run into this error:
Error detected while processing /Volumes/Users/manny/.local/share/nvim/site/pack/packer/start/Comrade/plugin/comrade.vim[27]..function provider#python3#Call:
line 18:
Error invoking 'python_execute_file' on channel 3 (python3-script-host):
Traceback (most recent call last):
File "/Volumes/Users/manny/.local/share/nvim/site/pack/packer/start/Comrade/plugin/init.py", line 77, in <module>
init()
File "/Volumes/Users/manny/.local/share/nvim/site/pack/packer/start/Comrade/plugin/init.py", line 71, in init
pid_file.write(addr + "\n")
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
I'm on macOS Ventura with the following Neovim/Packer setup:
~/.config/nvim/lua/user/core/plugins.lua:
use({
'Shougo/deoplete.nvim',
run = ':UpdateRemotePlugins',
requires = {
'roxma/nvim-yarp',
'roxma/vim-hug-neovim-rpc',
run = 'pip install -r requirements.txt'
},
config = function()
require('user.plugin_options.deoplete')
end,
})
use({
'beeender/Comrade'
})
~/.config/nvim/lua/user/plugin_options/deoplete.lua:
vim.g['deoplete#enable_at_startup'] = 1
vim.fn['python3_host_prog'] = '/usr/bin/python3'
I don't know how to help myself - Can anybody help me to solve this?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.