# Autocomplete

**URL:** <https://forum.crystal-lang.org/t/autocomplete/2408>\
**Category:** Help & Support\
**Created:** [August 2, 2020, 8:28am UTC](https://forum.crystal-lang.org/t/autocomplete/2408 "2020-08-02T08:28:00Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![zolo](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/zolo/32/923_2.png) [@zolo](https://forum.crystal-lang.org/u/zolo)\
**Post date:** [August 2, 2020, 8:28am UTC](https://forum.crystal-lang.org/t/autocomplete/2408/1 "2020-08-02T08:28:00Z")

</div>

I’d love Crystal, but I’m super discouraged the state and handling of tooling.

None of the VSC plugins - [Crystal Language](https://github.com/crystal-lang-tools/vscode-crystal-lang), [Crystal IDE](https://github.com/crystal-lang-tools/crystal-ide), [Crystal](https://github.com/g3ortega/vscode-crystal) - seem to be working (at all, for anyone) even after configuring them with scry, which also has its own problems. Neither are they maintained.

It’s somewhat understandable, since it’s an OS project, but _none_ of this is mentioned anywhere and neither is it apparent on account of the gifs showing autocomplete working fine. So it wasted days of my - _and I imagine many others’_ - time.

Please _at least_ mention this on the main page, but more importantly, if any of the plugin authors read this - please don’t mislead people.

I believe everyone has the best intentions, but it takes 2 minutes to update the README and without that, literally the only thing that happens is that you’ve wasted an incredible amount of people’s time (especially if you add together the amount of hours of individual people).

---

<div class="post-metadata">

**Author:** ![girng](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/girng/32/127_2.png) [@girng](https://forum.crystal-lang.org/u/girng)\
**Post date:** [August 2, 2020, 8:36am UTC](https://forum.crystal-lang.org/t/autocomplete/2408/2 "2020-08-02T08:36:22Z")

</div>

A negative of open source. Projects may become stale and developers can’t maintain them.

Best bet for this case is, be the open beta for those projects and report the issues on their repo. That’s what I’ve been doing on Github for over half a decade.

@faustinoaq might be able to help on what’s going on with the the VSC plugin

I personally think there should be a dedicated IDE/editor for Crystal. Similar to how ZeroBraneStudio is for Love2D/Lua. That is officially supported and cross-platform

---

<div class="post-metadata">

**Author:** ![zolo](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/zolo/32/923_2.png) [@zolo](https://forum.crystal-lang.org/u/zolo)\
**Post date:** [August 2, 2020, 9:00am UTC](https://forum.crystal-lang.org/t/autocomplete/2408/3 "2020-08-02T09:00:26Z")

</div>

Thanks @girng!

Hmm, making a (good) IDE seems like an art in and of itself and requires a lot of thought and resources. I would be wary of the result if the Crystal team undertook such a big task.

Why do you think a stand-alone IDE would be beneficial?

---

<div class="post-metadata">

**Author:** ![zolo](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/zolo/32/923_2.png) [@zolo](https://forum.crystal-lang.org/u/zolo)\
**Post date:** [August 2, 2020, 12:45pm UTC](https://forum.crystal-lang.org/t/autocomplete/2408/5 "2020-08-02T12:45:44Z")

</div>

> In the case of Crystal, making a good IDE is a bit impossible.

I wouldn’t want that anyway, but @girng would like to see it happen.

> If you are asking for autocomplete, you are not going to find it in Crystal. Not soon, and probably never. But I might be wrong, of course.

😮  
Why do you think that? We may be talking about different things. I was referring to the autocomplete syntax popups like in the gif [here](https://github.com/crystal-lang-tools/vscode-crystal-lang) and the same for methods on classes. Apparently, it’s been working before.

It seems to be the first item on the [Scry](https://github.com/crystal-lang-tools/scry) roadmap.

---

<div class="post-metadata">

**Author:** ![zolo](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/zolo/32/923_2.png) [@zolo](https://forum.crystal-lang.org/u/zolo)\
**Post date:** [August 2, 2020, 2:27pm UTC](https://forum.crystal-lang.org/t/autocomplete/2408/7 "2020-08-02T14:27:26Z")

</div>

> I’ve said it a thousand times by now, but Crystal doesn’t know how a method works

I wasn’t here for the other 999, so no need to hold that against me.

Tooling is 50% of the development experience, so I think this would be pretty important to mention on the main site. That way, people have realistic expectations and don’t invest a lot of time before they realise something like that is not only missing, but is unlikely to happen. (Especially, since Crystal is trying to be very developer friendly.) You also won’t have to explain it so many times again.

Anyway, I do appreciate the explanation.

---

<div class="post-metadata">

**Author:** ![zolo](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/zolo/32/923_2.png) [@zolo](https://forum.crystal-lang.org/u/zolo)\
**Post date:** [August 2, 2020, 5:08pm UTC](https://forum.crystal-lang.org/t/autocomplete/2408/9 "2020-08-02T17:08:58Z")

</div>

Got it, thanks!

> Once you learn Ruby you know what methods you have in array, hash, etc

Hmm. I may be a dummy, but even to this day I use the autocomplete to help me after nearly 10 years of iOS development. iOS has like a hundred first-party libs and autocomplete helps a _ton_. Both in terms of productivity, but most importantly in terms of discoverability. If I forget what method `Array` is using to divvy up its content, I can write `.slice` or `.splice` or `.split` and quickly find what I’m looking for. That’s especially useful, because I use a bunch of different languages and they all use different method names for these things.

Plus, being able to write `'Fiber.'` and the IDE showing me the options is such a reassuring experience. That, coupled with the compiler running and checking constantly means that I write correct code from line to line and I’m not greeted with a pile of errors when I hit `run`.

> Nobody in the core team or in the Crystal organization is working on these tools.

Yeah, I know that. This still seemed like the best place to ask, because those tools have not been updated in years and I wasn’t sure if anyone would respond. I was hoping the forum was frequented more. Plus, I think this is still worth mentioning on the Crystal main page, especially if it’s a technical limitation. I think people coming from statically typed languages expect autocomplete and need to know this.

---

<div class="post-metadata">

**Author:** ![straight-shoota](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/straight-shoota/32/36_2.png) [@straight-shoota](https://forum.crystal-lang.org/u/straight-shoota)\
**Post date:** [August 3, 2020, 3:03pm UTC](https://forum.crystal-lang.org/t/autocomplete/2408/10 "2020-08-03T15:03:58Z")

</div>

I’m not sure what kind of problems you’re experiencing. But the Crystal Language extension with VS Code works fine for me.

---

<div class="post-metadata">

**Author:** ![zolo](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/zolo/32/923_2.png) [@zolo](https://forum.crystal-lang.org/u/zolo)\
**Post date:** [August 3, 2020, 3:36pm UTC](https://forum.crystal-lang.org/t/autocomplete/2408/11 "2020-08-03T15:36:19Z")

</div>

@straight-shoota  
Thanks for the heads up!  
I’d love to know what I need to do to make it work!

**Attempt 1**  
So I enable the [Crystal Language](https://github.com/crystal-lang-tools/vscode-crystal-lang) plugin, reload VSC and try the first example in the GIF on the plugin’s GitHub page, namely:

`items = [] of Int32`

I get no autocomplete, hint or anything.

**Attempt 2**  
I clone and build scry from source, then copy the `scry` executable to my project folder. At this point the project folder only contains two files, a `testproject.cr` file and the `scry` executable. No folder structure.

I go to the plugin’s settings page and set the `Crystal-lang: Server` setting to  
`/Users/zolo/Desktop/testproject/scry`, then reload VSC.

Upon returning, after selecting testproject.cr, scry seems to fire up, but fails with [this error](https://github.com/crystal-lang-tools/scry/issues/176). (It tries to generate some cache files, but fails due to a path issue)

Is there anything in this that stands out to you that could be the problem?  
Can you share your project config and how it is set up? Maybe that’s the issue for me.  
Do I need to set the `Crystal-lang: Compiler` setting in the plugin?

* * *

**macOS 10.15.3**  
**VSC** : 1.47.3  
**Crystal** 0.35.1 (2020-06-19)  
**LLVM** : 10.0.0  
**Default target** : x86\_64-apple-macosx

---

<div class="post-metadata">

**Author:** ![watzon](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/watzon/32/481_2.png) [@watzon](https://forum.crystal-lang.org/u/watzon)\
**Post date:** [August 5, 2020, 4:19pm UTC](https://forum.crystal-lang.org/t/autocomplete/2408/12 "2020-08-05T16:19:12Z")

</div>

I understand the complaints. They’re some of the same ones I have regarding the state of tooling in Crystal. Scry is a broken mess which hasn’t worked well since I started trying to use it years ago, the Crystal Language VS Code extension works, but it doesn’t feature intellisense or any “modern” refactoring tools unless you use Scry, and even then it still doesn’t work well because of the state of Scry itself.

Add all that to the fact that we still don’t have Windows support, cross compilation is a nightmare, compilation itself takes way too long on bigger projects, etc., I am unfortunately losing a bit of hope.
