2017-07-15 101 views
0

我想讓ACE編輯器自動完成一系列顏色。王牌編輯器autocomplete color.red

理想情況下,我希望它的顏色不會出現在自動完成中,除非用戶只有類型colors.

如何在返回顏色列表之前檢查用戶是否剛輸入colors.

回答

1

您可以使用拼接獲得最後輸入的關鍵字,並檢查天氣用戶已經輸入的顏色或顏色:

var pos = editor.selection.getCursor(); 
var session = editor.session; 
var curLine = session.getDocument().getLine(pos.row); 
var curTokens = curLine.slice(0, pos.column).split(/\s+/); 
var curCmd = curTokens[0]; 
if (!curCmd) return; 
var lastToken = curTokens[curTokens.length - 1]; 

if (lastToken === "colors" || (lastToken.indexOf("colors") > -1) || lastToken === "Colors" || (lastToken.indexOf("Colors") > -1)) { 
    console.log("Colors found"); 
} else { 
    console.log("Colors not found"); 
} 
+0

很酷的這個作品非常棒。我設法讓顏色只在最後一個標記是顏色時纔會出現。 有沒有什麼辦法可以在你輸入時顯示出來。而不是當你鍵入.r例如? – rabbitt

+0

你能檢查我發佈的其他答案嗎?它應該在這種情況下幫助你 –

0

有關自動完成「」你可以綁定'。'並基於它自動完成。然後我們可以看到用戶是否輸入了「顏色」。

  editor.commands.addCommand({ 
       name: "binddot", 
       bindKey: { win: ".", mac: "." }, 
       exec: function() { 

        var pos = editor.selection.getCursor(); 
        var session = editor.session; 

        var curLine = session.getDocument().getLine(pos.row); 
        var curTokens = curLine.slice(0, pos.column).split(/\s+/); 
        var curCmd = curTokens[0]; 
        if (!curCmd) return; 
        var lastToken = curTokens[curTokens.length - 1]; 

        var filterValue = editor.session.getValue(); 
        if (filterValue === "") { 
         editor.insert("."); 
        } 

        if (lastToken === "colors" || (lastToken.indexOf("colors") > -1) || lastToken === "Colors" || (lastToken.indexOf("Colors") > -1)) { 
         console.log("colors. triggered") 
        } 
       } 
      });