2014-03-12 18 views
1

在崇高文本3中,我想要创建一个宏来粘贴当前文件的“相对路径从项目,编码”,这是由出色的Sidebar Enhancements提供的命令。ST3:如何在宏中使用插件的命令?

我已激活控制台日志按照我的实验:

  • 打开控制台(Ctrl-`
  • sublime.log_commands(True)

当我执行我想捕捉的动作,我在控制台中看到:

command: side_bar_copy_path_absolute_from_project_encoded 
command: paste 

但是当我记录的操作,在节省所产生的JSON是:

[ 
    { 
     "args": null, 
     "command": "paste" 
    } 
] 

如果我手动破解宏(从Unofficial Sublime DocsSideBarEnhancements/Side Bar.sublime-menu获取参数):

[ 
    { "command": "side_bar_copy_path_relative_from_project_encoded", "args": {"paths": []} }, 
    { "command": "paste", "args": null } 
] 

...然后播放宏,我在控制台看到以下内容:

​​

(我也试过null作为ARG为side_bar_copy_path_relative_from_project_encoded)。

我是否需要在宏命令中引用包或类名?有什么建议么?

回答

0

Yeeha!想通了 - 我相信宏可能不支持所有的命令,所以我尝试了插件:

import sublime, sublime_plugin 

''' 
    Paste the current file's Relative Path From Project (Encoded). 
    Requires https://github.com/titoBouzout/SideBarEnhancements to be installed 

    First save this file as: 
    ~/Library/Application Support/Sublime Text 3/Packages/User/paste-path.py 

    More details about writing plugins: 
    http://docs.sublimetext.info/en/latest/reference/plugins.html 

    To trigger the command with 'Command Option Shift p', 
    add the following to your Sublime Text > Preferences > Keybindings - User 

    [ 
     { "keys": ["super+option+shift+p"], "command": "paste_path"} 
    ] 
''' 

class PastePathCommand(sublime_plugin.WindowCommand): 
    def run(self): 
     self.window.run_command("side_bar_copy_path_relative_from_project_encoded", {"paths": []}) 
     self.window.run_command("paste") 

这是作为一个要点:https://gist.github.com/9505770


编辑:对不起,不完整的信息!您需要将此文件保存为这样的:

~/Library/Application Support/Sublime Text 3/Packages/User/paste-path.py

的更多信息:http://docs.sublimetext.info/en/latest/reference/plugins.html

+1

ST宏只支持文本命令。我对一个在ST论坛上发布的插件进行了一些修复,以运行任何类型的命令。有关详细信息,请参阅https://github.com/skuroda/ImprovedMacros/blob/master/improved_macros/run_multiple_commands.py。我最初的目的是建立一些东西来取代默认的宏功能,但还没有找到一个很好的方法来捕获所有的键,命令等。 – skuroda

+0

我真的很想这样做,但是当我将你提供的命令复制到我的Keybindings - 用户文件,它不起作用。在之前的代码中,“import sublime,sublime plugin”和“class”在最后被调用了什么? –

+0

对不起,我遗漏了一些显着的细节!这是编辑我的答案... – ptim

相关问题