崇高的文本2完成

时间:2016-09-15 13:15:53

标签: sublimetext2

制作* .sublime-completions文件,我找到了" bug"键入长函数时会发生这种情况,如:

one.two.one.two.three.four.five(One := One_var, Two := Two_Var);

所以如果你输入整个函数:

" one.two.three.four.five"然后按Tab键 - 它会粘贴另一部分功能而没有问题。

但是,如果你键入" one.two.thr" - 然后在弹出提示中看到该功能并点击" Enter"它将取代如下:

http://gestor.samfbas.com.br/index.php?p=something

        { "trigger": "one.two.three.four.five", "contents": "${TM_CURRENT_LINE/(.*)/(one.two.three.four.five)/}(One := One_var, Two := Two_Var);" },

如何配置触发器以替换" one.two.thr"纠正功能格式?

http://gestor.samfbas.com.br/something

这是我的触发器。

jQuery(function($) {

  var calculate = function(n) {
    var expr = n.attr('data-equation')
      , ret  = expr;
    
    if (expr) {
      try {
        ret = math.eval(expr);
      } catch(e) {
        ret = 'Syntax error in equation!';  
      }
    }

    var obj = {};
    obj[n.attr('id')] = ret;
    math.import(obj, { override: true });

    return ret;
  };

  $.fn.equations = function() {

    $(this).each(function() {
      var n = $(this);

      n.focus(function() {
        n.val(n.attr('data-equation'));
      });

      n.blur(function() {
        n.attr('data-equation', n.val());
        n.attr('title', n.val());
        n.val(calculate(n));
      });

      if (!n.attr('data-equation')) {
        n.blur();
      }

      n.val(calculate(n));
    });

  };

  $('input').equations();

});

1 个答案:

答案 0 :(得分:1)

这不是错误,而是Sublime Text的默认设置。默认情况下,点被视为word_separators。因此,每次键入.时,都将重置完成触发器。

示例:

我们假设我们只有以下完成项:

{
  "trigger": "one.two.three",
  "contents": "one.two.three.four.five"
},
{
  "trigger": "two",
  "contents": "it_takes_two"
}

现在,让我们在Sublime Text中键入它们(|标记光标位置!)

one|     -> will trigger "one.two.three.four.five"
one.|    -> new word, forgot about "one.two.three.four.five"
one.two| -> will trigger "it_takes_two"

在最后一种情况下,两个完成将在完成弹出窗口中列出为“两个”的模糊匹配。但是,越接近匹配“两个”将具有更高的优先级。

要解决此问题,您可以在程序包设置或全局用户设置中编辑word_separators设置。默认情况下,该设置将以下字符视为单词分隔符:

 ./\\()\"'-:,.;<>~!@#$%^&*|+=[]{}`~?

或者,您可以省略完成触发器中的点,例如使用one-two-three代替one.two.three