Skip to main content

SublimeDSL

Build Status Coverage Status Code Climate version downloads documentation

The configuration of Sublime Text uses verbose JSON files, XML files, and also horrible PList/XML files (TextMate legacy). When used in plugins, some of them (e.g. keymaps) may contain even hundreds of lines with huge ratio of duplications. Sooner or later, it’ll become quite hard to maintain such a mess.

The aim of this module is to provide simple pythonic DSL for generating particular configuration files. Currently only Key Bindings are supported, but other configs may come later.

You’re more than welcome to add DSL for other Sublime Text’s configs!

Usage

Examples

#!/usr/bin/env python3
from sublimedsl.keymap import *

Keymap(
    bind('backspace')
        .to('run_macro_file', file='res://Packages/Default/Delete Left Right.sublime-macro')
        .when('setting.auto_match_enabled').any().true()
        .also('preceding_text').regex_contains(r'_$')
        .also('following_text').regex_contains(r'^_'),

    bind('super+k', 'super+shift+up')
        .to('new_pane', move=False),

    common_context=[
        context('selector').equal('text.asciidoc')
    ],
    default_match_all=True

).dump()

The above code generates:

[
  {
    "keys": [ "backspace" ],
    "command": "run_macro_file",
    "args": { "file": "res://Packages/Default/Delete Left Right.sublime-macro" },
    "context": [
      { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true, "match_all": false },
      { "key": "preceding_text", "operator": "regex_contains", "operand": "_$", "match_all": true },
      { "key": "following_text", "operator": "regex_contains", "operand": "^_", "match_all": true },
      { "key": "selector", "operator": "equal", "operand": "text.asciidoc", "match_all": true }
    ]
  },
  {
    "keys": [ "super+k", "super+shift+up" ],
    "command": "new_pane",
    "args": { "move": false },
    "context": [
      { "key": "selector", "operator": "equal", "operand": "text.asciidoc", "match_all": true }
    ]
  }
]

You can also look at real-world example in the Asciidoctor plugin: Keymap DSL and generated JSON.

Installation

System-wide

Install from PyPI system-wide:

sudo pip install sublimedsl

…or manually:

git clone git@github.com:jirutka/sublimedsl.git
cd sublimedsl
sudo ./setup.py install

Locally

If you don’t have a root access to the system, or just don’t want to install sublimedsl system-wide, then you can tell pip or setup.py to install it into your home directory (namely ~/.local):

pip install --user sublimedsl

…or manually:

git clone git@github.com:jirutka/sublimedsl.git
cd sublimedsl
./setup.py --user install

License

This project is licensed under MIT license.

Metadata

Release files for sublimedsl 0.3.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sublimedsl 0.3.2
File Size Uploaded Provenance Actions
sublimedsl-0.3.2.tar.gz 6.6 kB Without provenance Details for sublimedsl-0.3.2.tar.gz

Release files / sublimedsl-0.3.2.tar.gz

Download URL sublimedsl-0.3.2.tar.gz
Size 6.6 kB
Tags Source
SHA-256 checksum
How to use checksums
672f97ffaf4f93de73efc935459f15fd926ec65c44b020c39ce28669452d62bf
BLAKE2b-256 checksum
How to use checksums
8a1b1a70a36634988d61eaeb0544a1f869f780076f30d4ec402d1b496f77d4f5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Security for sublimedsl 0.3.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page