A text editor in ≤1024 lines of code, written in Rust

Overview

Kibi: A text editor in ≤1024 lines of code, written in Rust

Build Status Crate Minimum rustc version Platform Packaging status License Gitpod Ready-to-Code All Contributors

asciicast

A configurable text editor with UTF-8 support, incremental search, syntax highlighting, line numbers and more, written in less than 1024 lines1 of Rust with minimal dependencies.

Kibi is compatible with Linux, macOS, and Windows 102.

This project is inspired by kilo, a text editor written in C. See comparison below for a list of additional features.

Contributions are welcome! Be careful to stay below the 1024-line limit...

1.: Counted with count_loc.sh
2.: Kibi requires the terminal to support ANSI escape sequences. Windows 10 version 1703 (Creators Update, April 2017) and above are supported.

Table of contents

Installation

Packaging status

With cargo

You can install Kibi with cargo:

cargo install kibi

Syntax highlighting configuration files are available in the syntax.d directory of this repository. They need to be placed in one of the configuration directories mentioned in the Configuration/Syntax Highlighting section.

For instance:

cd ~/repos
git clone https://github.com/ilai-deutel/kibi.git
mkdir -p ~/.local/share/kibi/
ln -sr ./kibi/syntax.d ~/.local/share/kibi/syntax.d

Arch User Repository (Arch Linux)

2 packages are available on the AUR: kibi and kibi-git.

Installation instructions
  1. Installation with an AUR helper, for instance using yay:

    yay -Syu kibi  # or yay -Syu kibi-git
  2. Install manually with makepkg:

    git clone https://aur.archlinux.org/kibi.git  # or git clone https://aur.archlinux.org/kibi-git.git
    cd kibi
    makepkg -si

Android (with Termux)

Kibi is available as a Termux package.

Installation instructions
  1. Install Termux:

    Get it on F-Droid" Get it on Google Play"

  2. Install Kibi within Termux: pkg install kibi

Fedora/CentOS

The package is available in COPR as atim/kibi.

Installation instructions
sudo dnf copr enable atim/kibi -y
sudo dnf install kibi

NetBSD

Kibi is available from the official repos.

Installation instructions

Install using:

pkgin install kibi

or build from source:

cd /usr/pkgsrc/editors/kibi
make install

Usage

kibi              # Start an new text buffer
kibi <file path>  # Open a file
kibi --version    # Print version information and exit

Keyboard shortcuts

Keyboard shortcut Description
Ctrl-F Incremental search; use arrows to navigate
Ctrl-S Save the buffer to the current file, or specify the file path
Ctrl-G Go to <line number>[:<column number>] position
Ctrl-Q Quit
Ctrl-D Duplicate the current row
Ctrl-E Execute an external command and paste its output

Configuration

Global configuration

Kibi can be configured using a configuration file. It must follow this format:

# The size of a tab. Must be > 0.
tab_stop=4
# The number of confirmations needed before quitting, when changes have been
# made since the file was last changed.
quit_times=2
# The duration for which messages are shown in the status bar, in seconds.
message_duration=3
# Whether to show line numbers.
show_line_numbers=true

The location of these files is described below.

Linux / macOS

kibi follows the XDG Base Directory Specification:

  • A user-level configuration file can be located at $XDG_CONFIG_HOME/kibi/config.ini if environment variable $XDG_CONFIG_HOME is defined, ~/.config/kibi/config.ini otherwise.
  • A system-wide configuration file can be located at $XDG_CONFIG_DIRS/kibi/config.ini if environment variable $XDG_CONFIG_DIRS is defined, /etc/kibi/config.ini or /etc/xdg/kibi/config.ini otherwise.
Windows

A configuration file can be located at %APPDATA%\Kibi\config.ini.

Syntax highlighting

Syntax highlighting can be configured using INI files which follow this format:

### /usr/share/kibi/syntax.d/rust.ini ###
# Kibi syntax highlighting configuration for Rust

