# \[ANN\] Juno 0.9

**URL:** <https://discourse.julialang.org/t/ann-juno-0-9/27220>\
**Category:** Juno\
**Tags:** announcement, juno\
**Created:** [August 6, 2019, 2:18pm UTC](https://discourse.julialang.org/t/ann-juno-0-9/27220 "2019-08-06T14:18:35Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

**Author:** ![aviatesk](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aviatesk/32/7610_2.png) [@aviatesk](https://discourse.julialang.org/u/aviatesk)\
**Post date:** [August 6, 2019, 2:18pm UTC](https://discourse.julialang.org/t/ann-juno-0-9/27220/1 "2019-08-06T14:18:35Z")

</div>

Hi all,

Juno 0.9 is out and brings you lots of bugfixes, improvements, and some exiting new features.  
(Thanks for @pfitzseb for letting me take an release honour on behalf of him.)

## Release notes

### New features

- On hover datatip: [#145](https://github.com/JunoLab/Atom.jl/pull/145), [#573](https://github.com/JunoLab/atom-julia-client/pull/573)
- Jump to definition on click: [#573](https://github.com/JunoLab/atom-julia-client/pull/573)

### Improvements

- Formatter now respects indent and line-length settings: [22449d5](https://github.com/JunoLab/Atom.jl/commit/22449d5a7e71d7f9693e3c221ac0d5dcd41c66b0)
- Files can be opened in preview mode: [#579](https://github.com/JunoLab/atom-julia-client/pull/579), [#208](https://github.com/JunoLab/atom-ink/pull/208)
- Auto-completions show description for non-exported bindings and keywords: [#147](https://github.com/JunoLab/Atom.jl/pull/147)

### Bugfixes

- Fix the build problem within the latest version of Atom
- Temporarily workaround Atom crash on OS notifications on macOS: [#581](https://github.com/JunoLab/atom-julia-client/pull/581)
- Fix progress-bar behavior at the final iteration: [#337](https://github.com/JunoLab/Juno.jl/pull/337)
- `InteractiveUtils.edit` can now open non-Julia files: [#146](https://github.com/JunoLab/Atom.jl/pull/146)
- Fix CI builds

## Installation

**Important** : Restart Atom before updating julia-client or ink and do not start a Julia session.

If that does not work, close all Atom windows and type

```bash
apm update

```

into your terminal. If that also doesn’t work, try

```bash
apm uninstall ink
apm uninstall julia-client
apm install ink
apm install julia-client

```

instead.

**Note** : If you are on Linux and not using the official releases, it is possible  
that you are still on an older version of Atom (e.g. 1.38) built with a new version  
of Electron (which you can check with `atom -v` in a terminal; the official 1.38 release  
is built with Electron 2.x). If that is the case you will also need this Juno release,  
which you’ll need to explicitly install with

```bash
apm install julia-client@0.9.0

```

### Versions

**Important** : This release _requires_ Atom 1.39 or higher.

As always, make sure all Julia and Atom packages are up-to-date.

Julia packages:

- Atom.jl version: 0.9.0
- Juno.jl version: 0.7.1

Atom packages:

- julia-client version: 0.9.0
- ink version: 0.10.12

## The experimental “On hover” features

### Overview

 ![onhovers](https://global.discourse-cdn.com/julialang/original/3X/6/4/648673331c45a77ce655b06f1b38944459ff6976.gif)

### Installation

**Important** : In order to enjoy the new “On hover” features, you need to install additional Atom packages by yourself:

Search and install [atom-ide-datatip](https://github.com/atom-ide-community/atom-ide-datatip), [atom-ide-markdown-service](https://github.com/atom-ide-community/atom-ide-markdown-service) and [hyperclick](https://github.com/facebookarchive/hyperclick) packages in `File ⟶ Settings ⟶ Install` within Atom, or run

```bash
apm install atom-ide-datatip atom-ide-markdown-service hyperclick

```

That’s it. You don’t need any additional settings other than that.

### Usage

Let’s start Atom, fire up Julia and bring your cursor on some word you want to inspect.  
If documentation bindings exist for it, the documentation would appear. Additionally you can click the word while pressing ctrl key (on macOS cmd key) and jump to its definition.

### Uninstallation

If you don’t like these features, just uninstall the additional packages:

```bash
apm uninstall atom-ide-datatip atom-ide-markdown-service

```

Then, you won’t have any effect from these features.

### Notes

Since these “On hover” features are very experimental, we would appreciate your feedbacks.  
In our current plan, we are very likely to drop the need for the above package dependencies (especially atom-ide-datatip and atom-ide-markdown-service), and thus UIs can change significantly in the future.

---

<div class="post-metadata">

**Author:** ![aviatesk](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aviatesk/32/7610_2.png) [@aviatesk](https://discourse.julialang.org/u/aviatesk)\
**Post date:** [August 6, 2019, 2:32pm UTC](https://discourse.julialang.org/t/ann-juno-0-9/27220/2 "2019-08-06T14:32:44Z")

</div>

**Additional side note**

If you’re an user of [atom-ide-ui](https://github.com/facebookarchive/atom-ide-ui), you can just keep using it instead of the packages above (atom-ide-datatip, atom-ide-markdown-service and hyperclick) in order to use “On hover” features in Juno.

If you go with atom-ide-ui, I highly recommend you disable unnecessary modules within its settings (`File ⟶ Settings ⟶ Packages ⟶ atom-ide-ui ⟶ Enabled Features`) to shorten its activation time.  
When just using Juno’s “On hover” features, you can disable all the features other than `Datatips`, `atom-ide-global features` and `hyperclick feature`.

---

<div class="post-metadata">

**Author:** ![carstenbauer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/carstenbauer/32/4981_2.png) [@carstenbauer](https://discourse.julialang.org/u/carstenbauer)\
**Post date:** [August 6, 2019, 3:40pm UTC](https://discourse.julialang.org/t/ann-juno-0-9/27220/3 "2019-08-06T15:40:01Z")

</div>

I just updated and tried the hover feature on Windows. Although I generally like the feature, it feels like I can’t place my cursor anywhere without a popup showing up (it even pops up if it didn’t find documentation for a thing). Perhaps it’s better to bind this to somekey+hover or so?

Also, for my taste, the popup isn’t disappearing fast enough when I unhover a word. I’d like it if it were really snappy.

As to the ctrl+click to go to definition feature, it appear to be not working reliably for me. `Base.size`, `Base.length`, and a bunch of self-defined functions all don’t seem to work. On the other hand, `@boundscheck` did work for some reason. Is this expected at this early stage?

Anyways, thanks for the continuous great work!

---

<div class="post-metadata">

**Author:** ![pfitzseb](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pfitzseb/32/45566_2.png) [@pfitzseb](https://discourse.julialang.org/u/pfitzseb)\
**Post date:** [August 6, 2019, 4:08pm UTC](https://discourse.julialang.org/t/ann-juno-0-9/27220/4 "2019-08-06T16:08:06Z")

</div>

> [@carstenbauer](#):
>
> I just updated and tried the hover feature on Windows. Although I generally like the feature, it feels like I can’t place my cursor anywhere without a popup showing up (it even pops up if it didn’t find documentation for a thing). Perhaps it’s better to bind this to +hover or so?
> 
> Also, for my taste, the popup isn’t disappearing fast enough when I unhover a word. I’d like it if it were really snappy.

Yeah that’s the reason why we want our own UI for that – I don’t really like what atom-ide-datatip is doing much either.

> [@carstenbauer](#):
>
> As to the ctrl+click to go to definition feature, it appear to be not working reliably for me. `Base.size` , `Base.length` , and a bunch of self-defined functions all don’t seem to work. On the other hand, `@boundscheck` did work for some reason. Is this expected at this early stage?

No, that shouldn’t be happening. Can you try Ctrl-J Ctrl-G for those cases? If that works then I have a fix on julia-client master.

---

<div class="post-metadata">

**Author:** ![carstenbauer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/carstenbauer/32/4981_2.png) [@carstenbauer](https://discourse.julialang.org/u/carstenbauer)\
**Post date:** [August 6, 2019, 4:33pm UTC](https://discourse.julialang.org/t/ann-juno-0-9/27220/5 "2019-08-06T16:33:43Z")

</div>

Yes, Ctrl-J Ctrl-G works (it shows me a popup list of methods I can jump to).

Unrelated to this, is there a way to have the Julia process in the console start automatically on Atom startup?

---

<div class="post-metadata">

**Author:** ![aviatesk](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aviatesk/32/7610_2.png) [@aviatesk](https://discourse.julialang.org/u/aviatesk)\
**Post date:** [August 6, 2019, 4:40pm UTC](https://discourse.julialang.org/t/ann-juno-0-9/27220/6 "2019-08-06T16:40:01Z")

</div>

In your init.js script, you can have something like:

```nohighlight
atom.packages.onDidActivateInitialPackages(() => {
  atom.commands.dispatch('atom-workspace', 'julia-client:open-a-repl');
  atom.commands.dispatch('atom-workspace', 'julia-client:start-julia');
})

```

and then this would do the work.  
(I’ve not tested that tho)

---

<div class="post-metadata">

**Author:** ![pfitzseb](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pfitzseb/32/45566_2.png) [@pfitzseb](https://discourse.julialang.org/u/pfitzseb)\
**Post date:** [August 6, 2019, 4:47pm UTC](https://discourse.julialang.org/t/ann-juno-0-9/27220/7 "2019-08-06T16:47:44Z")

</div>

If you’re using the Process Cycler then we’re already technically starting the Julia process when Atom is started, we just don’t show you. Do open an issue if you’d like to see this changed 🙂

---

<div class="post-metadata">

**Author:** ![carstenbauer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/carstenbauer/32/4981_2.png) [@carstenbauer](https://discourse.julialang.org/u/carstenbauer)\
**Post date:** [August 6, 2019, 4:54pm UTC](https://discourse.julialang.org/t/ann-juno-0-9/27220/8 "2019-08-06T16:54:36Z")

</div>

It says, `unexpected .`

---

<div class="post-metadata">

**Author:** ![pfitzseb](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pfitzseb/32/45566_2.png) [@pfitzseb](https://discourse.julialang.org/u/pfitzseb)\
**Post date:** [August 6, 2019, 5:01pm UTC](https://discourse.julialang.org/t/ann-juno-0-9/27220/9 "2019-08-06T17:01:18Z")

</div>

You can try

```julia
atom.packages.onDidActivatePackage (p) ->
  if p.name is 'julia-client'
    juno = p.mainModule
    juno.connection.boot()

```

since you seem to still have a `init.coffee`.

---

<div class="post-metadata">

**Author:** ![carstenbauer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/carstenbauer/32/4981_2.png) [@carstenbauer](https://discourse.julialang.org/u/carstenbauer)\
**Post date:** [August 6, 2019, 5:04pm UTC](https://discourse.julialang.org/t/ann-juno-0-9/27220/10 "2019-08-06T17:04:25Z")

</div>

Works, thanks!

---

<div class="post-metadata">

**Author:** ![pfitzseb](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pfitzseb/32/45566_2.png) [@pfitzseb](https://discourse.julialang.org/u/pfitzseb)\
**Post date:** [August 6, 2019, 5:38pm UTC](https://discourse.julialang.org/t/ann-juno-0-9/27220/11 "2019-08-06T17:38:26Z")

</div>

> [@pfitzseb](#):
>
> No, that shouldn’t be happening. Can you try Ctrl-J Ctrl-G for those cases? If that works then I have a fix on julia-client master.

Alright, that bug should be fixed with julia-client 0.9.1.

---

<div class="post-metadata">

**Author:** ![baggepinnen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/baggepinnen/32/693_2.png) [@baggepinnen](https://discourse.julialang.org/u/baggepinnen)\
**Post date:** [August 7, 2019, 3:53am UTC](https://discourse.julialang.org/t/ann-juno-0-9/27220/12 "2019-08-07T03:53:52Z")

</div>

I find the new hover feature great 😃  
It breaks very easily though, in some files it shows nothing at all for any symbol (the progress bar indicator flickers for a second or so), whereas in other files it works well. It does not have anything to do with the contents of the file, as if I copy everything and paste it in a new file, it works. Edit: actually, copying all text in the file and pasting it into the same file solves the problem as well 😛

---

<div class="post-metadata">

**Author:** ![aviatesk](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aviatesk/32/7610_2.png) [@aviatesk](https://discourse.julialang.org/u/aviatesk)\
**Post date:** [August 7, 2019, 6:31am UTC](https://discourse.julialang.org/t/ann-juno-0-9/27220/13 "2019-08-07T06:31:52Z")

</div>

Thanks for your report 🙂

> [@baggepinnen](#):
>
> It breaks very easily though, in some files it shows nothing at all for any symbol (the progress bar indicator flickers for a second or so)

I’ve never seen this issue while the development. Can’t you get hovers even for keywords `begin` ?

If you’re talking about documentation bindings within specific modules, still I made on-hover features “module-sensitive” for _every_ opened files, thus I wonder in which situation you happened to face the problem.

---

<div class="post-metadata">

**Author:** ![baggepinnen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/baggepinnen/32/693_2.png) [@baggepinnen](https://discourse.julialang.org/u/baggepinnen)\
**Post date:** [August 7, 2019, 6:51am UTC](https://discourse.julialang.org/t/ann-juno-0-9/27220/14 "2019-08-07T06:51:15Z")

</div>

Once hover stops working for a file, I can not get any popups for anything, not even keywords. Hovering seems to stop working whenever an exception has been thrown by code evaluated in a particular file. If I copy-paste contents of a file to make sure hover is working, and then evaluate the line (ctrl+enter)

```julia
error()

```

hover stops working.  
Edit: I’ve narrowed it down to hover not working whenever there is something marked red in the file, such as the result from `error()` above. If I clear that result, it works again

---

<div class="post-metadata">

**Author:** ![pfitzseb](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pfitzseb/32/45566_2.png) [@pfitzseb](https://discourse.julialang.org/u/pfitzseb)\
**Post date:** [August 7, 2019, 8:18am UTC](https://discourse.julialang.org/t/ann-juno-0-9/27220/15 "2019-08-07T08:18:29Z")

</div>

Yeah, I can repro that. That’s a bug with `atom-ide-datatip`… one more reason to implement this properly ourselves.

---

<div class="post-metadata">

**Author:** ![pfitzseb](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pfitzseb/32/45566_2.png) [@pfitzseb](https://discourse.julialang.org/u/pfitzseb)\
**Post date:** [August 7, 2019, 1:48pm UTC](https://discourse.julialang.org/t/ann-juno-0-9/27220/16 "2019-08-07T13:48:59Z")

</div>

The latest updates (julia-client 0.9.4 and Atom.jl 0.9.1) bring a few more bugfixes:

- Meta-Enter now works as intended in terminals ([#585](https://github.com/JunoLab/atom-julia-client/pull/585), thanks to @NHDaly for the help).
- More error handling for datatips ([#583](https://github.com/JunoLab/atom-julia-client/pull/583)).
- Closing parens/brackets/curlies are treated like `end` when determining what code to evaluate ([#587](https://github.com/JunoLab/atom-julia-client/pull/587)). That allows e.g.  
 ![this](https://global.discourse-cdn.com/julialang/original/3X/2/1/214c7cb7646bef9834b1b55e4519845226b6e398.png)  
to just work.
- The keybindings shown in the toolbar’s tooltips are now correct on all systems ([#339](https://github.com/JunoLab/Juno.jl/issues/339)).
- Size of inline results is now more aggressively limited, so there _should_ be no more crashes/hangs when trying to display large results inline or in the workspace ([#221](https://github.com/JunoLab/Juno.jl/issues/221) and [#318](https://github.com/JunoLab/Juno.jl/issues/318)).

---

<div class="post-metadata">

**Author:** ![xiaodai](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/xiaodai/32/15937_2.png) [@xiaodai](https://discourse.julialang.org/u/xiaodai)\
**Post date:** [August 31, 2019, 1:14pm UTC](https://discourse.julialang.org/t/ann-juno-0-9/27220/17 "2019-08-31T13:14:13Z")

</div>

Gotta say Juno now feels alot snappier! Thanks for big improvements!
