lem-project / lem

Common Lisp editor/IDE with high expansibility
http://lem-project.github.io/
MIT License
2.29k stars 165 forks source link

Things I miss (a lot!) in Lem #413

Open svetlyak40wt opened 5 years ago

svetlyak40wt commented 5 years ago

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

  1. Things I miss (a lot!) in Lem
    1. A ChangeLog.md
    2. Bindings
      1. C-c ~ (or C-c v) repl-sync to syncronize current package
      2. (DONE) C-w to delete previous word
      3. (DONE) Undo is not bound to C-/
      4. Paredit should indent line after the new-line
      5. Something like C-u C-Space or pop-global-mark
      6. C-s C-w - to search thing a point
      7. Double C-s should start searching a previous term
      8. C-c x to export symbol at point (as in SLY)
    3. Gotchas
      1. Unable to start Lem's lisp repl when you already connected to other Lisp process and have a REPL
      2. Lisp-mode should kee history between restarts
      3. Grep should search in the whole project
      4. C-u C-c C-c should compile defun with (optimize (debug 3) (safety 3) (speed 0))
    4. Modes
      1. Package Manager
      2. Lispy-mode
      3. Bookmarks
      4. Org-Mode
      5. (STARTED) Magit
      6. Helm
      7. (STARTED) Projectile (with helm integration)
      8. (STARTED) YaSnippet

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

svetlyak40wt commented 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.

snmsts commented 5 years ago

What do you mean by package manager?

svetlyak40wt commented 5 years ago

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?

svetlyak40wt commented 4 years ago

Implemented a subset of the Lispy's functionality in the Pareto mode.

svetlyak40wt commented 4 years ago

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.

vindarel commented 1 year ago

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).

rajcspsg commented 1 year ago

treemacs, centaur tabs

vindarel commented 1 year ago

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.

Sasanidas commented 1 year ago

treemacs, centaur tabs

There are tabs already, but not as polish as centaur tabs :+1:

vindarel commented 4 months ago

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/

vindarel commented 4 months ago

yasnipet

not dissimilar: inserting templates https://github.com/lem-project/lem/pull/1282/