{"id":29543081,"url":"https://github.com/yutanagano/smark.nvim","last_synced_at":"2026-04-13T13:01:51.858Z","repository":{"id":304253832,"uuid":"986813863","full_name":"yutanagano/smark.nvim","owner":"yutanagano","description":"Smart, Prettier-compatible Markdown auto-bullet list plugin for NeoVim","archived":false,"fork":false,"pushed_at":"2025-10-26T17:15:26.000Z","size":193,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-26T19:18:21.601Z","etag":null,"topics":["bullet","list","lua","markdown","neovim","nvim","prettier","vim"],"latest_commit_sha":null,"homepage":"","language":"Lua","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/yutanagano.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-05-20T06:55:12.000Z","updated_at":"2025-10-26T17:15:30.000Z","dependencies_parsed_at":"2025-07-12T00:24:16.523Z","dependency_job_id":"1e20f790-c9a1-4e6b-b8e6-a58e94e8fd2e","html_url":"https://github.com/yutanagano/smark.nvim","commit_stats":null,"previous_names":["yutanagano/smark.nvim"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/yutanagano/smark.nvim","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yutanagano%2Fsmark.nvim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yutanagano%2Fsmark.nvim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yutanagano%2Fsmark.nvim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yutanagano%2Fsmark.nvim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yutanagano","download_url":"https://codeload.github.com/yutanagano/smark.nvim/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yutanagano%2Fsmark.nvim/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31753551,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T09:16:15.125Z","status":"ssl_error","status_checked_at":"2026-04-13T09:16:05.023Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["bullet","list","lua","markdown","neovim","nvim","prettier","vim"],"created_at":"2025-07-17T13:02:27.305Z","updated_at":"2026-04-13T13:01:51.851Z","avatar_url":"https://github.com/yutanagano.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🧠🚅 smark.nvim\n\n![neovim_plugin](https://img.shields.io/badge/Plugin-darkgreen?style=for-the-badge\u0026logo=neovim\u0026logoColor=white)\n![MIT_license](https://img.shields.io/badge/License-MIT-blue?style=for-the-badge)\n![Tests](https://img.shields.io/github/actions/workflow/status/yutanagano/smark.nvim/ci.yml?style=for-the-badge)\n\nSmark is a [NeoVim][neovim] plugin that helps you write and manipulate markdown\nlists. It has an opinionated design with the following principles:\n\n1. **Correct**: only consider and always output valid Markdown lists that have\n   a sane structure (e.g. list block is a clean tree, no sudden jumps in\n   indentation level, correct numbering)\n2. **Clean**: follow [Prettier's][prettier] style convention\n3. **Smart**: Automatically infer as much as possible\n\n## 📋 Features\n\n| Feature                                                                             | Demo                                                                                                      |\n| ----------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |\n| Automatic generation of list markers with `\u003cCR\u003e` (insert mode) or `o` (normal mode) | ![autobullet](https://github.com/user-attachments/assets/56ccf9d8-42c5-4fee-a7bf-f2873f24f11e)            |\n| Supports list indentation / nested lists                                            | ![indentation](https://github.com/user-attachments/assets/96f70a39-d930-4c91-8080-9d55a656cc0a)           |\n| Indenting multiple items at once                                                    | ![multiline_indentation](https://github.com/user-attachments/assets/d424c6e8-dbc1-4621-8816-324d45a5a65d) |\n| Toggle between ordered and unordered list types                                     | ![ordered](https://github.com/user-attachments/assets/d2d91ccc-3ba0-44f7-8668-a3cab6d4c298)               |\n| Support for task list items                                                         | ![completion](https://github.com/user-attachments/assets/8811cc28-e222-4915-a6ff-1c519c7cf807)            |\n| Toggle between plain and task list items                                            | ![task](https://github.com/user-attachments/assets/f695f1dd-79a4-4f41-906b-b706cf02dd88)                  |\n| Support for multi-line list items                                                   | ![multiline](https://github.com/user-attachments/assets/e95443cd-0c83-4d0d-9a59-faa4b98927d0)             |\n| Inference of indent level list type from context                                    | ![type_inference](https://github.com/user-attachments/assets/a777aef9-9c9e-4ba4-a87b-55b949c709fa)        |\n| Automatic updates to indentation rules as necessary                                 | ![indent_spacing](https://github.com/user-attachments/assets/3a5cd857-1b4c-46e7-8fff-f7574e7ce948)        |\n| Clearnly turning list items into paragraphs                                         | ![paragraph](https://github.com/user-attachments/assets/9a626a66-a931-4ca7-b809-ac3a6f33629f)             |\n| Manual triggering of list block formatting                                          | ![format](https://github.com/user-attachments/assets/b3107378-3822-4f62-bb98-6f5655b3b307)                |\n\n## ⚙️ Installation\n\nWith [lazy.nvim][lazy]:\n\n```lua\nreturn {\n  {\n    \"yutanagano/smark.nvim\",\n    ft = { \"markdown\", \"text\" },\n    --Below are the default settings for the available options. You can omit\n    --the opts table below and simply set config = true if you are happy with\n    --the default settings.\n    opts = {\n      --Keymapping settings for list action commands.\n      --Set to false to disable.\n      mappings = {\n        --Format the current list block to be clean / correct.\n        format_list = \"\u003cleader\u003elf\",\n        --Switch between ordered / unordered list types.\n        toggle_ordered = \"\u003cleader\u003elo\",\n        --Toggle the completion status of a task list item.\n        toggle_completion = \"\u003cleader\u003elx\",\n        --Toggle between plain and task list items.\n        toggle_task = \"\u003cleader\u003elt\",\n      },\n\n      --Following the starting line of a list item, only contiguous lines that\n      --start with at least one whitespace character can be considered as part of\n      --a multi-line list item.\n      multiline_requires_whitespace = false,\n    },\n  }\n}\n```\n\n\u003e [!IMPORTANT]\n\u003e The `ft = { \"markdown\", \"text\" }` setting ensures the plugin is lazily loaded\n\u003e only after NeoVim opens a markdown or plain text buffer. However, regardless\n\u003e of lazy loading, the plugin is only active when editing markdown or plain\n\u003e text documents.\n\n## 💭 Why smark?\n\nI take a lot of Markdown notes in [NeoVim][neovim]. I'm lazy, so 1. I don't\nlike to think about formatting, and 2. I don't want to have to write out lists\nmanually. For the first problem, I use [conform.nvim][conform] and\n[prettierd][prettierd] to auto-format my Markdown documents at write-time. For\nthe second problem, I previously used the wonderful plugin\n[bullets.vim][bullets]. I love it, but one thing annoyed me - it didn't play\nwell with [Prettier's][prettier] auto-formatting of lists, specifically the\nlist indentation levels. So, I wrote my own auto-bullet plugin that\nauto-completes lists in a Prettier-compatible way, which became smark.\n\n\u003e [!NOTE]\n\u003e Prettier formats nested Markdown lists so that the child list marker aligns\n\u003e with the content of the parent list item, resulting in 2 spaces for unordered\n\u003e lists and enough spaces (usually 3 or more) for ordered lists.\n\u003e\n\u003e ```markdown\n\u003e - Foo:\n\u003e   - Bar\n\u003e\n\u003e 1. Foo\n\u003e    1. Bar\n\u003e 2. Foo\n\u003e 3. Foo\n\u003e 4. Foo\n\u003e 5. Foo\n\u003e 6. Foo\n\u003e 7. Foo\n\u003e 8. Foo\n\u003e 9. Foo\n\u003e 10. Foo:\n\u003e     1. Bar\n\u003e ```\n\n## 📢 Shout-outs\n\n- A less opinionated alternative plugin: [Bullets.vim][bullets]\n- Hyperlinking Markdown documents: [markdown-oxide][markdown-oxide], [marksman][marksman]\n- Render Markdown within NeoVim: [render-markdown.nvim][render-markdown]\n- This plugin is tested using [mini.test][mini]\n\n[bullets]: https://github.com/bullets-vim/bullets.vim\n[conform]: https://github.com/stevearc/conform.nvim\n[lazy]: https://github.com/folke/lazy.nvim\n[markdown-oxide]: https://github.com/Feel-ix-343/markdown-oxide\n[marksman]: https://github.com/artempyanykh/marksman\n[mini]: https://github.com/echasnovski/mini.nvim/blob/main/README.md\n[neovim]: https://neovim.io/\n[prettier]: https://prettier.io/\n[prettierd]: https://github.com/fsouza/prettierd\n[render-markdown]: https://github.com/MeanderingProgrammer/render-markdown.nvim\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyutanagano%2Fsmark.nvim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyutanagano%2Fsmark.nvim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyutanagano%2Fsmark.nvim/lists"}