{"id":18854975,"url":"https://github.com/roman01la/structed","last_synced_at":"2025-09-03T16:31:22.826Z","repository":{"id":74176705,"uuid":"135335847","full_name":"roman01la/structed","owner":"roman01la","description":"Structured editing for JavaScript","archived":false,"fork":false,"pushed_at":"2019-01-04T10:02:46.000Z","size":378,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-12-24T17:37:11.751Z","etag":null,"topics":["structured-editing","syntax-aware"],"latest_commit_sha":null,"homepage":"https://roman01la.github.io/structed/","language":"JavaScript","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/roman01la.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":"2018-05-29T18:16:06.000Z","updated_at":"2024-06-30T08:59:31.000Z","dependencies_parsed_at":null,"dependency_job_id":"e6f1f7cb-18ea-4266-8094-e0704b92d082","html_url":"https://github.com/roman01la/structed","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/roman01la%2Fstructed","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roman01la%2Fstructed/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roman01la%2Fstructed/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roman01la%2Fstructed/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/roman01la","download_url":"https://codeload.github.com/roman01la/structed/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":231902081,"owners_count":18443328,"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":["structured-editing","syntax-aware"],"created_at":"2024-11-08T03:52:24.849Z","updated_at":"2024-12-30T18:41:15.316Z","avatar_url":"https://github.com/roman01la.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Structured editing for JavaScript\n\n- Core library `src/index.js`\n- Example `index.html`\n\n## Features\n\n- Hierarchical navigation (expand/shrink selection or cursor position)\n- Manipulate nodes instead of plain text (copy/cut)\n\n## Editor plugins\n\n- [VS Code](https://github.com/roman01la/vscode-structed)\n\n## Editor integration guide\n\nStructed's core library is a set of functions that walk AST and return location data for selection or cursor position to be set. It can work with any JS-based editor. See how it is used in [VS Code](https://github.com/roman01la/vscode-structed/blob/master/src/index.js) extension.\n\n## How it works\n\nBecause JavaScript’s source code is represented as plain text we need to parse it into AST first (structured representation of the code). And then analyze AST, with respect to cursor position in the editor, and compute selection range for AST nodes that should be “in focus” by walking the structure and extracting location data.\n\n## TODO\n\nSee [Paredit guide](http://danmidwood.com/content/2014/11/21/animated-paredit.html)\n\n- [x] `forward`\n- [x] `backward`\n- [ ] `forward-up`\n- [ ] `forward-down`\n- [ ] `backward-up`\n- [ ] `backward-down`\n- [ ] `wrap-[round|square|curly|angle]`\n- [ ] `forward-delete`\n- [ ] `forward-kill-node`\n- [ ] `backward-delete`\n- [ ] `backward-kill-node`\n- [ ] `kill`\n- [ ] `forward-slurp`\n- [ ] `backward-slurp`\n- [ ] `forward-barf`\n- [ ] `backward-barf`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froman01la%2Fstructed","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Froman01la%2Fstructed","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froman01la%2Fstructed/lists"}