2012-07-01 12 views
1

我正在使用cc模式的emacs24,我想知道如何讓我的emacs更「聰明」。在我輸入a}之後,它會自動插入一個新行並按照例外進行縮進。我想知道如何將點切換到上一行。 例如,當我定義一個函數,現在我的emacs行爲是:如何在輸入完成後將點切換到上一行?

void f() 
{ 
} 
//point 

「//點」是光標的後}是輸入的位置。 但我想是這樣的:

void f() 
{ 
    //point 
} 

我希望光標的位置可以自動切換到上一行並縮進。 我知道emacs可以做到這一點,但我不知道該怎麼做,誰能幫助我?

回答

1

我覺得你是以後這些.. C-M-uC-M-dC-M-fC-M-b

做法有點...他們是那種全球和他們做的幾乎所有模式的行爲情境..

UPDATE :

ohh ..看起來你想要自動放置光標..實際上在更一般的Emacs將幫助你不要輸入}。我的意思是emacs可以自動插入關閉paran。

有內在的一個 電對模式

第三方 autopair.el

0

我不信任任何電力,所以我寫了這個功能。

(defconst insert-logical-brackets-logical-bracket-begin "{") 
(defconst insert-logical-brackets-logical-bracket-end "}") 
(defconst insert-logical-brackets-default-style 0) 
(make-variable-buffer-local 'logical-bracket-begin) 
(make-variable-buffer-local 'logical-bracket-end) 
(make-variable-buffer-local 'insert-logical-brackets-default-style) 
(defun insert-logical-brackets(&optional style) 
    "If STYLE = 0(default, according to `insert-logical-brackets-default-style' value), make a newline before opening bracket, if line is not empty. Make a newline after closing bracket, if there is something after this bracket. Make two newlines in the middle. 
If STYLE = 1, don't make newlines before opening a bracket(one of c styles). 
If STYLE = 2, don't make newlines before opening and after closing bracket. 
If STYLE = 3, allways make all newlines. 
If STYLE is not nil, don't make newlines between brackets(still makes before/after lines)." 
    (interactive "P") 
    (when (eq style nil) 
    (setq style insert-logical-brackets-default-style)) 
    (funcall indent-line-function) 
    (unless (or (eq 1 style) (eq 2 style)) 
    (when (or (/= (point) (save-excursion (back-to-indentation) (point))) (eq 3 style)) 
     (newline) 
     (funcall indent-line-function))) 
    (unless (and (integerp style) (= 2 style)) 
    (when (or (not (looking-at "\n")) (eq 3 style)) 
     (newline) 
     (funcall indent-line-function) 
     (forward-line -1) 
     (goto-char (point-at-eol)))) 
    (insert logical-bracket-begin) 
    (funcall indent-line-function) 
    (let ((return-point (point))) 
    (when (or (not style) (or (eq 0 style) (eq 1 style) (eq 2 style) (eq 3 style))) 
     (newline) 
     (funcall indent-line-function) 
     (setq return-point (point)) 
     (newline)) 
    (insert logical-bracket-end) 
    (funcall indent-line-function) 
    (goto-char return-point))) 
相關問題