2013-07-23 65 views
2

我使用的是常規電子模式下的emacs(安裝爲概述here)。在這個問題的最後給出了我的.emacs文件的相關部分(我認爲)。emacs中Groovy風格方法參數的縮進

當前的行爲我與縮進得到,如I型是:

def someObject = new Something(
    param1 

一切都是我怎麼想它在這一點上,但只要我輸入「:」字符,它變爲:

def someObject = new Something(
param1: 

我想帕拉姆/值對(以及後面的任何)保持縮進一級,和以前一樣,如:

def someObject = new Something(
    param1: val1, 
    param2: val2 
) 

.emacs摘錄:

(electric-indent-mode t) 

(setq-default tab-width 4) 
(setq-default indent-tabs-mode nil) 
(setq indent-line-function 'insert-tab) 
(setq tabify nil) 
(setq-default c-basic-offset 4) 
(delete-selection-mode 1) 
(set-default-font "-apple-Bitstream_Vera_Sans_Mono-medium-normal-normal-*-*-*-*-*-m-0-iso10646-1") 
(setq load-path (cons "~/.emacs.d/" load-path)) 
(add-to-list 'custom-theme-load-path "~/.emacs.d/themes/") 

(setq whitespace-action '(auto-cleanup)) ;; automatically clean up bad whitespace 
(setq whitespace-style '(trailing space-before-tab indentation empty space-after-tab)) ;; only show bad whitespace 
;;; delete trailing whitespace 
(add-hook 'before-save-hook 'delete-trailing-whitespace) 

;;; turn on syntax highlighting 
(global-font-lock-mode 1) 

;;; use groovy-mode when file ends in .groovy or has #!/bin/groovy at start 
(autoload 'groovy-mode "groovy-mode" "Major mode for editing Groovy code." t) 
(add-to-list 'auto-mode-alist '("\\.groovy\\'" . groovy-mode)) 
(add-to-list 'interpreter-mode-alist '("groovy" . groovy-mode)) 

;;; make Groovy mode electric by default. 
(add-hook 'groovy-mode-hook 
      (lambda() 
      (require 'groovy-electric) 
      (groovy-electric-mode))) 

編輯:關於下面@ataylor的建議下,我曾經嘗試都:

(add-hook 'groovy-mode-hook 
      '(lambda() 
      (require 'groovy-electric) 
      (groovy-electric-mode))) 

(add-hook 'groovy-mode-hook '(c-set-offset 'label 4)) 

(add-hook 'groovy-mode-hook 
      '(lambda() 
      (require 'groovy-electric) 
      (groovy-electric-mode) 
      (c-set-offset 'label 4))) 

兩者都不工作,因爲我的想。這是正確的位置嗎?

+0

關於您的編輯:第二個版本是接近,但不要引用拉姆達。我已經更新了我的答案以顯示整個'add-hook'。 – ataylor

回答

3

Groovy模式將這些類型的參數視爲標籤,如case語句標籤和從Java繼承的罕用特性,允許break語句指定目標。

您可以通過添加這對你的鉤子覆蓋縮進:

(add-hook 'groovy-mode-hook 
      (lambda() 
      (c-set-offset 'label 4))) 
+0

請看編輯,你的建議並不適合我,但也許我沒有完全按照你的意思去做...... –