Home

Awesome

Semantic Word Wrap for Sublime Text

This Sublime Text plugin inserts new line characters between words while typing obtaining an hard-wrapped file. The difference with normal hard-wrapping is that the new lines are inserted in more natural places than what happens in a hard-wrap at a certain width: newlines are inserted preferably near punctuation giving to the text a natural rhythm.

Settings

semantic_wrap

Enables or disables semantic hard-wrapping. Can be toggled with the Edit > Semantic Wrap menu.

semantic_wrap_min_words

The minimum number of words on the current line to justify a break.

semantic_wrap_max_words

The maximum number of words tolerated on the current line. Some presets can be selected from the Edit > Semantic Wrap menu.

Customisation

The keymap installed by the plugin is pretty self explanatory:

[
    {
        "keys": [" "],
        "args": {"characters": "\n"},
        "command": "insert",
        "context": [
            {"key": "setting.semantic_wrap"},
            {"key": "semantic_wrap"},
            {
                "key": "preceding_text",
                "operand": "[.,;!?:]$",
                "operator": "regex_contains"
            }
        ]
    },
    {
        "keys": [" "],
        "args": {"characters": "\n"},
        "command": "insert",
        "context": [{"key": "semantic_wrap_words"}]
    }
]

You can customise it in your user keymap in various ways: you can change which punctuation is considered suitable for a break, or which character has to be inserted to end a line; if you wish to enable the binding only for certain syntaxes you can replace {"key": "setting.semantic_wrap"} with {"key": "selector", "operator": "equal", "operand": "YOUR.SCOPE"}.