2016-05-29 55 views
1

與大多數其他軟件包不同,PHP禁止完成/摘要 - 彈出窗口,迫使您在打印選項卡之前鍵入整個觸發器,並且無法在具有相同觸發器的不同片段之間進行選擇。啓用完成 - 在Sublime Text中彈出3

我正在尋找一種方法來啓用PHP中的completions-popup(或所有語言,覆蓋它們的默認值)。

我已經試過什麼:

php軟件包包括文件 「完成Rules.tmPreferences」 與

<key>cancelCompletion</key> 
<string>^\s*(\}?\s*(else|do|try)|(class|function)\s*[a-zA-Z_0-9]+)$</string> 

據我所知,這是抑制彈出。我改變了正則表達式無可比擬的選擇

<key>cancelCompletion</key> 
<string>/(?!)/</string> 

與PackageResourceViewer保存它,這樣它應該覆蓋默認設置文件,但是,即使重新啓動的情況下,該文件只加載一次後,彈出仍然不出現。

編輯:

由於Enteleform指出,在彈出的作品裏面<?php ?>,在PHP文件時出現問題,但PHP之外。範圍是(embedding.php,text.html.basic)。

+0

我無法重現您的問題,並且對於'cancelCompletion'鍵具有相同的值。步驟:[1]打開新文件並設置'PHP'語法[2]插入基本PHP模板:'<!DOCTYPEhtml><?php __PHP_CONTENT__?>'[3]'__PHP_CONTENT__'地區。自動完成按預期工作。 – Enteleform

+0

我現在正在laravel中間,所以我甚至沒有想過用進行測試。它適用於那些,所以感謝您的意見。但是,我仍然試圖讓它在這些以外的地方工作,尤其是。葉片模板;範圍(embedding.php,text.html.basic)。 如果輸入正確,PHP和Laravel代碼片段都可以工作,因此適用範圍和Laravel代碼片段包甚至沒有.tmPreferences來覆蓋PHP。有任何想法嗎? – Tobl

+0

我試着改變範圍@' Completion Rules.tmPreferences'&'PHP.sublime-completions',但沒有多少運氣。這很奇怪 - 如果我將其更改爲'source.python',它將停止運行@ PHP文件並且將正常運行@ Python文件。然而,我嘗試了一堆'source.php','embedding.php',&'text.html.basic';並且它們中沒有一個似乎適用於您的預期使用情況。 @凱斯哈爾可能知道一個解決方案,他在範圍相關問題上更好。 – Enteleform

回答

2

默認情況下,當您鍵入HTML時,自動完成不會自動顯示,正如您所經歷的。這受到auto_complete_selector首選項的控制,該首選項默認爲以下選擇器:"meta.tag - punctuation.definition.tag.begin, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc"。正如你所看到的,它被啓用了source作用域(註釋和字符串內部除外),這就是爲什麼它在PHP中工作的原因以及meta.tag作用域。

現在,只有在<之後至少有一個字符時,HTML語法定義纔會分配meta.tag範圍。即打字<d將自動顯示自動完成列表。

要改變它始終顯示HTML的完成,您可以將您的喜好改變到"text.html, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc" - 即改變meta.tag - punctuation.definition.tag.begintext.html

或者,要隨時爲任何語言輸入時顯示完成,可以將您的首選項更改爲空字符串""。但是,我建議保持不顯示字符串和註釋中的自動完成功能,並使用"- comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc"代替。還值得注意的是,鍵入分隔符字符不會自動觸發自動填充 - 您必須鍵入可以自動完成的東西的第一個字母。

此首選項應添加到您的Preferences - >Settings - User文件中。

注意:由於您正在重寫默認首選項,所以在將來的ST3版本中可能會更改默認值。因此,有時可能需要檢查默認值(從Preferences - >Settings - Default),以防有不同的值會對您的體驗產生負面影響。

+0

非常感謝。我去了''meta.tag - punctuation.definition.tag.begin,source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc,embedding.php - comment - string .quoted.double.block - string.quoted.single.block - string.unquoted.heredoc「'模仿舊的異常,並且看起來足夠特殊,不會與未來的更新衝突。 – Tobl