{"id":13412176,"url":"https://github.com/davidgranstrom/scnvim","last_synced_at":"2025-03-14T18:30:21.574Z","repository":{"id":37550453,"uuid":"168224633","full_name":"davidgranstrom/scnvim","owner":"davidgranstrom","description":"Neovim frontend for SuperCollider.","archived":false,"fork":false,"pushed_at":"2025-01-29T07:35:06.000Z","size":684,"stargazers_count":220,"open_issues_count":18,"forks_count":28,"subscribers_count":12,"default_branch":"main","last_synced_at":"2025-03-06T10:58:15.579Z","etag":null,"topics":["lua","neovim","supercollider"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/davidgranstrom.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","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":"2019-01-29T20:36:45.000Z","updated_at":"2025-03-05T20:36:27.000Z","dependencies_parsed_at":"2023-11-23T14:24:56.629Z","dependency_job_id":"e4b9db82-2bea-4599-94b9-f4bef29fe477","html_url":"https://github.com/davidgranstrom/scnvim","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/davidgranstrom%2Fscnvim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidgranstrom%2Fscnvim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidgranstrom%2Fscnvim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidgranstrom%2Fscnvim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/davidgranstrom","download_url":"https://codeload.github.com/davidgranstrom/scnvim/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243624990,"owners_count":20321208,"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":["lua","neovim","supercollider"],"created_at":"2024-07-30T20:01:21.797Z","updated_at":"2025-03-14T18:30:21.100Z","avatar_url":"https://github.com/davidgranstrom.png","language":"Lua","readme":"# scnvim\n\n[Neovim][neovim] frontend for [SuperCollider][supercollider].\n\n[![unit tests](https://github.com/davidgranstrom/scnvim/actions/workflows/ci.yml/badge.svg)](https://github.com/davidgranstrom/scnvim/actions/workflows/ci.yml)\n[![lint and style check](https://github.com/davidgranstrom/scnvim/actions/workflows/lint.yml/badge.svg)](https://github.com/davidgranstrom/scnvim/actions/workflows/lint.yml) \n[![docs](https://github.com/davidgranstrom/scnvim/actions/workflows/docs.yml/badge.svg)](https://github.com/davidgranstrom/scnvim/actions/workflows/docs.yml)\n\n## Table of content\n\n* [Features](#features)\n* [Installation](#installation)\n* [Usage](#usage)\n* [Documentation](#documentation)\n* [Extensions](#extensions)\n* [Supported platforms](#supported-platforms)\n\n## Features\n\n* Post window output is displayed in a scratch buffer\n  - Uses a split or a floating window for display\n  - Navigate/move/copy etc. as with any other window\n  - Toggle back if hidden automatically on errors\n* Automatic display of function signatures\n* Status line widgets\n  - Display SuperCollider server status in the status line\n* Snippet generator\n  - Generates snippets for creation methods in SCClassLibrary.\n* Can be used with Neovim [GUI frontends](https://github.com/neovim/neovim/wiki/Related-projects#gui)\n* Supports [on-demand loading](https://github.com/junegunn/vim-plug#on-demand-loading-of-plugins)\n* Context aware (block or line) evaluation (like `Cmd-Enter` in ScIDE)\n* Flashy eval flash (configurable)\n* Partial `Document` support (e.g. `thisProcess.nowExecutingPath`, `.load` etc.)\n* Plain text help system for SuperCollider documentation\n  - Evaluate code examples inside the help buffer\n\n## Installation\n\n### Requirements\n\n* [Neovim][neovim] \u003e= 0.7\n* [SuperCollider][supercollider]\n\n### Install\n\n* Using [packer.nvim](https://github.com/wbthomason/packer.nvim)\n\n```lua\nuse { 'davidgranstrom/scnvim' }\n```\n\n* Using [vim-plug](https://github.com/junegunn/vim-plug)\n\n```vim\nPlug 'davidgranstrom/scnvim'\n```\n\n### Verify\n\nRun `:checkhealth scnvim` to verify that the installation was successful.\n\n## Usage\n\n### Configuration\n\n`scnvim` uses `lua` for configuration. Below is an example that you can copy\nand paste to your `init.lua`.\n\nIf you are using `init.vim` for configuration you will need to surround the\ncall to `scnvim.setup` in a `lua-heredoc`:\n\n```vim\n\" file: init.vim\nlua \u003c\u003c EOF\nrequire('scnvim').setup({})\nEOF\n```\n\n### Example\n\n```lua\nlocal scnvim = require 'scnvim'\nlocal map = scnvim.map\nlocal map_expr = scnvim.map_expr\n\nscnvim.setup({\n  keymaps = {\n    ['\u003cM-e\u003e'] = map('editor.send_line', {'i', 'n'}),\n    ['\u003cC-e\u003e'] = {\n      map('editor.send_block', {'i', 'n'}),\n      map('editor.send_selection', 'x'),\n    },\n    ['\u003cCR\u003e'] = map('postwin.toggle'),\n    ['\u003cM-CR\u003e'] = map('postwin.toggle', 'i'),\n    ['\u003cM-L\u003e'] = map('postwin.clear', {'n', 'i'}),\n    ['\u003cC-k\u003e'] = map('signature.show', {'n', 'i'}),\n    ['\u003cF12\u003e'] = map('sclang.hard_stop', {'n', 'x', 'i'}),\n    ['\u003cleader\u003est'] = map('sclang.start'),\n    ['\u003cleader\u003esk'] = map('sclang.recompile'),\n    ['\u003cF1\u003e'] = map_expr('s.boot'),\n    ['\u003cF2\u003e'] = map_expr('s.meter'),\n  },\n  editor = {\n    highlight = {\n      color = 'IncSearch',\n    },\n  },\n  postwin = {\n    float = {\n      enabled = true,\n    },\n  },\n})\n```\n\n### Start\n\nOpen a new file in `nvim` with a `.scd` or `.sc` extension and type `:SCNvimStart` to start SuperCollider.\n\n### Commands\n\n| Command                | Description                                                    |\n|:-----------------------|:---------------------------------------------------------------|\n| `SCNvimStart`          | Start SuperCollider                                            |\n| `SCNvimStop`           | Stop SuperCollider                                             |\n| `SCNvimRecompile`      | Recompile SCClassLibrary                                       |\n| `SCNvimGenerateAssets` | Generate tags, syntax, snippets etc.                           |\n| `SCNvimHelp \u003csubject\u003e` | Open help for \\\u003csubject\\\u003e (By default mapped to `K`)           |\n| `SCNvimStatusLine`     | Start to poll server status to be displayed in the status line |\n\n### Additional setup\n\nRun `:SCNvimGenerateAssets` after starting SuperCollider to generate syntax highlighting and tags.\n\nThe plugin should work \"out of the box\", but if you want even more fine-grained\ncontrol please have a look at the [configuration\nsection](https://github.com/davidgranstrom/scnvim/wiki/Configuration) in the\nwiki.\n\n## Documentation\n\n* `:help scnvim` for detailed documentation.\n* [API documentation](https://davidgranstrom.github.io/scnvim/)\n\n## Extensions\n\nThe extension system provides additional functionalities and integrations. If\nyou have made a scnvim extension, please open a PR and add it to this list!\n\n* [fzf-sc](https://github.com/madskjeldgaard/fzf-sc)\n  - Combine the magic of fuzzy searching with the magic of SuperCollider in Neovim\n* [nvim-supercollider-piano](https://github.com/madskjeldgaard/nvim-supercollider-piano)\n  - Play SuperCollider synths using your (computer) keyboard in neovim!\n* [scnvim-tmux](https://github.com/davidgranstrom/scnvim-tmux)\n  - Redirect post window ouput to a tmux pane.\n* [scnvim-logger](https://github.com/davidgranstrom/scnvim-logger)\n  - Log post window output to a file (example scnvim extension)\n* [telescope-scdoc](https://github.com/davidgranstrom/telescope-scdoc.nvim)\n  - Use Telescope to fuzzy find documentation\n\n## Supported platforms\n\n* Linux\n* macOS\n* Windows (tested with `nvim-qt` and `nvim.exe` in Windows PowerShell)\n\n### Note to Windows users\n\nThe path to `sclang.exe` needs to be specified in the config:\n\n```lua\nlocal scnvim = require('scnvim')\nscnvim.setup({\n  sclang = {\n    cmd = 'C:/Program Files/SuperCollider-3.12.2/sclang.exe'\n  },\n})\n```\n\nModify the `sclang.cmd` to point to where SuperCollider is installed on your system.\n\nAdditionally, to be able to boot the server you will need to add the following to `startup.scd`:\n\n```supercollider\nif (\\SCNvim.asClass.notNil) {\n  Server.program = (Platform.resourceDir +/+ \"scsynth.exe\").quote;\n}\n```\n\n## License\n\n```plain\nscnvim - Neovim frontend for SuperCollider\nCopyright © 2018 David Granström\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program.  If not, see \u003chttp://www.gnu.org/licenses/\u003e.\n```\n\n[neovim]: https://github.com/neovim/neovim\n[supercollider]: https://github.com/supercollider/supercollider\n","funding_links":[],"categories":["Media","Lua"],"sub_categories":["Cursorline"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavidgranstrom%2Fscnvim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdavidgranstrom%2Fscnvim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavidgranstrom%2Fscnvim/lists"}