nobody-famous / alive Goto Github PK
View Code? Open in Web Editor NEWCommon Lisp Extension for VSCode
License: The Unlicense
Common Lisp Extension for VSCode
License: The Unlicense
While trying to evaluate a define-test
statement in this project:/exercises/practice/acronym/acronym-test.lisp:10, I get the error below:
[Error: UNHANDLED OP SwankRawEvent { op: ':READER-ERROR', payload: [ Atom { start: [Position], end: [Position], value: '"(:emacs-rex (swank-repl:listener-eval \\"(define-test\n' + ' empty-gives-empty\n' + ' (assert-equal \\\\\\"\\\\\\" (acronym:acronym \\\\\\"\\\\\\")))\\") NIL\n' + '#<UNBOUND-VARIABLE ACRONYM-TEST {7002E11AA3}> :repl-thread 23)"', type: 4 }, Atom { start: [Position], end: [Position], value: '"illegal sharp macro character: #\\\\<\n' + '\n' + ' Stream: #<dynamic-extent STRING-INPUT-STREAM (unavailable) from \\"(:emacs-...\\">"', type: 4 } ] } at SwankResponse.convertRawEvent (/Users/me/.vscode-insiders/extensions/rheller.alive-0.1.7/out/src/swank/SwankResponse.js:64:15) at SwankResponse.parseEvent (/Users/me/.vscode-insiders/extensions/rheller.alive-0.1.7/out/src/swank/SwankResponse.js:35:46) at SwankResponse.parse (/Users/me/.vscode-insiders/extensions/rhe...
I am not totally sure what it's angry about or how to fix it, but I thought I would report it. The define-test
function is also auto-formatting a little weird. I am not sure if it is related or not.
The formatter needs to remove extra whitespace between expressions.
For example,
(if cond true false)
should be formatted as
(if cond true false)
Currently, ids of the form package:id are split into by the lexer. It should split them into and the parser should handle dealing with them from there.
With single quote followed by package name, only the package name part is being colored as a quote.
With back-tick, need to remove quote color from item following comma.
The Lisp standard is to write global variables enclosed in asterisks, like name. The colorizer should recognize that format and have a color setting for it.
When packages.lisp changes, the package manager needs to be updated with the changes.
Sorry to open a ticket, but I just wanted you to know how much I appreciate this. I am using it with sbcl and clpm, and it worked on my first attempt. The entire set of steps after I had sbcl and clpm installed was this:
clpm exec -- sbcl --eval '(asdf:load-system :swank)' --eval '(swank:create-server)'
0: [INSTALL-AND-RELOAD-CONFIG ] Attempt to install the system and try again.
to install requirements (swank in this case) and reload.0: [APPROVE-DIFF ] Approve diff and continue
to approve the load of swankAlive: Attach to Repl
Autocomplete is working, debugging is working, formatting is working, and syntax highlighting is working. This is an amazing start. It's basically everything I need to not be using emacs.
If the cursor is in front of the opening paren of a top level form, the select sexpr function doesn't select anything.
There should be an option to specify a maximum line length for the formatter
If no in-package form has been seen, code completion should assume cl-user.
The Lisp standard is to put all closing parens on the same line. The formatter should be able to do that.
Actually there's a number of situations the formatter should handle.
In a defpackage form, the :use and :export clauses should align the children.
This,
(defpackage :pkg
(:export :a
:b
)
Instead of
(defpackage :pkg
(:export :a
:b
)
Need to implement REPL history. Ideally, would like something like the task runner that gives a list that can be selected from with the selected item becoming the top of the list next time. That's in addition to having some up/down arrow way of doing it in the REPL view.
The keyword lambda is being colored as a function call. It should be colored as a built-in function or macro.
Macroses with &body arguments usually indented in a way so body arguments are indented two spaces right from macro name
(dolist (element list)
(first)
(second)
...
Instead, at least in cases of "dolist", "when" and "unless" macro formatter from alive indents it as
(dolist (element list)
(first)
(second)
...
The accessors for a class are not being included in the code completion list.
Need to add a code snippet for let blocks.
If there's an empty line inside an expression, the formatter is adding indentation spaces.
The debugger should use the swank protocol and startup a repl with a swank server running.
When a load expression is seen, the file specified should be read and parsed.
have repl-localhost-4005.alive-repl functioning in visual studio code. However regardless if i type (require 'asdf) or anything, the REPL window is unresponsive and becomes a generic text editor, any pointers?
started on lisp a few days ago.
The defclass form needs special handling to align things correctly.
(defclass foo ()
((a :accessor a)
(b :accessor b)
))
Instead of
(defclass foo ()
((a :accessor a)
(b :accessor b)
))
The defun snippet puts everything on one line, it should start with something like this
(defun name ()
..
)
When the REPL is intentionally disconnected, should close the editor. Apparently that's not as simple as it sounds, though. :-/
Also delete the file?
When trying to do a restart that sets a new variable value, every now and then entering the new value doesn't appear to do anything. Hitting return again prints the message,
"The value -2 is not of type SB-INT:INDEX when binding LENGTH"
The value is not always -2.
The names of methods created with defmethod are not being added to the completions list.
Conditions defined with define-condition should show up as completion options.
I start a swank server:
(ql:quickload "swank")
(swank:create-server :port 4005 :dont-close t)
But on command "ALIVE: Attach to REPL", I can see the window with "localhost:4005", on pressing enter, the window simply reappears, instead of the REPL. OTOH, I can connect to the above swank server from emacs.
I'm on VS Code 1.52.1 / Linux.
Lines that only contain spaces are not being trimmed when formatted. That used to work, so something broke along the way.
There are several things in alive formatter that i'd like to be able to change
1)Comments after last line of form for some reason are authomatically sent to next line
before formatting
after formatting
And i'd like to at least be able to tell formatter not to do that
2)Formatter automatically remove all new lines between forms except one.
before formatting
after formatting
It would be nice to change it so it will be able place two new lines between forms, or don't change amount of lines between forms at all.
3)If you use format with parinfer, then formating sometimes changes bracket structure.
I found workaround -- I binded multi-command "change parinfer mode to paren mode, then format, then change it back", but perhaps there is a more elegant way to fix it on your side. If yes, that would be nice.
This is on a database supporting the commands.
When the following commands are entered in the REPL:
(filter '(1 3 -9 5 -2 -7 6) #'plusp)
(filter '(1 3 -9 5 -2 -7 6) #'evenp)
swank server disconnect.
However when the same lines are in the database, and then put into the REPL, the swank server is well behaved.
So (funcall ...) lets us pass functions as parameters? Is this that homoioncity people were talking about?
First off. thanks for all your support getting started in the past. Be advised. I am still new so the fault could lie with me. Also I am encountering this issue on an assignment problem.
The code will look like a dogs breakfest more than usual since I am troubleshooting and I dont subscribe to the idea of mashing () pairs with the mass density approaching that of a neutron star since I still need to see what I am doing.
Please review the following link.
https://github.com/cooleynal/COMP-456/blob/master/Assignment2/q3.lisp
I have function (qs):
(qs '((3 B C D) (1 A E F C) (3 X F E) (8 C F E F) (7 D) (3 G E)))
Returns
((1 A E F C) (3 G E) (3 X F E) (3 B C D) (7 D) (8 C F E F))
I have function (dbfs) that marks nodes as read. The idea is to make a psuedo priority queue and pop elements off in terms of lowest value. Use a breadth search off the lowest cost poped off element. Add all neighbours of that popped element to the priority queue. Continue until everything is visited. Assuming the goal is found, there exists some sublists of lists contain a goal and the lowest cost path is now our ... lowest cost path from start node to the goal.
Everything is mostly functional except I can not call (qs pq) from inside (dbfs). From my troubleshooting (qs) works great from the scratch pad side when I call from inside (dbfs) and also in REPL.
When (setq pq (qs pq)) is called from inside (dbfs) I get the following.
The value NIL is not of the expected type NUMBER.
The interesting part is (pq) handles null entries and closes gracefully. I have tried to offload (setq pq (qs pq)) functionality to other functions with no success.
Is it Alive? or is it me? or both?
Any tips will be appreciated.
The formatter needs an option to put the closing parens stack on its own line or not. Options should be,
'always' - Closing stack is always on a new line
'never' - Closing stack is never on its own line
'multiple' - Treat multiple parens as 'always' and singles as 'never'.
Open settings json file, make a change, and save the file. Switch back to a lisp file and it's no longer colorized.
Code completion also seems to not be working, so it looks like the extension is unloaded and is not getting reloaded.
When I try to use REPL window it behaves like normal text window -- when I press enter it just enters new line, and I can delete everything, even read-only "CL-USER>". Evaluating forms in code window returns answer, but not in REPL.
REPL-behaviour starts at 0:50
OS is Ubuntu 20.04.1
I've had this weird behavior where the focus drops down into the debugger when it opens, but it only lets me scroll around. I can't use the key commands to pick an option. I can't figure out a way to get out of it that doesn't involve clicking my mouse back on the editor window. Is there a way to pop the debugger open without moving the focus to it? Is there a better way to do this that I am not aware of? This could 100% be user error.
If multiple forms are selected, sending the entire selection to swank only evaluates the first one. Need to parse out the different forms and send them individually, apparently.
If a symbol is referenced with pkg::symbol, it's not being included in the completions list.
Code completion only shows built-in words. It should show functions and variables that have been defined.
Ideally, unrecognized words should be marked as errors.
The formatter isn't removing blank lines. There needs to be an option for that.
Formatter needs to handle the loop macro. For example, the body of a do clause should be indented.
(loop
for ... do
(...)
)
Instead of
(loop
for ... do
(...)
)
Formatter needs an option to remove trailing white space from lines.
When a package is split across multiple files, need to be able to get the package definition and use it in all the files.
Running the formatter on swank.lisp from the slime repo takes about 2 minutes. That's unacceptable.
Gifs in the readme are blurry, please add text + images.
But, this is the best effort for lisp in vscode by far!
Light theme (Default light +) debug mode colors are garbled -- when the swank debugger opens up.
Need theme based variables for colors defined in debug.css.
When trying to get a completions list with a prefix of "p", a debug event is fired saying
"The function SB-EXT:PROCESS-PTY is undefined."
So far, it only happens with p. Everything else works fine.
When a document is formatted, the cursor ends up at the end of the file. Need to put it back where it was before format was called.
I use the #+(or)
reader macro quite a bit to comment out expressions and the auto-formatter is formatting them like regular comments. Any chance the formatted could ignore them?
Code completion items should contain a description.
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.