{"id":15787268,"url":"https://github.com/eddiebergman/nvim-treesitter-pyfold","last_synced_at":"2025-05-07T14:45:55.629Z","repository":{"id":119388287,"uuid":"369030521","full_name":"eddiebergman/nvim-treesitter-pyfold","owner":"eddiebergman","description":"Some sane Python folding with nvim-treesitter","archived":false,"fork":false,"pushed_at":"2023-04-11T06:56:05.000Z","size":287,"stargazers_count":33,"open_issues_count":6,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-10-05T21:06:50.991Z","etag":null,"topics":["folding","nvim","python","treesitter"],"latest_commit_sha":null,"homepage":"","language":"Lua","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/eddiebergman.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":"2021-05-19T23:58:20.000Z","updated_at":"2024-07-01T06:09:15.000Z","dependencies_parsed_at":null,"dependency_job_id":"d480d1da-3636-40de-b318-f7089690efc8","html_url":"https://github.com/eddiebergman/nvim-treesitter-pyfold","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/eddiebergman%2Fnvim-treesitter-pyfold","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eddiebergman%2Fnvim-treesitter-pyfold/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eddiebergman%2Fnvim-treesitter-pyfold/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eddiebergman%2Fnvim-treesitter-pyfold/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eddiebergman","download_url":"https://codeload.github.com/eddiebergman/nvim-treesitter-pyfold/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252898328,"owners_count":21821594,"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":["folding","nvim","python","treesitter"],"created_at":"2024-10-04T21:07:03.359Z","updated_at":"2025-05-07T14:45:55.597Z","avatar_url":"https://github.com/eddiebergman.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"# nvim-treesitter-pyfold\nFolding is a great way to declutter the screen from irrelevant context but\noverfolding can be equally annoying.\nHence, a lua based module for nvim-treesitter, setting some sane folding \ndefaults and provides an optional foldtext.\n\n## Installation\nUsing your favourite package manager\n```lua\n# vim-plug\nPlug 'nvim-treesitter-pyfold'\n\n# Packer\nrequire('packer').setup {\n    ...\n    use 'eddiebergman/nvim-treesitter-pyfold'\n    ...\n}\n```\n\nOnce your package manager has installed the package, in your nvim-treesitter\nsetup, you simply enable the package with:\n```lua\nrequire('nvim-treesitter.configs').setup {\n    ...\n    pyfold = {\n        enable = true\n        custom_foldtext = true -- Sets provided foldtext on window where module is active\n    }\n    ...\n}\n```\n\nIf you havn't already, to use treesitter folding, you have to set the following two lines in your `.vimrc` at some point.\n```\nset foldmethod=expr\nset foldexpr=nvim_treesitter#fold_expr()\n```\n\nFor debuging issues, make these two lines are set using `set foldmethod` and `set foldexpr` to verify these are set.\n\n## Example\n#### Classes\n![Classes folding](https://github.com/eddiebergman/nvim-treesitter-pyfold/blob/master/images/Classes_Folding.png)\n#### Functions / Methods\n![Functions example](https://github.com/eddiebergman/nvim-treesitter-pyfold/blob/master/images/Functions_example.png)\n![Multline signature](https://github.com/eddiebergman/nvim-treesitter-pyfold/blob/master/images/Multiline_signature.png)\n![Functions Based on Docs present](https://github.com/eddiebergman/nvim-treesitter-pyfold/blob/master/images/Function_based_on_doc.png)\n#### Dicts, Lists, Tuples\n![Dicts, Lists, Tuples folding](https://github.com/eddiebergman/nvim-treesitter-pyfold/blob/master/images/listlikes.png)\n\n### TODO\n* Getting multiple imports to fold into one line.\n```Python\n# Code\nimport one\nimport two\nimport three\nfrom x import y\nimport a as b\nfrom z import ( \n    alpha, beta, phi\n)\n\n# Desired\n-- imports\n```\n\nThe C part of the python tree-sitter parser doesn't want to fold any \n'queryable' that only lives on one line, even if you group multiple of them\ntogether in query. Please let me know if you know of any workaround for this!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feddiebergman%2Fnvim-treesitter-pyfold","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feddiebergman%2Fnvim-treesitter-pyfold","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feddiebergman%2Fnvim-treesitter-pyfold/lists"}