Draft:Lem
Submission declined on 26 August 2023 by Notcharizard (talk). The content of this submission includes material that does not meet Wikipedia's minimum standard for inline citations. Please cite your sources using footnotes. For instructions on how to do this, please see Referencing for beginners. Thank you.
Where to get help
How to improve a draft
You can also browse Wikipedia:Featured articles and Wikipedia:Good articles to find examples of Wikipedia's best writing on topics similar to your proposed article. Improving your odds of a speedy review To improve your odds of a faster review, tag your draft with relevant WikiProject tags using the button below. This will let reviewers know a new draft has been submitted in their area of interest. For instance, if you wrote about a female astronomer, you would want to add the Biography, Astronomy, and Women scientists tags. Editor resources
|
- Comment: No citations or references at all. If this information is first-hand, possible conflict of interest also. -- NotCharizard 🗨 17:39, 26 August 2023 (UTC)
Original author(s) | cxxxr |
---|---|
Stable release | 2.1
/ 18 July 2023 |
Written in | Common Lisp |
Operating system | Linux, macOS, Windows |
Platform | Cross-platform |
Available in | English |
Type | Text editor |
License | MIT |
Website | lem-project |
Lem is a text editor/IDE developped in Common Lisp heavily inspired by GNU Emacs and Neovim. Its extensibility is comparable to Emacs in the sense that both are extensible with a Lisp language, in the case of Lem, it's extensible with Common Lisp. It uses SBCL as the main implementation to compile the project, but it supports other implementations[1].
Editing with Lem
[edit]Commands
[edit]In its normal editing mode, Lem behaves similarly to GNU Emacs by allowing the user to type text with the keyboard and move the editing point with arrow keys. Pressing the control key and/or the alt key in conjunction with a regular key produces modified keystrokes. Commands such as save-buffer
combine multiple modified keystrokes.
There is also a convenient "vi-mode" (despite the name, it emulates vim more than plain vi) which enables Lem to behave in a similar matter, using "normal", "insert" and "visual" vim-like commands[2].
Major modes
[edit]Lem can display or edit a variety of different types of text and adapts its behavior by entering add-on modes called "major modes". There are major modes for many different purposes including editing ordinary text files, the source code of many markup and programming language. Each major mode involves a Common Lisp program that extends the editor to behave more conveniently for the specified type of text. Major modes typically provide some or all of the following common features:
- Syntax highlighting: combinations of fonts and colors.
- Automatic indentation to maintain consistent formatting within a file.
- Special editing commands, such as commands to jump to the beginning or the end of a function while editing a programming file.
A number of major modes[3] are provided by default that help editing different types of programming languages, including popular ones like Python, JavaScript, Java, Go or again Rust, as well as modes for markup languages like Markdown, HTML, CSS, XML, JSON or again YAML.
Lem also has a directory mode heavily inspired by GNU Emacs' Dired[4].
Minor modes
[edit]The use of "minor modes" enables further customization. A Lem buffer can use only one major mode at a time, but multiple minor modes can operate simultaneously. This allows an easy way to extend the behavior of a major mode.
Extensibility
[edit]Lem can be modified and extended in Common Lisp, a multi-purpose programming language which (unlike Emacs Lisp for example) is not tied to the editor[5][6]. It is possible to add new commands and major-modes, or again to change the editor's behavior while it runs, thanks to Common Lisp's image-based development.
It has built it support for LSP[7], making it suitable for editing other programming languages that would not have a default major mode.
Performance
[edit]Lem's performance should be really good when compiled with SBCL, mostly because SBCL is a high-performance native compiler[8], so Lem can use all its optimizations by default.
References
[edit]Category:Free file comparison tools Category:Free integrated development environments Category:Free software programmed in Lisp Category:Free text editors Category:Linux integrated development environments Category:Linux text editors Category:MacOS text editors Category:Text editors Category:Unix text editors Category:Windows text editors