by

Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Sep 18 2018 14:26
    unfurl-links[bot] commented #8
  • Sep 18 2018 14:26
    davesmith00000 commented #8
  • Sep 18 2018 14:12
    davesmith00000 opened #8
  • Feb 02 2018 03:13
    laughedelic commented #5
  • Feb 02 2018 03:08

    laughedelic on v0.2.0

    (compare)

  • Feb 02 2018 03:08

    laughedelic on master

    Set version back Prepare 0.2.0 release (compare)

  • Feb 02 2018 03:07

    laughedelic on master

    Updated readme Added changelog Added related links (compare)

  • Feb 02 2018 02:52

    laughedelic on busy-signal

    (compare)

  • Feb 02 2018 02:51

    laughedelic on master

    Added busy-signal logging Merge branch 'master' into busy… Updated busy signal service name and 1 more (compare)

  • Feb 02 2018 02:51
    laughedelic closed #1
  • Feb 02 2018 02:51
    laughedelic commented #1
  • Feb 02 2018 02:50
    laughedelic synchronize #1
  • Feb 02 2018 02:50

    laughedelic on busy-signal

    Updated readme Added badges More details for the package.js… and 15 more (compare)

  • Feb 02 2018 02:03

    laughedelic on auto-deps-install

    (compare)

  • Feb 02 2018 02:02

    laughedelic on master

    Added automatic dependencies in… Merge pull request #7 from laug… (compare)

  • Feb 02 2018 02:02
    laughedelic closed #7
  • Feb 02 2018 02:02
    laughedelic assigned #7
  • Feb 02 2018 02:02
    laughedelic opened #7
  • Feb 02 2018 02:02

    laughedelic on master

    Removed duplicated service prov… Changed license to MPL-2.0 Removed unused imports and 1 more (compare)

  • Feb 02 2018 02:00

    laughedelic on auto-deps-install

    Removed duplicated service prov… Changed license to MPL-2.0 Removed unused imports and 2 more (compare)

