def wrap(self, context, abbr): # Set up the config variables if abbr: editor = ZenEditor(context) return zencoding.run_action('wrap_with_abbreviation', editor, abbr) else: return False
def __init_attributes(self, editor): self.__editor = editor from zen_editor import ZenEditor self.__zeditor = ZenEditor(self, editor) from os.path import join self.__gui = editor.get_gui_object(globals(), join("GUI", "GUI.glade")) return
def activate(self, window): actions = [ ('ZenCodingMenuAction', None, '_Zen Coding', None, "Zen Coding tools", None), ('ZenCodingExpandAction', None, '_Expand abbreviation', '<Shift><Alt>E', "Expand abbreviation to raw HTML/CSS", self.expand_abbreviation), ('ZenCodingExpandWAction', None, 'E_xpand dynamic abbreviation...', '<Ctrl><Alt>E', "Dynamically expand abbreviation as you type", self.expand_with_abbreviation), ('ZenCodingWrapAction', None, '_Wrap with abbreviation...', '<Shift><Alt>W', "Wrap with code expanded from abbreviation", self.wrap_with_abbreviation), ('ZenCodingInwardAction', None, 'Balance tag _inward', '<Ctrl><Alt>I', "Select inner tag's content", self.match_pair_inward), ('ZenCodingOutwardAction', None, 'Balance tag _outward', '<Ctrl><Alt>O', "Select outer tag's content", self.match_pair_outward), ('ZenCodingMergeAction', None, '_Merge lines', '<Ctrl><Alt>M', "Merge all lines of the current selection", self.merge_lines), ('ZenCodingPrevAction', None, '_Previous edit point', '<Alt>Left', "Place the cursor at the previous edit point", self.prev_edit_point), ('ZenCodingNextAction', None, '_Next edit point', '<Alt>Right', "Place the cursor at the next edit point", self.next_edit_point), ('ZenCodingRemoveAction', None, '_Remove tag', '<Ctrl><Alt>R', "Remove a tag", self.remove_tag), ('ZenCodingSplitAction', None, 'Split or _join tag', '<Ctrl><Alt>J', "Toggle between single and double tag", self.split_join_tag), ('ZenCodingCommentAction', None, 'Toggle _comment', '<Ctrl><Alt>C', "Toggle an XML or HTML comment", self.toggle_comment) ] windowdata = dict() window.set_data("ZenCodingPluginDataKey", windowdata) windowdata["action_group"] = gtk.ActionGroup("GeditZenCodingPluginActions") windowdata["action_group"].add_actions(actions, window) manager = window.get_ui_manager() manager.insert_action_group(windowdata["action_group"], -1) windowdata["ui_id"] = manager.add_ui_from_string(zencoding_ui_str) window.set_data("ZenCodingPluginInfo", windowdata) self.editor = ZenEditor() error = self.editor.get_user_settings_error() if error: md = gtk.MessageDialog(window, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_CLOSE, "There is an error in user settings:") message = "{0} on line {1} at character {2}\n\nUser settings will not be available." md.set_title("Zen Coding error") md.format_secondary_text(message.format(error['msg'], error['lineno'], error['offset'])) md.run() md.destroy()
def act(controller, bundle, options): context = tea.get_context(controller) action_name = tea.get_option(options, 'action', '') editor = ZenEditor(context, bundle) try: return zencoding.run_action(action_name, editor) except zencoding.utils.ZenError: tea.say(context, 'Error while performing Zen Coding action', sys.exc_info()[1].value) except: msg_writer = SimpleWriter() msg = traceback.print_exc(file=msg_writer) tea.say(context, 'Runtime error', msg_writer.get())
def act(context, actionObject, action_name, undo_name=None): zen_editor = ZenEditor(context, actionObject) try: if action_name == 'wrap_with_abbreviation': abbr = actionObject.userInput().stringValue() if abbr: return zencoding.run_action(action_name, zen_editor, abbr) else: return zencoding.run_action(action_name, zen_editor) except zencoding.utils.ZenError: tea.say(context, 'Error while performing Zen Coding action', sys.exc_info()[1].value) except: msg_writer = SimpleWriter() msg = traceback.print_exc(file=msg_writer, limit=5) tea.say(context, 'Runtime error', msg_writer.get()) return False
#!/usr/bin/env python # -*- coding: utf-8 -*- import os import sys import re import zencoding import zencoding.utils from zen_editor import ZenEditor editor = ZenEditor() """ In order to make "Expand Abbreviation" more natural to TextMate's bundle system we have to forget about predefined Zen Coding actions and write our own """ cur_line = os.getenv('TM_CURRENT_LINE', '') cur_index = int(os.getenv('TM_LINE_INDEX', 0)) line = cur_line[0:cur_index] abbr = os.getenv('TM_SELECTED_TEXT', '') if not abbr: abbr = zencoding.utils.extract_abbreviation(line) output = zencoding.utils.escape_text( line) + '$0' + zencoding.utils.escape_text(cur_line[cur_index:]) if abbr: try: result = line[0:-len(abbr)] + zencoding.expand_abbreviation(
def __init__(self, window): # window self.window = window # menu items actions = [ ('ZenCodingMenuAction', None, '_Zen Coding', None, "Zen Coding tools", None), ('ZenCodingExpandAction', None, '_Expand abbreviation', '<Ctrl>E', "Expand abbreviation to raw HTML/CSS", self.expand_abbreviation), ('ZenCodingExpandWAction', None, 'E_xpand with abbreviation...', '<Ctrl><Alt>E', "Type in an abbreviation to expand", self.expand_with_abbreviation), ('ZenCodingWrapAction', None, '_Wrap with abbreviation...', '<Ctrl><Shift>E', "Wrap with code expanded from abbreviation", self.wrap_with_abbreviation), ('ZenCodingZenifyAction', None, '_Zenify', None, "Reduce to abbreviation", None), ('ZenCodingZenify0Action', None, '_Tag names', '<Ctrl><Alt>Z', "Reduce to tag names only", self.zenify0), ('ZenCodingZenify1Action', None, ' + _Ids and classes', None, "Reduce with ids and classes", self.zenify1), ('ZenCodingZenify2Action', None, ' + All other _attributes', None, "Reduce with all attributes", self.zenify2), ('ZenCodingZenify3Action', None, ' + _Values', None, "Reduce with all attributes and values", self.zenify3), ('LoremIpsumAction', None, '_Lorem ipsum...', '<Ctrl><Alt>X', "Insert a lorem ipsum string", self.lorem_ipsum), ('ZenCodingInwardAction', None, 'Select _inward', '<Ctrl><Alt>I', "Select inner tag's content", self.match_pair_inward), ('ZenCodingOutwardAction', None, 'Select _outward', '<Ctrl><Alt>O', "Select outer tag's content", self.match_pair_outward), ('ZenCodingPTagAction', None, 'Previous tag', '<Ctrl><Alt>Up', "Select the previous tag in HTML code", self.prev_tag), ('ZenCodingNTagAction', None, 'Next tag', '<Ctrl><Alt>Down', "Select the next tag in HTML code", self.next_tag), ('ZenCodingPNodeAction', None, 'Previous node', '<Ctrl><Alt>Left', "Select the previous HTML node", self.prev_node), ('ZenCodingNNodeAction', None, 'Next node', '<Ctrl><Alt>Right', "Select the next HTML node", self.next_node), ('ZenCodingPrevAction', None, '_Previous edit point', '<Alt>Left', "Place the cursor at the previous edit point", self.prev_edit_point), ('ZenCodingNextAction', None, '_Next edit point', '<Alt>Right', "Place the cursor at the next edit point", self.next_edit_point), ('ZenCodingSizeAction', None, 'Update image _size', '<Ctrl><Alt>S', "Update image size tag from file", self.update_image_size), ('ZenCodingDataAction', None, 'Toggle image url/da_ta', '<Ctrl><Alt>A', "Toggle between image url and data", self.encode_decode_base64), ('ZenCodingMergeAction', None, '_Merge lines', '<Ctrl><Alt>M', "Merge all lines of the current selection", self.merge_lines), ('ZenCodingRemoveAction', None, '_Remove tag', '<Ctrl><Alt>R', "Remove a tag", self.remove_tag), ('ZenCodingSplitAction', None, 'Split or _join tag', '<Ctrl><Alt>J', "Toggle between single and double tag", self.split_join_tag), ('ZenCodingCommentAction', None, 'Toggle _comment', '<Ctrl><Alt>C', "Toggle an XML or HTML comment", self.toggle_comment), ('ZenCodingSettingsAction', None, 'E_dit settings...', None, "Customize snippets and abbreviations", self.edit_settings) ] windowdata = dict() self.window.set_data("ZenCodingPluginDataKey", windowdata) windowdata["action_group"] = gtk.ActionGroup( "GeditZenCodingPluginActions") windowdata["action_group"].add_actions(actions) manager = self.window.get_ui_manager() manager.insert_action_group(windowdata["action_group"], -1) windowdata["ui_id"] = manager.add_ui_from_string(zencoding_ui_str) self.window.set_data("ZenCodingPluginInfo", windowdata) # zen coding self.modified = None self.editor = ZenEditor(self.window)