{"id":13753587,"url":"https://github.com/Tiggilyboo/editor","last_synced_at":"2025-05-09T21:35:13.032Z","repository":{"id":134787317,"uuid":"256138441","full_name":"Tiggilyboo/editor","owner":"Tiggilyboo","description":"A native cross platform code editor using Vulkan","archived":false,"fork":false,"pushed_at":"2022-01-19T08:44:10.000Z","size":1307,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-11-16T06:30:30.590Z","etag":null,"topics":["rust","vulkan","winit","xi-editor"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Tiggilyboo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-04-16T07:15:15.000Z","updated_at":"2023-09-17T06:46:06.000Z","dependencies_parsed_at":"2023-07-31T23:16:50.367Z","dependency_job_id":null,"html_url":"https://github.com/Tiggilyboo/editor","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tiggilyboo%2Feditor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tiggilyboo%2Feditor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tiggilyboo%2Feditor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tiggilyboo%2Feditor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Tiggilyboo","download_url":"https://codeload.github.com/Tiggilyboo/editor/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253328929,"owners_count":21891549,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["rust","vulkan","winit","xi-editor"],"created_at":"2024-08-03T09:01:25.222Z","updated_at":"2025-05-09T21:35:12.597Z","avatar_url":"https://github.com/Tiggilyboo.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# editor\nA cross platform low-level code editor\n\n![preview](https://imgur.com/download/EM5hMzA/)\n\n## Frontend\nThis editor is a frontend for [xi-editor](https://github.com/xi-editor/xi-editor)\n\n## Features\n- Multi-platform windowing and input using [winit](https://github.com/rust-windowing/winit-rs).\n- Vulkan rendering using [vulkano](https://github.com/vulkano-rs/vulkano).\n- Widget system for rendering queue, currently implemented: \n  - primitive widgets (coloured quads)\n  - text widget for glyph rendering (currently using [glyph-brush](https://github.com/alexheretic/glyph-brush) \n  - edit view is a widget (containing many internal widgets).\n- Line numbers \u0026 gutter (Currently toggle with F5)\n- Themes (Currently bound to F1, F2, and F3)\n- Syntax highlighting\n- Vim key bindings (more advanced keystrokes still a work in progress)\n\n### Key Bindings (Vim)\nCurrently only basic bindings have been made, but the plan is to implement most of the main keybindings, will unlikely support\nvimscript. Bindings are written using rust macros, below is an example:\n\nSee more at **src/events/bindings.rs**\n```rust\n...\nbindings.extend(bindings!(\n  Keybinding;\n  \n  F1; Action::SetTheme(String::from(\"Solarized (dark)\"));\n  F5; Action::ToggleLineNumbers;\n  PageUp, ~Mode::Command; motion!(Motion Up by Page);\n  Return, +Mode::Normal; motion!(Motion Down), motion!(Motion FirstOccupied);\n  Delete, +Mode::Insert; motion!(Delete Right);\n  ...\n));\n```\nAs you can see, the beginning of each key binding starts with the key trigger (ie. a function key, a letter etc.)\nYou can specify conditions, such as requiring a single mode with `+` to be active, or any other mode other then the one specified\nwith `~`. This is followed by an `Action`, and other macros exist such as motion to make life a little easier without chaining\na bunch of nested rust enumerables together.\n\n### Preferences\nAs this is a frontend for Xi-Editor, preferences can be stored at `$HOME/.config/xi/preferences.xiconfig` in toml format.\nHere is an example:\n\n```toml\nfont_size = 14\ntab_size = 2\ntranslate_tabs_to_spaces = true\n```\n\n## Plans (Likely to change...)\n- Implement multi-view handling\n- Implement LSP plugin\n- Mouse interaction?\n- In-built LISP-like language to define keymapping to actions. Useful for complex key-bindings like VIM, still in the ideation phase...\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTiggilyboo%2Feditor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FTiggilyboo%2Feditor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTiggilyboo%2Feditor/lists"}