# Bespoke IDE for Julia desperately needed!

**URL:** <https://discourse.julialang.org/t/bespoke-ide-for-julia-desperately-needed/39251>\
**Category:** Tooling\
**Tags:** editors\
**Created:** [May 10, 2020, 11:27pm UTC](https://discourse.julialang.org/t/bespoke-ide-for-julia-desperately-needed/39251 "2020-05-10T23:27:11Z")\
**Posts on this page:** 20\
**Page:** 2

<div class="post-metadata">

**Author:** ![compleat](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/compleat/32/8958_2.png) [@compleat](https://discourse.julialang.org/u/compleat)\
**Post date:** [May 11, 2020, 11:13am UTC](https://discourse.julialang.org/t/bespoke-ide-for-julia-desperately-needed/39251/21 "2020-05-11T11:13:52Z")

</div>

Hi Johnh, Thanks for your interest. I am an academic, working across many areas, including Statistics, Machine Learning, Mathematical Modelling, Operations Research, Finance/Econometrics, Optimization.

Thanks in advance for your suggestions and recommendations.

---

<div class="post-metadata">

**Author:** ![johnh](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/johnh/32/3615_2.png) [@johnh](https://discourse.julialang.org/u/johnh)\
**Post date:** [May 11, 2020, 11:18am UTC](https://discourse.julialang.org/t/bespoke-ide-for-julia-desperately-needed/39251/22 "2020-05-11T11:18:01Z")

</div>

I use Atom and Juno both on Fedora linux and Windows 10  
I recently got a new windows 10 laptop and was very pleasantly surprised yesterday that a simple  
apm-beta install uber-juno set up everything for me.

The main problems seen on here with Atom are when there are upgrades.  
I do understand the you get frustrated. But computers are at their hear rxtremely dumb. If they do not get fed exacrlt the right bits and bytes they fall over.

---

<div class="post-metadata">

**Author:** ![compleat](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/compleat/32/8958_2.png) [@compleat](https://discourse.julialang.org/u/compleat)\
**Post date:** [May 11, 2020, 11:23am UTC](https://discourse.julialang.org/t/bespoke-ide-for-julia-desperately-needed/39251/23 "2020-05-11T11:23:49Z")

</div>

Yes, maybe what I am talking about is more a need for a Bespoke update/upgrade path if a Bespoke IDE itself is not practical.  
If there were any of the IDE client developers who were in direct contact with the Julia developers (so that updates could be ensured to be mutually compatible) that would be great! A big ask, I guess!

Thanks

---

<div class="post-metadata">

**Author:** ![davidanthoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/davidanthoff/32/223493_2.png) [@davidanthoff](https://discourse.julialang.org/u/davidanthoff)\
**Post date:** [May 11, 2020, 11:34am UTC](https://discourse.julialang.org/t/bespoke-ide-for-julia-desperately-needed/39251/24 "2020-05-11T11:34:57Z")

</div>

I think we never had any issues with updates for the VS Code extension. We take great care to ship everything that we need with the extension itself and not rely on anything in the `.julia` folder, and that generally makes our update story very robust.

---

<div class="post-metadata">

**Author:** ![compleat](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/compleat/32/8958_2.png) [@compleat](https://discourse.julialang.org/u/compleat)\
**Post date:** [May 11, 2020, 11:42am UTC](https://discourse.julialang.org/t/bespoke-ide-for-julia-desperately-needed/39251/25 "2020-05-11T11:42:13Z")

</div>

That is a strong selling point! I am even more keen to try it now!

---

<div class="post-metadata">

**Author:** ![jonathanBieler](https://avatars.discourse-cdn.com/v4/letter/j/82dd89/32.png) [@jonathanBieler](https://discourse.julialang.org/u/jonathanBieler)\
**Post date:** [May 11, 2020, 12:24pm UTC](https://discourse.julialang.org/t/bespoke-ide-for-julia-desperately-needed/39251/26 "2020-05-11T12:24:02Z")

</div>

I did wrote an [IDE](https://www.youtube.com/watch?v=AbzNUNfwSGc) in Julia, it’s a bit wonky and hard to install but I still prefer it over the alternatives.

One feature I added recently that is awesome is history autocomplete in the editor, basically you can search in the console history and insert the piece of code in the editor, it’s super useful to recall one liners you’ve used in the past.

---

<div class="post-metadata">

**Author:** ![compleat](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/compleat/32/8958_2.png) [@compleat](https://discourse.julialang.org/u/compleat)\
**Post date:** [May 11, 2020, 1:17pm UTC](https://discourse.julialang.org/t/bespoke-ide-for-julia-desperately-needed/39251/27 "2020-05-11T13:17:35Z")

</div>

Looked cool so I decided to try it.

Unfortunately when I tried to install the dependencies using the links you gave I got:

**ERROR:** could not find project file in package at [GitHub - jonathanBieler/JuliaWordsUtils.jl](https://github.com/jonathanBieler/JuliaWordsUtils.jl.git)

**ERROR:** could not find project file in package at [GitHub - jonathanBieler/GtkTextUtils.jl](https://github.com/jonathanBieler/GtkTextUtils.jl.git)

**ERROR:** could not find project file in package at [GitHub - jonathanBieler/GtkIDE.jl: A Gtk based IDE for Julia](https://github.com/jonathanBieler/GtkIDE.jl.git)

Any hints?

[If installing only involves pasting these lines then that is not difficult]

Thanks

---

<div class="post-metadata">

**Author:** ![jonathanBieler](https://avatars.discourse-cdn.com/v4/letter/j/82dd89/32.png) [@jonathanBieler](https://discourse.julialang.org/u/jonathanBieler)\
**Post date:** [May 11, 2020, 1:50pm UTC](https://discourse.julialang.org/t/bespoke-ide-for-julia-desperately-needed/39251/28 "2020-05-11T13:50:14Z")

</div>

You’re using v1.4 right ? I’ll try to fix those and message you when it’s done.

---

<div class="post-metadata">

**Author:** ![compleat](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/compleat/32/8958_2.png) [@compleat](https://discourse.julialang.org/u/compleat)\
**Post date:** [May 11, 2020, 2:10pm UTC](https://discourse.julialang.org/t/bespoke-ide-for-julia-desperately-needed/39251/29 "2020-05-11T14:10:41Z")

</div>

Great - thanks.

BTW I tried Julia1.2 and couldn’t get it working either. Perhaps I should install Julia 1.0 to try it (in case you are delayed in updating it)?

---

<div class="post-metadata">

**Author:** ![compleat](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/compleat/32/8958_2.png) [@compleat](https://discourse.julialang.org/u/compleat)\
**Post date:** [May 12, 2020, 11:31am UTC](https://discourse.julialang.org/t/bespoke-ide-for-julia-desperately-needed/39251/30 "2020-05-12T11:31:39Z")

</div>

Hi. Thanks. This (VS-julia) seems to work for Mac and looks nice.

Unfortunately, I am looking for a solution that would work on my Ubuntu server as well.

I tried installing VS on the server (18.04) but it doesn’t work.  
I just get a transparent window. Looking at the postings, there seem to be lots of windowing issues with linux which haven’t been resolved.  
I spent an hour or so trying various suggestions posted online, but no luck.  
I may have to wait and try this option again later.  
Maybe I’ll use it some on my Mac - Thanks!

---

<div class="post-metadata">

**Author:** ![davidanthoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/davidanthoff/32/223493_2.png) [@davidanthoff](https://discourse.julialang.org/u/davidanthoff)\
**Post date:** [May 12, 2020, 11:47am UTC](https://discourse.julialang.org/t/bespoke-ide-for-julia-desperately-needed/39251/31 "2020-05-12T11:47:39Z")

</div>

> [@compleat](#):
>
> I tried installing VS on the server (18.04) but it doesn’t work.

Maybe the [VS Code Remote](https://code.visualstudio.com/docs/remote/ssh) solution might work for you?

---

<div class="post-metadata">

**Author:** ![compleat](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/compleat/32/8958_2.png) [@compleat](https://discourse.julialang.org/u/compleat)\
**Post date:** [May 12, 2020, 12:19pm UTC](https://discourse.julialang.org/t/bespoke-ide-for-julia-desperately-needed/39251/32 "2020-05-12T12:19:11Z")

</div>

That looks really cool! I’ll have to play around with it!

Thanks again!

---

<div class="post-metadata">

**Author:** ![non-Jedi](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/non-jedi/32/3645_2.png) [@non-Jedi](https://discourse.julialang.org/u/non-Jedi)\
**Post date:** [May 12, 2020, 1:02pm UTC](https://discourse.julialang.org/t/bespoke-ide-for-julia-desperately-needed/39251/33 "2020-05-12T13:02:15Z")

</div>

I’ve put some screencasts of various LanguageServer.jl + eglot features in the README of eglot-jl.

> **[GitHub - non-Jedi/eglot-jl: Wrapper for using Julia LanguageServer.jl with...](https://github.com/non-Jedi/eglot-jl)**
>
> Wrapper for using Julia LanguageServer.jl with emacs eglot - GitHub - non-Jedi/eglot-jl: Wrapper for using Julia LanguageServer.jl with emacs eglot

The minimum installation directions would be:

- [add melpa to `package-archives`](https://melpa.org/#/getting-started)
- `M-x package-install` eglot-jl
- Add `(setq eglot-connect-timeout 120)` to init
- Add `(eglot-jl-init)` to init

jupyter-emacs is actually the more fiddly of the two (because of the jupyter installation not because of emacs), but I’ll try to put together minimal config guide later. It can be installed by the same method as `eglot-jl` above. You just have to mess around with IJulia and your `PATH` to make sure that when `jupyter` executes it’s the installation of jupyter which has an IJulia kernelspec installed.

Unless you’re happy with the above vs-code/atom solutions in which case I can save some time for both of us by not doing so. 😛

---

<div class="post-metadata">

**Author:** ![orialb](https://avatars.discourse-cdn.com/v4/letter/o/65b543/32.png) [@orialb](https://discourse.julialang.org/u/orialb)\
**Post date:** [May 12, 2020, 1:09pm UTC](https://discourse.julialang.org/t/bespoke-ide-for-julia-desperately-needed/39251/34 "2020-05-12T13:09:45Z")

</div>

I’ll take this opportunity to ask an eglot question:  
Say you are working inside a package you are developing, do you get completions for functions coming from modules which are used by the package, but where the `using` statements are in another file (e.g. the entry file defining the module has some `using` statements and `include`s some other files, and you are working inside one of the other files) ?  
Also do you get completions for functions defined in other files which belong to the package you are working on?

Last time I checked I was getting only completions from Base, stuff defined in the current file and packages being loaded in the current file.

---

<div class="post-metadata">

**Author:** ![non-Jedi](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/non-jedi/32/3645_2.png) [@non-Jedi](https://discourse.julialang.org/u/non-Jedi)\
**Post date:** [May 12, 2020, 1:19pm UTC](https://discourse.julialang.org/t/bespoke-ide-for-julia-desperately-needed/39251/35 "2020-05-12T13:19:09Z")

</div>

> [@orialb](#):
>
> Say you are working inside a package you are developing, do you get completions for functions coming from modules which are used by the package, but where the `using` statements are in another file (e.g. the entry file defining the module has some `using` statements and `include` s some other files, and you are working inside one of the other files) ?

Just tested and it’s working for me in the case I tested (once the language server is completely ready including the symbol server having cached all manifest packages). If you have a case where it’s not working, please file a bug against LanguageServer.jl

> [@orialb](#):
>
> Also do you get completions for functions defined in other files which belong to the package you are working on?

Yes.

In general in my experience completion reliability of the language server has improved by leaps and bounds in the past 6 months to a year.

---

<div class="post-metadata">

**Author:** ![compleat](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/compleat/32/8958_2.png) [@compleat](https://discourse.julialang.org/u/compleat)\
**Post date:** [May 12, 2020, 1:45pm UTC](https://discourse.julialang.org/t/bespoke-ide-for-julia-desperately-needed/39251/36 "2020-05-12T13:45:11Z")

</div>

Hi and Thanks for that.

I recall that I had tried that, and installed melpa to the archives as instructed.  
But had not succeeded beyond there.

Now when I try using M-x package-install (as suggested above), it insists on adding a ‘-’ after install and would not allow the syntax

M-x package-install eglot-jl

Are you sure of the syntax of that? Does it mean I don’t have things installed correctly? Or did you mean M-x package-install-file…?

Thanks again

---

<div class="post-metadata">

**Author:** ![non-Jedi](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/non-jedi/32/3645_2.png) [@non-Jedi](https://discourse.julialang.org/u/non-Jedi)\
**Post date:** [May 12, 2020, 1:52pm UTC](https://discourse.julialang.org/t/bespoke-ide-for-julia-desperately-needed/39251/37 "2020-05-12T13:52:31Z")

</div>

Run just `M-x package-install`; afterward it will interactively prompt for the package to be installed. At that point you type “eglot-jl”.

In general, I’d recommend reading through [the emacs manual](https://www.gnu.org/software/emacs/manual/html_node/emacs/index.html) (accessed within emacs by `C-h i` or by invoking `M-x info` and selecting the “Emacs” node). Here’s the section on package management:

[https://www.gnu.org/software/emacs/manual/html\_node/emacs/Packages.html#Packages](https://www.gnu.org/software/emacs/manual/html_node/emacs/Packages.html#Packages)

---

<div class="post-metadata">

**Author:** ![compleat](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/compleat/32/8958_2.png) [@compleat](https://discourse.julialang.org/u/compleat)\
**Post date:** [May 12, 2020, 4:33pm UTC](https://discourse.julialang.org/t/bespoke-ide-for-julia-desperately-needed/39251/38 "2020-05-12T16:33:27Z")

</div>

OK, that worked - thanks.

Sorry, but could you please tell me where to add  
`(setq eglot-connect-timeout 120)` to init  
and `(eglot-jl-init)` to init  
(I assume .emacs is ok to use, but where in that file do  
these go?)

Thanks - nearly there, I think!

---

<div class="post-metadata">

**Author:** ![non-Jedi](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/non-jedi/32/3645_2.png) [@non-Jedi](https://discourse.julialang.org/u/non-Jedi)\
**Post date:** [May 12, 2020, 4:39pm UTC](https://discourse.julialang.org/t/bespoke-ide-for-julia-desperately-needed/39251/39 "2020-05-12T16:39:22Z")

</div>

Your emacs init file is just a series of elisp expressions which are executed sequentially (similar to how a Julia script works but with more parentheses). For those 2 particular expressions, it shouldn’t matter where they’re placed as long as it’s at the top level (not inside any parentheses).

[https://www.gnu.org/software/emacs/manual/html\_node/emacs/Init-File.html](https://www.gnu.org/software/emacs/manual/html_node/emacs/Init-File.html)

---

<div class="post-metadata">

**Author:** ![compleat](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/compleat/32/8958_2.png) [@compleat](https://discourse.julialang.org/u/compleat)\
**Post date:** [May 12, 2020, 5:04pm UTC](https://discourse.julialang.org/t/bespoke-ide-for-julia-desperately-needed/39251/40 "2020-05-12T17:04:27Z")

</div>

OK great. Do I need to start the language server from Julia and type M-x eglot or something to get going? I am sorry to be so ignorant, but it seems all the ‘how to’ information online assumes much more understanding than I have. [PS I have been using Emacs since it superseded TECO (which I used to teach at a community college), just not doing very complicated things, but rather doing the basics well.]

Thanks

[Previous page](https://discourse.julialang.org/t/bespoke-ide-for-julia-desperately-needed/39251.md?page=1)

[Next page](https://discourse.julialang.org/t/bespoke-ide-for-julia-desperately-needed/39251.md?page=3)
