{"id":19316634,"url":"https://github.com/wisskirchenj/editor","last_synced_at":"2026-06-12T16:34:15.103Z","repository":{"id":172579288,"uuid":"649358524","full_name":"wisskirchenj/editor","owner":"wisskirchenj","description":"Texteditor Repo inspired by Marco Codes UTube-Series.","archived":false,"fork":false,"pushed_at":"2024-04-22T12:29:40.000Z","size":120,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-24T04:42:15.526Z","etag":null,"topics":["java20","jni-java","libc","texteditor"],"latest_commit_sha":null,"homepage":"","language":"Java","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/wisskirchenj.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":"2023-06-04T15:48:14.000Z","updated_at":"2024-04-22T12:29:44.000Z","dependencies_parsed_at":"2024-11-10T01:12:09.784Z","dependency_job_id":"92a1f70c-54dc-4058-8273-2b886842ded8","html_url":"https://github.com/wisskirchenj/editor","commit_stats":null,"previous_names":["wisskirchenj/editor"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/wisskirchenj/editor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wisskirchenj%2Feditor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wisskirchenj%2Feditor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wisskirchenj%2Feditor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wisskirchenj%2Feditor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wisskirchenj","download_url":"https://codeload.github.com/wisskirchenj/editor/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wisskirchenj%2Feditor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34253936,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-12T02:00:06.859Z","response_time":109,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["java20","jni-java","libc","texteditor"],"created_at":"2024-11-10T01:12:03.286Z","updated_at":"2026-06-12T16:34:15.064Z","avatar_url":"https://github.com/wisskirchenj.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Editor project as playground repo\n\nTest some stuff inspired by Editor Series of Marco Codes on You Tube.\n\n## Technology / External Libraries\n\n- Java 20\n- JNA, to call libc methods of MacOs Ventana 13.3\n- Log4j2 with custom programmatic configuration\n- Gradle 8.3\n\n## Program description\n\nTerminal editor app using JNA (to use OS-function for switching teminal modes etc.) and ANSI-sequences. \nShould give some text-editor as vi in \"very light\" .-)\n\n## Instructions\n\n**Note:** The application is presently *restricted to work on MacOS*. Without adaptations of the libc-parameters\nit most probably won't work on Linux or Windows WSL. But for the latter you can use\n[Marco Behler's GitHub repository](https://github.com/marcobehlerjetbrains/text-editor).\n\nSo for Mac-users, after cloning use the gradle task\n`gradlew installDist`\nto install a runnable project. This will install your project (at least for IntelliJ Idea) in a subfolder of the\nproject directory. You can find the executable bash-script then in:\n\u003e $project_dir/build/install/editor/bin/editor\n\nYou need to `cd` there now from a MacOS terminal and just run above script. It is _not_ possible to run the application from\nwithin IDE, since the Run-terminals here are emulated and the JNA-calls won't work.\n\n## Usage\n\nCurrently implemented control keys:\n\n\u003e `CTRL-Q`: **Quit** the editor.\n\u003e\n\u003e `BACKSPACE`: delete character in front of cursor (no surprise here :-)\n\u003e \n\u003e `Arrow-Keys`: navigate through the text buffer - viewport scrolls to center cursor position as soon as the boundary is\ntouched or when jumping out of the viewport (similar as and inspired by the behaviour of emacs)\n\u003e \n\u003e `Ctrl-A`: Jump to **Begin of Line**.\n\u003e\n\u003e `Ctrl-E`: Jump to **End of Line** (behind last character).\n\u003e\n\u003e `Esc-\u003c` (or `M-\u003c` Emacs-style): Jump to **Begin of Buffer**.\n\u003e\n\u003e `Esc-\u003e` (or `M-\u003e`): Jump to **End of Buffer**.\n\u003e\n\u003e `Ctrl-V`: **Page-Down** - scroll down one page (# rows in display).\n\u003e\n\u003e `Esc-V` (or `M-V`): **Page-Up** - scroll up one page (# rows in display).\n\u003e\n\u003e `Ctrl-F`: Interactive and **incremental Search**. Entered search text can incrementally searched forward (`n` next)\nor backwards (`p` previous)\n\u003e\n\u003e `Ctrl-R`: Interactive **Search backwards**. Entering the incremental search above.\n\u003e \n\u003e `Ctrl-S`: **Save buffer** to file. Filename is entered in the statusbar - relative to working directory.\n\u003e\n\u003e `Ctrl-L`: **Load buffer** from file. Filename is entered in the statusbar - relative to working directory.\n\u003e\n\u003e `Ctrl-W`: After a manual terminal **resize** adjust the running editor to the new dimensions (Internally it runs an stty-\ncommand and uses its output to set new clipping dimensions).\n\u003e\n\n## Project status\n\nProject is ongoing.\n\n[//]: # (Project was completed on 14.05.23.)\n\n## Progress\n\n04.06.23 Project started. Setup of build and repo with gradle on Kotlin basis. Configuration of log4j with\ncustom ConfigurationFactory.\n\n05.06.23 Some refactoring. Doing a keyPress-loop in Terminal to toggle between terminal's raw and normal mode.\n\n01.07.23 Core editor functionality implemented based on an OOP-design with an Editor (controller-type) class, that\ninstantiates and uses EditorModel, Cursor and Clipping objects. The editor scrolls its viewport vertically as well\nas horizontally (unlike emacs or vi, who in base mode do not scroll horizontally).\n\n27.08.23 Besides some minor refactoring, load and save functionality to and from file added. Filename is entered in\nthe status bar implemented in new inner class Editor.FileHandler using new methods in the EditorModel and Cursor.\n\n28.08.23 Page-Up and -down implemented using the Emacs key shortcuts. File-IO exception handling added. Jump to\nEnd and Begin of Line added - again with Emacs shortcuts.\n\n02.09.23 Jump to Begin and End of Buffer added (using Emacs Shortcuts M-\u003c, M-\u003e) and incremental search forwards and backwards\non Ctrl-F and Ctrl-R.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwisskirchenj%2Feditor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwisskirchenj%2Feditor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwisskirchenj%2Feditor/lists"}