2011-07-03 58 views
10

我強調當前行通過評估:的Emacs:使用高亮短語HL-行模式衝突

(hl-line-mode) 

它也可以全局設置:

(global-hl-line-mode nil) 

的問題是,這樣線突出重寫highlight-phrase。所以我的問題是:「如何突出當前行和這一行中的給定短語?」

回答

6

highlight-phrasehl-line都應用具有背景顏色設置的面。 hl-line因爲它使用覆蓋而獲勝,而overlays always override text properties, which highlight-phrase uses。我建議你通過自定義hi-yellow臉部來解決這個問題,以使用明亮的前景色而不是背景色,甚至是一個盒子。

+0

恐怕我不理解可以做些什麼來解決這個問題,但至少我已經獲得了hl線獲勝,因爲它使用了疊加。也許以後我會管理這些。感謝你的回答。 – Adobe

+0

我描述的解決方法是修改'hi-yellow'面部(可能使用'Mx自定義面部')以賦予它不同的面部屬性,即使在'hl-line'覆蓋時也可以很容易地看到它'前景'。 (當然,這不是一個完美的解決方案!) – sanityinc

+0

非常感謝 - 我終於做到了!雖然單獨定製「前景」並不奏效。一個關閉了「繼承」標誌。我想我會發布整個答案 - 因爲這對其他人更方便。再次感謝你的幫助。 – Adobe

2

因此,這裏有一些定義上並不理想的解決方案。這樣做:

M-x customize-face 

emacs的,然後問你哪一個,我也

hl-line 

然後我關掉「繼承」標誌(最後一個),並打開「前景」的旗幟, - 它是在說「黑色」 - 我把它變成了紅色。之後,您應該將其全部保存在頁面的頂部 - 無論是 - 僅適用於此部分,還是針對未來的會話。

就是這樣!這種方式當前行文字拖欠紅色字體,而highlight-phrase突出顯示黃色的短語。

1

編輯:我發佈的以前的解決方案不起作用,但這應該。

高亮有兩種模式,一種是啓用字體鎖的緩衝區(使用字體鎖),另一種是無(使用疊加層)。我發現的解決方案是簡單地強制突出顯示,以便始終使用覆蓋,因此優先級高於h-line(因爲較短的覆蓋優先級較高,給定相同的值priority)。

爲此,我進入了hi-lock.el並將font-lock-fontified的每個實例都替換爲nil。之後請務必M-x byte-compile-file以更新hi-lock.elc

+0

很酷。我不再強調當前的路線,但是如果我願意 - 我可能會使用該解決方案。 – Adobe

+0

@fzlogic我完全按照步驟操作(修改hi-lock.el,byte compbile它),並且仍然不起作用,這裏缺少任何stpes?任何行添加到init.el?謝謝! – shelper

+0

@shelper我只是(重新)測試它,它工作正常。你碰巧安裝了多個版本的emacs? – Rufflewind