mauricioszabo / atom-chlorine Goto Github PK
View Code? Open in Web Editor NEWAn Atom plugin to integrate with Socket-REPL over Clojure, ClojureScript, ClojureCLR, Joker, Babashka, Clojerl, Lumo and Plank
License: MIT License
An Atom plugin to integrate with Socket-REPL over Clojure, ClojureScript, ClojureCLR, Joker, Babashka, Clojerl, Lumo and Plank
License: MIT License
@mauricioszabo, 0.1.13 has been a huge improvement for me. I really love the truncated inline eval results. This has allowed me to stop worrying about evaluations which return large result sets. I also really like how the console is much less spammy, and only shows errors and explicit prints.
This last commit has really put it over the top of proto-repl for me. Thanks for all of the hard work.
The dynamic vars *1, *2, and *3 always return nil instead of recent values.
In ProtoREPL, auto-complete shows the args/docstring for the currently selected item in the auto-complete popup. That would be a nice addition to Chlorine.
I suspect this is because my callback handling ignores errors! :) In which case, a few other commands need updating too...
Hi Maurício,
Thank you for Chlorine.
Say you connect Chlorine to socket repl. It opens the console. Later you close the console by a mistake.
Currently I can't see a way to re-open the console, other than disconnect and connect again. Could you allow re-opening, please.
With the most recent atom version when installing chlorine I get:
npm ERR! code SELF_SIGNED_CERT_IN_CHAIN
npm ERR! errno SELF_SIGNED_CERT_IN_CHAIN
npm ERR! request to https://codeload.github.com/mauricioszabo/atom-chlorine/legacy.tar.gz/v0.6.2 failed, reason: self signed certificate in certificate chain
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/xxx/.atom/.apm/_logs/2020-05-11T07_36_24_783Z-debug.log
The keybinding instructions in README.md for "If you don't use vim bindings" includes the line:
'atom-text-editor.vim-mode-plus.normal-mode[data-grammar="source clojure"]':
That didn't work here.
However, changing the line to the following did:
'atom-text-editor[data-grammar="source clojure"]':
Hi. Thanks for the excellent library! I have a minor feature request to make. I'd like to be able to connect to a clojure repl without having to go through a prompt as I almost always use the same port. Would you be open to a PR with one of the two approaches?
chlorine.repl.connect!
I'd prefer option 1 because it correctly activates chlorine on initial use while I haven't figured out how to active chlorine with option 2. Also interested if there are other options you can think of. Cheers
Atom: 1.46.0 x64
Electron: 4.2.7
OS: Mac OS X 10.15.4
Thrown From: chlorine package 0.6.1
Uncaught Error: No protocol method Evaluator.evaluate defined for type null:
At /Users/avi.flax/.atom/packages/chlorine/lib/cmds.js:61
Error: No protocol method Evaluator.evaluate defined for type null:
at Cb (/packages/chlorine/lib/cmds.js:349:291)
at vY (/packages/chlorine/lib/cmds.js:1629:220)
at Function.c (/packages/chlorine/lib/cmds.js:1632:135)
at /packages/chlorine/lib/cmds.js:2316:198
at Object.t (/packages/chlorine/lib/cmds.js:40:444)
at /packages/chlorine/lib/cmds.js:41:28)
at /packages/chlorine/lib/cmds.js:41:80)
at /packages/chlorine/lib/cmds.js:41:252)
at mi (/packages/chlorine/lib/cmds.js:61:54)
at ae (/packages/chlorine/lib/cmds.js:60:382)
at Pc (/packages/chlorine/lib/cmds.js:61:217)
at Xf (/packages/chlorine/lib/cmds.js:63:389)
at Ff (/packages/chlorine/lib/cmds.js:263:426)
at /packages/chlorine/lib/cmds.js:43:423)
at fe (/packages/chlorine/lib/cmds.js:71:207)
at Sc (/packages/chlorine/lib/cmds.js:70:272)
at l.unstable_runWithPriority (/packages/chlorine/lib/cmds.js:37:101)
at cb (/packages/chlorine/lib/cmds.js:89:333)
at /packages/chlorine/lib/cmds.js:263:286)
at ui (/packages/chlorine/lib/cmds.js:70:87)
-1:04.4.0 core:move-to-bottom (input.hidden-input)
4x -1:04.1.0 core:move-up (input.hidden-input)
-1:03.3.0 core:move-down (input.hidden-input)
-1:02.8.0 editor:move-to-end-of-screen-line (input.hidden-input)
2x -1:00.6.0 pane:show-next-item (input.hidden-input)
-0:59.4.0 pane:show-previous-item (atom-workspace.workspace.scrollbars-visible-when-scrolling.theme-one-light-syntax.theme-one-light-ui)
-0:59.2.0 core:close (atom-workspace.workspace.scrollbars-visible-when-scrolling.theme-one-light-syntax.theme-one-light-ui)
-0:58.7.0 pane:show-next-item (atom-workspace.workspace.scrollbars-visible-when-scrolling.theme-one-light-syntax.theme-one-light-ui)
2x -0:55.8.0 pane:show-previous-item (atom-workspace.workspace.scrollbars-visible-when-scrolling.theme-one-light-syntax.theme-one-light-ui)
2x -0:51.6.0 pane:show-next-item (atom-workspace.workspace.scrollbars-visible-when-scrolling.theme-one-light-syntax.theme-one-light-ui)
-0:45 editor:cut-to-end-of-line (input.hidden-input)
-0:45 pane:show-next-item (input.hidden-input)
-0:41.6.0 core:save (input.hidden-input)
-0:16.5.0 core:undo (div.console.repl-tooling.native-key-bindings)
-0:14.9.0 core:redo (input.hidden-input)
-0:08.4.0 core:save (input.hidden-input)
atom-beautify 0.33.4
atomic-vale 1.9.0
busy-signal 2.0.1
chlorine 0.6.1
color-picker 2.3.0
compare-files 0.8.1
copy-as-rtf 0.9.3
dark-mode 4.0.2
django-templates 0.5.0
document-outline 2.1.2
file-icons 2.1.40
file-type-icons 1.3.4
fold-lines 0.2.2
fold-navigator 0.0.622
graphviz-preview-plus 1.5.10
highlight-line 0.12.0
highlight-selected 0.17.0
indent-guide-improved 1.4.13
ink 0.12.3
intentions 1.1.5
language-cypher 0.5.0
language-docker 1.1.8
language-dot 1.7.0
language-email 0.1.7
language-eml 1.2.5
language-ini 1.23.0
language-kotlin 0.5.0
language-markdown 0.37.0
language-terraform 0.9.3
linter 2.3.1
linter-clojure 1.2.0
linter-docker 0.3.2
linter-eslint 8.5.5
linter-flake8 2.4.0
linter-joker 4.1.0
linter-js-yaml 1.4.6
linter-json-lint 0.1.3
linter-jsonlint 1.4.0
linter-kondo 1.2.0
linter-markdown 5.2.11
linter-markdownlint 2.0.2
linter-remark 8.0.0
linter-rubocop 2.5.7
linter-shellcheck 1.6.0
linter-ui-default 1.8.1
markdown-folding 0.3.1
markdown-writer 2.11.10
mixed-indent-warning 0.3.0
omni-ruler 0.6.0
proto-repl 1.4.24
rufo-atom 0.1.2
sort-lines 0.19.0
split-diff 1.6.1
teletype 0.13.4
title-case 0.4.0
todo 0.6.0
todo-show 2.3.2
trailing-spaces 0.4.0
tree-view-autoresize 2.3.0
underline-trailing-whitespace 1.4.2
wordcount 3.2.0
Zen 0.18.0
~ # clj -J-Dclojure.server.repl="{:port 5555 :accept clojure.core.server/repl}"
Clojure 1.10.0
user=>
eval (map inc [1 2 3])
(Chlorine: Evaluate Selection)
boom
(optional) (try it in the repl tab) - realize I do not know how to eval - Ctrl-C, Ctrl-Enter, Enter, Shift Enter, the "run" icon on top - nothing does anything (also once closed - how to reopen the repl-tab) ?
(optional) as someone who dabbled in enhancing the proto-repl but seeing it not being developed anymore, I'm exited about atom-chlorine - FYI
Atom: 1.33.1 x64
Electron: 3.0.13
OS: "Arch Linux"
Thrown From: chlorine package 0.0.4
Uncaught TypeError: Cannot read property 'length' of undefined
At /home/birdspider/.atom/packages/chlorine/lib/main.js:13
TypeError: Cannot read property 'length' of undefined
at na (/packages/chlorine/lib/main.js:13:447)
at Ht (/packages/chlorine/lib/main.js:774:412)
at Kt (/packages/chlorine/lib/main.js:777:45)
at /packages/chlorine/lib/main.js:1237:397)
at CommandRegistry.handleCommandEvent (/usr/lib/atom/src/command-registry.js:384:43)
at Object.didConfirmSelection (/usr/lib/atom/node_modules/command-palette/lib/command-palette-view.js:152:29)
at SelectListView.confirmSelection (/usr/lib/atom/node_modules/atom-select-list/src/select-list-view.js:400:20)
at HTMLDivElement.core:confirm (/usr/lib/atom/node_modules/atom-select-list/src/select-list-view.js:105:14)
at CommandRegistry.handleCommandEvent (/usr/lib/atom/src/command-registry.js:384:43)
at KeymapManager.module.exports.KeymapManager.dispatchCommandEvent (/usr/lib/atom/node_modules/atom-keymap/lib/keymap-manager.js:617:16)
at KeymapManager.module.exports.KeymapManager.handleKeyboardEvent (/usr/lib/atom/node_modules/atom-keymap/lib/keymap-manager.js:408:22)
at WindowEventHandler.handleDocumentKeyEvent (/usr/lib/atom/src/window-event-handler.js:110:34)
-0:32.9.0 core:select-all (input.hidden-input)
-0:30.8.0 core:backspace (input.hidden-input)
2x -0:30.1.0 core:move-down (input.hidden-input)
-0:29.3.0 core:move-up (input.hidden-input)
-0:28 core:move-down (input.hidden-input)
-0:27.5.0 core:page-down (input.hidden-input)
-0:22.9.0 chlorine:toggle-refresh-mode (input.hidden-input)
-0:19.1.0 command-palette:toggle (input.hidden-input)
-0:14.9.0 core:select-all (input.hidden-input)
8x -0:12.4.0 core:move-down (input.hidden-input)
-0:10.6.0 core:move-up (input.hidden-input)
-0:10.3.0 core:confirm (input.hidden-input)
-0:10.3.0 chlorine:toggle-refresh-mode (input.hidden-input)
-0:07.8.0 command-palette:toggle (input.hidden-input)
-0:06.1.0 core:confirm (input.hidden-input)
-0:06.1.0 chlorine:evaluate-block (input.hidden-input)
atom-beautify 0.33.4
atom-html-preview 0.2.6
atom-ide-ui 0.13.0
atom-ternjs 0.18.3
blame 1.1.0
chary-tree-view 0.2.13
chlorine 0.0.4
dark-bint-syntax 0.10.0
docblockr 0.13.7
editorconfig 2.2.2
emmet 2.4.3
file-icons 2.1.27
file-watcher 2.0.0
git-plus 8.2.1
git-status 0.3.4
hyperclick 0.0.0
ide-php 0.7.17
ink 0.9.13
js-hyperclick 1.13.3
language-archlinux 0.9.2
language-pug 0.0.22
language-textile 0.2.0
language-unix-shell 0.40.1
language-vue 0.23.1
linter 2.2.0
linter-eslint 8.4.1
lisp-paredit 0.6.0
minimap 4.29.9
minimap-git-diff 4.3.1
monokai 0.24.0
parinfer 1.23.0
pigments 0.40.2
prettier-atom 0.56.2
project-manager 3.3.6
proto-repl 1.4.24
rst-preview 1.3.1
sort-lines 0.18.0
svg-preview 0.14.0
sync-settings 0.8.6
textile-preview 0.1.2
todo-show 2.3.2
On MacOSX High Sierra, Chlorine don't work: when you use "Connect to Socket REPL" or "Connect to ClojureScript Socket REPL", it does nothing and un-register those commands.
Because some libraries that I work with set ANSI codes on return codes, stdout, or exception messages, the idea was to "reset" ANSI atributes before showing anything on REPL tab or on inline results.
Sometimes, this is showing strange chars on REPL:
�[0m
false
After connecting to Clojure, position the cursor on any ClojureScript project and try to evaluate something
Atom: 1.41.0 x64
Electron: 4.2.7
OS: Ubuntu 18.04.3
Thrown From: chlorine package 0.3.7
Uncaught Error: No protocol method Evaluator.evaluate defined for type object: [object Object]
At /home/mauricio/.atom/packages/chlorine/lib/cmds.js:938
Error: No protocol method Evaluator.evaluate defined for type object: [object Object]
at Gb (/packages/chlorine/lib/cmds.js:27:65)
at NP (/packages/chlorine/lib/cmds.js:938:162)
at AR (/packages/chlorine/lib/cmds.js:1076:273)
at PS (/packages/chlorine/lib/cmds.js:1141:563)
at /packages/chlorine/lib/cmds.js:1142:116
at OS (/packages/chlorine/lib/cmds.js:1141:338)
at RS (/packages/chlorine/lib/cmds.js:1142:92)
at /packages/chlorine/lib/cmds.js:1143:243
at /packages/chlorine/lib/cmds.js:1158:175)
at CommandRegistry.handleCommandEvent (/usr/share/atom/resources/app/static/<embedded>:11:349392)
at KeymapManager.dispatchCommandEvent (/usr/share/atom/resources/app/static/<embedded>:11:1252536)
at KeymapManager.handleKeyboardEvent (/usr/share/atom/resources/app/static/<embedded>:11:1248670)
at WindowEventHandler.handleDocumentKeyEvent (/usr/share/atom/resources/app/static/<embedded>:11:284598)
2x -3:34.3.0 settings-view:open (atom-pane.pane.active)
-3:29.6.0 core:backspace (input.hidden-input)
3x -2:52.8.0 core:move-down (select#autocomplete-plus.confirmCompletion.form-control)
-1:10.5.0 chlorine:connect-socket-repl (input.hidden-input)
-1:00.0 editor:consolidate-selections (input.hidden-input)
-0:14.5.0 chlorine:connect-socket-repl (input.hidden-input)
-0:11.9.0 tree-view:toggle (input.hidden-input)
5x -0:11.1.0 pane:increase-size (input.hidden-input)
-0:09.8.0 vim-mode-plus:move-down (input.hidden-input)
-0:09.5.0 vim-mode-plus:move-up (input.hidden-input)
-0:09.1.0 vim-mode-plus:move-down (input.hidden-input)
-0:08.9.0 vim-mode-plus:move-up (input.hidden-input)
2x -0:08.6.0 chlorine:evaluate-top-block (input.hidden-input)
atom-beautify 0.33.4
atom-limelight 0.1.3
chlorine 0.3.7
chlorine-tests undefined
clippy 0.5.0
everything 0.3.0
ex-mode 0.18.0
hey-pane 1.2.0
ink 0.11.6
last-cursor-position 0.9.3
lisp-paredit 0.6.0
parinfer 1.23.0
platformio-ide-terminal 2.10.0
set-syntax 0.4.0
simple-align 0.2.0
simple-git 0.2.0
sync-settings 0.8.6
tmux-terminal 0.0.1
vim-mode-plus 1.36.2
This API: chlorine.repl.connect! could be public users can create their own command
Using the built-in auto-complete, not Compliment, start typing a dynamic var name like *test-me*
in a Clojure file with a connected REPL and you'll see red error messages in the console about invalid regex expressions.
Sometimes, when evaluating code from the Shadow-CLJS REPL that resolves to a promise, this error is issued.
The problematic part is the "ink results" block result.
Atom: 1.41.0 x64
Electron: 4.2.7
OS: Ubuntu 18.04.4
Thrown From: chlorine package 0.4.5
Uncaught NotFoundError: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node.
At /home/mauricio/.atom/packages/chlorine/node_modules/react-dom/cjs/react-dom.production.min.js:121
Error: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node.
at Xi (/packages/chlorine/node_modules/react-dom/cjs/react-dom.production.min.js:205:80)
at ik (/packages/chlorine/node_modules/react-dom/cjs/react-dom.production.min.js:249:52)
at exports.unstable_runWithPriority (/packages/chlorine/node_modules/scheduler/cjs/scheduler.production.min.js:18:437)
at fg (/packages/chlorine/node_modules/react-dom/cjs/react-dom.production.min.js:120:325)
at Yj (/packages/chlorine/node_modules/react-dom/cjs/react-dom.production.min.js:244:437)
at Lj (/packages/chlorine/node_modules/react-dom/cjs/react-dom.production.min.js:223:420)
at /packages/chlorine/node_modules/react-dom/cjs/react-dom.production.min.js:121:115
at exports.unstable_runWithPriority (/packages/chlorine/node_modules/scheduler/cjs/scheduler.production.min.js:18:437)
at fg (/packages/chlorine/node_modules/react-dom/cjs/react-dom.production.min.js:120:325)
at ig (/packages/chlorine/node_modules/react-dom/cjs/react-dom.production.min.js:121:61)
at jg (/packages/chlorine/node_modules/react-dom/cjs/react-dom.production.min.js:120:496)
at Rg (/packages/chlorine/node_modules/react-dom/cjs/react-dom.production.min.js:214:156)
at Object.enqueueForceUpdate (/packages/chlorine/node_modules/react-dom/cjs/react-dom.production.min.js:134:76)
at Object.E.forceUpdate (/packages/chlorine/node_modules/react/cjs/react.production.min.js:13:318)
at /packages/chlorine/lib/js/cljs-runtime/reagent.impl.batching.js:52:25)
at reagent.impl.batching.RenderQueue.flush_queues (/packages/chlorine/lib/js/cljs-runtime/reagent.impl.batching.js:146:23)
at reagent.impl.batching.RenderQueue.run_queues (/packages/chlorine/lib/js/cljs-runtime/reagent.impl.batching.js:157:14)
at G__29472 (/packages/chlorine/lib/js/cljs-runtime/reagent.impl.batching.js:127:14)
-1:31 vim-mode-plus:activate-normal-mode (input.hidden-input)
2x -1:31 vim-mode-plus:move-down (input.hidden-input)
-1:30.5.0 vim-mode-plus:move-to-beginning-of-line (input.hidden-input)
2x -1:30.3.0 vim-mode-plus:move-right (input.hidden-input)
-1:29.9.0 chlorine:evaluate-top-block (input.hidden-input)
-1:26 vim-mode-plus:move-to-last-character-of-line (input.hidden-input)
6x -1:25.5.0 vim-mode-plus:move-up (input.hidden-input)
3x -1:24.4.0 lisp-paredit:up-sexp (input.hidden-input)
-1:23.8.0 vim-mode-plus:move-up (input.hidden-input)
2x -1:23.3.0 chlorine:evaluate-block (input.hidden-input)
-0:31.6.0 chlorine:clear-console (input.hidden-input)
-0:31.3.0 inline-results:clear-all (input.hidden-input)
-0:30.9.0 chlorine:evaluate-top-block (input.hidden-input)
4x -0:02.9.0 vim-mode-plus:move-up (input.hidden-input)
-0:02.2.0 vim-mode-plus:move-right (input.hidden-input)
-0:01.8.0 chlorine:evaluate-top-block (input.hidden-input)
chlorine 0.4.5
clippy 0.5.0
everything 0.3.0
ex-mode 0.18.0
hey-pane 1.2.0
ink 0.11.6
last-cursor-position 0.9.3
lisp-paredit 0.6.0
parinfer 1.23.0
platformio-ide-terminal 2.10.0
set-syntax 0.4.0
simple-align 0.2.0
simple-git 0.2.0
sync-settings 0.8.6
tmux-terminal 0.0.1
vim-mode-plus 1.36.2
I was looking at the Shadow CLJS User's Guide and noticed this text in section 3.2.1. (regarding Leiningen):
If you’d like to use Leiningen for your build system (particularly if you use Cursive), the shadow-cljs command-line utility can be configured to use lein to run your commands. Enable this by adding a :lein entry to your shadow-cljs.edn config. With this setting, the shadow-cljs command will use lein to launch the JVM, ignoring any :source-paths and :dependencies in shadow-cljs.edn; relying instead on lein to set them from project.clj.
atom-chlorine's shadow-cljs.edn currently appears to have :lein true -- but it also specifies :source-paths and :dependencies in the same file.
Please explain the intent of the current configuration as it seems confusing.
(This came up because I was attempting to get binaryage/(cljs-)devtools to work and it wasn't clear where to put the dependencies. I tried adding it as a dependency in a few locations without ultimate success.)
I get this error:
$ env JVM_OPTS='-Dclojure.server.myrepl={:port,5555,:accept,clojure.core.server/repl}' lein trampoline repl
ClassCastException java.lang.String cannot be cast to java.lang.Number
nrepl.server/start-server/addr--1156 (server.clj:120)
nrepl.server/start-server (server.clj:128)
nrepl.server/start-server (server.clj:96)
reply.eval-modes.nrepl/get-connection (nrepl.clj:158)
using OSX, Clojure 1.10, JVM 1.8.0_192
Hi!
I watched a talk from you discussing integration of charts and reagent components to chlorine.
We work on a related project
https://github.com/pink-gorilla
We also use reagent to display data in
A web clojure notebook ui.
We are working on a plugin system to
render arbitrary data in reagent render
components that can be added at runtime.
I think there is a good overlap in what we
are trying to do. Should we talk?
I tried out Chlorine today, and was very surprised that while typing at the REPL, there was no way to evaluate anything typed.
I chatted w/ Sean Corfield on Slack, and he told me Chlorine can't be typed into. If that's the case, perhaps a visual indicator would be helpful? Either something to indicate the functionality is not there yet, or if you believe people shouldn't type into REPLs, remove entirely the ability to type into it? Currently, it's a bit misleading.
Hi again,
Sorry if this is not a bug or the right way to contact regarding this issue, I am fairly new. Any help with this would be great, if it's not too much hassle.
When I open a socket REPL with Leiningen from my project's root directory and then connect Chlorine to it, the Chlorine REPL tab displays the following messages:
"Execution error (FileNotFoundException) at inventory.core/eval1560 (form-init18339748147166039704.clj:1).
Could not locate orchard/info__init.class, orchard/info.clj or orchard/info.cljc on classpath.
Execution error (FileNotFoundException) at inventory.core/eval1562 (form-init18339748147166039704.clj:1).
Could not locate orchard/xref__init.class, orchard/xref.clj or orchard/xref.cljc on classpath.
Execution error (FileNotFoundException) at inventory.core/eval1564 (form-init18339748147166039704.clj:1).
Could not locate orchard/clojuredocs__init.class, orchard/clojuredocs.clj or orchard/clojuredocs.cljc on classpath."
The error happens when connecting to nREPL ports. Does not affect the behavior of Chlorine in any way, and the error only happens once.
With a running shadow-cljs server + build, I'm able to "Connect Socket Repl" & immediately eval in JVM Clojure (thanks, that's really great!) but I'm getting a few odd messages when I then try to connect to the browser CLJS.
You can connect a repl using 'Connect ClojureScript Socket REPL' command, or 'Connect a self-hosted ClojureScript'
- Neither of these two commands show up in Ctrl+Shift+P bar, but there is Chlorine: Connect Embedded
------ WARNING - :undeclared-ns ------------------------------------------------
Resource: :27:3
No such namespace: reagent.ratom, could not locate reagent/ratom.cljs, reagent/ratom.cljc, or JavaScript source providing "reagent.ratom"
------ WARNING - :undeclared-var -----------------------------------------------
Resource: :27:3
Use of undeclared Var reagent.ratom/RAtom
------ WARNING - :undeclared-var -----------------------------------------------
Resource: :32:3
Use of undeclared Var reagent.ratom/RCursor
--------------------------------------------------------------------------------
(js/alert "Hello")
entirely fine.nil
line shows up in the REPL for each character I type that starts to autocomplete eg (str/
(js/
or (desktop
. The actual autocomplete results seems OK.desktop.devcards=> nil
desktop.devcards=> nil
desktop.devcards=> nil
desktop.devcards=> nil
desktop.devcards=> nil
desktop.day1=> nil
desktop.day1=> nil
desktop.day1=>
In a CLJS file, a nil line shows up in the REPL for each character I type that starts to autocomplete eg (str/ (js/ or (desktop. The actual autocomplete results seems OK.
desktop.devcards=> nil
desktop.devcards=> nil
desktop.devcards=> nil
desktop.devcards=> nil
desktop.devcards=> nil
desktop.day1=> nil
desktop.day1=> nil
desktop.day1=>
Related to: #127
[Enter steps to reproduce:]
Atom: 1.38.2 x64
Electron: 2.0.18
OS: Mac OS X 10.14.5
Thrown From: chlorine package 0.1.10
Uncaught TypeError: Cannot read property 'getPath' of undefined
At /Users/paulgureghian/.atom/packages/chlorine/lib/cmds.js:989
TypeError: Cannot read property 'getPath' of undefined
at HTMLElement.HN (/packages/chlorine/lib/cmds.js:989:30)
at CommandRegistry.handleCommandEvent (/Users/paulgureghian/Desktop/Atom.app/Contents/Resources/app/static/<embedded>:11:348418)
at Object.didConfirmSelection (/Users/paulgureghian/Desktop/Atom.app/Contents/Resources/app/static/<embedded>:11:697714)
at SelectListView.confirmSelection (/Users/paulgureghian/Desktop/Atom.app/Contents/Resources/app/static/<embedded>:11:871573)
at HTMLDivElement.core:confirm (/Users/paulgureghian/Desktop/Atom.app/Contents/Resources/app/static/<embedded>:11:866452)
at CommandRegistry.handleCommandEvent (/Users/paulgureghian/Desktop/Atom.app/Contents/Resources/app/static/<embedded>:11:348418)
at KeymapManager.t.exports.KeymapManager.dispatchCommandEvent (/Users/paulgureghian/Desktop/Atom.app/Contents/Resources/app/static/<embedded>:11:1247210)
at KeymapManager.t.exports.KeymapManager.handleKeyboardEvent (/Users/paulgureghian/Desktop/Atom.app/Contents/Resources/app/static/<embedded>:11:1243344)
at WindowEventHandler.handleDocumentKeyEvent (/Users/paulgureghian/Desktop/Atom.app/Contents/Resources/app/static/<embedded>:11:283624)
-7:20.3.0 inline:clear-current (input.hidden-input)
-7:20.3.0 editor:consolidate-selections (input.hidden-input)
-7:20.3.0 core:cancel (input.hidden-input)
4x -7:15.5.0 core:backspace (input.hidden-input)
2x -7:11.1.0 autocomplete-plus:cancel (atom-text-editor.editor.is-focused)
5x -6:16.4.0 core:select-up (input.hidden-input)
-6:02.5.0 core:move-up (input.hidden-input)
3x -6:02.2.0 core:select-up (input.hidden-input)
-5:47.6.0 command-palette:toggle (input.hidden-input)
5x -4:07.9.0 core:move-right (input.hidden-input)
2x -3:29.5.0 core:backspace (input.hidden-input)
-3:25.7.0 core:move-down (input.hidden-input)
-3:25.2.0 core:move-up (input.hidden-input)
-3:22.1.0 core:confirm (input.hidden-input)
-3:22.1.0 chlorine:load-file (input.hidden-input)
-0:50.1.0 core:backspace (input.hidden-input)
atom-beautify 0.33.4
atom-console 0.4.6
atom-haskell 0.4.0
autocomplete-haskell 1.0.1
busy-signal 2.0.1
chlorine 0.1.10
haskell-ghc-mod 2.2.5
haskell-pointfree 0.2.0
haskell-scry 1.0.9
hasklig 0.4.0
ide-haskell 2.4.0
ide-haskell-cabal 2.2.1
ide-haskell-hasktags 0.0.16
ide-haskell-hoogle 0.1.2
ide-haskell-repl 0.8.7
ink 0.10.10
intentions 1.1.5
language-haskell 1.18.1
language-haskell-scoped 0.1.1
linter 2.3.0
linter-ui-default 1.7.1
nrepl 0.4.0
platformio-ide-terminal 2.9.1
When evaluating something like (DateTime.)
, Chlorine just shows a generic error message.
What is expected is to return something like what you get in the REPL:
CompilerException java.lang.IllegalArgumentException: Unable to resolve classname: DateTime, compiling:(NO_SOURCE_PATH:1:1)
Atom's version is 0.4.1, Ink's version is 0.11.0, Chlorine is 0.1.11
When connecting to Socket REPL, the console does not open.
When evaluating big ex-info exceptions, stacktrace is not available.
Example of offending code:
(throw (ex-info (str (range 200)) (->> (range 200)
(map #(vector % (range %)))
(into {}))))
I was looking at adding a "show source" function and expected to model it on "doc for var" -- but that seems to do it from first principles.
In ProtoREPL, show docs either uses (doc <varname>)
in a cljs REPL or (do (require 'clojure.repl) (clojure.repl/doc <varname>))
Is there a specific reason doc-for
doesn't take that (simpler) approach?
ProtoREPL only supports "show source" for Clojure, not cljs, so I would follow the do-require-source approach (and warn on cljs that it is not supported).
Thoughts?
Hi,
I've just started using Chlorine but had problems getting a socket REPL started as I was unaware that
the instructions for starting a socket REPL with Leiningen as mentioned in the "Usage" section on the main readme page only worked for Unix-like systems and not on Windows:
JVM_OPTS='-Dclojure.server.myrepl={:port,5555,:accept,clojure.core.server/repl}' lein repl
I learned how to get it done on Windows by posting on Clojureverse:
https://clojureverse.org/t/need-help-starting-a-socket-repl-with-lein-on-windows-for-chlorine-use
Would be nice to have instructions on the readme page for anyone trying to get it running on Windows with little programming experience.
To reproduce:
lumo -n 5555
Connect ClojureScript Socket REPL
Type on port 5555
Hit <enter>
Attempting to follow the instructions in developing.md, yielded the following error when compiling:
IllegalArgumentException: Cannot open <nil> as a Reader.
It turns out that the instructions say to:
cp repl-tooling/resources .
but that doesn't typically work without some flag for cp (e.g. -a or -r).
Initially, I failed to understand that the directory was the target of copying and copied the contained file instead. This lead to blob-contents failing and seeing the above error.
Please update the instructions appropriately :)
Atom: 1.30.0 x64
Electron: 2.0.5
OS: Ubuntu 18.04.1
Thrown From: chlorine package 0.0.3
Uncaught TypeError: Cannot read property 'start' of undefined
At /usr/share/atom/resources/app/node_modules/text-buffer/lib/range.js:33
TypeError: Cannot read property 'start' of undefined
at Function.module.exports.Range.fromObject (/usr/share/atom/resources/app/node_modules/text-buffer/lib/range.js:33:38)
at TextBuffer.module.exports.TextBuffer.getTextInRange (/usr/share/atom/resources/app/node_modules/text-buffer/lib/text-buffer.js:549:53)
at TextEditor.getTextInBufferRange (/usr/share/atom/resources/app/src/text-editor.js:1209:30)
at /packages/chlorine/lib/js/cljs-runtime/chlorine.repl.js:242:19)
at /packages/chlorine/lib/js/cljs-runtime/chlorine.repl.js:237:47)
at /packages/chlorine/lib/js/cljs-runtime/chlorine.core.js:43:47)
at CommandRegistry.handleCommandEvent (/usr/share/atom/resources/app/src/command-registry.js:384:49)
at KeymapManager.module.exports.KeymapManager.dispatchCommandEvent (/usr/share/atom/resources/app/node_modules/atom-keymap/lib/keymap-manager.js:621:22)
at KeymapManager.module.exports.KeymapManager.handleKeyboardEvent (/usr/share/atom/resources/app/node_modules/atom-keymap/lib/keymap-manager.js:412:28)
at WindowEventHandler.handleDocumentKeyEvent (/usr/share/atom/resources/app/src/window-event-handler.js:110:40)
-0:43.3.0 chlorine:evaluate-block (input.hidden-input)
-0:39.6.0 vim-mode-plus:move-left (input.hidden-input)
-0:39.2.0 lisp-paredit:expand-selection (input.hidden-input)
-0:38.9.0 chlorine:evaluate-selection (input.hidden-input)
-0:37.4.0 vim-mode-plus:activate-normal-mode (input.hidden-input)
-0:33.3.0 lisp-paredit:expand-selection (input.hidden-input)
-0:32.7.0 vim-mode-plus:change (input.hidden-input)
-0:31.7.0 vim-mode-plus:activate-normal-mode (input.hidden-input)
-0:31.3.0 chlorine:evaluate-top-block (input.hidden-input)
-0:26.8.0 vim-mode-plus:move-to-last-character-of-line (input.hidden-input)
-0:23.7.0 vim-mode-plus:move-up (input.hidden-input)
-0:23.2.0 vim-mode-plus:move-down (input.hidden-input)
-0:21.9.0 proto-repl:clear-saved-values (input.hidden-input)
-0:21.9.0 inline-results:clear-all (atom-text-editor.editor.lisp-paredit-strict.indent-mode-76f60.vim-mode-plus.is-focused.normal-mode)
-0:21.4.0 chlorine:evaluate-block (input.hidden-input)
-0:11.1.0 chlorine:evaluate-top-block (input.hidden-input)
atom-beautify 0.33.4
parinfer-plus 0.0.0
chlorine 0.0.3
clojure-plus 0.3.0
everything 0.3.1
ex-mode 0.18.0
hard-wrap 1.7.1
hey-pane 1.1.2
ink 0.9.12
language-ansi 1.1.1
language-haml 0.31.1
language-scala 1.1.9
last-cursor-position 0.9.3
linter 2.2.0
linter-ui-default 1.7.1
lisp-paredit 0.6.0
parinfer 1.23.0
proto-repl 1.4.24
set-syntax 0.4.0
simple-align 0.2.0
simple-git 0.2.0
sync-settings 0.8.6
Termrk 1.0.1
tmux-terminal 0.0.1
vim-mode-plus 1.34.0
It would be sweet to be able to connect to the figwheel-main repl through atom.
Based on the quick conversation we had over slack, I wanted to start an issue and to document some of the tips you provided RE: how to tackle this problem. This will also be good to track any progress on this topic.
In at least some Linux distributions, the suggested non-vim bindings are problematic.
All of them start with control comma, but IIUC in a default installation of Atom (at least in the 1.39.x series), this sequence will lead to the equivalent of Edit -> Preferences.
The conflict arose recently when suggesting to someone to try Chlorine. I had worked around it before by using control semicolon, but had forgotten this :)
I don't know if using control semicolon is better for other platforms, but if it isn't, perhaps it's possible to come up with an alternative that works all around, or at least mention in the docs that there might be issues with the suggestions.
Another alternative might be to mention the keymap-control plugin: https://atom.io/packages/keymap-control
After Atom starts, Keymap Control looks inside your keymap.cson file for any keybindings that conflict with keybindings from other packages and automatically unbinds them, removing the conflicts which can prevent your new keybindings from working.
This can remove keybindings from Atom's core just as easily as from 3rd party packages. Any keybindings you set in your keymap.cson file will always take precedence, so you can concentrate on setting the keybindings you want, instead of why they don't work.
I've only briefly tested it, but it appears to work as advertised so far. For reference, I found it via:
When typing url strings in a connected clojurescript session, I get the following error.
Failed to read: clojure.lang.ExceptionInfo: repl-input.cljs [line 2, col 39] Invalid symbol: https:/a. {:type :reader-exception, :ex-kind :reader-error, :file "repl-input.cljs", :line 2, :col 39}
TypeError: cljs.core.ns_name.split is not a function
Is it possible to check that you are currently typing a symbol and only do namespace lookups then, and not while typing strings?
[Enter steps to reproduce:]
Atom: 1.36.1 x64
Electron: 2.0.18
OS: Debian GNU/Linux
Thrown From: chlorine package 0.1.2
Uncaught Error: nth not supported on this type function x(a,b,c,d,e){this.kb=a;this.name=b;this.Jb=c;this.Lc=d;this.eb=e;this.l=2154168321;this.J=4096}
At /home/markaddleman/.atom/packages/chlorine/lib/main.js:685
Error: nth not supported on this type function x(a,b,c,d,e){this.kb=a;this.name=b;this.Jb=c;this.Lc=d;this.eb=e;this.l=2154168321;this.J=4096}
at /packages/chlorine/lib/main.js:108:390)
at yS (/packages/chlorine/lib/main.js:1427:26)
at /packages/chlorine/lib/main.js:1432:35
at Function.b (/packages/chlorine/lib/main.js:1430:205)
at GE (/packages/chlorine/lib/main.js:685:255)
at /packages/chlorine/lib/main.js:685:410
at /packages/chlorine/lib/main.js:670:335
at /packages/chlorine/lib/main.js:665:298)
at runCallback (timers.js:789:20)
at tryOnImmediate (timers.js:751:5)
at processImmediate [as _immediateCallback] (timers.js:722:5)
-0:30.3.0 editor:consolidate-selections (input.hidden-input)
-0:30.3.0 core:cancel (input.hidden-input)
-0:29.3.0 grammar-selector:show (input.hidden-input)
8x -0:27.6.0 core:backspace (input.hidden-input)
-0:22 editor:consolidate-selections (input.hidden-input)
-0:22 core:cancel (input.hidden-input)
-0:21.8.0 inline:clear-current (input.hidden-input)
-0:21.8.0 editor:consolidate-selections (input.hidden-input)
-0:21.8.0 core:cancel (input.hidden-input)
-0:21.3.0 command-palette:toggle (input.hidden-input)
-0:18.7.0 core:confirm (input.hidden-input)
-0:18.7.0 chlorine:load-file (input.hidden-input)
-0:16.3.0 command-palette:toggle (input.hidden-input)
-0:14.1.0 core:move-down (input.hidden-input)
-0:13.4.0 core:confirm (input.hidden-input)
-0:13.3.0 chlorine:go-to-var-definition (input.hidden-input)
chlorine 0.1.2
ink 0.10.5
parinfer 1.23.0
teletype 0.13.3
TextEditor.prototype.editorElement
has always been private, but now
it is gone. Reading the editorElement
property still returns a
reference to the editor element but this field will be removed in a
later version of Atom, so we recommend using the element
property instead.
TextEditor.editorElement (<embedded>:1:671452)
<unknown> (/Developer/workspace/atom-chlorine/lib/js/cljs-runtime/chlorine.aux.js:22:21)
Object.save_focus_BANG_ (/Developer/workspace/atom-chlorine/lib/js/cljs-runtime/chlorine.aux.js:24:3)
Object.conn_view (/Developer/workspace/atom-chlorine/lib/js/cljs-runtime/chlorine.ui.connection.js:56:14)
HTMLElement.chlorine$ui$connection$connect_BANG_ (/Developer/workspace/atom-chlorine/lib/js/cljs-runtime/chlorine.ui.connection.js:119:31)
CommandRegistry.handleCommandEvent (<embedded>:11:349858)
Hi Mauricio,
I created a project
lein new luminus testCljCljs +swagger +kee-frame +kibit +shadow-cljs
in which I would like to try to port a Clojure library to ClojureScript. Therefore, your chlorine plugin for Atom could be very helpful. However, I can't get it to connect to the ClojureScript REPL.
I started the Clojure REPL with:
JVM_OPTS='-Dclojure.server.myrepl={:port,5555,:accept,clojure.core.server/repl}' lein repl
and the ClojureScript with:
npx shadow-cljs node-repl
In the file "socket-repl.port" within the folder .shadow-cljs I can see a port number 34089 and when I try to connect to a REPL in Atom (version 1.43.0) with "Chlorine: Connect (Clojure) socket Repl" it proposes this port on localhost. If I leave it this way I do get a connection to the Clojure Repl.
But if I try to "Chlorine: Connect Embedded" for the ClojureScript Repl nothing happens.
What am I doing wrong?
Thanks in advance
PS: If I initially connect to port 5555, I also can't connect to the ClojureScript Repl
Hi Maurício,
Thank you for Chlorine.
Could you enable splitting Console into two (and multiple) panes, please.
Why? On a small screen, I have several views of the frequently visited buffers. I use a layout of three panes: two main columns, and one narrow wide row at the bottom. I'd have the Console at the bottom row for most recent results. To see the history, I'd keep another view in one of the columns, but I'd switch to it only if I needed it. That way I don't need to resize panes, I only switch between them. Much more productive.
When I’m connected to a socket REPL, every time I save a .clj file in my project I get a Failed to refresh popup message, saying there’s a syntax error in one of my files. The thing is, I’m pretty sure that’s not true; when I load the files manually from the REPL in my terminal they compile just fine.
This is with the following package settings:
Full contents of the popup:
{:ex #error {:via [{:type clojure.lang.Compiler$CompilerException, :message "Syntax error compiling var at (dsl.clj:31:116).", :data {:clojure.error/phase :compile-syntax-check, :clojure.error/line 31, :clojure.error/column 116, :clojure.error/source "dsl.clj", :clojure.error/symbol var}, :at [clojure.lang.Compiler analyzeSeq "Compiler.java" 7114]} {:type java.lang.RuntimeException, :message "Unable to resolve var: clojure.test/*load-tests* in this context", :at [clojure.lang.Util runtimeException "Util.java" 221]}], :trace [[clojure.lang.Util runtimeException "Util.java" 221] [clojure.lang.Compiler$TheVarExpr$Parser parse "Compiler.java" 720] [clojure.lang.Compiler analyzeSeq "Compiler.java" 7106] [clojure.lang.Compiler analyze "Compiler.java" 6789] [clojure.lang.Compiler analyze "Compiler.java" 6745] [clojure.lang.Compiler$InvokeExpr parse "Compiler.java" 3888] [clojure.lang.Compiler analyzeSeq "Compiler.java" 7108] [clojure.lang.Compiler analyze {:repl-tooling/... (unrepl.repl$JheDmiOxCQTNBrUuDsZnDvb59lc/fetch :G__9644)}] {:repl-tooling/... (unrepl.repl$JheDmiOxCQTNBrUuDsZnDvb59lc/fetch :G__9645)}], {:repl-tooling/... nil} {:repl-tooling/... (unrepl.repl$JheDmiOxCQTNBrUuDsZnDvb59lc/fetch :G__9646)}}, {:repl-tooling/... nil} {:repl-tooling/... (unrepl.repl$JheDmiOxCQTNBrUuDsZnDvb59lc/fetch :G__9647)}}
And an image:
I’m using:
Thanks for all the great work on Chlorine! Please let me know if there’s any way I can help reproduce this. I could point you to the code I’m loading, for example. Thanks!
When searching via ag (and perhaps other tools?), it seems more convenient for src/repl-tooling to not be ignored, but it is included in .gitignore, so it appears to be under certain invocations.
For example, I was looking for 'connect-unrepl', but the following:
ag -l connect-unrepl
returns:
src/chlorine/repl.cljs
With src/repl-tooling removed from .gitignore, the command returns:
repl-tooling/test/repl_tooling/editor_integration/connection_test.cljs
repl-tooling/src/repl_tooling/editor_integration/connection.cljs
src/chlorine/repl.cljs
At least for someone trying to read and understand both chlorine and repl-tooling, the latter results seem more useful :)
According to git log, it looks like src/repl-tooling was added to .gitignore after repl-tooling was arranged to be a submodule. I'm not sure, but doesn't git ignore submodules by default? I don't know if it's trustworthy, but the following seemed to suggest so:
https://stackoverflow.com/a/7912101
Are there other reasons to have src/repl-tooling in .gitignore?
Getting this error consistently when attempting to use the Inspect Block command. Loading a file works fine. The specifics of the error message depend on the form being evaluated, what is pasted below is for a def
. Doing an Inspect on ns
gives "Error: No protocol method IAssociative.-assoc defined for type string: nil", for example.
Atom: 1.43.0 x64
Electron: 4.2.7
OS: Mac OS X 10.15.2
Thrown From: chlorine package 0.4.0
Uncaught Error: No protocol method IAssociative.-assoc defined for type string: #unrepl/browsable [#clojure/var charts/statement-type-data {:repl-tooling/... (unrepl.repl$3rcwMcc9rCLOH4gMQfLo21mMbCs/fetch :G__9558)}]
At /Users/dave.dixon/.atom/packages/chlorine/lib/cmds.js:36
Error: No protocol method IAssociative.-assoc defined for type string: #unrepl/browsable [#clojure/var charts/statement-type-data {:repl-tooling/... (unrepl.repl$3rcwMcc9rCLOH4gMQfLo21mMbCs/fetch :G__9558)}]
at Jb (/packages/chlorine/lib/cmds.js:27:65)
at lc (/packages/chlorine/lib/cmds.js:36:213)
at Function.S.g (/packages/chlorine/lib/cmds.js:116:36)
at Function.xh.g (/packages/chlorine/lib/cmds.js:293:99)
at /packages/chlorine/lib/cmds.js:1141:194
at Q4 (/packages/chlorine/lib/cmds.js:1544:349)
at /packages/chlorine/lib/cmds.js:1547:343
at N4 (/packages/chlorine/lib/cmds.js:1536:818)
at /packages/chlorine/lib/cmds.js:1547:275
at W0 (/packages/chlorine/lib/cmds.js:1263:225)
at /packages/chlorine/lib/cmds.js:1569:371
at v1 (/packages/chlorine/lib/cmds.js:1277:225)
at gaa (/packages/chlorine/lib/cmds.js:1284:259)
at iaa (/packages/chlorine/lib/cmds.js:1285:230)
at /packages/chlorine/lib/cmds.js:1287:56
at waa (/packages/chlorine/lib/cmds.js:1302:358)
at yaa (/packages/chlorine/lib/cmds.js:1304:322)
at /packages/chlorine/lib/cmds.js:1305:117
at Fg.g.Te (/packages/chlorine/lib/cmds.js:227:374)
at Jg (/packages/chlorine/lib/cmds.js:229:237)
at Function.Kg.g (/packages/chlorine/lib/cmds.js:231:208)
at /packages/chlorine/lib/cmds.js:1308:450)
at Socket.emit (events.js:182:13)
at TCP._handle.close (net.js:606:12)
2x -4:11.2.0 core:backspace (input.hidden-input)
-4:01.9.0 chlorine:connect-clojure-socket-repl (input.hidden-input)
-3:59.5.0 core:focus-next (input.input-text)
-3:38.5.0 chlorine:inspect-block (input.hidden-input)
-3:34.2.0 chlorine:load-file (input.hidden-input)
-3:31.2.0 chlorine:inspect-block (input.hidden-input)
-2:59.7.0 chlorine:connect-clojure-socket-repl (input.hidden-input)
-2:47.8.0 chlorine:load-file (input.hidden-input)
4x -0:39.2.0 core:backspace (input.hidden-input)
-0:36.8.0 core:undo (input.hidden-input)
-0:32.5.0 chlorine:inspect-block (input.hidden-input)
atom-java-decompiler 0.1.2
chlorine 0.4.0
ink 0.11.8
lisp-paredit 0.6.0
parinfer 1.23.0
split-diff 1.6.1
It'd be nice using the Doc for Var functionality if it matched with (doc ...) and showed any known specs!
[Enter steps to reproduce:]
s/keys
on ClojureScript, with the following code: (s/keys :)
Atom: 1.41.0 x64
Electron: 4.2.7
OS: Ubuntu 18.04.3
Thrown From: chlorine package 0.3.8
Uncaught TypeError: Cannot read property 'cljs$core$IFn$_invoke$arity$1' of null
At /home/mauricio/.atom/packages/chlorine/lib/js/cljs-runtime/clojure.zip.js:54
TypeError: Cannot read property 'cljs$core$IFn$_invoke$arity$1' of null
at /packages/chlorine/lib/js/cljs-runtime/clojure.zip.js:54:13)
at /packages/chlorine/lib/js/cljs-runtime/repl_tooling.editor_helpers.js:1405:146
at /packages/chlorine/lib/js/cljs-runtime/repl_tooling.editor_helpers.js:1406:3)
at /packages/chlorine/lib/js/cljs-runtime/repl_tooling.editor_helpers.js:1430:52)
at /packages/chlorine/lib/js/cljs-runtime/repl_tooling.editor_integration.doc.js:128:46)
at /packages/chlorine/lib/js/cljs-runtime/repl_tooling.editor_integration.connection.js:119:44
at /packages/chlorine/lib/js/cljs-runtime/repl_tooling.editor_integration.connection.js:52:105)
at /packages/chlorine/lib/js/cljs-runtime/repl_tooling.editor_integration.connection.js:117:51
at HTMLElement.chlorine.repl.decide_command (/packages/chlorine/lib/js/cljs-runtime/chlorine.repl.js:55:99)
at CommandRegistry.handleCommandEvent (/usr/share/atom/resources/app/static/<embedded>:11:349392)
at KeymapManager.dispatchCommandEvent (/usr/share/atom/resources/app/static/<embedded>:11:1252536)
at KeymapManager.handleKeyboardEvent (/usr/share/atom/resources/app/static/<embedded>:11:1248670)
at WindowEventHandler.handleDocumentKeyEvent (/usr/share/atom/resources/app/static/<embedded>:11:284598)
-1:03.2.0 editor:select-to-end-of-line (input.hidden-input)
-1:03.0 core:select-left (input.hidden-input)
-1:01.1.0 core:move-down (input.hidden-input)
-1:01.1.0 autocomplete-plus:confirm (input.hidden-input)
-1:00.5.0 editor:move-to-end-of-screen-line (input.hidden-input)
-1:00.3.0 lisp-paredit:newline (input.hidden-input)
-0:45.5.0 vim-mode-plus:activate-normal-mode (input.hidden-input)
-0:44.9.0 inline-results:clear-all (input.hidden-input)
-0:44 vim-mode-plus:insert-after (input.hidden-input)
-0:17.4.0 core:move-left (input.hidden-input)
2x -0:17.2.0 core:select-right (input.hidden-input)
-0:16 core:backspace (input.hidden-input)
-0:14.2.0 autocomplete-plus:confirm (input.hidden-input)
-0:10.3.0 vim-mode-plus:activate-normal-mode (input.hidden-input)
2x -0:10.2.0 vim-mode-plus:move-left (input.hidden-input)
2x -0:09.9.0 chlorine:doc-for-var (input.hidden-input)
atom-beautify 0.33.4
atom-ide-ui 0.13.0
atom-limelight 0.1.3
chlorine 0.3.8
chlorine-tests 0.0.0
clippy 0.5.0
everything 0.3.0
ex-mode 0.18.0
hey-pane 1.2.0
ide-php 0.7.18
ink 0.11.6
last-cursor-position 0.9.3
linter 2.3.1
linter-joker 4.1.0
lisp-paredit 0.6.0
parinfer 1.23.0
platformio-ide-terminal 2.10.0
set-syntax 0.4.0
simple-align 0.2.0
simple-git 0.2.0
sync-settings 0.8.6
tmux-terminal 0.0.1
vim-mode-plus 1.36.2
Uncaught TypeError: Cannot read property 'then' of null
At /home/mauricio/.atom/packages/chlorine/lib/js/cljs-runtime/chlorine.providers_consumers.autocomplete.js:71
TypeError: Cannot read property 'then' of null
at /packages/chlorine/lib/js/cljs-runtime/chlorine.providers_consumers.autocomplete.js:71:40)
at /packages/chlorine/lib/js/cljs-runtime/chlorine.providers_consumers.autocomplete.js:81:122
at Object.getSuggestions (/packages/chlorine/lib/js/cljs-runtime/chlorine.providers_consumers.autocomplete.js:82:3)
at providers.forEach.provider (/usr/share/atom/resources/app/node_modules/autocomplete-plus/lib/autocomplete-manager.js:309:58)
at Array.forEach (<anonymous>)
at AutocompleteManager.getSuggestionsFromProviders (/usr/share/atom/resources/app/node_modules/autocomplete-plus/lib/autocomplete-manager.js:280:21)
at AutocompleteManager.findSuggestions (/usr/share/atom/resources/app/node_modules/autocomplete-plus/lib/autocomplete-manager.js:272:23)
at HTMLElement.autocomplete-plus:activate (/usr/share/atom/resources/app/node_modules/autocomplete-plus/lib/autocomplete-manager.js:245:20)
at CommandRegistry.handleCommandEvent (/usr/share/atom/resources/app/src/command-registry.js:384:49)
at KeymapManager.module.exports.KeymapManager.dispatchCommandEvent (/usr/share/atom/resources/app/node_modules/atom-keymap/lib/keymap-manager.js:621:22)
at KeymapManager.module.exports.KeymapManager.handleKeyboardEvent (/usr/share/atom/resources/app/node_modules/atom-keymap/lib/keymap-manager.js:412:28)
at WindowEventHandler.handleDocumentKeyEvent (/usr/share/atom/resources/app/src/window-event-handler.js:110:40)
-2:46.8.0 vim-mode-plus:move-up (input.hidden-input)
-1:49.1.0 everything:fuzzy-finder (input.hidden-input)
-1:47.7.0 core:confirm (input.hidden-input)
-1:47.7.0 chlorine:disconnect (input.hidden-input)
-1:46.9.0 vim-mode-plus:insert-after-end-of-line (input.hidden-input)
-1:46.6.0 lisp-paredit:newline (input.hidden-input)
-1:45.7.0 autocomplete-plus:activate (input.hidden-input)
-1:30.3.0 everything:fuzzy-finder (input.hidden-input)
-1:28.5.0 core:confirm (input.hidden-input)
-1:28.5.0 chlorine:connect-clojure-socket-repl (input.hidden-input)
-1:26.6.0 editor:focus (input.hidden-input)
-1:26.6.0 autocomplete-plus:cancel (atom-text-editor.editor.is-focused)
-1:25.7.0 editor:delete-to-beginning-of-word (input.hidden-input)
4x -1:25.4.0 core:backspace (input.hidden-input)
-1:23.9.0 autocomplete-plus:activate (input.hidden-input)
-1:22.8.0 autocomplete-plus:confirm (input.hidden-input)
atom-beautify 0.33.4
parinfer-plus 0.0.0
chlorine 0.0.6
clojure-plus 0.3.0
everything 0.3.1
ex-mode 0.18.0
hard-wrap 1.7.1
hey-pane 1.1.2
ink 0.9.12
language-ansi 1.1.1
language-haml 0.31.1
language-scala 1.1.9
last-cursor-position 0.9.3
linter 2.2.0
linter-ui-default 1.7.1
lisp-paredit 0.6.0
parinfer 1.23.0
proto-repl 1.4.24
set-syntax 0.4.0
simple-align 0.2.0
simple-git 0.2.0
sync-settings 0.8.6
Termrk 1.0.1
tmux-terminal 0.0.1
vim-mode-plus 1.34.0
[Enter steps to reproduce:]
Rolling back to 0.4.8 seems to fix it.
Atom: 1.44.0 x64
Electron: 4.2.7
OS: Mac OS X 10.15.3
Thrown From: chlorine package 0.4.9
Uncaught TypeError: Cannot read property 'isDestroyed' of null
At /Users/dave.dixon/.atom/packages/chlorine/lib/cmds.js:1510
TypeError: Cannot read property 'isDestroyed' of null
at j1 (/packages/chlorine/lib/cmds.js:1510:241)
at zaa (/packages/chlorine/lib/cmds.js:1512:111)
at sca (/packages/chlorine/lib/cmds.js:1810:293)
at H1 (/packages/chlorine/lib/cmds.js:1549:257)
at Q4 (/packages/chlorine/lib/cmds.js:1784:1041)
at /packages/chlorine/lib/cmds.js:1792:362
at P4 (/packages/chlorine/lib/cmds.js:1784:818)
at Function.e (/packages/chlorine/lib/cmds.js:1792:317)
at Function.f (/packages/chlorine/lib/cmds.js:1792:442)
at /packages/chlorine/lib/cmds.js:1821:251)
at HTMLElement.<anonymous> (/Users/dave.dixon/.atom/init.coffee:69:14)
at CommandRegistry.handleCommandEvent (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:349290)
at KeymapManager.dispatchCommandEvent (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:1253613)
at KeymapManager.handleKeyboardEvent (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:1249747)
at WindowEventHandler.handleDocumentKeyEvent (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:284496)
-1:05.3.0 lisp-paredit:expand-selection (atom-text-editor.editor.indent-mode-76f60.is-focused)
-1:05.3.0 core:delete (atom-text-editor.editor.indent-mode-76f60.is-focused)
-1:05.2.0 datatip:toggle (input.hidden-input)
-1:04.9.0 core:backspace (input.hidden-input)
-1:01.4.0 sparkofreason:inspect-s-exp (input.hidden-input)
-1:01.4.0 lisp-paredit:expand-selection (atom-text-editor.editor.indent-mode-76f60.is-focused)
-1:01.4.0 lisp-paredit:contract-selection (atom-text-editor.editor.indent-mode-76f60.is-focused)
-0:59 chlorine:connect-clojure-socket-repl (input.hidden-input)
2x -0:45.6.0 parinfer:next-tab-stop (input.hidden-input)
-0:44.6.0 core:move-down (input.hidden-input)
13x -0:44.4.0 core:move-left (input.hidden-input)
2x -0:42.4.0 parinfer:next-tab-stop (input.hidden-input)
-0:14.2.0 chlorine:connect-clojure-socket-repl (input.hidden-input)
-0:11.4.0 chlorine:clear-console (input.hidden-input)
-0:09.4.0 sparkofreason:inspect-s-exp (input.hidden-input)
-0:09.4.0 lisp-paredit:expand-selection (atom-text-editor.editor.indent-mode-76f60.is-focused)
atom-ide-ui 0.13.0
atom-java-decompiler 0.1.2
busy-signal 2.0.1
chlorine 0.4.9
go-debug 1.7.0
go-plus 6.1.0
go-signature-statusbar 1.2.3
ide-go 0.12.3
ink 0.12.2
intentions 1.1.5
linter 2.3.1
linter-kondo 1.2.0
linter-ui-default 1.8.1
lisp-paredit 0.6.0
parinfer 1.23.0
split-diff 1.6.1
I only use Chlorine here and there, and I’m an overeager software updater, so my environment is evolving regularly… so sometimes when I jump into Chlorine I discover some new bug.
Here’s what I saw just now:
I expected the function to run; instead I got this:
user=> (fc4.io.cli.main-test/check-opts)
Execution error (IllegalStateException) at unrepl.core/non-eliding-write (REPL:31).
Attempting to call unbound fn: #'unrepl.core/write
Atom with my open clj file that I’ve loaded, and the Chlorine REPL window showing the result of the Load File action:
My terminal window with my attempt to call the function and the error message:
Full output of java -version
:
openjdk version "13.0.2" 2020-01-14
OpenJDK Runtime Environment AdoptOpenJDK (build 13.0.2+8)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 13.0.2+8, mixed mode, sharing)
deps.edn
aliasesI’ve reproduced this when loading two of my aliases: test
and repl
, like so:
clj -A:test:repl
Here are those two aliases from my deps.edn
:
{:repl {:jvm-opts ["-Dclojure.server.repl={:port,5555,:accept,clojure.core.server/repl}"]}
:test {:extra-paths ["test"]
:extra-deps {org.clojure/test.check {:mvn/version "0.10.0"}
cloverage {:mvn/version "1.1.1"}
eftest {:mvn/version "0.5.8"}
orchestra {:mvn/version "2018.12.06-2"}
image-resizer {:mvn/version "0.1.10"}
info.debatty/java-string-similarity {:mvn/version "1.2.1"}}
; It’s crucial to ensure that the JVM’s default character encoding is
; UTF-8 because the renderer outputs UTF-8 encoded text to its stderr,
; which the main program (the JVM program) then needs to read correctly.
; We’ve found that some Linux systems seem to default to US-ASCII which
; will generally break the ability of the main program to properly parse
; the error output of the renderer.
:jvm-opts ["-Dfile.encoding=UTF8"
; Prevent the Java app icon from popping up and grabbing
; focus on MacOS.
"-Dapple.awt.UIElement=true"
"-XX:-OmitStackTraceInFastThrow"
"--illegal-access=deny"
"-Djava.awt.headless=true"]}}
[Enter steps to reproduce:]
Atom: 1.44.0 x64
Electron: 4.2.12
OS: "Arch Linux"
Thrown From: chlorine package 0.4.5
Uncaught Error: Index 30 out of bounds [0,29]
At /home/joni/.atom/packages/chlorine/lib/cmds.js:307
Error: Index 30 out of bounds [0,29]
at ci.g.vc (/packages/chlorine/lib/cmds.js:307:65)
at ci.g.G (/packages/chlorine/lib/cmds.js:309:266)
at Function.P.g (/packages/chlorine/lib/cmds.js:104:59)
at Function.Bh.g (/packages/chlorine/lib/cmds.js:278:99)
at U_ (/packages/chlorine/lib/cmds.js:1098:152)
at /packages/chlorine/lib/cmds.js:1491:289
at P4 (/packages/chlorine/lib/cmds.js:1490:952)
at /packages/chlorine/lib/cmds.js:1491:241
at O4 (/packages/chlorine/lib/cmds.js:1490:818)
at /packages/chlorine/lib/cmds.js:1491:160)
at /packages/chlorine/lib/cmds.js:1492:509
at /packages/chlorine/lib/cmds.js:1511:137)
at CommandRegistry.handleCommandEvent (/usr/lib/atom/src/command-registry.js:405:43)
at Object.didConfirmSelection (/usr/lib/atom/node_modules/command-palette/lib/command-palette-view.js:152:29)
at SelectListView.confirmSelection (/usr/lib/atom/node_modules/atom-select-list/src/select-list-view.js:400:20)
at HTMLDivElement.core:confirm (/usr/lib/atom/node_modules/atom-select-list/src/select-list-view.js:105:14)
at CommandRegistry.handleCommandEvent (/usr/lib/atom/src/command-registry.js:405:43)
at KeymapManager.module.exports.KeymapManager.dispatchCommandEvent (/usr/lib/atom/node_modules/atom-keymap/lib/keymap-manager.js:617:16)
at KeymapManager.module.exports.KeymapManager.handleKeyboardEvent (/usr/lib/atom/node_modules/atom-keymap/lib/keymap-manager.js:408:22)
at WindowEventHandler.handleDocumentKeyEvent (/usr/lib/atom/src/window-event-handler.js:153:34)
-0:39.3.0 core:cancel (input.hidden-input)
4x -0:38.5.0 atomic-emacs:previous-line (input.hidden-input)
3x -0:34.4.0 core:page-up (input.hidden-input)
-0:33.5.0 atomic-emacs:previous-line (input.hidden-input)
-0:32.4.0 atomic-emacs:set-mark (input.hidden-input)
5x -0:31.2.0 core:page-down (input.hidden-input)
-0:29 atomic-emacs:copy-region-as-kill (input.hidden-input)
6x -0:25.6.0 core:page-up (input.hidden-input)
-0:24.4.0 atomic-emacs:set-mark (input.hidden-input)
4x -0:23.4.0 core:page-down (input.hidden-input)
-0:21 command-palette:toggle (input.hidden-input)
-0:18.1.0 core:confirm (input.hidden-input)
-0:18.1.0 chlorine:evaluate-block (input.hidden-input)
-0:12.6.0 command-palette:toggle (input.hidden-input)
-0:10 core:confirm (input.hidden-input)
-0:09.9.0 chlorine:evaluate-selection (input.hidden-input)
advanced-open-file 0.16.8
atom-beautify 0.33.4
atom-haskell 0.4.0
atom-haskell-hie 0.5.0
atom-ide-ui 0.13.0
atomic-emacs 0.15.0
autocomplete-haskell 1.0.1
busy-signal 2.0.1
chlorine 0.4.5
clojure-lsp-adapter 0.1.0
haskell-ghc-mod 2.2.5
haskell-pointfree 0.2.0
haskell-scry 1.0.9
hasklig 0.4.0
highlight-selected 0.17.0
Hydrogen 2.13.1
ide-haskell 2.4.1
ide-haskell-cabal 2.3.0
ide-haskell-hasktags 0.0.16
ide-haskell-hoogle 0.1.2
ide-haskell-repl 0.9.0
ide-rust 0.21.2
ink 0.11.8
intentions 1.1.5
language-haskell 1.19.4
language-haskell-scoped 0.1.1
languageserver-rust 0.3.0
linter 2.3.1
linter-joker 4.1.0
linter-ui-default 1.8.1
lisp-paredit 0.6.0
nord-atom-syntax 0.10.0
nord-atom-ui 0.12.0
proto-repl 1.4.24
proto-repl-charts 0.4.1
proto-repl-sayid 0.1.4
rainbow-delimiters 2.1.2
rustfmt 0.1.3
tool-bar 1.2.0
Zen 0.18.0
If you are typing into the ns
form and you have a syntactically invalid form (for example, you've typed :
for :as
or :refer
and auto-complete kicks in), then the edn_reader.parse()
call will fail and ns-for
will return null
.
In the clj-compliment
function, it calls symbol
unconditionally on ns-name
-- which will throw an exception if ns-name
is nil
.
Suggest changing the beginning of that function to:
(defn- clj-compliment [repl ns-name text prefix row col]
(let [ns (when ns-name (symbol ns-name))
context (make-context text prefix row col)
(guarding the symbol
call)
I'm asked for an ssh password when trying to clone the repository with the repl-tooling submodule.
Editing .gitmodules so that in the submodule section, url's value uses the https://... method of addressing instead of [email protected]... seemed to help, though subsequently editing .git/config's submodule section's url's value also appeared to be necessary. After making these changes, I was not asked for a password when initializing/updating submodules.
Please consider making some appropriate changes so this kind of procedure is unnecessary or if there's something I'm missing, please enlighten me :)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.