Alexey Alekhin
@laughedelic
what do you mean by "realtime" errors?
this plugin is experimental only because sbt server is still experimental. It will be released in sbt 1.1, which should be within a month
asaadza
@asaadza
OK ... I should keep track of this. I have used IntelliJ for years, and like it a lot still, but I suspect in the long term, atom (which I already use for playing with Haskell) is going to be quite compelling.
maybe even VSCode
Alexey Alekhin
@laughedelic
VSCode also has all these plugins: for sbt server, for ENSIME (not sure if it's published already), for Scalameta server. I personally prefer Atom so I'm trying to keep up with those and make plugins for Atom.
asaadza
@asaadza
good for you - I think it is a good horse to back; it generally works well, and the fact that you can write your plugin in scalajs ... that has got to be a plus!
Alexey Alekhin
@laughedelic
my plan is to support 3 language servers in the same atom-ide-scala Atom plugin: Scalameta, ENSIME and Dotty
well, writing it in Scala.js was an interesting experiment, challenging for me, because I don't do JS, and it was my first experience in Scala.js
Carlos Quiroz
@cquiroz
Will this work alongside atom-ide-scala?
Alexey Alekhin
@laughedelic
@cquiroz this is the plan. At the moment atom-sbt-client is a bit out of date, because it was made for sbt 1.1.0-M1 and it doesn't work with the recently released 1.1.0-RC1. So I'm going to update it in the nearest future (before 1.1.0 release) and you will be able to use it alongside with atom-ide-scala.
Carlos Quiroz
@cquiroz
sounds great
Alexey Alekhin
@laughedelic
Notice that sbt server provides go-to-definition, but it's clearly inferior to the one from scalameta language server. So in this plugin I'm going to make it an opt-in setting.
Carlos Quiroz
@cquiroz
Right, that was one question
would there be a conflict?
Alexey Alekhin
@laughedelic
I will just "turn off" this capability for the sbt server by default (with an option to turn it on) so there won't be a conflict
Carlos Quiroz
@cquiroz
excellent
I was about to give up on Atom and switch to vscode but this is saving my editor :D
Alexey Alekhin
@laughedelic
Another thing is diagnostics. I would expect that diagnostics from different servers shouldn't conflict even if they refer to the same locations. But there may be some overlap, because some of the diagnostics from the Scalameta server come from the presentation compiler (besides the Scalafix linter).
I'm glad to hear that! :blush:
I'm not planning to switch to VS Code so far, so I'm investing some of my free time in working on this, so that I can stay on Atom hapilly.
Alexey Alekhin
@laughedelic

@/all I just released v0.2.0 with the sbt-1.1 support and some other improvements. Feedback is welcome!

Note that there's a known problem with busy-signal (spinning progress indicator): it gets stuck when trying to disconnect from the server, but I think it's a bug in atom-languageclient. I will investigate and report it later.

Carlos Quiroz
@cquiroz
Great!! Downloading...
Carlos Quiroz
@cquiroz
This is looking great, some questions:
When working on a multimodule project will it compile only the module a file belongs to?
Would it be possible to do something else than compile on save. I work in scala.js and would love to do fastOptJS on save instead
Great work, this is looking good!
Alexey Alekhin
@laughedelic

@cquiroz cool, I'm glad that it works for you ")

When working on a multimodule project will it compile only the module a file belongs to?

The best way to answer it is to try :smile: But I think that sbt just runs Compile / compile so it will recompile all subprojects. To improve this behaviour is a good idea for the sbt 1.2 roadmap suggestions.

Would it be possible to do something else than compile on save.

I have this planned. Currently sbt server has just a hardcoded behaviour: to run compile when it receives didSave notification from the editor. It can be worked around like this:

  • modify initialization so that the editor won't send didSave notifications
  • hook the editor events and manually send (on save or any other event) sbt/exec with whatever command to the server

This also requires some plugin configuration.

Carlos Quiroz
@cquiroz
Right, so it needs some UI
I’ll add that idea on sbt’s roadmap
Alexey Alekhin
@laughedelic
But before I add configuration and any other features, I want to migrate plugin to Scala.js and reuse whatever is relevant from atom-ide-scala plugin. I don't want to make JS code any more complicated, because it will be hard to maintain later.

I’ll add that idea on sbt’s roadmap

On another thought, there's already incremental compilation, so it's just the first time you compile, all subprojects will be compiled, but then when you change a file, even a global compile won't do anything in the projects that are not affected. Is this correct? (I almost never use multi-module projects, so I'm not sure)

Carlos Quiroz
@cquiroz
It is correct but i think it adds some overhead
for fastOptJS is a bit different as normally only one subproject uses it
but of course there are many variants of builds
Alexey Alekhin
@laughedelic
I see
This issue seems related: sbt/sbt#2799
Carlos Quiroz
@cquiroz
a couple of things i’v noted
if I stop sbt and restart the editor doesn’t connect back to sbt
the compile is somehow linked to the module you are when starting atom
So if i’m at root it will do compile on the root but if on submodule A it only compiles for changes on that module
Alexey Alekhin
@laughedelic

if I stop sbt and restart the editor doesn’t connect back to sbt

@cquiroz could you explain it with more details? If you stop sbt, there's nothing to reconnect to, right?

the compile is somehow linked to the module you are when starting atom

This is kind of by design (of LSP and atom-languageclient): when you open some folder in the editor, it is treated as a "project" or "workspace", then when the client connects to the server, it communicates the workspace path to it and cares only about changes happening within this workspace.

Carlos Quiroz
@cquiroz
sorry I meant stop sbt, and restart sbt, Atom doesn’t seem to connect back to the sbt server
Alexey Alekhin
@laughedelic
I cannot reproduce it. I started sbt, opened editor, everything works, then I restart sbt (client looses connection meanwhile), then close all tabs, reopen some scala source and it connects to the server again.
Carlos Quiroz
@cquiroz
Ah, didn’t think about closing all the tabs
Alexey Alekhin
@laughedelic
@cquiroz This is something confusing in how Atom handles language servers lifetime: it launches a server when you open a file (tab) with a corresponding source type and it stops this server when there all tabs with this source type are closed. So it's not related to the open project folders. I opened an issue at atom-languageclient for this: atom/atom-languageclient#141
Carlos Quiroz
@cquiroz
Great to see @laughedelic is on the list of nominees :smile:
Alexey Alekhin
@laughedelic
😇