Giter VIP home page Giter VIP logo

lilly's Introduction

Lilly

A VIM-Like editor for your terminal (chat on Discord)

Important

Lilly is in a pre-alpha state, and only suitable for use by developers. This editor is technically usable, it is the exclusive editor used to work on itself, however many features are missing, and there is no guarantee of stable features or a lack of bugs. Features, bug fixes and issues are welcome.

Screenshot 2023-11-17 20 07 13

Screenshot 2023-12-01 21 01 45

Our project is focused on the development of a text editor that serves as a practical alternative to Vim and Neovim. The primary aim is to provide users with essential features, eliminating the need to navigate a complex ecosystem of Lua plugins. This approach is intended to be welcoming to users of all experience levels.

Milestone 1: A pre-alpha release

Targets:

  • Gap buffer to replace string array
  • Within line visual mode
  • Fix found search result highlighting
  • Horizontal scrolling
  • Splits (horizontal + vertical)
  • Goto def
  • List of active but not open buffers
  • Search/Find files
  • Workspace wide search (ripgrep + roll your own)

Building/running tests

To compile and execute the editor simultaneously run: just.sh. Alternatively you can see all available recipes to invoke by running just.sh -l.

The Rationale

Inclusive Functionality

We have set out to create an editor that encompasses the fundamental capabilities expected by users, rendering it a compelling choice as a Vim/Neovim alternative. Our emphasis is on streamlining the editing process without the necessity of configuring numerous plugins โ€“ our core features aim to fulfill these needs.

Simplified User Experience

The intricacies of Lua plugins can be daunting for newcomers and even pose a management challenge for seasoned users. Our editor simplifies the user experience by removing the requirement for extensive plugin management. It offers an approachable and intuitive platform, eliminating the complexities that often accompany plugin management.

Performance Enhancement

Our editor is optimized to offer improved performance, particularly when handling extensive files. It is engineered for speed and responsiveness, designed to enhance your editing efficiency.

VIM-Like Experience

We've crafted the editor to deliver a VIM-like experience, preserving the functionalities that VIM users appreciate. The difference lies in the absence of reliance on a multifaceted ecosystem โ€“ our editor consolidates these features within a unified framework.

Transition to our text editor to explore an alternative that is rooted in functionality, accessibility, and performance.

Not convinced?

Not a problem, Neovim/VIM are fantastic existing projects and are freely available for you to use today.

misc + extra information

(experimental GUI render target)

Screenshot 2023-12-13 21 10 40

lilly's People

Contributors

bkr-dev avatar iamevie avatar tauraamui avatar valxntine avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

lilly's Issues

Git branch only resolved if lilly is launched from the base dir

If lilly is opened from anywhere other than the base directory of the project (where the .git file is found) then the git branch isn't resolved.

The issue is in ./src/lib/workspace/workspace.v in the resolve_git_branch_name function, is_dir is called just on the workspace directory checking for .git

We can walk back up directories until we find .git, but there has to be a limit.

Inconsistent colour for highlighting

Screen recording 2024-07-19 10 12 52

For some reason each time Lilly starts the background/cell highlighting colour changes to a different shade when it should be consistently the same as what is set in the configuration.

At this time the cause is completely unknown and will require some investigation.

Command result output line does not behave correctly

When running commands such as :w, we get a nice response/status message rendered in the status line.

Image

When we run the same command again, the status line remains blank, which provides confusing feedback for the user, ie., has the document been saved or not??

Screen.recording.2023-10-21.20.04.04.webm

This should be fixed, in that there needs to always be a response message rendered.

Fatal crash with latest versions of V

This change to the V compiler causes Lilly to panic on start: vlang/v@112fc950

As described by core contributor spytheman, the issue:

in effect, your code, when compiled with the new version of the compiler passed invalid pointers to functions that expected callbacks that accept voidptr (thus the type system allowed you to pass for example both fn frame(mut app &App) { and fn frame(mut app App) { in such places, without complaining)
it can not be, since voidptr is an escape hatch, designed to allow you exactly that; it trade offs flexibility for type safety
an alternative would be to redesign term.ui for example to have generic functions, that do more type checking on the passed callbacks, but that needs changing a lot of code and expectations

Improve panic capture dumps

The panic capture writes should probably be prefixed with some kind of timestamp for easier tracking of issues.

Assist with "How do I quit Lilly"

I think it would be great if there was a <leader>qq to quit Lilly. It should also be part of the menu listing at start so people see it.

image

Fix: Adjust startup behaviour on the cli and the params we expect

The behaviour change relates to how we load files/workspaces:

  • Expect a directory path which it opens as the "workspace"
  • Expect a file path which it opens directly but also loads the file's parent directory as the "workspace"
  • Allow neither and opens the PWD as the "workspace"

Build system

What is the best build solution? Because not everyone has just. But it seems nice too.

Implement "a" and "A" commands

A core keybinding in vim is the a and A commands, for appending from the current cursor position and appending at the end of the current line.

This work should also include tests reflecting the functionality of both functions of the a key.

cmd buffer output not being cleared

When you exec a command, :w for example, you get a message to tell you if its been successful or not, or not recognised.

This message persists even when using the space in the UI, for example performing a search:
image

Rewrite renderer

The rendering of the document has inconsistent colouring directives depending on whether a word is captured by a syntax segment, and affects whether certain parts of the lines are rendered in one instruction call, or as a full line of text. This is making it harder to implement aspects such as highlighting found search results for example. Additionally the view pane is unable to behave independently to the actual number of lines and position of the cursor etc.,

A refactor/overhaul of how we render is necessary at this point.

Remove backwards in insert mode is broken

When I try to remove the character on the right of my cursor in insert mode using the remove key, Lilly won't remove it but kind of bug out. Below I've attached a video of me using remove in Neovim and in Lilly to demonstrate what I mean.

2023-12-05_21-44-27.mp4

Status line at the top

I see hardcoded numbers for the status line. Any plans to refactor the code to make it easy to recompile with status line at the top? Or even having a runtime option to set status line to the top instead of bottom?

Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.