An independent Rust text editor that runs in your terminal!

Overview

Logo

Ox editor

Ox is a code editor that runs in your terminal.


Build Status Build Status License

About The Project

Ox is a code editor. It was written in Rust using ANSI escape sequences. It assists developers with programming by providing several tools to speed up and make programming easier and a refreshing alternative to heavily bloated and resource hungry editors such as VS Code and JetBrains. Ox is lightweight so it can be used on older computers.

Bear in mind, this is a personal project and is nowhere near ready to replace your existing tools just yet.

It runs in the terminal and runs on platforms like Linux and macOS but doesn't work on Windows directly (it works if you use WSL) due to a lack of a good command line. There are many text editors out there and each one of them has their flaws and I hope to have a text editor that overcomes many of the burdens and issues.

Ox is not based on any other editor and has been built from the ground up without any base at all.

What features does Ox have and why should I use it?

Ox aims to be an editor that takes features from some of the most popular editors out there, gaining the best of all worlds.

Vim http://vim.org: Vim provides a plugin system for adding features to it as it is very minimal and only provides basic text editing functionality by default. It is quite extensive and has its own programming language for configuring and writing plugins for it. It has a steep learning curve due to being a “modal” text editor, having special modes for editing text. Ox is easier to use than Vim because it doesn’t have modes where the keyboard is repurposed, however it takes the idea of being a keyboard-only editor and being able to act just like an IDE after some configuration.

Nano https://www.nano-editor.org/: Nano is an editor that is very simple to grasp due to its intuitive key bindings such as Ctrl+S to save and Ctrl+? for the help menu etc. Ox took the idea for the key bindings from this editor, they are simple to remember, Ctrl+F for “Find”, Ctrl+Q for “Quit”, meaning that Ox doesn’t have as steep a learning curve.

Micro https://micro-editor.github.io/: Micro has a plugin system that is programmed with a language called Lua however I can’t seem to find any up to date plugins for it and it lacks features such as a file tree. It is micro that inspired me to add mouse functionality and other features.

Emacs https://www.gnu.org/software/emacs/: Emacs is still actively used today due to its freedom to modify and change the source code. Ox took the idea for the customization and extensibility of Emacs and made a configuration system where you can change the colours and appearance of the editor.

Xi https://xi-editor.io/: Xi is also written in Rust but is purely a backend at the moment, I decided to make Ox both a frontend and a backend because Xi has many frontends, but most of them are broken and it lacks a lot of features.

Kiro https://github.com/rhysd/kiro-editor: Kiro is an amazing text editor written in Rust and adds features such as Unicode support, a nicer colour scheme and small things like resizing and it is a very inspiring editor. Ox took the ideas for the improvements from Kiro, however implemented them differently. Kiro’s source code also seems to be quite advanced in some areas, so I decided to keep Ox as simple as I could.

Built With

Ox is super minimal and aims to use as few dependencies as possible, allowing for rapid compile time and low risk of breakage.

Getting Started

You can currently only build Ox from source. While this may sound daunting to many people, it really isn't that hard and takes 1 minute worst case scenario!

Prerequisites

Because Ox is written in Rust, you must have a modern and working version of rustc and cargo.

On Arch Linux, you can run this command:

sudo pacman -S rustup
rustup toolchain install stable

If you are not using Arch, you can easily set it up on other distros by running the distro-neutral command:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
/usr/bin/rustup toolchain install stable

You must have curl installed in order to run this command.

Installation

Icons

Ox uses NerdFonts to display icons. You can install nerdfonts from https://nerdfonts.com If you use Arch Linux, you can install it by installing the package ttf-nerd-fonts-symbols-mono. There is a potential that you will need to add it to your terminal emulator.

Manual

cargo install --git https://github.com/curlpipe/ox

Arch Linux

Install ox-bin or ox-git from the Arch User Repository.

That's all there is to it!

Fedora/CentOS

Install ox from the COPR Repository:

sudo dnf copr enable atim/ox -y
sudo dnf install ox

Homebrew

Install ox from Homebrew core tap.

brew install ox

MacPorts

On macOS, you can install ox via MacPorts

sudo port selfupdate
sudo port install ox

Usage

Opening files in Ox

At the moment, you can open ox by using the command

ox

This will open up an empty document.

If you wish to open a file straight from the command line, you can run

ox /path/to/file

To open and edit a file.