name=Rust
extensions=rs
highlight_numbers=true
singleline_string_quotes="
singleline_comment_start=//
multiline_comment_delims=/*, */
; In Rust, the multi-line string delimiter is the same as the single-line string
; delimiter
multiline_string_delim="
; https://doc.rust-lang.org/book/appendix-01-keywords.html
keywords_1=abstract, as, async, await, become, box, break, const, continue, crate, do, dyn, else, enum, extern, false, final, fn, for, if, impl, in, let, loop, macro, match, mod, move, mut, override, priv, pub, ref, return, self, Self, static, struct, super, trait, true, try, type, typeof, unsafe, unsized, use, virtual, where, while, yield
keywords_2=i8, i16, i32, i64, i128, isize, u8, u16, u32, u36, u128, usize, f32, f64, bool, char, str

The location of these files is described below.

Linux / macOS

kibi follows the XDG Base Directory Specification:

  • User-level syntax highlighting configuration files can be located at $XDG_DATA_HOME/kibi/syntax.d/<file_name>.ini if environment variable $XDG_DATA_HOME is defined, ~/.local/share/kibi/syntax.d/<file_name>.ini otherwise.
  • System-wide syntax highlighting configuration files can be located at $XDG_DATA_DIRS/kibi/syntax.d/<file_name>.ini if environment variable $XDG_DATA_DIRS is defined, /usr/local/share/kibi/syntax.d/<file_name>.ini or /usr/share/kibi/syntax.d/<file_name>.ini otherwise.
Windows

Syntax highlighting configuration files can be located at %APPDATA%\Kibi\syntax.d\<file_name>.ini.

Comparison with kilo

This project is inspired by kilo, a text editor written by Salvatore Sanfilippo (antirez) in C, and this tutorial (also in C).

kibi provides additional features:

  • Support for UTF-8 characters
  • Compatibility with Windows
  • Command to jump to a given row/column
  • Handle window resize (UNIX only)
  • Parsing configuration files: global editor configuration, language-specific syntax highlighting configuration
  • Display line numbers on the left of the screen; display file size in the status bar
  • Syntax highlighting: multi-line strings
  • Save as prompt when no file name has been provided
  • Command to duplicate the current row
  • Ability to execute an external command from the editor and paste its output
  • Memory safety, thanks to Rust!
  • Many bug fixes

Dependencies

This project must remain tiny, so using advanced dependencies such as ncurses, toml or ansi-escapes would be cheating.

The following dependencies provide wrappers around system calls.

  • On UNIX systems (Linux, macOS):
    • libc
  • On Windows:
    • winapi
    • winapi-util

In addition, unicode-width is used to determine the displayed width of Unicode characters. Unfortunately, there is no way around it: the unicode character width table is 230 lines long.

Why Kibi?

  1. Porting the kilo source code from C to Rust and trying to make it idiomatic was interesting
  2. Implementing new features while under the 1024-line constraint is a good challenge
  3. Most importantly, I wanted to learn Rust and this was a great project to start (thanks Reddit for the idea)

Contributors

This project follows the all-contributors specification (emoji key). Contributions of any kind welcome!


Ilaï Deutel

💻 🤔 🚇 📦 💠

Vishal Anand

🐛

Gurjus Bhasin

🤔

Libin Dang

💻 🐛

Isaac Andrade

🤔

frjol

🐛

Artem Polishchuk

📦

Marco A L Barbosa

💻

pin

📦

Uniminin

💠

Woomy4680-exe

🐛

License

This project is licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in Kibi by you shall be dual licensed as above, without any additional terms or conditions.

