Created
October 23, 2017 22:46
-
-
Save detunized/dec817126153970e89387add50fa9658 to your computer and use it in GitHub Desktop.
Sublime Text 3 plugin to wrap long string literals in languages that support + for strings
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Converts this | |
lorem = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum nisl sed consectetur aliquam. Aliquam sit amet magna nec sapien condimentum interdum a non ex. Nam maximus massa sapien, vitae finibus nunc rhoncus quis. Mauris ac mauris a metus tristique sagittis at a purus. Praesent ullamcorper lorem in lorem ornare pretium. Mauris eu purus in turpis luctus gravida. Fusce eget sem facilisis, vulputate odio vel, venenatis libero. Integer et neque at nibh pellentesque mattis. Duis id lacus dui. Quisque auctor pharetra sapien. Nunc porta ultrices dignissim. Etiam et nisi id mauris aliquam fringilla. Cras gravida enim vitae porta molestie. Sed porttitor velit aliquet fermentum posuere." | |
# To this | |
lorem = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellente" + | |
"sque elementum nisl sed consectetur aliquam. Aliquam sit amet mag" + | |
"na nec sapien condimentum interdum a non ex. Nam maximus massa sa" + | |
"pien, vitae finibus nunc rhoncus quis. Mauris ac mauris a metus t" + | |
"ristique sagittis at a purus. Praesent ullamcorper lorem in lorem" + | |
" ornare pretium. Mauris eu purus in turpis luctus gravida. Fusce " + | |
"eget sem facilisis, vulputate odio vel, venenatis libero. Integer" + | |
" et neque at nibh pellentesque mattis. Duis id lacus dui. Quisque" + | |
" auctor pharetra sapien. Nunc porta ultrices dignissim. Etiam et " + | |
"nisi id mauris aliquam fringilla. Cras gravida enim vitae porta m" + | |
"olestie. Sed porttitor velit aliquet fermentum posuere" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import sublime | |
import sublime_plugin | |
# TODO: Rename this | |
# TODO: Configure the wrap column | |
# TODO: Add join and reformat | |
class ExampleCommand(sublime_plugin.TextCommand): | |
WRAP_COLUMN = 75 | |
def run(self, edit): | |
view = self.view | |
sel = view.sel() | |
literal_region = view.extract_scope(sel[0].begin()) | |
literal = view.substr(literal_region) | |
quote = literal[0] | |
if quote != literal[-1]: | |
sublime.error_message("Non symmetrical quotes are not supported") | |
return | |
indent = view.rowcol(literal_region.begin())[1] | |
wrap_width = self.WRAP_COLUMN - indent - 2 | |
if wrap_width < 1: | |
sublime.error_message("The literal is too far to the right") | |
return | |
content = literal[1:-2] | |
lines = [content[0 + i:wrap_width + i] for i in range(0, len(content), wrap_width)] | |
quoted_lines = ["{0}{1}{0}".format(quote, i) for i in lines] | |
replacement = " +\n{0}".format(" " * indent).join(quoted_lines) | |
view.replace(edit, literal_region, replacement) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment