Skip to main content

A convenient DSL for generating SublimeText configs.

Project description

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!



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

        .to('run_macro_file', file='res://Packages/Default/Delete Left Right.sublime-macro')

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



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.



Install from PyPI system-wide:

sudo pip install sublimedsl

…or manually:

git clone
cd sublimedsl
sudo ./ install


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 to install it into your home directory (namely ~/.local):

pip install --user sublimedsl

…or manually:

git clone
cd sublimedsl
./ --user install


This project is licensed under MIT license.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for sublimedsl, version 0.3.2
Filename, size File type Python version Upload date Hashes
Filename, size sublimedsl-0.3.2.tar.gz (6.6 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page