https://github.com/lem-project/lem-extension-manager
LEM(Lem extension manager) it's a package manager for the Lem editor/IDE
https://github.com/lem-project/lem-extension-manager
Last synced: 4 months ago
JSON representation
LEM(Lem extension manager) it's a package manager for the Lem editor/IDE
- Host: GitHub
- URL: https://github.com/lem-project/lem-extension-manager
- Owner: lem-project
- License: mit
- Created: 2023-08-12T13:31:04.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2025-09-11T22:29:51.000Z (9 months ago)
- Last Synced: 2025-09-12T01:03:00.260Z (9 months ago)
- Language: Common Lisp
- Homepage: https://lem-project.github.io/
- Size: 29.3 KB
- Stars: 22
- Watchers: 6
- Forks: 4
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# LEM (Lem Extension Manager)
It's a configuration library that add the ability to Lem to have packages withing the user configuration directory.
## Usage
### Init example
The main function that we can use to add new packages is `lem-use-package`, this fuctions allow us to add libraries
that will be loaded at run time when open Lem (the performance shouldn't be too much of a problem, as sbcl is very good using the cache).
To use this function, we can modify our `init.lisp` file in this way:
- Using the git source (we can specify a branch or specific commit):
```lisp
(lem-extension-manager:lem-use-package
"lisp-critic"
:source (:type :git
:url "https://github.com/g000001/lisp-critic.git"))
(lem-extension-manager:lem-use-package "versioned-objects"
:source (:type :git
:url "https://github.com/smithzvk/Versioned-Objects.git"
:branch "advance-versioning"))
```
- Using the quicklisp package manager directly:
```lisp
(lem-extension-manager:lem-use-package "fiveam" :source (:type :quicklisp))
```
It's also possible to recursive dependenices that are not on quicklisp (for example, other github packages), using the `:dependencies` keyword:
```lisp
(lem-extension-manager:lem-use-package "versioned-objects"
:source (:type :git
:url "https://github.com/smithzvk/Versioned-Objects.git"
:branch "advance-versioning")
:dependencies (("ip-management"
:source
(:type :git
:url "https://github.com/Sasanidas/ip-management.git"))
("1am" :source (:type :quicklisp))))
```
### Interactive commands
LEM also provides some interactive commands to add/remove extension:
- `extension-manager-install-ql-package`:
This command will prompt for a list of all quicklisp indexed libraries to be installed, you can choose any of them and LEM will install it on your
configuration (keep in mind that even tho it will get install/indexed for LEM, it will NOT be loaded unless specify in the configuration).
- `extension-manager-test-ql-package`:
This command is similar to `extension-manager-install-ql-package` with the key difference that is intended to try out quicklisp packages, so the command will download the package to a temporary directory, loaded into Lem and then forget about it. It's inteded to test packages on the fly, to make it permanent, use the `lem-use-package` function.
- `extension-manager-remove-package`:
This command will prompt for the installed packages and will removed the selected one.
- `extension-manager-purge-packages`:
This command will remove ALL installed packages.
## Configuration
The packages are installed on returned folder from the lem function `lem-extension-manager::default-home` by default, but can be changed by modifing the variable `lem-extension-manager:*packages-directory*`.
## Internals
TODO