{"id":37663329,"url":"https://github.com/vittorius/zed-settings-sync","last_synced_at":"2026-01-16T11:53:36.149Z","repository":{"id":320028621,"uuid":"1071670832","full_name":"vittorius/zed-settings-sync","owner":"vittorius","description":"Zed settings sync extension","archived":false,"fork":false,"pushed_at":"2026-01-13T10:48:05.000Z","size":343,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-13T13:42:39.252Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vittorius.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-07T16:51:54.000Z","updated_at":"2026-01-08T17:31:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"b9718d46-8397-4770-bf8d-7a44d18fc8b8","html_url":"https://github.com/vittorius/zed-settings-sync","commit_stats":null,"previous_names":["vittorius/zed-settings-sync"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/vittorius/zed-settings-sync","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vittorius%2Fzed-settings-sync","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vittorius%2Fzed-settings-sync/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vittorius%2Fzed-settings-sync/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vittorius%2Fzed-settings-sync/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vittorius","download_url":"https://codeload.github.com/vittorius/zed-settings-sync/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vittorius%2Fzed-settings-sync/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28478391,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T06:30:42.265Z","status":"ssl_error","status_checked_at":"2026-01-16T06:30:16.248Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2026-01-16T11:53:34.034Z","updated_at":"2026-01-16T11:53:36.141Z","avatar_url":"https://github.com/vittorius.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- markdownlint-disable-file MD033 --\u003e\u003c!-- we are OK with inline HTML since we use \u003ckbd\u003e tags --\u003e\n\n# Zed Settings Sync\n\n**Zed Settings Sync** is an extension for [Zed](https://zed.dev) that aims to add support of automatically syncing your user-level config files to a Github Gist using LSP.\n\nℹ️ This extension doesn't sync project settings files because it's more pragmatic to just check them in the project's VCS repository if needed.\n\nUsing LSP is a workaround because of the limited capabilities of current Zed extensions API.\n\n_Such an approach is heavily inspired by [Zed Discord Presence](https://github.com/xhyrom/zed-discord-presence) extension._\n\n## Installation\n\nWhen a corresponding [Zed extensions repo](https://github.com/zed-industries/extensions) PR is created and merged, you can simply download the extension in \u003ckbd\u003ezed: extensions\u003c/kbd\u003e.\n\nUntil then, you can use the [dev installation mode](#dev-extension-installation).\n\n## Configuration\n\n### If you already have Zed but you don't have a settings Gist yet\n\n1. Create a Github token with `gist` permission scope ([detailed guide](docs/CREATE_GITHUB_TOKEN.md)).\n2. Prepare a Gist ([detailed guide](docs/CREATE_SETTINGS_GIST.md)).\n3. Add credentials to your Zed settings file:\n\n```jsonc\n{\n  \"lsp\": {\n    \"settings_sync\": {\n      \"initialization_options\": {\n        \"github_token\": \"gho_my-shiny-token\",\n        \"gist_id\": \"deadbeefdeadbeefdeadbeefdeadbeef\"\n      }\n    }\n  }\n}\n```\n\n### If you've installed a fresh Zed and want to pull in your settings from an existing Gist\n\n⚠️ Unfortunately, due to the currently limited functionality of Zed extensions in general, the extension itself cannot load settings from a Github Gist. A CLI tool is provided for that purpose.\n\nEnsure you have your [Github token](docs/CREATE_GITHUB_TOKEN.md) and [Gist ID](docs/CREATE_SETTINGS_GIST.md) at hand.\n\n1. Install [eget](https://github.com/zyedidia/eget)\n2. Run `eget vittorius/zed-settings-sync --to=~/.local/bin` (or any other destination directory you prefer)\n3. Pick the `zed-settings-sync-cli` binary in the choice provided by eget\n4. Run `zed-settings-sync-cli load` and follow the instructions\n\n(Of course, you can download and unpack the binary manually from [Github releases](https://github.com/vittorius/zed-settings-sync/releases))\n\n## Usage\n\n### Syncing to a Github Gist\n\nGiven, you've configured everything correctly, now you can:\n\n- edit the settings file ( or \u003ckbd\u003ezed: open settings file\u003c/kbd\u003e)\n- edit the keymap file ( or \u003ckbd\u003ezed: open keymap file\u003c/kbd\u003e)\n- edit tasks (\u003ckbd\u003ezed: open tasks\u003c/kbd\u003e)\n- edit debug tasks (\u003ckbd\u003ezed: open debug tasks\u003c/kbd\u003e)\n\nAfter the file is saved, either manually, or with the auto-save feature, it will be synchronized to the Gist you've specified.\n\nℹ️ At some point, Zed has added graphical interface for editing Settings and Keymap.\nIt pops up by default when you run \u003ckbd\u003ezed: open settings\u003c/kbd\u003e or \u003ckbd\u003ezed: open keymap\u003c/kbd\u003e workbench action.\nWhen using such an editor, click `Edit in settings.json` or `Edit in keymap.json` respectively.\nYou can go back to the visual editor and use it afterward, **just keep the corresponding JSON settings file open**\nfor it to be caught by LSP and synchronized appropriately.\nOr, of course, you can edit your config files manually, as it was before.\n\nAnother approach could be swapping the keymap entries for \u003ckbd\u003ezed: open settings\u003c/kbd\u003e or \u003ckbd\u003ezed: open settings file\u003c/kbd\u003e (and for keymap file in a similar fashion):\n\n```json\n{\n  \"bindings\": {\n    \"cmd-,\": \"zed::OpenSettingsFile\",\n    \"alt-cmd-,\": \"zed::OpenSettings\"\n  }\n}\n```\n\n## Troubleshooting\n\n- Open LSP logs (\u003ckbd\u003edev: open language server logs\u003c/kbd\u003e), find `settings_sync` LSP server instance running for the specific settings file, and inspect its log\n- File an [issue](https://github.com/vittorius/zed-settings-sync/issues/new) on Github\n\n## Development\n\n### Dev environment setup\n\nRequirements:\n\n- [Git](https://git-scm.com/)\n- [Rust](https://rust-lang.org) is required. The easiest way to get [rust](https://rust-lang.org) is by using [rustup](https://rustup.rs).\n- [Nextest](https://nexte.st/) test runner ([some tests](common/src/config.rs) rely on it to be run without the need of cross-thread synchronization)\n- [iprecommit](https://github.com/iafisher/iprecommit) for Git hooks\n  - install `uv`\n  - change directory to where you cloned this repository\n  - do `uv venv`\n  - do `uvx pip install iprecommit`\n  - do `uvx precommit install`\n\n### Dev extension installation\n\n1. Clone this repository\n2. \u003ckbd\u003eCTRL\u003c/kbd\u003e + \u003ckbd\u003eSHIFT\u003c/kbd\u003e + \u003ckbd\u003eP\u003c/kbd\u003e and select \u003ckbd\u003ezed: install dev extension\u003c/kbd\u003e\n3. Choose the directory where you cloned this repository\n4. After installing the extension, reload the workspace (\u003ckbd\u003eworkspace: reload\u003c/kbd\u003e) to start the LSP server\n\n### Quick feedback loop when working on the LSP server\n\nRun\n\n```shell\ncargo xtask-lsp-install\n```\n\nto install the LSP server binary from your local repository to the Zed extension directory.\nThen, run \u003ckbd\u003eworkspace: reload\u003c/kbd\u003e action within your Zed instance for your dev extension to catch up the updated LSP server binary.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvittorius%2Fzed-settings-sync","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvittorius%2Fzed-settings-sync","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvittorius%2Fzed-settings-sync/lists"}