Open svetlyak40wt opened 5 years ago
I hope these things will be solved someday. We should do a lot of work to make Lem a really feature full IDE for CL.
If somebody has his own list of "missing features", I'd like to learn about them.
What do you mean by package manager?
What do you mean by package manager?
I mean a way to discover and install third-party extesions (modes). Something like Gnu Emacs's M-x list-packages
.
For example, I want to port a lispy-mode
to lem. What do I need to to to make it available to all other Lem's users?
Implemented a subset of the Lispy's functionality in the Pareto mode.
By the way, probably, the package manager can use Ultralisp's API, to list all systems, tagged as lem
. However, the tagging should be added to the Ultralisp.org first.
Projectile
A few project-related commands were added :rocket:
https://lem-project.github.io/lem-page/usage/usage/#find-file-in-project
M-x project-find-file
with auto-completion of a shrinking list, not far from Helm.
M-x project-delete-buffers, project-directory
C-x d (M-x filer) opens a tree view on the left at the project root
We can fix grep to search on the project root.
under src/commands/project.lisp
.
edit: M-x project-switch
was added (C-x p p
).
treemacs, centaur tabs
treemacs
There's M-x filer
(C-x d
) added after Lem 2.0, a project file viewer (not managing many projects).
https://lem-project.github.io/lem-page/usage/usage/#filer
(Sure it's simpler, the base is here)
(edit) with the comment below I learned about tabs: M-x toggle-tabbar
.
treemacs, centaur tabs
There are tabs already, but not as polish as centaur tabs :+1:
Magit
A Magit-like interface was added: https://github.com/lem-project/lem/blob/main/extensions/legit/README.md
M-x legit-status
presentation and implementation details: https://lisp-journey.gitlab.io/blog/oh-no-i-started-a-magit-like-plugin-for-the-lem-editor/
yasnipet
not dissimilar: inserting templates https://github.com/lem-project/lem/pull/1282/
Today I've tried to use Lem for work on one of my pet projects. Here is the list of things I was lacking to be productive:
Table of Contents
Things I miss (a lot!) in Lem
A ChangeLog.md
Bindings
C-c ~ (or C-c v) repl-sync to syncronize current package
DONE C-w to delete previous word
(Can be bound to backward-delete-word
DONE Undo is not bound to C-/
Paredit should indent line after the new-line
Something like C-u C-Space or pop-global-mark
to jump to the previous place where cusor was. Like bm-toggle function from Gnu Emacs.
With prefix argument (e.g., \\[universal-argument] \\[set-mark-command]), \ jump to the mark, and set the mark from position popped off the local mark ring (this does not affect the global mark ring). Use \\[pop-global-mark] to jump to a mark popped off the global mark ring (see `pop-global-mark').
C-s C-w - to search thing a point
There is a function isearch-forward-symbol-at-point
Double C-s should start searching a previous term
C-c x to export symbol at point (as in SLY)
Gotchas
Unable to start Lem's lisp repl when you already connected to other Lisp process and have a REPL
Lisp-mode should keep history between restarts
Probably…
Grep should search in the whole project
I don't know where it searches, but only not in my project's root :(
Should work like helm-projectile-ag or helm-projectile-grep.
C-u C-c C-c should compile defun with (optimize (debug 3) (safety 3) (speed 0))
Modes
Package Manager
Lispy-mode
Bookmarks
Org-Mode
(STARTED) Magit
Helm
(STARTED) Projectile (with helm integration)
(STARTED) YaSnippet