[Q] emacs 사용자와 vi 사용자의 공동작업에 있어서 indent 및
저는 이맥스를 사용하고 있는데요, 사실 제가 바라보는 세상의 중심은 이맥스라 이맥스의 기본 인덴트를 사용하고 있었고 별로 불편한게 없었거든요.
그런데 이맥스는 기본으로 tab + space방식을 사용하고 있고, vi는 tab방식을 사용하고 있어서 (혹시 틀리면 지적해주세요) 같이 공동작업하다보면 트러블이 좀 생기더라구요.
그래두 팀내에 vi사용자가 좀 많으니 제가 맞추려고 하는데, 이것저것 뚝딱거려봐도 잘 안되네요. 제가 한것은..
(global-unset-key [tab])
(setq tab-stop-list '(4 8 12 16 20 24 28 32 36 40 48 56 64 72))
(global-set-key [tab] 'tab-to-tab-stop)
이렇게 했는데, 이렇게 바꾸니 모든 모드에서 tab키가 tab-to-tab-stop으로 먹어서 상당히 불편하구요(특히 minibuffer에서 command completion이 안됨, help에서도 노드 찾아가는거 안됨. -_-;;) c-tabs-always-indent던가를 nil로 해도 원하는게 안되더라구요.
궁극적으로 원하는것은 vi처럼 프로그래밍 모드에서만큼은 항상 일정크기만큼의 tab이 적용되는거거든요 (white space가 아닌).
어떻게 하면 그렇게 할 수 있을까요?
그리고 emacs 사용자와 vi 사용자간에 공동작업을할때 indent말고 또 주의해야하는 부분이 있을까요? (서로 자기 에디터가 더 훌륭하다는 논쟁을 피하는 것 말구. ^^ )
수고하세요


[code:1];;;; cc-mode 설정;; 몇몇 확장자
;;;; cc-mode 설정 ;; 몇몇 확장자 추가 (add-to-list 'auto-mode-alist '("\\.hpp\\'" . c++-mode)) (add-to-list 'auto-mode-alist '("\\.h\\'" . c++-mode)) ; 난 주로 c++ 쓰니까. ;; c++ indentation (defconst my-c-style '((c-tab-always-indent . t) (c-comment-only-line-offset . 4) (c-hanging-braces-alist . ((substatement-open after) (brace-list-open))) (c-hanging-colons-alist . ((member-init-intro before) (inher-intro) (case-label after) (label after) (access-label after))) (c-cleanup-list . (scope-operator empty-defun-braces defun-close-semi)) (c-offsets-alist . ((arglist-close . c-lineup-arglist) (substatement-open . 0) (case-label . 0) (block-open . 0) (knr-argdecl-intro . -))) (c-echo-syntactic-information-p . t) ) "My C Programming Style") ;; Customizations for all modes in CC Mode. (defun my-c-mode-common-hook () (c-add-style "PERSONAL" my-c-style t) (setq tab-width 4 indent-tabs-mode t c-basic-offset 4) (c-toggle-auto-state -1) ; disable auto-newline mode (c-toggle-hungry-state 1) ; enable hungry-delete mode ;; return 으로 indent 까지 같이 하도록했다 (define-key c-mode-base-map "\C-m" 'newline-and-indent) ;; C-c RET 로 .h .cpp 간의 전환을 하도록 했다. (define-key c-mode-base-map [(control c)(return)] 'ff-find-other-file) (c-set-offset 'substatement-open 0) (c-set-offset 'member-init-intro '++) (c-set-offset 'inline-open 0) (c-set-offset 'comment-intro 0) (c-set-offset 'label 0) (c-set-offset 'arglist-intro '++) (hs-minor-mode 1) ) (add-hook 'c-mode-common-hook 'my-c-mode-common-hook)제 .emacs 중 일부입니다. 정확히 어느줄인지 뽑아내기가 귀찮아서 죄다 가져왔습니다. :oops:
평소에 space 로 indent 를 하시는것을 선호하신다면, 공유하는
평소에 space 로 indent 를 하시는것을 선호하신다면, 공유하는 소스 파일들에만 LocalVariables 를 쓰시는 방법도 있습니다. vim 에서도 이와 유사한 기능을 제공합니다.
예제 추가합니다.
첫줄에 이렇게 적으시면 됩니다.
댓글 달기