eisl icon indicating copy to clipboard operation
eisl copied to clipboard

Emacs support

Open Sasanidas opened this issue 3 years ago • 7 comments

Hello @sasagawa888

First of all, thanks for this amazing project, I really had a lot of fun hacking with it, the source code is commented and easy to follow. The only problem that I had is that I'm a Common Lisp programmer that lives in Emacs, so I'm used to amazing tools like sly/SLIME. So I decide to contribute and to create a major-mode (a collection of behaviours that enhance the deauft language experience) and an inferior mode (a REPL interaction).

Here is the resutl Also, an usage example video

I think is fairy complete for basic interaction, Emacs has great support for lisp-like languages, so a lot of the power is leverage to it. I'm planning to add more features, but first I would like to know what do you think about it and if it is worth it include this information in the main README of the eisl repository.

Regards.

Sasanidas avatar Sep 25 '21 15:09 Sasanidas

Hello I watched the video. This is fantastic. It's convenient. Please introduce the details of how to install.

I made EISL for learning on Raspberry Pi. A small editor is included for this purpose. However, Emacs is useful for desktops.

I will describe your ISLisp-mode in the EISL README.

sasagawa888 avatar Sep 25 '21 21:09 sasagawa888

I watched the video. This is fantastic. It's convenient. Please introduce the details of how to install.

Thanks! It's quite simple to install, Emacs has a variable called load-path (describe here), the package doesn't have any external dependency so adding the repository location to that variable in the Emacs initialization file(describe here) and the require statement (require 'islisp-mode) should be enough.

I tested only the package in the current Emacs version, but I don't think it can have any problems if the version is 25+.

I made EISL for learning on Raspberry Pi. A small editor is included for this purpose. However, Emacs is useful for desktops.

I see, as far as I know, Emacs works fairly well on a raspberry pi, is a very lighweight editor (compare to a more modern one like VSCode), I have a raspberry so I can test it with the default Raspbian OS (it's a Raspberry Pi 2 Model B).

I will describe your ISLisp-mode in the EISL README.

Nice, thaks for the addition :+1:

Sasanidas avatar Sep 25 '21 23:09 Sasanidas

Some features that I want to add are:

  • Doc support, both in therm of small function descriptions and a full link to the specification (I already know how to do this, I will basically improve https://github.com/nenbutsu/islelisp to be more dynamic).

  • Autocompletion, I notice the library file functions.lsp that can have some static information about the built in functions, my idea is to make it more dynamic, so for example if you load/compile a new library the editor knows the list of symbols loaded and can add autocompletion to it.

  • ctags support, adding the ability to tag the files so it's easy to get reference and navigate between different places

  • code generation, dynamic templates (snippets)

  • debugger interface, I don't know yet how doable is to "follow" the debugger places.

Some of this additions will be implemented in separate packages, I totally understand that some people prefer a more simple interface to programming languages (specially if they are learning) so I will try to keep the major mode simple and to add more complex functionality in separate packages.

Also, even tho I'm mostly interested right now in Easy-ISLisp, there are other implementations out there, so I will try to keep the specific functions of each implementations in separate part of the major-mode package for clearance.

I would like to know what you guys think (@sasagawa888 @poldy) :+1:

Regards.

Sasanidas avatar Sep 25 '21 23:09 Sasanidas

Thank you for your contribution.

I don't know much about Emacs. I would appreciate any advice.

sasagawa888 avatar Sep 26 '21 03:09 sasagawa888

I use Emacs a fair bit, especially for Lisp. I have currently set up openlisp.el from the OpenLisp package and islelisp. The features I mostly use are syntax highlighting and the hyperspec lookups.

I think your package replaces both of these packages? So my init.el can be simplified, thanks.

poldy avatar Sep 27 '21 22:09 poldy

Regarding adding the supoort to MELPA is been discuse here.

Sasanidas avatar Sep 28 '21 11:09 Sasanidas

I'm planing on implementing more advance features to the base major mode package (islisp-mode) but will keep it disabled.

Aside from this, giving that been a teaching tool is one of the goals of the project, I will made several tutorials with plain Emacs (for beginners) using the package, in a raspberry pi. :+1:

Sasanidas avatar Sep 28 '21 12:09 Sasanidas

Issue solve! Emacs packages for writting ISLisp is on Melpa, they are divided in two:

It's more focus to eisl, mostly because it's the only implementantion I tested, but it should work on others

Sasanidas avatar Sep 26 '22 16:09 Sasanidas