You can also open a file from within Ox by using the Ctrl + O Key binding

If at any time, you wish to create a new file, you can use Ctrl + N to do so.

You can find more command line options for Ox by typing:

ox --help

Moving the cursor around

You can use the arrow keys to move the cursor around

You can also use:

  • PageUp - Go to the top of the document
  • PageDown - Go to the bottom of the document
  • Home - Go to the start of the current line
  • End - Go to the end of the current line

Editing the file

You can use the keys Backspace and Return / Enter as well as all the characters on your keyboard to edit files!

Ox is controlled via your keyboard shortcuts. Here are the default shortcuts that you can use:

Keybinding What it does
Ctrl + Q Exits the current tab or the editor if only one tab open.
Ctrl + S Saves the open file to the disk.
Alt + S Prompts you for a file name and saves it to disk as that file name.
Ctrl + W Saves all the currently open files to the disk.
Ctrl + N Creates a new tab with a blank document.
Ctrl + O Prompts you for a file and opens that file in a new tab.
Ctrl + F Searches the document for a search query. Allows pressing of and to move the cursor to the previous occurance fof the query and and to move to the next occurance of the query. Press Return to cancel the search at the current cursor position or Esc to cancel the search and return to the initial location of the cursor. Note: this allows you to use regular expressions.
Ctrl + Z Undoes your last action. The changes are committed to the undo stack every time you press the space bar, create / destroy a new line and when there is no activity after a certain period of time which can be used to capture points where you pause for thought or grab a coffee etc...
Ctrl + Y Redoes your last action. The changes are committed to the undo stack every time you press the space bar, create / destroy a new line and when there is no activity after a certain period of time which can be used to capture points where you pause for thought or grab a coffee etc...
Ctrl + R Allows replacing of occurances in the document. Uses the same keybindings as the search feature: and to move the cursor to the previous occurance fof the query and and to move to the next occurance of the query. You can also press Return, y or Space to carry out the replace action. To exit replace mode once you're finished, you can press Esc to cancel and return back to your initial cursor position. Note: this allows you to use regular expressions.
Ctrl + A Carries out a batch replace option. It will prompt you for a target to replace and what you want to replace it with and will then replace every occurance in the document. Note: this allows you to use regular expressions.
Ctrl + Left Navigates to the previous tab.
Ctrl + Right Navigates to the next tab.
Alt + A Focuses the command line.

Configuring Ox

Ox features a configuration system that allows modification and personalization of the editor.

By default, Ox will look for a file here: $XDG_CONFIG_HOME/ox/ox.ron or ~/.config/ox/ox.ron.

Ox's configuration language is RON.

There is a default config in the 'config' folder. You will have to either download it and place it in the default config directory or create your own using the example ones as a reference. If you don't have a config file, don't worry :), Ox will just ignore it if you don't have one.

If you wish to specify the configuration file path, you can do so using the '--config' option (or '-c' if you prefer). For Example:

ox --config /path/to/my_config.ron file_to_edit.txt

Roadmap

You can see the tasks.todo.md file to see my full plans for the future of the editor!

Here is the current summary

  • Initial Research (0.1.0, 0.1.1) [741 lines]
  • Basic editing functions (0.2.0)
  • Line numbers (0.2.0)
  • Searching (0.2.0) [1040 lines]
  • Undo and Redo (0.2.1) [1282 lines]
  • Input bug (0.2.2) [1278 lines]
  • Good command line interface (0.2.3)
  • Config files (0.2.3)
  • Replacing text (0.2.3) [1549 lines]
  • Syntax highlighting (0.2.4) [1894 lines]
  • Tabs for multitasking (0.2.5) [2050 lines]
  • Macros (0.2.6) [3414 lines]
  • Tweaks (0.2.7) [3241 lines]
  • Mouse support (0.2.8)
  • Auto indentation (0.3.0)
  • Prettifier / Automatic code formatter (0.3.0)
  • Built In linter (0.3.0)
  • Auto brackets (0.3.1)
  • Auto complete (0.3.2)
  • File tree (0.3.4)
  • Start page (0.3.5)

License

Distributed under the GNU GPLv2 License. See LICENSE for more information.

Contact

You can contact me on Discord at curlpipe#1496. I'll be happy to answer any questions you may have!

Acknowledgements

