Commit graph

678 commits

Author SHA1 Message Date
Jonatan Kłosko
87a17f1fc5 Respect \r in individual stdout results 2021-12-22 15:48:35 +01:00
José Valim
4badf40afc Add TODOs 2021-12-17 23:24:17 +01:00
José Valim
8f25c25c7a
Trigger the GC after evaluation and intellisense (#807)
This reduces memory consumption by the runtime,
especially when using intellisense features which
may generate a lot of garbage.

There is an odd chance this can generate slow downs
in certain cases but, for that to happen, I would
expect the notebook to either have a lot of data
allocated or many users interacting with it and
triggering completion and other features at the same
time.

We don't worry about the second case because the
goal is to move completion to an ephemeral separate
process anyway, which would remove the need for GC
during completion altogether (and allow several
completions to run concurrently). If this happens,
we can consider moving GC out of the evaluator and
have the session explicitly trigger it once it
terminates a chain of evaluation.

It is also worth triggering the GC whenever
we forget an evaluation context.
2021-12-15 12:25:09 +01:00
Jonatan Kłosko
877ab913c8
Display full module name in hover docs (#798)
* Display full module name in hover docs

* Use inspect

* Return atom names from identifier matcher
2021-12-12 21:34:16 +01:00
Max Veytsman
4aa5447e9d
Add completion for struct keys (#793)
* Add completion for struct keys

Largely ported from `IEx.Autocomplete`.

* Add test for __exception__ field in struct

* Fix exception test

* Fix exceptions assetion

* Create `:in_struct_field` identifier

Along with a refactor

* Fix typespecs for `:map_field`

* Address feedback

* Update lib/livebook/intellisense/identifier_matcher.ex

Co-authored-by: José Valim <jose.valim@gmail.com>

* Use markdown snippet for both docs

* Fix tests

Co-authored-by: José Valim <jose.valim@gmail.com>
2021-12-12 21:19:17 +01:00
Jonatan Kłosko
6f53e3db6a
Add support for form control (#790)
* Add support for form control

* Handle report_changes map

* Assert on input/control events
2021-12-12 00:09:35 +01:00
José Valim
bb27fc9fa8 Remove compile time deps from erl_dist 2021-12-10 23:38:57 +01:00
José Valim
8cb511fb87 Move required cell to autocomplation section for clarity 2021-12-10 16:04:48 +01:00
José Valim
69da78c13a Disable consolidation in distributed notebook, closes #786 2021-12-10 11:30:42 +01:00
Jonatan Kłosko
fef322706f
Revert to URI.parse/1 (#770) 2021-12-08 16:11:04 +01:00
Jonatan Kłosko
89ea67861f
Improve "changed" indicator and batch evaluation shortcuts (#766)
* Make cell status italic when content changed

* Add Ctrl+Shift+Enter for evaluating all cells

* Improve the behaviour of evaluating all cells

* Fix typo
2021-12-07 19:14:32 +01:00
Jonatan Kłosko
b97cde0879
Improve completion (#756)
* Don't show variable value in intellisense

* Don't complete quoted atoms
2021-12-05 16:49:51 +01:00
Jonatan Kłosko
be3225fe3a
Bump Kino in explore notebooks (#755) 2021-12-05 16:26:46 +01:00
Jonatan Kłosko
d909272746
Improve completion (#747)
* Add keywords to completion

* Fix signature request caching for call without parentheses

* Don't insert parentheses for def* macros

* Don't trigger missing runtime message when auto completion is enabled

* Don't insert parentheses for keyword macros

* Improve completion of env macros

* Apply review comments

* Update locals without parentheses

* Apply suggestions from code review

Co-authored-by: José Valim <jose.valim@dashbit.co>

* Format

Co-authored-by: José Valim <jose.valim@dashbit.co>
2021-12-05 14:58:30 +01:00
Jonatan Kłosko
4b5ea87b3d
Include notebook name in the autosaved notebook path (#748)
* Include notebook name in the autosaved notebook path

* Add test for persisting unsaved notebooks
2021-12-05 14:58:19 +01:00
Kevin
40e3a61e00
Expand System.tmp_dir!() path by default (#754)
Since System.tmp_dir!/0 returns the path with backslashes instead of
frontslash it is piped to Path.expand/1 to normalize it to frontslashes.
2021-12-05 14:58:07 +01:00
Jonatan Kłosko
f0606b109d
Automatically back up notebooks without a file (#736)
* Improve file select layout on long paths

* Automatically back up notebooks without a file

* Run formatter

* Add margin when there are no sections

* Add an informative note about autosave directory

* Store autosave path instead of file in the config

* Rename autosave dir to autosave path

* Fix insert mode escape on section headlines

* Show ellipsis on selected file too

* Always create the default directory

* Apply review comments
2021-12-04 16:29:14 +01:00
Jonatan Kłosko
037c425643
Bump Kino version in explore notebooks (#744) 2021-12-04 14:44:53 +01:00
Jonatan Kłosko
ab0a237ab6
Completion adjustments (#740)
* Show exceptions at the end of completion list

* Don't complete hidden functions
2021-12-03 23:28:34 +01:00
José Valim
18d8eccc9e
Do not try to accidentally load elixir.beam (#739) 2021-12-03 22:50:45 +01:00
Jonatan Kłosko
e2490c0f7f
Implement signature intellisense (#640)
* Remove Code.Fragment backport

* Fix tests compatibility with Elixir 1.13

* Implement signature intellisense

* Don't show signatures on module attributes

* Add tests for calls with do-end block

* Unify spec formatting

* Insert parentheses when completing a function call

* Send all text until cursor in signature request

* Add configuration for completion/signature popups (#693)

* Add editor settings form

* Add configuration for intellisense defaults

* Read fresh settings when editor mounts

* Scope attribute names

* Fix disabled button styling

* Simplify signature box and enable by default

* Split settings into system and user sections

* Update lib/livebook_web/live/settings_live.ex

Co-authored-by: José Valim <jose.valim@dashbit.co>

* Update lib/livebook_web/live/settings_live.ex

Co-authored-by: José Valim <jose.valim@dashbit.co>

Co-authored-by: José Valim <jose.valim@dashbit.co>

* Fix spacing in documentation tests

Co-authored-by: José Valim <jose.valim@dashbit.co>
2021-12-03 21:57:21 +01:00
Jonatan Kłosko
47d29cb389
Require Elixir 1.13 (#737)
* Bump required Elixir version to 1.13 and fix TODOs

* Fix tests

* Remove the deprecated URI.parse/1

* Bump Docker base image

* Bump Elixir on CI
2021-12-03 21:47:20 +01:00
Jonatan Kłosko
ac6b423e79
Fix frame rendering (#735)
* Fix frame rendering

* Add test for the dynamic frame
2021-12-03 18:59:08 +01:00
José Valim
2c91de3cd6
Streamline introductory notebooks (#733) 2021-12-03 15:17:09 +01:00
Jonatan Kłosko
04f15f60a3
Add Pong notebook to the explore section (#729) 2021-12-03 15:08:28 +01:00
Jonatan Kłosko
4debf2c1fb
Fix evaluation timer on page refresh (#732) 2021-12-03 14:23:50 +01:00
Jonatan Kłosko
264d6c3ff2
Add support for controls output type (#710)
* Add support for controls output type

* Split controls into individual widgets

* Adjust ids

* Improve widget and controls garbage collection

* Allow arbitrary functions as object release hook

* Add type to button and input events

* Add keyboard status event

* Change release hooks into monitor messages

* Rename pointer to reference and return an error on bad monitor
2021-12-02 16:45:00 +01:00
Jonatan Kłosko
c2636b8220
Migrate inputs to Kino (#714)
* Migrate inputs to Kino

* Update lib/livebook/session/data.ex

Co-authored-by: José Valim <jose.valim@dashbit.co>

* Try parsing numbers as integers

* Garbage collect input values

* Adjust tests

* Remove unused variable

* Fix frame rendering

* Wrap inputs in border depending on its type

* Add textarea

* Reorder

* Update tests

Co-authored-by: José Valim <jose.valim@dashbit.co>
2021-11-25 18:43:42 +01:00
Jonatan Kłosko
4d92aeba2e
Support file scheme when importing from URL (#706)
* Add test

* Support file scheme when importing from URL
2021-11-12 15:49:22 +01:00
Jonatan Kłosko
247abd8f57
Add section on Kino.animate and bump dependencies (#700)
* Add section on Kino.animate and bump dependencies

* Update lib/livebook/notebook/explore/intro_to_kino.livemd

Co-authored-by: José Valim <jose.valim@dashbit.co>

* Update lib/livebook/notebook/explore/intro_to_kino.livemd

Co-authored-by: José Valim <jose.valim@dashbit.co>

Co-authored-by: José Valim <jose.valim@dashbit.co>
2021-11-10 22:16:42 +01:00
Jonatan Kłosko
54511d5ffc
Add env var for disabling token auth (#696) 2021-11-10 13:54:50 +01:00
José Valim
e67428e918
Simplify fun with vm instrospection (#690)
If we want to show process specific information,
we can create branches in the future that receive
a PID input, reach out to the remote node, and
show the data using markdown.
2021-11-09 11:04:18 +01:00
Jonatan Kłosko
0b30fd02d9
Add support for frame_dynamic output type (#688) 2021-11-08 20:45:30 +01:00
Jonatan Kłosko
e72a606dd2
Warn on invalid sequence of notebook comments (#687) 2021-11-08 13:14:55 +01:00
José Valim
767a12ab77
Show reevaluate true example (#680) 2021-11-05 08:15:14 +01:00
José Valim
49a406b579
Branch from setup on Kino guide (#678) 2021-11-05 08:14:29 +01:00
Jonatan Kłosko
982a345ddc
Improve notebook file locking to work across nodes (#675)
* Improve notebook file locking to work across nodes

* Add node check for local file system opreations

* Replace node with host id

* Refactor process down cleanup

* Scope local file system with node

* local? -> type
2021-11-05 00:29:04 +01:00
Jonatan Kłosko
5e5bc2597a
Document how to render notebooks on GitHub (#677)
* Document how to render notebooks on GitHub

* Keep any comments before the notebook title heading
2021-11-04 18:50:53 +01:00
Cocoa
a15ec1ca1d
Save static vegalite plot to livemd (#676)
* save static vegalite plot to livemd

* cleanup debug code

* using `vega-lite` as the type in the fenced code block

* wrap the text output in `{:text, output}` in take_outputs/2

* ignore :vega_lite_static when it is empty

* add import and export tests

* using `spec`

* format code

* keep the test focused

* improve tests for not including outputs

* always dump vage_lite spec

* Apply suggestions from code review

Co-authored-by: Jonatan Kłosko <jonatanklosko@gmail.com>
2021-11-04 12:17:03 +01:00
Jonatan Kłosko
3afa81f454
Add configuration for additional explore notebooks (#670)
* Add configuration for additional explore notebooks

* Update config/config.exs

Co-authored-by: José Valim <jose.valim@dashbit.co>

Co-authored-by: José Valim <jose.valim@dashbit.co>
2021-11-02 22:32:58 +01:00
Jonatan Kłosko
2694007c0e
Compute cell snapshots when an existing notebook is given (#666) 2021-11-01 13:59:04 +01:00
Kian Meng Ang
e16c8a5dab
Fix typos (#654) 2021-10-31 07:14:35 +01:00
Jonatan Kłosko
529339c8a2
Remove configuration env vars on boot (#662)
* Remove configuration env vars on boot

* Update lib/livebook/application.ex

Co-authored-by: José Valim <jose.valim@dashbit.co>

Co-authored-by: José Valim <jose.valim@dashbit.co>
2021-10-29 20:49:25 +02:00
Jonatan Kłosko
ac1a4a5ffb Add action for clearing evaluation and outputs (#661)
* Move notebook export menu item

* Add action for clearing evaluation and outputs

* Test data operation

* Update wording

* Update wording

* Reorder menu items
2021-10-29 16:34:44 +02:00
José Valim
8a0d218cbe The first address for a shortname must be the one that matches 2021-10-29 16:29:27 +02:00
Jonatan Kłosko
4493a60380
Improve runtimes UI (#655)
* Show reconnect for all runtime types when applicable

* Make it clear which runtime is the default

* Show Mix.install restart suggestion only for standalone runtimes

* Fix tests not to rely on the default runtime tab
2021-10-28 19:41:07 +02:00
José Valim
8fe8d27d3d Allow any address we might be listening on 2021-10-27 17:27:52 +02:00
Jonatan Kłosko
394c6daef1
Improve validity check when input changes during evaluation (#651) 2021-10-27 15:36:50 +02:00
Jonatan Kłosko
6ba5d0017a
Allowapplication/octet-stream content type for import (#650) 2021-10-27 13:49:03 +02:00
Jonatan Kłosko
c1a6bc1aa8
Remove reactive inputs (#649) 2021-10-27 13:35:24 +02:00