【问题标题】:sublime text 3 plugin for removing quotes用于删除引号的 sublime text 3 插件
【发布时间】:2014-04-29 04:32:53
【问题描述】:

我正在尝试将 this plugin 从 Sublime Text 2 转换为 Sublime Text 3,但我一直遇到此错误

  File "/Users/macintoshhd/Library/Application Support/Sublime Text 3/Packages/magiclessquotesjon.py", line 17, in on_pre_save
    edit = view.begin_edit()
TypeError: begin_edit() missing 2 required positional arguments: 'edit_token' and 'cmd'

我知道 API 在版本之间发生了变化,并且有一个 porting guide,但我仍然不确定如何获得正确的 TextCommand 或如何使用它。

插件代码在这里:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

__author__ = "Daryl Tucker"

import sublime, sublime_plugin

class RemoveMagicFromMagic(sublime_plugin.EventListener):
    def on_pre_save(self, view):
        replacements = [
            [u'[’‘`]{1}',u'\''],
            [u'[“”]{1}',u'"'],
            [u'[…]{1}',u'...'],
            [u'[—]{1}',u'---'],
            [u'[–]{1}',u'--'],
            [u'[•]{1}',u'*'],
            [u' & ',u' & '],
        ]
        edit = view.begin_edit()
        for replacement in replacements:
            x = view.find_all(replacement[0])
            for position in x:
                view.replace(edit, position, replacement[1])
        view.end_edit(edit)

【问题讨论】:

    标签: python sublimetext sublimetext3


    【解决方案1】:

    能够通过额外的回调使其工作..

    class RemoveSmartQuotesCommand(sublime_plugin.TextCommand):
        def run(self, edit, user_input=None):
            self.edit = edit
            replacements = [
                [u'[’‘`]{1}',u'\''],
                [u'[“”]{1}',u'"'],
                [u'[…]{1}',u'...'],
                [u'[—]{1}',u'---'],
                [u'[–]{1}',u'--'],
                [u'[•]{1}',u'*'],
                [u' & ',u' & '],
            ]
            for replacement in replacements:
                x = self.view.find_all(replacement[0])
                for position in x:
                    self.view.replace(edit, position, replacement[1])
    
    class RemoveSmartQuotesWhenSaving(sublime_plugin.EventListener):
        def on_pre_save(self, view):
            view.run_command('remove_smart_quotes')
    

    【讨论】:

    • 供您参考:我在 Sublime Text 论坛上遇到了类似的问题并收到了出色的 solution,我现在非常喜欢使用标准方法edit 对象。这是线程中提到的解决方案的working version。实现如下:edit = Edit( view ) & edit.replace( region, text )
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-01
    • 1970-01-01
    • 2014-02-13
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    • 2015-02-04
    相关资源
    最近更新 更多