Comments
  • Added support for WebAssembly as a compile target

    Added support for WebAssembly as a compile target

    This pull request adds support for wasm32-wasi as a compile target.

    Check out the running version of kibi on tokera.sh... https://tokera.sh/

    Type 'kibi' to launch the editor in your browser.

    opened by john-sharratt 6
  • Kibi on Termux fails to start

    Kibi on Termux fails to start

    Describe the bug When I start kibi on termux, i returns a "Permission Denied" error (as you can see in the sreenshot ) Note: I have all permissions required to edit the file.

    To Reproduce Use pkg install kibi and try to open a file. Note: same error is given if kibi is installed with cargo install kibi

    Expected behavior Open editor and start editing the file

    Screenshots

    System information:

    • OS: Termux (nonroot)
    • Rust version: 1.49
    • Kibi version : V0.2.1

    Thanks for this really good work, Woomy

    bug termux 
    opened by Woomymy 6
  • Windows 10 powershell or cmd Could not obtain cursor position

    Windows 10 powershell or cmd Could not obtain cursor position

    Since update #9 and #26 were resolved, I wanted to test with the lastest version.

    I did cargo install --git https://github.com/ilai-deutel/kibi.git

    Doing the command kibi in both cmd or powershell results in the same error. It freezes on this.

    D:\>kibi
    
    

    Then doing Ctrl+C

    D:\>kibi
    Error: Could not obtain cursor position
    
    bug windows 
    opened by frjol 5
  • Add tests for insert byte and new line (#124)

    Add tests for insert byte and new line (#124)

    Hey there! :)

    I found out about Kibi not long ago and, as a Rust absolute beginner, I really wanted to chip in some unit tests while at it! (especially since they won't affect the sub-1024 LoC :))

    For now, I chose insert_byte and insert_new_line as they seemed fairly straightforward as a starting point. Let me know and I'll make any necessary adjustments!

    Thanks for the concise and well-structured project, it works wonders as a learning experience. Cheers!

    opened by gVirtu 3
  • returns error for 'special' file types (e.g. unix devices)

    returns error for 'special' file types (e.g. unix devices)

    allows editing only actual files, e.g. no block/char device, FIFO, directory... ~~added also new option to strip out debug info in release build~~ fix #166 still below 1024 lines of code :)

    Unix 
    opened by ilmanzo 2
  • Bump libc from 0.2.82 to 0.2.86

    Bump libc from 0.2.82 to 0.2.86

    Bumps libc from 0.2.82 to 0.2.86.

    Release notes

    Sourced from libc's releases.

    0.2.86

    Bump patch version to 0.2.86.

    Commits
    • 59c4f0c Auto merge of #2059 - GuillaumeGomez:upgrade-version, r=JohnTitor
    • 5f7c6c1 Auto merge of #2060 - Thomasdezeeuw:macos-so_linger_sec, r=JohnTitor
    • a8a28ad Add SO_LINGER_SEC on macOS
    • 05cc796 Auto merge of #2034 - nielx:haiku-native, r=JohnTitor
    • 1e7e5f3 Upgrade crate version to 0.2.86
    • b43486f Auto merge of #2058 - GuillaumeGomez:mac-adds, r=Amanieu
    • d51b418 Add getmntinfo and getmntinfo functions, MNT_WAIT and MNT_NOWAIT constants
    • 49776c2 Auto merge of #2055 - kellda:fix-2025, r=Amanieu
    • 7c136e5 Drop support for CloudABI
    • f07c693 Auto merge of #2053 - Amanieu:bump, r=Amanieu
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.

    Dependabot will merge this PR once CI passes on it, as requested by @ilai-deutel.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • Remove nix and signal-hook dependencies

    Remove nix and signal-hook dependencies

    This reduces the dependencies from 9 to 2, the binary size (striped) from 515kb to 435kb (15%) and the build time from 9.36s to 2.96s , while it increases the line count from 1006 to 1012.

    The editor in single thread, so I think the signal handling is ok, but it need to be reviewed.

    opened by malbarbo 2
  • Make kibi compatible with Windows 10

    Make kibi compatible with Windows 10

    Hi, I am trying to build kibi for Windows 10 but it fails with compilation errors. Can you please help.

    Rust Info

    • cargo 1.43.0-nightly (3c53211c3 2020-02-07)
    • rustc 1.43.0-nightly (e620d0f33 2020-02-18)

    Windows Info

    OS Name: Microsoft Windows 10 Enterprise OS Version: 10.0.19041 N/A Build 19041 OS Manufacturer: Microsoft Corporation OS Configuration: Standalone Workstation

    Compiler output

    $ cargo build --release --locked --all-features
    
       Compiling kibi v0.1.2 (C:\Users\vanand\kibi\kibi)
    error[E0433]: failed to resolve: could not find `sys` in `nix`
     --> src\editor.rs:6:10
      |
    6 | use nix::sys::termios::Termios;
      |          ^^^ could not find `sys` in `nix`
    
    error[E0432]: unresolved imports `signal_hook::iterator`, `signal_hook::SIGWINCH`
     --> src\editor.rs:7:19
      |
    7 | use signal_hook::{iterator::Signals, SIGWINCH};
      |                   ^^^^^^^^           ^^^^^^^^ no `SIGWINCH` in the root
      |                   |
      |                   could not find `iterator` in `signal_hook`
    
    error[E0432]: unresolved imports `libc::STDIN_FILENO`, `libc::STDOUT_FILENO`, `libc::TIOCGWINSZ`, `libc::VMIN`, `libc::VTIME`
     --> src\terminal.rs:3:12
      |
    3 | use libc::{STDIN_FILENO, STDOUT_FILENO, TIOCGWINSZ, VMIN, VTIME};
      |            ^^^^^^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^  ^^^^  ^^^^^
      |            |             |              |           |     |
      |            |             |              |           |     no `VTIME` in the root
      |            |             |              |           |     help: a similar name exists in the module: `ETIME`
      |            |             |              |           no `VMIN` in the root
      |            |             |              no `TIOCGWINSZ` in the root
      |            |             no `STDOUT_FILENO` in the root
      |            no `STDIN_FILENO` in the root
    
    error[E0432]: unresolved imports `nix::pty`, `nix::sys`
     --> src\terminal.rs:4:11
      |
    4 | use nix::{pty::Winsize, sys::termios};
      |           ^^^           ^^^ could not find `sys` in `nix`
      |           |
      |           could not find `pty` in `nix`
    
    error[E0433]: failed to resolve: could not find `ioctl_read_bad` in `nix`
      --> src\terminal.rs:35:10
       |
    35 |     nix::ioctl_read_bad!(get_ws, TIOCGWINSZ, Winsize);
       |          ^^^^^^^^^^^^^^ could not find `ioctl_read_bad` in `nix`
    
    error[E0412]: cannot find type `Termios` in this scope
       --> src\editor.rs:109:19
        |
    109 |     orig_termios: Termios,
        |                   ^^^^^^^ not found in this scope
    
    error[E0412]: cannot find type `Error` in crate `nix`
     --> src\error.rs:8:14
      |
    8 |     Nix(nix::Error),
      |              ^^^^^ not found in `nix`
      |
    help: possible candidates are found in other modules, you can import them into scope
      |
    3 | use core::fmt::Error;
      |
    3 | use crate::error::Error;
      |
    3 | use std::error::Error;
      |
    3 | use std::fmt::Error;
      |
        and 1 other candidate
    
    error[E0412]: cannot find type `Error` in crate `nix`
      --> src\error.rs:33:16
       |
    33 | impl From<nix::Error> for Error {
       |                ^^^^^ not found in `nix`
       |
    help: possible candidates are found in other modules, you can import them into scope
       |
    3  | use core::fmt::Error;
       |
    3  | use crate::error::Error;
       |
    3  | use std::error::Error;
       |
    3  | use std::fmt::Error;
       |
         and 1 other candidate
    
    error[E0412]: cannot find type `Error` in crate `nix`
      --> src\error.rs:35:23
       |
    35 |     fn from(err: nix::Error) -> Self { Self::Nix(err) }
       |                       ^^^^^ not found in `nix`
       |
    help: possible candidates are found in other modules, you can import them into scope
       |
    3  | use core::fmt::Error;
       |
    3  | use crate::error::Error;
       |
    3  | use std::error::Error;
       |
    3  | use std::fmt::Error;
       |
         and 1 other candidate
    
    error[E0412]: cannot find type `Error` in crate `nix`
     --> src\terminal.rs:8:71
      |
    8 | pub(crate) fn set_termios(term: &termios::Termios) -> Result<(), nix::Error> {
      |                                                                       ^^^^^ not found in `nix`
      |
    help: possible candidates are found in other modules, you can import them into scope
      |
    1 | use core::fmt::Error;
      |
    1 | use crate::error::Error;
      |
    1 | use std::error::Error;
      |
    1 | use std::fmt::Error;
      |
        and 1 other candidate
    
    error[E0425]: cannot find function `get_ws` in this scope
      --> src\terminal.rs:43:14
       |
    43 |     unsafe { get_ws(STDOUT_FILENO, maybe_ws.as_mut_ptr()).ok().map(|_| maybe_ws.assume_init()) }
       |              ^^^^^^ not found in this scope
    
    error: aborting due to 11 previous errors
    
    
    enhancement 
    opened by codingonHP 2
  • Bump serial_test from 0.8.0 to 0.9.0

    Bump serial_test from 0.8.0 to 0.9.0

    Bumps serial_test from 0.8.0 to 0.9.0.

    Release notes

    Sourced from serial_test's releases.

    v0.9.0

    What's Changed

    New Contributors

    Full Changelog: https://github.com/palfrey/serial_test/compare/v0.8.0...v0.9.0

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump libc from 0.2.127 to 0.2.131

    Bump libc from 0.2.127 to 0.2.131

    Bumps libc from 0.2.127 to 0.2.131.

    Release notes

    Sourced from libc's releases.

    0.2.131

    What's Changed

    Full Changelog: https://github.com/rust-lang/libc/compare/0.2.130...0.2.131

    0.2.130

    What's Changed

    New Contributors

    Full Changelog: https://github.com/rust-lang/libc/compare/0.2.129...0.2.130

    0.2.129

    What's Changed

    Full Changelog: https://github.com/rust-lang/libc/compare/0.2.128...0.2.129

    0.2.128

    This version has been yanked on crates.io, see rust-lang/libc#2866 for the details.

    What's Changed

    New Contributors

    Full Changelog: https://github.com/rust-lang/libc/compare/0.2.127...0.2.128

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump libc from 0.2.126 to 0.2.127

    Bump libc from 0.2.126 to 0.2.127

    Bumps libc from 0.2.126 to 0.2.127.

    Commits
    • 24bab07 libc 0.2.127
    • 4bfd852 Auto merge of #2854 - pabigot:pabigot/20220729a, r=JohnTitor
    • f4f0cdb linux: add TFD_TIMER_CANCEL_ON_SET constant
    • d90fcbf Auto merge of #2853 - youknowone:ios-memmem, r=JohnTitor
    • c396a30 memmem and task_set_info is available on iOS
    • f143f2b Auto merge of #2852 - joshtriplett:version-note, r=JohnTitor
    • 39f779c README.md: Clarify (lack of) MSRV policy
    • 5e001f5 Auto merge of #2849 - devnexen:socket_linux_update, r=JohnTitor
    • 2b05c86 Few socket updates related for Linux.
    • 4238054 Auto merge of #2838 - devnexen:linux_followup_prctl, r=JohnTitor
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump unicode-width from 0.1.9 to 0.1.10

    Bump unicode-width from 0.1.9 to 0.1.10

    Bumps unicode-width from 0.1.9 to 0.1.10.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump libc from 0.2.132 to 0.2.133

    Bump libc from 0.2.132 to 0.2.133

    Bumps libc from 0.2.132 to 0.2.133.

    Release notes

    Sourced from libc's releases.

    0.2.133

    What's Changed

    New Contributors

    Full Changelog: https://github.com/rust-lang/libc/compare/0.2.132...0.2.133

    Commits
    • d4c4e92 Auto merge of #2906 - beetrees:bump-to-133, r=JohnTitor
    • a88aec3 Auto merge of #2899 - devnexen:linux_fileclone, r=JohnTitor
    • 152bb49 linux add FICLONE* ioctl.
    • 8531d01 Auto merge of #2913 - ivmarkov:master, r=JohnTitor
    • ba7ff45 Compatibility with ESP-IDF V5
    • 9cdd42e Auto merge of #2911 - devnexen:netbsd_reg_constants, r=JohnTitor
    • 1afccf7 Auto merge of #2910 - SteveLauC:expose-setgrent-getgrent-endgrent-on-fuchsia,...
    • e58fb5d Auto merge of #2912 - JohnTitor:s390x-image-bump, r=JohnTitor
    • 128b9c0 Update s390x installer to 20220914
    • ffad7fd netbsd mcontext x86_64 constants.
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump libfuzzer-sys from 0.4.3 to 0.4.4 in /fuzz

    Bump libfuzzer-sys from 0.4.3 to 0.4.4 in /fuzz

    Bumps libfuzzer-sys from 0.4.3 to 0.4.4.

    Changelog

    Sourced from libfuzzer-sys's changelog.

    0.4.4

    Released 2022-09-01.

    Changed

    • Updated to libFuzzer commit df90d22 (release/15.x).
    • LLVM 16's upcoming change to build requirements to C++17 necessitate reflecting those changes. (libFuzzer updates contain C++14 code)
    • Drastically reduce build times by using parallel C++ compilation jobs
    • Updated rand dependency from 0.8.3 to 0.8.5
    • Updated flate2 dependency from 1.0.20 to 1.0.24

    Commits
    • 74ac60c Merge pull request #94 from fitzgen/bump-t-0.4.4
    • 87ca92d Bump to version 0.4.4
    • 0a4b496 Merge pull request #93 from rchildre3/feature/update-libfuzzer-15-deps
    • 03a00b2 Update libFuzzer to compiler-rt 15 and Rust deps
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Fix tests on WASI platform

    Fix tests on WASI platform

    Currently, tests fail on WASI, likely due to https://github.com/WebAssembly/WASI/issues/306:

    $ cargo wasi test
    running 9 tests
    test config::tests::ini_processing_error_propagation ... Error: failed to run main module `.../target/wasm32-wasi/debug/deps/kibi-0e014d2d22062c7e.wasm`
    
    Caused by:
        0: failed to invoke command default
        1: wasm trap: wasm `unreachable` instruction executed
           wasm backtrace:
               0: 0xaf1d7 - <unknown>!__rust_start_panic
               1: 0x8a2d3 - <unknown>!rust_panic
               2: 0x410bc - <unknown>!std::panicking::rust_panic_with_hook::h5cd357190ec2dc27
               3: 0xace7d - <unknown>!std::panicking::begin_panic::{{closure}}::h2b921c6015217a8c
               4: 0xaea75 - <unknown>!std::sys_common::backtrace::__rust_end_short_backtrace::h7804c064a89e5468
               5: 0xad127 - <unknown>!std::panicking::begin_panic::h74bbbdc216a2be15
               6: 0xaed39 - <unknown>!std::sys::wasi::os::temp_dir::h7c1705b1d80bf88f
               7: 0xaf0c4 - <unknown>!std::env::temp_dir::h8de49376550872b5
               8: 0xa3189 - <unknown>!tempfile::Builder::tempdir::he99c51adad158d09
               9: 0xa0aa1 - <unknown>!tempfile::dir::TempDir::new::h467eed705bdbfad5
              10: 0x64c6b - <unknown>!kibi::config::tests::ini_processing_helper::h04a043013200609f
              11: 0x43ad2 - <unknown>!kibi::config::tests::ini_processing_error_propagation::hd9e29b0360fe1c0e
              12: 0xaa1be - <unknown>!kibi::config::tests::ini_processing_error_propagation::{{closure}}::hd20dc0108869c254
              13: 0xab2e1 - <unknown>!core::ops::function::FnOnce::call_once::h470aa8b99eb85c41
              14: 0xaf0b7 - <unknown>!test::__rust_begin_short_backtrace::hdb236f9e8ab372e2
              15: 0xaf032 - <unknown>!core::ops::function::FnOnce::call_once{{vtable.shim}}::h46e94de7b5f8562e
              16: 0x20873 - <unknown>!test::run_test::run_test_inner::hb0fda869795a04b5
              17: 0x1f050 - <unknown>!test::run_test::h5e16ffceb7355d13
              18: 0x4765 - <unknown>!test::console::run_tests_console::hbd9d6e4ac7994c7e
              19: 0x21c76 - <unknown>!test::test_main::ha1139bbdf0c18c77
              20: 0x7fb9b - <unknown>!test::test_main_static::h88b81b227e6e27db
              21: 0xae6bf - <unknown>!kibi::main::hcb06a8996b2c438e
              22: 0xaa3cc - <unknown>!core::ops::function::FnOnce::call_once::hb9394b846f8ebed8
              23: 0xa9ac3 - <unknown>!std::sys_common::backtrace::__rust_begin_short_backtrace::ha02a7b57bbe40130
              24: 0xa6e84 - <unknown>!std::rt::lang_start::{{closure}}::h3ed9764642bc7713
              25: 0x728f3 - <unknown>!std::rt::lang_start_internal::h114e06638993fc12
              26: 0x92ab7 - <unknown>!std::rt::lang_start::hefbdca51d9ded6ce
              27: 0xae610 - <unknown>!__original_main
              28: 0xae96a - <unknown>!_start
              29: 0xaf0a3 - <unknown>!_start.command_export
           note: using the `WASMTIME_BACKTRACE_DETAILS=1` environment variable to may show more debugging information
    
    testing WASI 
    opened by ilai-deutel 0
Releases(v0.2.2)
Owner
Ilaï Deutel
Ilaï Deutel
TIF is a terminal_image_format. (theres no TIF editor, so i made TIF images through a hex editor lol)

Colors these are the colors you can use when displaying images on the terminal BYTES: 5A = BLUE 5B = BLACK 5C = RED 5D = GREEN 5E = PURPLE 5F = WHITE

buzz 4 Jun 21, 2022
A terminal-based text editor written in Rust

Iota Iota is a terminal-based text-editor written in Rust. Here's what it looks like right now, editing itself. Motivation Iota was born out of my fru

Greg Chapple 1.5k Sep 20, 2022
Web base text editor written in rust

Ultron Ultron is a web based monospace text-editor with syntax highlighting, completely written in rust. I wrote this code editor for my very specific

Jovansonlee Cesar 59 Aug 8, 2022
An independent Rust text editor that runs in your terminal!

Ox editor Ox is a code editor that runs in your terminal. About The Project Ox is a code editor. It was written in Rust using ANSI escape sequences. I

null 2.8k Sep 27, 2022
Ginkgo is a text editor built entirely in Rust

Ginkgo is a text editor built entirely in Rust. It supports cursor movements, CTRL commands, select vim commands, insert vs. normal modes, and more. Ginkgo is based on my text editor JED, which itself was based on the popular online editor Kilo.

James Asbury 11 Mar 21, 2022
Aspiring vim-like text editor

Rim Rim is an aspiring Vim-like text editor written in Rust. Current state Rim is in an early prototype stage. This means that you can load, edit and

Mathias Hällman 547 Sep 24, 2022
An experimental next-generation Electron-based text editor

Attention: GitHub has decided not to move forward with any aspect of this project. We'll archive the repository in case anybody finds value here, but

Atom Archive 8.6k Sep 22, 2022
ReVi is a cross-platform terminal based Vim inspired text editor.

ReVi Table Of Contents: About Usage Install Clone && Installing Development Q&A KeyBindings Roadmap Changelog About ReVi is a cross-platform terminal

null 30 Aug 25, 2022
Archeum - a minimalist text editor

Archeum About The Project Archeum is a minimalist text editor that is really usefull if you've been in the vim psychosis for to long. Reject plugins,

null 4 Jul 1, 2022
(An attempt to write) a modal text editor

kaka (An attempt to write) a modal text editor. NOTE: The project is very young and certainly not ready for use. Current project goals keymap and mode

Marcin Pajkowski 4 Aug 15, 2022
Lightning-fast and Powerful Code Editor written in Rust

Lapce Lightning-fast and Powerful Code Editor written in Rust About Lapce is written in pure Rust, with UI in Druid. It's using Xi-Editor's Rope Scien

Lapce 18k Sep 26, 2022
My own personal code editor built with Rust + OpenGL

Glyph This is my personal code editor that I am building for fun and to get more familiar with OpenGL. Glyph currently supports Vim keybinds, syntax h

Zack Radisic 72 Sep 26, 2022
An opinionated modal editor to simplify code editing from the terminal

(I'm currently refactoring the platform layer. So we have to first finish this cleanup before we're able to continue adding features) An opinionated m

Matheus Lessa Rodrigues 271 Sep 24, 2022
Rustpad is an efficient and minimal collaborative code editor, self-hosted, no database required

Rustpad is an efficient and minimal open-source collaborative text editor based on the operational transformation algorithm

Eric Zhang 2.4k Sep 25, 2022
A package manager for the Lite-XL code editor

Lite-XL Package Manager (lpm) (Under Development) lpm is an attempt to create a package manager for the Lite-XL code editor. It's primary goal is to p

Debarchito Nath 9 Aug 29, 2022
A modern editor with a backend written in Rust.

Xi Editor (pronounced "Zigh") A modern editor with a backend written in Rust. Maintenance status: The xi-editor project is not currently under active

null 19.6k Sep 27, 2022
A collision editor for Guilty Gear -Strive-, written in Rust

ggst_collision_editor_rs A collision editor for Guilty Gear -Strive- and other Team Red Arc System Works games, written in Rust. Uses a customized ver

null 4 May 3, 2022
Helix - A kakoune / neovim inspired editor, written in Rust

A kakoune / neovim inspired editor, written in Rust. The editing model is very heavily based on kakoune; during development I found myself agree

null 13.1k Sep 28, 2022
A pathtracer written in rust - runs in the web and includes an editor

Webtracer A pathtracer written in rust - runs in the web and includes an editor Rendering is parallelized and utilizes all cpu cores You can easily ed

Shapur 2 Aug 29, 2022