2008년 8월 7일 목요일

emacs 에서 코드 컴플리트는 아쉽지만 alt+/

vi 에서 ctrl+n과 완전 동일하게 비슷한 word로 확 바꿔버리는 기능은
emacs에서 alt+/

windows RAD툴에서 처럼 팝업으로 .. 그리고 구조체 접근 같은 경우 . -> 등을 타이핑 하면
멤버가 쫙 나오는 그런거..

찾고 싶다..

vi code complete

autocomplpop.vim : Automatically open the popup menu for completion
http://www.vim.org/scripts/script.php?script_id=1879

에서 autocomplpop.vim을 다운받아
~/.vim/plugin에 복사하면 끝이다.

vi에서 코드 완성 기능을 쓸수 있다.

ctrl + n 도 괞찮은 기능 같다.

emacs 에서 matching brace

(define-key global-map "\M-]" 'matching-brace-or-self-insert)
(defun matching-brace-or-self-insert ()
(interactive)
(let ((char (char-after)))
(cond ((member char (mapcar* #'identity "[({"))
(forward-sexp 1)
(backward-char 1))
((member char (mapcar* #'identity "])}"))
(forward-char 1)
(backward-sexp 1))
(t (call-interactively 'self-insert-command)))))

인터넷에서 위에 내용을 .emacs에 추가 하면 된다는 글을 보았다.
하지만 안된다.

apt-get install cedet-common
을 설치 하고 나니 된다.

추가로
(load-file "/usr/share/emacs/site-lisp/cedet-common/cedet.el");
를 해야 한다.

cogre 버젼 어쩌구 에러가 초기 화면에 보인다면.
시냅틱 패키지 관리자에서 설치 해주면 된다.

이제 vim %와 같은 기능이 된다.
소스 분석 할때 { .... } ( .... ) 를 오고 가는 일은 정말 중요 하니까...

emacs 에서 Ctrl + TAB 으로 버퍼 전환 하기



원문 : http://www.emacswiki.org/cgi-bin/wiki/ControlTABbufferCycling

.emacs 파일에 아래의 내용을 추가 하면 된다.

;; Support functions for `stesla-rotate-buffers'. From the EmacsWiki.
 (defvar stesla-hated-buffers '("KILL" "*Apropos*" "*Completions*" "*grep*"
".newsrc-dribble" ".bbdb" "sent-mail" "*vc*"
"*Compile-Log*" "*Help*" "*Messages*"))
 (defvar stesla-hated-buffer-regexps '("^ " "*Buffer" "^\\*trace" "^\\*tramp"))
 (setq iswitchb-buffer-ignore (append stesla-hated-buffer-regexps  stesla-hated-buffers))
 (defmacro stesla-buffer-regexp-mapcar (regexp buffers)
"Find BUFFERS whose name matches REGEXP"
`(mapcar (lambda (this-buffer)
(if (string-match ,regexp (buffer-name this-buffer))
this-buffer))
,(if (symbolp buffers) (symbol-value buffers) buffers)))
 (defmacro stesla-hated-buffer-from-regexps (regexps)
"Generate a one-dimensional list of buffers that match REGEXPS"
(append
'(append)
(mapcar (lambda (regexp)
`(delete nil (stesla-buffer-regexp-mapcar ,regexp
(buffer-list))))
(if (symbolp regexps) (symbol-value regexps) regexps))))
 (defun stesla-delete-from-list (delete-these from-list)
"Delete DELETE-THESE from FROM-LIST."
(cond
((car delete-these)
(if (member (car delete-these) from-list)
(stesla-delete-from-list (cdr delete-these)
(delete (car delete-these) from-list))
(stesla-delete-from-list (cdr delete-these) from-list)))
(t from-list)))
 (defun stesla-hated-buffers ()
"List of buffers I never want to see."
(delete nil
(append
(mapcar 'get-buffer stesla-hated-buffers)
(stesla-hated-buffer-from-regexps stesla-hated-buffer-regexps))))
 ;; `stesla-rotate-buffers': Like `bury-buffer' but with the capability to
;; exclude certain specified buffers.
 (defun stesla-rotate-buffers (&optional n)
"Switch to the Nth next buffer. Negative arguments move backwards."
(interactive)
(unless n
(setq n 1))
(let ((my-buffer-list
(stesla-delete-from-list (stesla-hated-buffers)
(buffer-list (selected-frame)))))
(switch-to-buffer
(if (< n 0)
(nth (+ (length my-buffer-list) n)
my-buffer-list)
(bury-buffer)
(nth n my-buffer-list)))))
 ;; Windows-style C-TAB and C-M-TAB to switch buffers.
 (global-set-key (kbd "C-") 'stesla-rotate-buffers)
(global-set-key (kbd "C-M-") (lambda ()
(interactive)
(stesla-rotate-buffers -1)))
 ;; This is C-TAB and C-M-TAB for the Linux console.  This requires special
;; setup; namely, you need to load a keymap file with /usr/bin/loadkeys
;; containing the following lines:
;;
;; control keycode 15 = Macro
;; control alt keycode 15 = Pause
;;
;; If you actually -have- a key that generates the Macro or Pause keysyms, you
;; have a better keyboard than I. For me, this makes Emacs DWIW. Credit for
;; this hack goes to Alex Schroeder.
 (global-set-key (kbd "ESC [ M") 'stesla-rotate-buffers)
(global-set-key (kbd "ESC [ P") (lambda ()
(interactive)
(stesla-rotate-buffers -1)))

2008년 8월 6일 수요일

vi에서 { } 메치 찾기

코드 분석하다가 긴 { ... } 블럭에 처음과 끝을 오가고 싶을때
%를 누르면..
찾아 준다.

왜 지금껏 몰랐을까...

( .... ) 도 된다.

emacs에서도 이런 기능이 있을텐데....