2016-04-22 79 views
1

根據this previous SO post,Emacs對於相同的代碼函數(重新搜索前向)有兩個名稱(重新搜索前進,搜索前向regexp)。Emacs建議使用search-forward-regexp和re-search-forward?

據我所知,Emacs文檔只提到了重新搜索前進。

是否有我應該使用的首選/推薦形式? (其中一個名稱是否被棄用?)我個人認爲search-forward-regexp更具信息性,因爲它在名稱中顯式清晰地顯示了正則表達式(vs較短和不透明的「重新」)。但是,如果可能的話,我想保持在推薦的練習方面。

另一種問這個問題的方法是「爲什麼emacs開發人員會在代碼中放置別名search-forward-regexp,但不在文檔中?(也許別名表示」更好「的名稱,因爲別名是在重新搜索轉發原?)

+0

FWIW,我在Emacs的源代碼中使用了'search-forward-regexp'和3685使用're-search-forward'。所以我傾向於將're-search-forward'聲明爲在源代碼中使用的推薦函數。 – Stefan

回答

0

這一切都取決於你想要什麼樣的行爲,如將q &答:您指出瞭解釋。

通過混淆search-forward-regexp當時的Emacs的的re-search-forward定義建,如果稍後用戶或庫會更改re-search-forward的定義,那麼search-forward-regexp將不會被該更改自動影響。這可以讓用戶修改其中一個,而不必修改其他。 IOW,它給用戶更多的靈活性。 (沒有什麼能夠防止某人以同樣的方式修改,或者甚至將search-forward-regexp重新別名爲re-search-forward或其後的定義。

這兩者之間沒有首選形式。別名告訴你,無論是已被棄用。

;; Alternate names for functions - these are not being phased out. 
(defalias 'search-forward-regexp (symbol-function 're-search-forward)) 

您對名字的觀察可能是走樣的背後都已經存在了很長一段時間 - 至少可以追溯到20的Emacs

0

我印象是search-forward-regexp被打算作爲名字t o用於交互式使用,而re-search-forward通常使用Elisp代碼。

我很樂意宣佈search-forward-regexp過時,但它是其中一個並不值得的戰鬥。

+0

我同意,(互動)差異是我所能看到的。當然,Search-forward-regexp可以同時使用。但是因爲我在一些地方閱讀了手冊,以避免在代碼中使用交互式樂趣(例如行首)vs(goto-char(point-min)),我認爲這是「重要」(或至少在某些方面有用)爲我的代碼選擇正確的搜索表達式。 – Kevin

0

對於大多數Emacs用戶來說,使用「重新」含義的正則表達式是很常見的,但對於初學者來說,非程序員。別名更詳細,這可能會有所幫助。