Comments
  • Windows OS Support

    Windows OS Support

    Hi,

    I was really eager to try ox but wasn't able to compile it on my system. It seems to be due to its dependency towards termion, which lacks for Windows support (as stated here). You can see my error log below :

    error[E0433]: failed to resolve: unresolved import --> C:\Users\cdeliquaire.cargo\registry\src\github.com-1ecc6299db9ec823\termion-1.5.5\src\lib.rs:24:9 | 24 | pub use sys::size::terminal_size; | ^^^ | | | unresolved import | help: a similar path exists: color::env::sys

    Do you plan to support Windows OS someday ? If so, It seems that some people/projects successfuly switched to crossterm instead of termion to gain true multi-platform terminal support, I don't know if it supports the whole feature set ox requires, but this could be a lead.

    Thanks by advance.

    enhancement 
    opened by cdegalitt 12
  • Default Editor Theme on Mac

    Default Editor Theme on Mac

    Describe the bug Is there an issue with the default theme? It is a weird tint of red so I'm assuming this is not intentional.

    To Reproduce Steps to reproduce the behavior: Followed the steps of the README to install using homebrew.

    Screenshots image

    Desktop (please complete the following information):

    • OS: macOS Catalina 64bit
    bug 
    opened by MatthewC221 10
  • v0.2.6 broken

    v0.2.6 broken

    Describe the bug After update 0.2.5 -> 0.2.6 ox doesn't work anymore.

    To Reproduce Try to run new ox.

    $ ox
    
    thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Error { code: Message("missing field `status_left`"), position: Position { line: 0, col: 0 } }', src/config.rs:67:32
    note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
    [1]    17096 IOT instruction (core dumped)  ox 1.txt
    

    Desktop (please complete the following information):

    • OS: Fedora 33
    opened by tim77 8
  • False claims of being

    False claims of being "fast", terrible design unable to handle files with long lines

    According to https://news.ycombinator.com/item?id=24976905, ox can't handle a file with a 1GB long line.

    Obviously when you design a new editor, handling such files is the most important thing, since it means that you have properly designed the editor's algorithms and data structures.

    Clearly you failed completely at the most basic task and showed utter lack of competence in the design of algorithms and data structures.

    Also, the program is falsely advertised as "fast", when instead it should be described as "unusably slow", misleading users into thinking this is well-written software.

    opened by bill-myers 7
  • Syntax highlighting

    Syntax highlighting

    Is your feature request related to a problem? Please describe. Syntax highlighting for Ox.

    Describe the solution you'd like Should be done by having regex in a configuration file and have Ox read those regular expressions and highlighting it with the specified colour. Should also come with languages like Rust, JavaScript, Python and Ruby and C too.

    Describe alternatives you've considered ~~Being a total chad and not using any syntax highlighting~~

    enhancement 
    opened by curlpipe 7
  • ox hangs when opening this file

    ox hangs when opening this file

    Describe the bug ox (v0.2.5 with no config) hangs (forever) if instructed to open this file

    To Reproduce Steps to reproduce the behavior:

    1. ox README.txt
    2. hangs

    Expected behavior File is opened and ox does not hang

    Desktop (please complete the following information):

    • Mac OS X 10.15.7
    • rustc 1.48.0-beta.5 (4c78178b1 2020-10-21)
    • ox 0.2.5 installed via manual method (cargo install --git https://github.com/curlpipe/ox)

    the file is attached here (it's the README.txt [1] file found in apache-maven-3.6.3 binary release .tar.gz). You might have to download the maven archive here http://maven.apache.org/download.cgi and extract it, then try to open it, as I don't know whether attaching the file to github messes up its line ending. a gzipped version [2] of the readme.txt is provided)

    [1] README.txt [2] README2.txt.gz

    bug 
    opened by ldhieu 6
  • Accept line number and column number in file name

    Accept line number and column number in file name

    Is your feature request related to a problem? Please describe. Sometimes, I need to jump to a line in a source file, e.g. from backtrace listing.

    Describe the solution you'd like De facto convention for the line number is FILE_NAME:LINE_NUMBER[:COLUMN_NUMBER] . For example, mceditor/mcviewer (part of Midnight Commander) can open such file and jump to the line number.

    Example: main.c:5:4

    Describe alternatives you've considered Open the file, then navigate to the line, e.g. by pressing Ctrl-J to jump to line/char.

    enhancement 
    opened by vlisivka 6
  • Icon does not shows on default install of windows terminal (WSL)

    Icon does not shows on default install of windows terminal (WSL)

    Describe the bug open any file, and icons is shown as squares.....

    Screenshots image

    Desktop (please complete the following information):

    • OS: Windows 10 (WSL Ubuntu 20.04.01)
    opened by rizrmd 6
  • Crash after a shortcut

    Crash after a shortcut

    Describe the bug The editor crash on shortcut pressed.

    To Reproduce Steps to reproduce the behavior:

    1. Launch with ox
    2. I use the shortcut Ctrl+? but on my french keyboard it's written Ctrl+Shift+?, two time
    3. the editor crashed

    Desktop (please complete the following information):

    • OS: Debian
    • Version: 0.2.6

    Backtrace:

    thread 'main' panicked at 'index out of bounds: the len is 0 but the index is 0', src/document.rs:385:21
        stack backtrace:
        0:     0x55fc40811293 - std::backtrace_rs::backtrace::libunwind::trace::h577ea05e9ca4629a
                    at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/../../backtrace/src/backtrace/libunwind.rs:96
        1:     0x55fc40811293 - std::backtrace_rs::backtrace::trace_unsynchronized::h50b9b72b84c7dd56
                    at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/../../backtrace/src/backtrace/mod.rs:66
        2:     0x55fc40811293 - std::sys_common::backtrace::_print_fmt::h6541cf9823837fac
                    at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/sys_common/backtrace.rs:79
        3:     0x55fc40811293 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::hf64fbff071026df5
                    at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/sys_common/backtrace.rs:58
        4:     0x55fc4079451c - core::fmt::write::h9ddafa4860d8adff
                    at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/core/src/fmt/mod.rs:1082
        5:     0x55fc408108f6 - std::io::Write::write_fmt::h1d2ee292d2b65481
                    at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/io/mod.rs:1514
        6:     0x55fc408102ea - std::sys_common::backtrace::_print::ha25f9ff5080d886d
                     at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/sys_common/backtrace.rs:61
        7:     0x55fc408102ea - std::sys_common::backtrace::print::h213e8aa8dc5405c0
                     at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/sys_common/backtrace.rs:48
        8:     0x55fc408102ea - std::panicking::default_hook::{{closure}}::h6482fae49ef9d963
                     at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/panicking.rs:200
        9:     0x55fc4080fbb7 - std::panicking::default_hook::he30ad7589e0970f9
                    at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/panicking.rs:219
       10:     0x55fc4080fbb7 - std::panicking::rust_panic_with_hook::haa1ed36ada4ffb03
                    at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/panicking.rs:569
       11:     0x55fc4080f84a - std::panicking::begin_panic_handler::{{closure}}::h7001af1bb21aeaeb
                    at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/panicking.rs:476
       12:     0x55fc4080f814 - std::sys_common::backtrace::__rust_end_short_backtrace::h39910f557f5f2367
                     at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/sys_common/backtrace.rs:153
       13:     0x55fc4080f7cd - rust_begin_unwind
                    at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/panicking.rs:475
       14:     0x55fc40791ce0 - core::panicking::panic_fmt::h4e2659771ebc78eb
                    at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/core/src/panicking.rs:85
       15:     0x55fc40791b71 - core::panicking::panic_bounds_check::h2e8c50d2fb4877c0
                    at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/core/src/panicking.rs:62
       16:     0x55fc4072311c - ox::editor::Editor::execute::h41a91b916b54259e
       17:     0x55fc407346e4 - ox::main::he0e8202042f9c811
       18:     0x55fc406f5043 - std::sys_common::backtrace::__rust_begin_short_backtrace::hcf14f977209b4ed6
       19:     0x55fc4073ecb5 - main
       20:     0x7f69db61209b - __libc_start_main
       21:     0x55fc406f307a - _start
       22:                0x0 - <unknown>
     Aborted
    
    opened by lolo32 5
  • Alt + arrows

    Alt + arrows

    Is your feature request related to a problem? Please describe. When I'm writing things, it's quicker to move cursor to use Alt + Arrows, to move word-by-word.

    Describe the solution you'd like In my .zshrc I've the following bindkey :

    bindkey -e
    bindkey '[C' forward-word
    bindkey '[D' backward-word
    

    I think that nobody use this key combination to write [C or [D to file, so maybe it can be supported by default ?

    Describe alternatives you've considered Be able to add kind of bindkey somewhere ?

    enhancement 
    opened by Nainterceptor 5
  • ox file hangs forever

    ox file hangs forever

    Describe the bug When opening a file from root folder with the ox file command, the terminal hangs and it's impossible to exit.

    To Reproduce

    Execute:

    $ cd project/folder
    $ ox main.tf
    

    Expected behavior Expected an editor to open and load the file, similar to executing ox by itself.

    Desktop (please complete the following information):

    • OS: Windows 10 Pro using WSL2 Ubuntu 20.04.1 LTS (GNU/Linux 4.19.104-microsoft-standard x86_64)
    bug 
    opened by adriaanbd 5
  • Some questions regarding this project?

    Some questions regarding this project?

    Hi guys I have some questions regarding this project:

    1. Is this project still alive?
    2. Is it like dwm where you would modify part of the source code as the source code is the settings?
    opened by Raj2032 6
  • Bump thread_local from 1.0.1 to 1.1.4

    Bump thread_local from 1.0.1 to 1.1.4

    Bumps thread_local from 1.0.1 to 1.1.4.

    Commits
    • 4a54e57 Bump version to 1.1.4
    • ebf8b45 Merge pull request #34 from ibraheemdev/patch-1
    • 3d69afa Fix memory ordering in RawIter::next
    • c7d8dcd Bump version to 1.1.3
    • 5e8bbf2 Merge pull request #30 from Marwes/fix_drop
    • a44b836 fix: Drop the value in the ThreadLocal on drop
    • 322cf34 Bump version to 1.1.2
    • dca4007 Merge pull request #29 from Kestrer/raw-iter
    • 33ad405 Add #[inline] to non-generic functions
    • 810c043 Implement iterator logic in RawIter
    • 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)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump smallvec from 1.4.2 to 1.8.0

    Bump smallvec from 1.4.2 to 1.8.0

    Bumps smallvec from 1.4.2 to 1.8.0.

    Release notes

    Sourced from smallvec's releases.

    v1.8.0

    • Add optional support for the arbitrary crate (#275).

    v1.7.0

    • new_const and from_const constructors for creating a SmallVec in const contexts. Requires Rust 1.51 and the optional const_new feature. (#265)

    v1.6.1

    • Fix a possible buffer overflow in insert_many (#252, #254).

    v1.6.0

    • The "union" feature is now compatible with stable Rust 1.49 (#248, #247).
    • Fixed warnings when compiling with Rust 1.51 nightly (#242, #246).

    v1.5.1

    • Improve performance of push (#241).

    v1.5.0

    • Add the append method (#237).
    • Add support for more array sizes between 17 and 31 (#234).
    • Don't panic on deserialization errors (#238).
    Commits
    • 0a4fdff Version 1.8.0
    • 6d0dea5 Auto merge of #275 - as-com:arbitrary-support, r=mbrubeck
    • 9bcd950 Add support for arbitrary
    • 7cbb3b1 Auto merge of #271 - saethlin:drain-aliasing-test, r=jdm
    • 0fced9d Test for drains that shift the tail, when inline
    • 218e0bb Merge pull request #270 from servo/github-actions
    • 52c50af Replace TravisCI with Github Actions.
    • 5ae217a Include the cost of shifts in insert/remove benchmarks (#268)
    • 58edc0e Version 1.7.0
    • 1e4b151 Added feature const_new which enables SmallVec::new_const() (#265)
    • 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)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump regex from 1.4.2 to 1.5.5

    Bump regex from 1.4.2 to 1.5.5

    Bumps regex from 1.4.2 to 1.5.5.

    Changelog

    Sourced from regex's changelog.

    1.5.5 (2022-03-08)

    This releases fixes a security bug in the regex compiler. This bug permits a vector for a denial-of-service attack in cases where the regex being compiled is untrusted. There are no known problems where the regex is itself trusted, including in cases of untrusted haystacks.

    1.5.4 (2021-05-06)

    This release fixes another compilation failure when building regex. This time, the fix is for when the pattern feature is enabled, which only works on nightly Rust. CI has been updated to test this case.

    1.5.3 (2021-05-01)

    This releases fixes a bug when building regex with only the unicode-perl feature. It turns out that while CI was building this configuration, it wasn't actually failing the overall build on a failed compilation.

    1.5.2 (2021-05-01)

    This release fixes a performance bug when Unicode word boundaries are used. Namely, for certain regexes on certain inputs, it's possible for the lazy DFA to stop searching (causing a fallback to a slower engine) when it doesn't actually need to.

    [PR #768](rust-lang/regex#768) fixes the bug, which was originally reported in ripgrep#1860.

    1.5.1 (2021-04-30)

    This is a patch release that fixes a compilation error when the perf-literal feature is not enabled.

    ... (truncated)

    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)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump lock_api from 0.4.1 to 0.4.6

    Bump lock_api from 0.4.1 to 0.4.6

    Bumps lock_api from 0.4.1 to 0.4.6.

    Changelog

    Sourced from lock_api's changelog.

    parking_lot 0.12.0, parking_lot_core 0.9.0, lock_api 0.4.6 (2022-01-28)

    • The MSRV is bumped to 1.49.0.
    • Disabled eventual fairness on wasm32-unknown-unknown. (#302)
    • Added a rwlock method to report if lock is held exclusively. (#303)
    • Use new asm! macro. (#304)
    • Use windows-rs instead of winapi for faster builds. (#311)
    • Moved hardware lock elision support to a separate Cargo feature. (#313)
    • Removed used of deprecated spin_loop_hint. (#314)

    parking_lot 0.11.2, parking_lot_core 0.8.4, lock_api 0.4.5 (2021-08-28)

    • Fixed incorrect memory orderings on RwLock and WordLock. (#294, #292)
    • Added Arc-based lock guards. (#291)
    • Added workaround for TSan's lack of support for fence. (#292)

    lock_api 0.4.4 (2021-05-01)

    • Update for latest nightly. (#281)

    lock_api 0.4.3 (2021-04-03)

    • Added [Raw]ReentrantMutex::is_owned. (#280)

    parking_lot_core 0.8.3 (2021-02-12)

    • Updated smallvec to 1.6. (#276)

    parking_lot_core 0.8.2 (2020-12-21)

    • Fixed assertion failure on OpenBSD. (#270)

    parking_lot_core 0.8.1 (2020-12-04)

    • Removed deprecated CloudABI support. (#263)
    • Fixed build on wasm32-unknown-unknown. (#265)
    • Relaxed dependency on smallvec. (#266)

    parking_lot 0.11.1, lock_api 0.4.2 (2020-11-18)

    • Fix bounds on Send and Sync impls for lock guards. (#262)
    • Fix incorrect memory ordering in RwLock. (#260)
    Commits
    • a75875b Release parking_lot 0.12.0, parking_lot_core 0.9.0, lock_api 0.4.6
    • 78a16dd Minor fixes
    • 4d64bc6 Merge pull request #314 from Amanieu/spin_loop
    • a4e4a02 Only run CI for bors and pull requests
    • 930caab Use core::hint::spin_loop instead of the deprecated spin_loop_hint.
    • b3c9290 Merge pull request #313 from Amanieu/hle_feature
    • b271f84 Move hardware lock elision support to a separate Cargo feature
    • 8019473 Merge pull request #311 from clemenswasser/adopt-windows-rs
    • 1f94288 Adopt windows-rs
    • c73dd43 Merge pull request #309 from Amanieu/stable_asm
    • 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)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
Releases(0.2.7)
  • 0.2.7(Nov 22, 2020)

    0.2.7

    Comments

    This is an update that focussed on very small elements of existing features to make them less annoying. Nothing new was really added, but the existing features have been greatly improved. From huge improvements in efficiency to better language highlighting and support. It took a long time but it was hopefully worth it.

    Next Update

    Next update will focus on adding mouse support. One of the major burdens of the editor is that it is a pain to copy and cut text from it. Also navigating files for those who aren't used to keyboard navigation is a pain. It will also add extra language support for several popular programming languages.

    Changelog

    • Fixed serious origin deletion error
    • Added log file for better debugging
    • Properly handled panics
    • Optimized syntax highlighter to only re-tokenise on edit instead of every time it comes into view, greatly speeding up code navigation and writing.
    • Rewritten in Crossterm
    • Added native Windows support
    • Now uses signals to handle terminal resizes.
    • Undoing now affects the dirty file indicator if in last save state
    • Allowed jumping to lines via arguments e.g: ox test.txt:100 will take you to the 100th line and ox test.txt:200:39 will take you to the 39th character in line 200.
    • Improved language syntax highlighting.
    • Fixed tab and space indentation issues
    • Added 16 bit colour fallback
    • Fixed problem with resizing the welcome message
    • Fixed serious unicode bug
    • Added support for dos line endings
    • Allowed for customisation of the warning, error and info message colours in the command line
    • Fixed resize panic
    • Added support for a transparent editor background
    • Added support for line number background colours
    • Fixed dodgy search and replace features
    • Added highlighting to search and replace features
    • Code clean up
    • Added command to allow reloading of configuration file
    • Added delete word command
    • Added file overwrite prevention
    • Removed hardcoded key binding values
    • Made the goto command change the offset only if required
    • Added configuration option for cursor line wrapping
    • Improved file reading and saving errors
    • Added read only mode
    • Added ability to execute shell commands
    • Added macro to allow saving as root in case of permission error
    • Added a ton of extra key bindings including function keys and arrow keys too
    • Changed default configuration to use more intuitive key bindings
    Source code(tar.gz)
    Source code(zip)
    ox(2.22 MB)
    ox-0.2.7-1.x86_64.rpm(888.56 KB)
    ox_0.2.7_amd64.deb(659.61 KB)
  • 0.2.6(Nov 7, 2020)

    0.2.6

    Comments

    This is a huge update with many improvements and additions. More control over the editor as well as an entirely new scripting language have been added, allowing actions and commands that speed up editing and finally add extensibility to the editor.

    Next update

    Next update I'll work on refactoring to speed up Ox, because I am very aware that Ox is highly inefficient. I'll be writing a selective re-tokeniser which will only recolour lines that have been edited, over the old method of just re-tokenizing everything in view. I'll also be working to tweak certain features to improve them and bring them up to scratch with many modern text editors and work on ditching the termion library in favour of the much more active and comprehensive crossterm library. This will allow native Windows support and will allow some optimisations to be made.

    Changelog

    • Added new simple scripting language to allow for extensibility.
    • Added wiki to extensively document the editor.
    • Fixed weird deletion behaviour at the origin of the document.
    • Rewrote undo and redo to feed through the same event execution as Oxa.
    • Added more functionality like force quit, jumping to lines.
    • Added support for multiple colour schemes in one config file with a command to switch between them.
    • Allowed for customisation of the contents of the status line and tab bar.
    • Added rpm package.
    • Added deb package.
    • Added to homebrew.
    • Updated dependencies.
    Source code(tar.gz)
    Source code(zip)
    ox(2.01 MB)
    ox-0.2.6-1.x86_64.rpm(805.75 KB)
    ox_0.2.6_amd64.deb(596.39 KB)
  • 0.2.5(Oct 24, 2020)

    0.2.5

    This is a considerably large update that adds tabs and allows multiple documents to be edited at once.

    • Updated dependencies
    • Added a tab line to show the open documents
    • Allowed the editor to handle multiple documents
    • Improved the hardcoded configuration file
    • Cleaned up code
    • Added a Save all documents command
    • Improved documentation
    • Updated images on README file.
    Source code(tar.gz)
    Source code(zip)
    ox(3.32 MB)
  • 0.2.4(Oct 18, 2020)

    0.2.4

    After almost a month of no releases, finally one of the largest updates to Ox has come. Since 0.2.3, Ox has blown up in popularity to my surprise and has gained some valuable advice, guidance and bug catching. This update of Ox now has support for syntax highlighting in C, Rust, Crystal, JavaScript, Ruby and Python.

    Here are the changes to this update:

    • Added Syntax Highlighting for various popular languages
    • Improved Undo / Redo performance
    • Improved Commenting throughout the source files
    • Created a Patreon for donations
    • Fixed bug which crashed Ox when opening empty documents
    • Allowed for XDG_CONFIG_HOME variable to be used for configuration location
    • Improved documentation
    • Added Ox to the AUR under ox-bin and ox-git
    • Updated images
    • Updated logo
    • Added in better configuration file error reporting
    • Moved from TOML to RON for more advanced and feature rich configuration files
    Source code(tar.gz)
    Source code(zip)
    ox(3.30 MB)
  • 0.2.3(Sep 27, 2020)

    0.2.3

    This is the fourth release in the 0.2 series of versions. It is a big release and not only focuses on new features but also improves previous ones and splats several bugs.

    • A new powerful command line interface written with clap-rs with a help command.
    • A new configuration system to modify the themes and functionality of Ox.
    • Added line number padding on the left hand side.
    • Changed the default theme to a custom one that feels more modern.
    • Changed the Logo.
    • Optimized performance.
    • Reduced runtime errors by squashing unwrap calls.
    • Added proper wrapping to the status line and welcome message.
    • Search feature now snaps to the middle of the screen properly.
    • Added a replace feature with regex support.
    • Added a replace all feature with regex support.
    • Added regex support to search feature.
    Source code(tar.gz)
    Source code(zip)
    ox(3.23 MB)
  • 0.2.2(Sep 23, 2020)

    0.2.2

    This is a very quick follow up to 0.2.1, coming under 24 hours later with a huge bug fix that has been troubling me for a long time and I finally managed to splat it. Happy days! I also tweaked the undo / redo features slightly.

    Update includes:

    • Fix for mangled copy / paste text and general input bug
    • Way more efficient input process
    • Tweak the undo / redo feature to not make the file dirty unless it actually changes something.
    Source code(tar.gz)
    Source code(zip)
    ox(2.44 MB)
  • 0.2.1(Sep 23, 2020)

    0.2.1

    As 0.2.0 was such a big update, I've decided to do smaller and more frequent updates instead and aim to release roughly every 1-2 weeks. A smaller update including some excellent features and improvements. Including:

    • Language specific filetype icons in the status line.
    • Undo and Redo feature.
    • Optimized regular expression use.
    Source code(tar.gz)
    Source code(zip)
    ox(2.45 MB)
  • 0.2.0(Sep 15, 2020)

    0.2.0

    0.2.0 is a full rewrite of the 0.1 series of this editor. It now has features that are essential to a text editor, it is now able to view long lines, Unicode works flawlessly and 0.2.0 is just cleaner underneath. It also has searching and a much more immersive command bar due to colours and styles.

    It is also more fragmented up into modules, isolating problems into containers to make it easier to debug in the future.

    My knowledge of Rust and it's libraries has allowed me to create a solid foundation that will make it easy to add on to in the future.

    Source code(tar.gz)
    Source code(zip)
    ox(2.41 MB)
  • 0.1.1(Aug 9, 2020)

    0.1.1

    This is a huge update and provides a more resilient and polished Ox, making it closer to being usable. Including:

    • Fewer panics.
    • New status line design.
    • Patched a serious bug with the enter key.
    • Better way of opening files.
    • Ability to create new files.
    • "Save as" functionality.
    • Unicode support.
    • Dirty file indicator.
    • More efficient rendering.
    • A smaller binary.
    Source code(tar.gz)
    Source code(zip)
  • 0.1.0(Aug 2, 2020)

    0.1.0

    The first release of the Ox text editor!

    This is hopefully the start of many releases.

    At the moment, Ox is buggy and has some weird quirks here and there but can function as a very very basic text editor.

    I hope to iron out any issues and quirks in future releases, but for now, this is a text editor that can comfortably edit text and save it to the disk.

    Source code(tar.gz)
    Source code(zip)
Owner
Hey! I'm curlpipe, a pro-privacy, anti-telemetry programmer and ArchLinux user.
null
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
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
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
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 text editor in ≤1024 lines of code, written in Rust

Kibi: A text editor in ≤1024 lines of code, written in Rust A configurable text editor with UTF-8 support, incremental search, syntax highlighting, li

Ilaï Deutel 839 Sep 24, 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
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
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
A simple terminal-based editor made in rust!

ELuna Editor The terminal-based editor for europa lang. Goals Be as minimal as possible, but retain conveniences found in other editors. Do not add fe

Junhao 3 May 25, 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
eBPF terminal editor

TBM - Terminal Blueprint Meddler A TUI application for fooling around inside eBPF files. Installation cargo install tbm Usage Currently, only prints

Rafael Ortiz 1 Jan 18, 2022
Wealthy Rich ported to Rust! This aims to be a crate for rich text and beautiful formatting in the terminal

Wealthy Rich ported to Rust! This aims to be a crate for rich text and beautiful formatting in the terminal

Sourajyoti Basak 12 Sep 10, 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
Rust-based traffic editor for RMF

Traffic Editor III Welcome to Traffic Editor III. install stuff Unfortunately we need a newer Rust than what comes with Ubuntu 20.04. First make sure

null 1 Nov 26, 2021
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
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