atom-haskell / haskell-debug Goto Github PK
View Code? Open in Web Editor NEWImplements a graphical haskell debugger in atom, using ghci
Home Page: https://atom.io/packages/haskell-debug
License: MIT License
Implements a graphical haskell debugger in atom, using ghci
Home Page: https://atom.io/packages/haskell-debug
License: MIT License
I only have one project open in atom. After setting the break point and running the debugger it opens a terminal window but starts building one of my other Haskell projects.
Hi,
I'm trying to debug this Haskell application: https://github.com/neo4j-examples/neo4j-movies-haskell-bolt
and get the following error in Atom GUI:
GHCI Error
Configuring GHCi with the following packages: hasbolt-sample-app
Using main module: 1. Package `hasbolt-sample-app' component exe:hasbolt-sample-app-exe with main-is file: /Users/ts/work/haskell/neo4j-movies-haskell-bolt/app/Main.hs
also a Terminal opens up with this content:
node /Users/ts/.atom/packages/haskell-debug/lib/TerminalEcho.js
ts@petunia ~ 0% node /Users/ts/.atom/packages/haskell-debug/lib/TerminalEcho.js
/Users/ts/.atom/packages/haskell-debug/lib/TerminalEcho.js:3
const net = require("net");
^^^^^
SyntaxError: Use of const in strict mode.
at exports.runInThisContext (vm.js:73:16)
at Module._compile (module.js:443:25)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function.Module.runMain (module.js:501:10)
at startup (node.js:129:16)
at node.js:814:3
I have no idea whats wrong here. Any hints?
Thanks,
BR
Provide this for vs code. It'll be great. If this is done. The extension will be the same but you'll need to change the target to which you compile to vsix
ghc is broken https://ghc.haskell.org/trac/ghc/ticket/3397, so this means that breaking on an exception will freeze the debugger in some instances
[Enter steps to reproduce:]
Atom: 1.52.0 x64
Electron: 6.1.12
OS: Unknown Windows version
Thrown From: haskell-debug package 0.3.6
Uncaught Error: This socket has been ended by the other party
At events.js:177
Error: This socket has been ended by the other party
at Socket.writeAfterFIN [as write] (net.js:407:14)
at TerminalReporter.send (/packages/haskell-debug/lib/TerminalReporter.js:65:29)
at TerminalReporter.destroy (/packages/haskell-debug/lib/TerminalReporter.js:39:18)
at Debugger.destroy (/packages/haskell-debug/lib/Debugger.js:111:31)
at /packages/haskell-debug/lib/Debugger.js:135:18
at Function.simpleDispatch (~/AppData/Local/atom/app-1.52.0/resources/app/static/<embedded>:11:1190511)
at Emitter.emit (~/AppData/Local/atom/app-1.52.0/resources/app/static/<embedded>:11:1191952)
at process.interactive_process_1.InteractiveProcess.cwd.cwd (/packages/haskell-debug/lib/GHCIDebug.js:158:26)
at /packages/haskell-debug/lib/interactive-process.js:25:17)
at ChildProcess.emit (events.js:200:13)
at Process.ChildProcess._handle.onexit (internal/child_process.js:272:12)
2x -2:44.4.0 core:move-down (input.hidden-input)
4x -2:43.7.0 core:move-right (input.hidden-input)
-2:42.7.0 editor:newline (input.hidden-input)
-2:37.6.0 core:save (input.hidden-input)
3x -2:33.5.0 core:undo (input.hidden-input)
4x -2:29.8.0 core:backspace (input.hidden-input)
-2:24.4.0 core:save (input.hidden-input)
7x -2:18.3.0 core:undo (input.hidden-input)
4x -2:15.3.0 core:backspace (input.hidden-input)
-2:14.4.0 core:save (input.hidden-input)
-1:07.1.0 command-palette:toggle (input.hidden-input)
-1:04.9.0 core:confirm (input.hidden-input)
-1:04.9.0 haskell:debug (input.hidden-input)
-0:12.9.0 command-palette:toggle (input.hidden-input)
-0:09.0 core:confirm (input.hidden-input)
-0:09.0 haskell:debug (input.hidden-input)
atom-terminal 0.8.0
autocomplete-clang 0.13.1
gcc-make-run 0.2.12
haskell-debug 0.3.6
language-haskell 1.20.0
terminal-tab 0.6.0
this.ghciDebug.addBreakpoint(ob) // TODO: make this work properly
I suggest trying to get the module name from the file path using the :list module
command. Here is a sketch of how it could work:
GHCIDebug.ts
// in addBreakpoint
this.run(`:list modules`, false, false, false)
.then(modules => {
const matchResult = modules.match(new RegExp("([^ ]+) +\( +" + breakpoint.file))
if (! matchResult) { return }
this.run(`:break ${matchResult[1]} ${breakpoint.line}`)
})
In haskell-debug\styles\main.atom-text-editor.less
:
Starting from Atom v1.13.0, the contents of atom-text-editor
elements are no longer encapsulated within a shadow DOM boundary. This means you should stop using :host
and ::shadow
pseudo-selectors, and prepend all your syntax selectors with syntax--
. To prevent breakage with existing style sheets, Atom will automatically upgrade the following selectors:
.breakpoint
=> .syntax--breakpoint
.cursor-line.breakpoint
=> .cursor-line.syntax--breakpoint
Automatic translation of selectors will be removed in a few release cycles to minimize startup time. Please, make sure to upgrade the above selectors as soon as possible.
It would be awesome if this plug-in support Stack based GHCi.
Running "Haskell: Debug" causes the following exception:
TypeError: Cannot read property 'handle' of undefined
at new a (C:\Users\cke.atom\packages\haskell-debug\node_modules\draggable\dist\draggable.min.js:1:429)
at new CurrentVariablesView (C:\Users\cke.atom\packages\haskell-debug\lib\views\CurrentVariablesView.js:22:26)
at new Debugger (C:\Users\cke.atom\packages\haskell-debug\lib\Debugger.js:24:37)
at atom-text-editor.Main.commands.debug (C:\Users\cke.atom\packages\haskell-debug\lib\main.js:32:30)
at CommandRegistry.module.exports.CommandRegistry.handleCommandEvent (C:\Users\cke\AppData\Local\atom\app-1.10.2\resources\app.asar\src\command-registry.js:260:29)
at C:\Users\cke\AppData\Local\atom\app-1.10.2\resources\app.asar\src\command-registry.js:3:61
at CommandPaletteView.module.exports.CommandPaletteView.confirmed (C:\Users\cke\AppData\Local\atom\app-1.10.2\resources\app.asar\node_modules\command-palette\lib\command-palette-view.js:183:32)
at CommandPaletteView.module.exports.SelectListView.confirmSelection (C:\Users\cke\AppData\Local\atom\app-1.10.2\resources\app.asar\node_modules\atom-space-pen-views\lib\select-list-view.js:338:21)
at space-pen-div.atom.commands.add.core:confirm (C:\Users\cke\AppData\Local\atom\app-1.10.2\resources\app.asar\node_modules\atom-space-pen-views\lib\select-list-view.js:109:19)
at CommandRegistry.module.exports.CommandRegistry.handleCommandEvent (C:\Users\cke\AppData\Local\atom\app-1.10.2\resources\app.asar\src\command-registry.js:260:29)
at C:\Users\cke\AppData\Local\atom\app-1.10.2\resources\app.asar\src\command-registry.js:3:61
at KeymapManager.module.exports.KeymapManager.dispatchCommandEvent (C:\Users\cke\AppData\Local\atom\app-1.10.2\resources\app.asar\node_modules\atom-keymap\lib\keymap-manager.js:580:16)
at KeymapManager.module.exports.KeymapManager.handleKeyboardEvent (C:\Users\cke\AppData\Local\atom\app-1.10.2\resources\app.asar\node_modules\atom-keymap\lib\keymap-manager.js:388:22)
at WindowEventHandler.module.exports.WindowEventHandler.handleDocumentKeyEvent (C:\Users\cke\AppData\Local\atom\app-1.10.2\resources\app.asar\src\window-event-handler.js:98:36)
at HTMLDocument. (C:\Users\cke\AppData\Local\atom\app-1.10.2\resources\app.asar\src\window-event-handler.js:3:61)
Hi. I was wondering if you'd be interested in joining atom-haskell.
I love what you're doing here, but some code is painfully hacky. So I was thinking, maybe we could collaborate on improving ide-haskell's API and possibly integrating this with ide-haskell-repl (as in "ability to use ide-haskell-repl instead of a terminal" not as in "merge packages")?
FWIW, I've been doing some work on managing tooltip provider priorities, so that could at least make this hack unnecessary. Let me know what you think!
[Enter steps to reproduce:]
Atom: 1.23.1 x64
Electron: 1.6.15
OS: Mac OS X 10.12.6
Thrown From: haskell-debug package 0.3.4
Uncaught Error: listen EADDRINUSE /tmp/haskell-debug.sock
At events.js:160
Error: listen EADDRINUSE /tmp/haskell-debug.sock
at Object.exports._errnoException (util.js:1022:11)
at exports._exceptionWithHostPort (util.js:1045:20)
at Server._listen2 (net.js:1249:19)
at listen (net.js:1298:10)
at Server.listen (net.js:1382:7)
at /packages/haskell-debug/lib/TerminalReporter.js:27:21)
at /packages/haskell-debug/lib/Debugger.js:28:33)
at /packages/haskell-debug/lib/main.js:30:28)
at Generator.next (<anonymous>)
at fulfilled (/packages/haskell-debug/lib/main.js:4:58)
-0:45.5.0 editor:newline (input.hidden-input)
-0:38.9.0 core:copy (input.hidden-input)
-0:37.2.0 editor:newline (input.hidden-input)
-0:36.7.0 core:paste (input.hidden-input)
-0:36.1.0 editor:newline (input.hidden-input)
-0:35.6.0 core:paste (input.hidden-input)
-0:35.2.0 editor:newline (input.hidden-input)
-0:34.7.0 core:paste (input.hidden-input)
-0:34.4.0 editor:newline (input.hidden-input)
-0:34 core:paste (input.hidden-input)
-0:32.9.0 core:save (input.hidden-input)
-0:28.4.0 command-palette:toggle (input.hidden-input)
-0:25.4.0 core:backspace (input.hidden-input)
-0:22.5.0 haskell:debug (input.hidden-input)
atom-beautify 0.30.9
atom-haskell 0.4.0
atom-json-editor 0.4.1
autocomplete-haskell 1.0.1
busy-signal 1.4.3
haskell-debug 0.3.4
haskell-ghc-mod 2.1.3
haskell-grammar 0.4.0
haskell-hoogle 0.1.3
haskell-pointfree 0.2.0
haskell-scry 1.0.7
hasklig 0.4.0
ide-haskell 2.2.0
ide-haskell-cabal 2.0.5
ide-haskell-hasktags 0.0.12
ide-haskell-hoogle 0.1.2
ide-haskell-repl 0.7.8
import-sf-mono 1.0.1
intentions 1.1.5
language-haskell 1.15.0
language-haskell-scoped 0.1.0
language-mathematica 0.3.2
linter 2.2.0
linter-hlint 2.0.0
linter-ui-default 1.6.10
react 0.17.0
script 3.17.3
When I run the plug-in I get "GHCi Error: Error parsing targets: No local directories found as children of".
I'm using latest Atom + latest plug-in version. I'm trying to run Stack based project with explicitly selected main module on Windows 10.
i have these packages installed :
ide-haskell
ide-haskell-cabal
haskell-ghc-mod
autocomplete-haskell
haskell-debug
language-haskell
in the following image you can see the error that happens when i run "haskell-debug".
it seems it comes from file config.cson but does not make much sense to me.
what am i doing wrong?
[Enter steps to reproduce below:]
Atom Version: 1.12.3
Electron Version: 1.3.6
System: Microsoft Windows 10 Home
Thrown From: haskell-debug package, v0.1.2
Uncaught TypeError: Invalid Point: (NaN, 0)
At C:\Users\Hickman\AppData\Local\atom\app-1.12.3\resources\app.asar\node_modules\text-buffer\lib\point.js:63
TypeError: Invalid Point: (NaN, 0)
at Function.module.exports.Point.assertValid (C:\Users\Hickman\AppData\Local\atom\app-1.12.3\resources\app.asar\node_modules\text-buffer\lib\point.js:63:15)
at TextBuffer.module.exports.TextBuffer.clipPosition (C:\Users\Hickman\AppData\Local\atom\app-1.12.3\resources\app.asar\node_modules\text-buffer\lib\text-buffer.js:1099:13)
at TextBuffer.module.exports.TextBuffer.clipRange (C:\Users\Hickman\AppData\Local\atom\app-1.12.3\resources\app.asar\node_modules\text-buffer\lib\text-buffer.js:1087:20)
at MarkerLayer.module.exports.MarkerLayer.markRange (C:\Users\Hickman\AppData\Local\atom\app-1.12.3\resources\app.asar\node_modules\text-buffer\lib\marker-layer.js:196:46)
at DisplayMarkerLayer.module.exports.DisplayMarkerLayer.markBufferRange (C:\Users\Hickman\AppData\Local\atom\app-1.12.3\resources\app.asar\node_modules\text-buffer\lib\display-marker-layer.js:90:62)
at TextEditor.module.exports.TextEditor.markBufferRange (C:\Users\Hickman\AppData\Local\atom\app-1.12.3\resources\app.asar\src\text-editor.js:1711:38)
at BreakpointUI.toggleBreakpoint (C:\Users\Hickman\.atom\packages\haskell-debug\lib\BreakpointUI.js:13:39)
at HTMLDivElement.view.addEventListener.ev (C:\Users\Hickman\.atom\packages\haskell-debug\lib\BreakpointUI.js:32:22)
{
"core": {
"disabledPackages": [
"keybinding-resolver",
"linter-flake8"
],
"telemetryConsent": "limited"
},
"haskell-debug": {
"breakOnException": "errors",
"clickGutterToInsertBreakpoint": false
}
}
# User
.bin, vundefined (inactive)
atom-beautify, v0.29.11 (active)
atom-node-debugger, v2.1.2 (active)
atom-typescript, v10.1.7 (active)
autocomplete-clang, v0.9.4 (active)
autocomplete-gml, v0.1.6 (active)
autocomplete-haskell, v0.6.7 (active)
autocomplete-love, v0.3.0 (active)
file-watcher, v0.4.0 (active)
firepad, v0.8.0 (inactive)
haskell-debug, v0.1.2 (active)
haskell-ghc-mod, v1.17.2 (active)
hyperclick, v0.0.37 (active)
hyperclick-love, v0.4.0 (active)
ide-haskell, v1.8.1 (active)
ide-haskell-cabal, v1.6.4 (active)
ide-haskell-repl, v0.1.9 (active)
language-bnf, v1.1.0 (active)
language-brainfuck, v0.2.0 (active)
language-dogescript, v0.1.2 (active)
language-ejs, v0.2.0 (active)
language-gml, v0.3.0 (inactive)
language-haskell, v1.9.9 (active)
language-lua, v0.9.11 (active)
language-pegjs, v0.5.0 (active)
language-racket, v0.4.0 (active)
language-ruby, v0.69.0 (active)
language-rust, v0.4.6 (active)
linter, v1.11.16 (active)
linter-clang, v3.4.4 (active)
linter-coffeelint, v1.1.2 (active)
linter-flake8, v1.13.2 (inactive)
linter-gml, v0.1.3 (active)
linter-lua, v1.0.2 (active)
linter-python-pyflakes, v0.1.0 (active)
linter-ruby, v1.2.2 (active)
linter-rust, v0.5.6 (active)
livereload, v0.4.4 (active)
racer, v0.20.0 (active)
sass-autocompile, v0.13.0 (active)
script, v3.9.0 (inactive)
Sublime-Style-Column-Selection, v1.7.2 (active)
tab-control, v0.6.9 (active)
atom-dark-syntax, v0.27.0 (inactive)
atom-dark-ui, v0.52.0 (inactive)
atom-light-syntax, v0.28.0 (inactive)
atom-light-ui, v0.45.0 (inactive)
base16-tomorrow-dark-theme, v1.3.0 (inactive)
base16-tomorrow-light-theme, v1.3.0 (inactive)
one-dark-ui, v1.6.2 (active)
one-light-ui, v1.6.2 (inactive)
one-dark-syntax, v1.5.0 (active)
one-light-syntax, v1.5.0 (inactive)
solarized-dark-syntax, v1.0.5 (inactive)
solarized-light-syntax, v1.0.5 (inactive)
about, v1.7.0 (active)
archive-view, v0.62.0 (active)
autocomplete-atom-api, v0.10.0 (active)
autocomplete-css, v0.13.1 (active)
autocomplete-html, v0.7.2 (active)
autocomplete-plus, v2.31.4 (active)
autocomplete-snippets, v1.11.0 (active)
autoflow, v0.27.0 (inactive)
autosave, v0.23.1 (active)
background-tips, v0.26.1 (active)
bookmarks, v0.42.0 (active)
bracket-matcher, v0.82.2 (active)
command-palette, v0.39.0 (active)
deprecation-cop, v0.54.1 (active)
dev-live-reload, v0.47.0 (active)
encoding-selector, v0.22.0 (active)
exception-reporting, v0.40.0 (active)
find-and-replace, v0.202.2 (active)
fuzzy-finder, v1.4.0 (active)
git-diff, v1.1.0 (active)
go-to-line, v0.31.0 (inactive)
grammar-selector, v0.48.2 (active)
image-view, v0.60.0 (active)
incompatible-packages, v0.26.1 (active)
keybinding-resolver, v0.35.0 (inactive)
line-ending-selector, v0.5.0 (active)
link, v0.31.2 (inactive)
markdown-preview, v0.158.8 (active)
metrics, v1.1.2 (active)
notifications, v0.65.1 (active)
open-on-github, v1.2.1 (inactive)
package-generator, v1.0.1 (inactive)
settings-view, v0.243.1 (active)
snippets, v1.0.4 (active)
spell-check, v0.68.4 (active)
status-bar, v1.4.1 (active)
styleguide, v0.47.2 (active)
symbols-view, v0.113.1 (inactive)
tabs, v0.103.0 (active)
timecop, v0.33.2 (active)
tree-view, v0.210.0 (active)
update-package-dependencies, v0.10.0 (active)
welcome, v0.35.1 (active)
whitespace, v0.35.0 (active)
wrap-guide, v0.38.2 (active)
language-c, v0.54.0 (active)
language-clojure, v0.22.1 (active)
language-coffee-script, v0.48.0 (active)
language-csharp, v0.13.0 (active)
language-css, v0.40.1 (active)
language-gfm, v0.88.0 (active)
language-git, v0.15.0 (active)
language-go, v0.43.0 (active)
language-html, v0.46.1 (active)
language-hyperlink, v0.16.1 (active)
language-java, v0.24.0 (active)
language-javascript, v0.122.0 (active)
language-json, v0.18.3 (active)
language-less, v0.29.6 (active)
language-make, v0.22.2 (active)
language-mustache, v0.13.0 (active)
language-objective-c, v0.15.1 (active)
language-perl, v0.37.0 (active)
language-php, v0.37.3 (active)
language-property-list, v0.8.0 (active)
language-python, v0.45.1 (active)
language-ruby, v0.69.0 (active)
language-ruby-on-rails, v0.25.1 (active)
language-sass, v0.57.0 (active)
language-shellscript, v0.23.0 (active)
language-source, v0.9.0 (active)
language-sql, v0.25.0 (active)
language-text, v0.7.1 (active)
language-todo, v0.29.1 (active)
language-toml, v0.18.1 (active)
language-xml, v0.34.12 (active)
language-yaml, v0.27.1 (active)
# Dev
No dev packages
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.