![](/img/trans.png)
[英]Emacs and Helm - How to not show 'buffer-history' when i do 'kill-buffer'
[英]How do I run an Emacs hook when a buffer is modified?
建立在保存某些文件類型(以及只有那些文件類型)時讓Emacs解壓縮時 ,我想在開始修改緩沖區時運行一個鈎子來解壓縮我的C ++文件。 我嘗試添加鈎子來加載緩沖區,但是當emacs啟動時,它會解除我自動加載的所有可寫文件。
(對於那些想知道我為什么要這樣做的人來說,這是因為我工作的地方強制在文件中使用標簽,我很樂意遵守。問題是我標記了我的文件,告訴我線條何時也是如此很長,但正則表達式匹配行中的字符數,而不是行占用的空間。一行中的4個制表符可以將它推到我的132個字符限制之上,但該行不會被正確標記。因此,我需要一種自動制表和解壓縮的方法。)
看一下變量“before-change-functions”。
也許沿着這條線(警告:代碼沒有測試):
(add-hook 'before-change-functions
(lambda (&rest args)
(if (not (buffer-modified-p))
(untabify (point-min) (point-max)))))
這是我添加到我的emacs文件中以加載時取消更改:
(defun untabify-buffer ()
"Untabify current buffer"
(interactive)
(untabify (point-min) (point-max)))
(defun untabify-hook ()
(untabify-buffer))
; Add the untabify hook to any modes you want untabified on load
(add-hook 'nxml-mode-hook 'untabify-hook)
這個答案是切向的,但可能有用。
當光標經過給定列時,包wide-column.el 鏈接文本會更改光標顏色 - 實際上光標顏色可能會因設置而異。 這聽起來像是一個比正則表達式代碼更少侵入性的解決方案,但它可能不適合您的需求。
一個不同的,切向的答案。
你提到你的正則表達式不足以判斷何時滿足132個字符的限制。 也許更好的正則表達式......
假設標簽寬度為4,此正則表達式將匹配一行超過132個字符的行。(我認為我的數學正確)
"^\\(?: \\|[^ \n]\\{4\\}\\)\\{33\\}\\(.+\\)$"
最后一個帶括號的表達式是超出限制的字符集。 第一個帶括號的表達式是害羞的 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.