diff --git a/Default (OSX).sublime-keymap b/Default (OSX).sublime-keymap new file mode 100644 index 0000000..8d45d55 --- /dev/null +++ b/Default (OSX).sublime-keymap @@ -0,0 +1,6 @@ +[ + { + "keys": ["super+ctrl+m"], + "command": "merlin_to_text" + } +] diff --git a/Default.sublime-commands b/Default.sublime-commands new file mode 100644 index 0000000..e04ec90 --- /dev/null +++ b/Default.sublime-commands @@ -0,0 +1,7 @@ +[ + { + "caption": "Merlin To Text", + "command": "merlin_to_text" + } +] + diff --git a/merlin-to-text.py b/merlin-to-text.py new file mode 100644 index 0000000..37c7426 --- /dev/null +++ b/merlin-to-text.py @@ -0,0 +1,37 @@ +import sublime, sublime_plugin + +class MerlinToTextCommand(sublime_plugin.TextCommand): + def is_enabled(self): + scope = self.view.scope_name(0) + lang = scope.split(' ')[0] + return lang == 'source.asm.65816.merlin' + + def run(self, edit): + view = self.view + all = sublime.Region(0, view.size()) + text = view.substr(all) + + # + # good idea but the string is treated as utf8 and this blows. + # + + # create the translation table, stripping high-bytes. + table = map(lambda x: chr(x & 0x7f), xrange(256)) + # + # high ' ' is actually a tab. + table[ord(' ') | 0x80] = '\t' + + # line conversion + table[ord('\r')] = '\n' + table[ord('\r') | 0x80] = '\n' + # + # convert to a string. + #table = ''.join(table); + # + #text = text.translate(table) + + data = map(lambda x: table[ord(text[x])], xrange(len(text))) + + text = ''.join(data) + + view.replace(edit, all, text) \ No newline at end of file