2017-02-14 64 views
1

我正在使用最新的vscode,使用fira代碼ttf字體,並使用ionide插件來處理F#工作。我只注意到一個我認爲是最新vscode的新問題,我認爲它是VSCode的一個基礎問題,但我不確定 - 它可能與ionide項目或字體有關。或者,電子或鉻在這裏是錯誤的?VSCode字體連字問題 - 是誰的問題?

簡而言之,用於lambda函數聲明的F#中的 - >符號並不總能被識別。

Various failures of the arrow symbol

正如你可以在圖像中看到上面的樂趣_ - 用於聲明匿名函數>語法不渲染 - >在所有情況下,一個箭頭。在參數周圍添加單個括號會使其正常工作,同樣用參數替換參數(但不是字母)也是如此。在大型比賽聲明中,箭頭連字符的效果很好,但在這個特定的地方失敗了。

我不認爲它的字體,因爲字體包含正確的連字,並在大多數其他地方工作。我認爲它與vscode決定它應該如何取代連字符有關。關於x - >使它認爲它不應該做任何事情,但(_) - >是可以的。我認爲它有可能以某種方式影響結紮檢測,但我沒有看到它的證據。

因此,在我將此報告給vscode作爲問題之前,是否有人確切知道發生了什麼以及問題出在哪裏?

編輯:它在另一個上下文中失敗的另一張圖片。多參數函數呈現正確,單參數函數不會。

enter image description here

回答

1

對我來說,這看起來像與tmLanguage文件F#的問題。

你可以使用Developer: Inpsect TM scopes命令時看到,->是在連字不工作的情況下單獨標記(12),而在工作情況下,它只是一個單一的令牌(->):

我居然報出非常相似的結紮相關問題#19183(對於HAXE),但在這種情況下,它似乎與語法的問題。

VSCode似乎使用ionide-fsgrammar作爲其F#語法,因此您可以在那裏報告問題。

+0

我相信你是對的。當我仔細查看語言範圍時,'fun'啓動匿名函數範圍。當它起作用時,這是因爲樂趣之後的東西已經將它踢出了這個範圍。當它失敗時,它會因爲它不會從匿名函數範圍中被踢出,直到它看到 - 在 - >中。 Parens,數字等,根據語法在函數聲明中不需要的所有東西,因此它們的存在會在它將它從非捕獲範圍中踢出時進行修復。 – Guy

+1

如果有人有興趣,似乎已經[固定](https://github.com/ionide/ionide-fsgrammar/commit/4f7e4e4568d6710b0250c4d9bde26915875aee90)已經。不知道什麼時候才能發佈,但Cieślak先生經常發佈。 – Guy