{"id":13393444,"url":"https://github.com/Fuco1/smartparens","last_synced_at":"2025-03-13T19:31:35.867Z","repository":{"id":5542431,"uuid":"6746236","full_name":"Fuco1/smartparens","owner":"Fuco1","description":"Minor mode for Emacs that deals with parens pairs and tries to be smart about it.","archived":false,"fork":false,"pushed_at":"2024-12-20T12:54:45.000Z","size":3984,"stargazers_count":1865,"open_issues_count":251,"forks_count":197,"subscribers_count":24,"default_branch":"master","last_synced_at":"2025-03-13T08:38:45.728Z","etag":null,"topics":["emacs","emacs-lisp","lisp","pairs","parentheses","smartparens"],"latest_commit_sha":null,"homepage":"","language":"Emacs Lisp","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/Fuco1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","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},"funding":{"github":["Fuco1"],"patreon":"matusgoljer","custom":"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=A5PMGVKCQBT88"}},"created_at":"2012-11-18T11:54:15.000Z","updated_at":"2025-03-09T12:08:51.000Z","dependencies_parsed_at":"2023-10-20T17:07:37.431Z","dependency_job_id":"883cd18c-bb83-43d7-8e7e-dd3135b966d1","html_url":"https://github.com/Fuco1/smartparens","commit_stats":{"total_commits":1442,"total_committers":134,"mean_commits":"10.761194029850746","dds":0.3411927877947295,"last_synced_commit":"b0d935c11813bcd40f8d35bae8800e0741334c29"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fuco1%2Fsmartparens","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fuco1%2Fsmartparens/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fuco1%2Fsmartparens/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fuco1%2Fsmartparens/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Fuco1","download_url":"https://codeload.github.com/Fuco1/smartparens/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243469166,"owners_count":20295700,"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":["emacs","emacs-lisp","lisp","pairs","parentheses","smartparens"],"created_at":"2024-07-30T17:00:52.887Z","updated_at":"2025-03-13T19:31:35.836Z","avatar_url":"https://github.com/Fuco1.png","language":"Emacs Lisp","readme":"# Smartparens\n\n[![Join the chat at https://gitter.im/smartparens/Lobby](https://badges.gitter.im/smartparens/Lobby.svg)](https://gitter.im/smartparens/Lobby?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\n[![MELPA](http://melpa.org/packages/smartparens-badge.svg)](http://melpa.org/#/smartparens)\n[![Documentation Status](https://readthedocs.org/projects/smartparens/badge/?version=latest)](http://smartparens.readthedocs.io/en/latest/?badge=latest)\n[![MELPA Stable](http://stable.melpa.org/packages/smartparens-badge.svg)](http://stable.melpa.org/#/smartparens)\n[![Documentation Status](https://readthedocs.org/projects/smartparens/badge/?version=stable)](http://smartparens.readthedocs.io/en/latest/?badge=stable)\n[![Build Status](https://github.com/Fuco1/smartparens/workflows/CI/badge.svg)](https://github.com/Fuco1/smartparens/actions?query=workflow%3ACI)\n[![Coverage Status](https://coveralls.io/repos/github/Fuco1/smartparens/badge.svg)](https://coveralls.io/github/Fuco1/smartparens)\n[![Paypal logo](https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=A5PMGVKCQBT88)\n[![Patreon](https://c5.patreon.com/external/logo/logomarkOrange.svg)](https://www.patreon.com/user?u=3282358\u0026ty=h)\n\n\u003c!-- markdown-toc start - Don't edit this section. Run M-x markdown-toc-generate-toc again --\u003e\n**Table of Contents**\n\n- [Smartparens](#smartparens)\n    - [Getting Started](#getting-started)\n    - [Usage](#usage)\n    - [Contributing](#contributing)\n        - [Language Support](#language-support)\n    - [Supporting Smartparens](#supporting-smartparens)\n    - [Related Projects](#related-projects)\n\n\u003c!-- markdown-toc end --\u003e\n\nSmartparens is a minor mode for dealing with pairs in Emacs.\n\nIt can automatically insert pairs:\n\n![smartparens insert](images/smartparens-insert.gif)\n\nwrap, unwrap and rewrap pairs:\n\n![smartparens wrapping](images/smartparens-wrap.gif)\n\nexpand and contract pairs:\n\n![smartparens slurping](images/smartparens-slurp.gif)\n\nnavigate pairs:\n\n![smartparens navigating](images/smartparens-navigate.gif)\n\nand much more!\n\n## Getting Started\n\nWe generally target GNU Emacs version 25 and newer, however,\neverything should work mostly fine on anything newer than version 24.\n\nYou can install smartparens from [MELPA](http://melpa.org/).  Once\ninstalled, enable the [default configuration](https://github.com/Fuco1/smartparens/wiki/Default-configuration):\n\n```elisp\n(require 'smartparens-config)\n```\n\nYou can now use smartparens with `M-x smartparens-mode`. To\nautomatically enable smartparens in a programming mode:\n\n```elisp\n;; Always start smartparens mode in js-mode.\n(add-hook 'js-mode-hook #'smartparens-mode)\n```\n\nYou may want to try `smartparens-strict-mode`. This enforces that\npairs are always balanced, so commands like `kill-line` keep your code\nwell-formed.\n\nYou can also use `use-package` to install and setup `smartparens`.  An example config is:\n\n``` elisp\n(use-package smartparens\n  :ensure smartparens  ;; install the package\n  :hook (prog-mode text-mode markdown-mode) ;; add `smartparens-mode` to these hooks\n  :config\n  ;; load default config\n  (require 'smartparens-config))\n```\n\n## Usage\n\nInside Emacs, `M-x sp-cheat-sheet` will show you all the commands\navailable, with examples.\n\nThere's also a\n[great article demonstrating movement and editing in smartparens](https://ebzzry.com/en/emacs-pairs/)\nand [extensive documentation in the wiki](https://github.com/Fuco1/smartparens/wiki).\n\n## Contributing\n\nWe love pull requests. Please include tests. Smartparens uses\n[ert-runner](https://github.com/rejeep/ert-runner.el) for testing. To\nrun all the tests, run:\n\n```\n$ cask exec ert-runner\n```\n\nAlternatively, you can open the individual files in Emacs, then\n`M-x eval-buffer` `M-x ert`.\n\nYou can learn more about how we test on the [testing](https://github.com/Fuco1/smartparens/wiki/Testing) wiki page.\n\n### Language Support\n\nSmartparens has a default configuration that works well for most\nlanguages. For language-specific behaviour, smartparens has a separate\n`smartparens-FOO.el` file for every language and\n`smartparens-config.el` loads these automatically.\n\n## Supporting Smartparens\n\nIf you want to support this project, you can:\n\n* Contribute code. If you have an idea that is not yet implemented and\n  will benefit this project, feel free to implement it and submit a\n  pull request. If you have any concerns whether your contribution\n  will be accepted, ask beforehand. You can email the author or\n  [start an issue](https://github.com/Fuco1/smartparens/issues/new) on\n  the tracker.\n\n* Contribute ideas. Even if you can't code Emacs Lisp, you can still\n  contribute valuable ideas for other programmers to implement. Simply\n  [start new issue](https://github.com/Fuco1/smartparens/issues/new)\n  on the tracker and submit your suggestion.\n\n* You can make a financial donation through\n  [PayPal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=A5PMGVKCQBT88)\n  or [Patreon](https://www.patreon.com/user?u=3282358\u0026ty=h).  If you\n  like smartparens and can spare a modest amount on a donation, feel\n  free to do so.  These donations are expressions of your gratitude\n  and are used for my personal \"rewards\" (books, games, music etc.).\n  You can also gift me a game on\n  [Steam](http://steamcommunity.com/profiles/76561198265034071/wishlist)\n  or buy something on\n  [Amazon](http://www.amazon.com/gp/registry/wishlist/2I8DOQH8OZEUR).\n  Regardless of the donations, smartparens will always be free both as\n  in beer and as in speech.\n\n## Related Projects\n\nOther Emacs projects that deal with pairs include:\n\n* [autopair](https://github.com/capitaomorte/autopair)\n* [wrap-region](https://github.com/rejeep/wrap-region)\n* [electric-pair-mode](http://www.emacswiki.org/emacs/ElectricPair)\n* [paredit](http://emacswiki.org/emacs/ParEdit)\n\nSmartparens aims to provide a superset of these features, in all\nprogramming languages.\n","funding_links":["https://github.com/sponsors/Fuco1","https://patreon.com/matusgoljer","https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=A5PMGVKCQBT88","https://www.patreon.com/user?u=3282358\u0026ty=h"],"categories":["Emacs Lisp","Editor Plugins"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FFuco1%2Fsmartparens","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FFuco1%2Fsmartparens","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FFuco1%2Fsmartparens/lists"}