레이블이 emacs인 게시물을 표시합니다. 모든 게시물 표시
레이블이 emacs인 게시물을 표시합니다. 모든 게시물 표시

2011년 11월 2일 수요일

occur-edit-mode


Occur Edit mode applies edits made in *Occur* buffers to the original buffers.


emacs NEWS 를 읽다보니 이런게 생겼네.
occur 자주 쓰는데 이기능 종종 쓸것같다.

2010년 12월 16일 목요일

emacs, python 에서 id-utils 사용




간단히 적어둔다.
리눅스환경에서만 테스트 됐음. 윈도에서는 map 파일을 어떻게 찾을지 모르겠네. 매번 실행시 인자로 주면 되긴 하겠는데...

  1. 파이썬스캐너가 없어서 .py 는 기본설정으로 실행시 ignore 되버림.
  2. /usr/share/misc/id-lang.map 를 열어서 *.py 를 text 로 취급하도록 수정. man mkid 참고.
  3. 이제 mkid 가 python 소스들을 읽고 ID 파일을 남기게 되었다.
  4. emacs 쪽에서 idutils.el 세팅 이글 참고
  5. 익숙한 키인 M-. 에 바인딩했다. ctags 는 버리고 gid 로 대체해보려는건데.. 흠. 바보짓일수도?
    (defun use-idutils-as-tagging-tool ()
      (local-set-key "\M-." 'gid))
    (add-hook 'python-mode-hook 'use-idutils-as-tagging-tool)
  6. 이제 M-. 으로 심볼 찾아 돌아다니는게 가능해졌는데 소스 수정후 mkid 를 불러줘야 하는 불편함이 있다.
  7. mkid 를 적당한때 부르는 방법이야 많겠지만 내가 당장 원하는 모양은 원하는 시점에 키 몇개 누르면 mkid 가 실행되는것.
  8. anything 을 이용해서 프로젝트관리를 하는 편인데 이중에 mkid 실행하기 메뉴를 추가해줬다. 저 함수는 더 깔끔하게 짜는 방법이 있을거 같은데 당장은 저코드만 떠오르네.
    (defun yoonkn-anything-projects-mkid (name)
      (let ((curdir default-directory)
            (prjdir (yoonkn-anything-projects-get-dir name)))
        (unwind-protect
            (progn
             (cd prjdir)
             (call-process "mkid"))
          (cd curdir))))
    (defvar anything-my-source-yoonkn-projects
      '((name . "내 프로젝트들")
        (candidates . yoonkn-anything-projects-candidates)
        (action . (("dired 실행하기" . yoonkn-anything-projects-dired)
                   ("psvn 실행하기"  . yoonkn-anything-projects-psvn)
                   ("mkid 실행하기"  . yoonkn-anything-projects-mkid)))))
  9. 이제 mkid 돌리는것도 간단히 실행가능. 우왕ㅋ굳ㅋ



추가. 2010/12/17
집에서 windows7 환경에 idutils 를 돌려보니 에러나더군. 씁. gnu global 이 text 도 지원하면 좋을텐데 누군가 메일링리스트에 글을 남긴건 봤는데 흐지부지 된듯 하더군.

2010년 7월 5일 월요일

emacs-for-python

http://gabrielelanaro.github.com/emacs-for-python/


저놈을 쓰고 싶은 욕구는 당장 없지만 PyFlakes 라는놈이 눈에 보이길래 적어둔다.
pycheck, pylint 모두 써봤는데.. 다음엔 저놈 한번 써보자.

2010년 4월 1일 목요일

window 에서 emacs 와 cscope 사용을 위한 준비



전에도 위키등에 몇번 적었는데 이번에 새로 세팅을 하게되서 최소한의 절차만 적어둔다.
후에 내가 읽어보는게 목적.

  1. cscope 다운로드
    http://code.google.com/p/cscope-win32/
    이번에 다시 뒤져보니 win32 port 가 다시 진행되는듯? 이전엔 16.0 이던가 하는 이상한 버전으로 오랫동안 멈춰있어서 쓰기가 좀 거북했었는데.. 우왕굿.
  2. xcscope.el 세팅
    나야 emacs 설정들을 mercurial 로 관리하고 있고 리파지토리를 dropbox 로 들고있으니 새로 받을 일은 없지만 적어둔다.
    [code]
    (require 'xcscope)[/code]
  3. cscope-indexer 설치
    나는 주로 c:/bin 또는 c:/opt/bin 에 넣어둔다. 이쪽 툴들도 dropbox 에 짱박아야 겠군...

    펼쳐두기..

  4. cscope-indexer 가 쉘스크립트이므로 msys shell 을 깔아준다.
    나야 어차피 mingw 를 자주 쓰니 문제 없지만 혹시나 cscope 때문에 쉘까지 까는게 싫다면 다른 방식으로 스크립트를 만들면 해결될듯. 목록만들고 cscope -b 돌리는게 전부다.
  5. emacs 가 cscope-indexer 를 실행할수 있도록 cscope-indexer.bat 파일을 만든다. 역시 c:/bin 또는 c:/opt/bin 을 애용중
    [code]
    C:\msys\1.0\bin\sh cscope-indexer %1 %2 %3 %4 %5 %6 %7 %8 %9[/code]
  6. 시스템헤더랄까? 윈도쪽에선 뭐라고 해야 하나 어쨌건 프로젝트마다 공통적으로 쓰는 헤더들을 찾도록 cscope-database-regexps 를 지정해준다. 아래는 간단한 예제
    [code]
    (setq cscope-database-regexps
          '(
            ;; 이런식으로 추가해 나가자. 상세한것은 C-h v cscope-database-regexps
            ("C:/HOME/src/foo/src"
             (t)
             ("C:/HOME/src/foo/extlibs"))
            ;; more
            ;; default
            ("."
             (t)
             ("C:/Boost/include/boost-1_42/boost")
             ("C:/Program Files/Microsoft SDKs/Windows/v6.0A/Include")
             ("C:/Program Files/Microsoft Visual Studio 9.0/VC/include")
             t)))[/code]
  7. 위에서 지정한 세개의 기본검색 경로에 각각 cscope.out 을 만들어준다. 간단히 emacs 에서 C-c s I 로 지정해줘도 되지만 C++ 표준헤더의 경우 확장자가 없어서 이방법으로는 누락이 되니 직접 cscope.files 를 만들고 이를 통해 cscope.out 을 뽑는 수고를 해야 한다. gnu find 등을 쓰면 간단.


우왕ㅋ굳ㅋ
현재 나는 gnu global 이 주력 태깅툴이고 cscope 는 cscope-database-regexps 때문에 프로젝트 외부 코드를 따라갈때 쓴다. 즉 어떤 프로젝트 루트가 foo 일때 foo 이하는 빌드시 gtags 를 매번 돌려서 태깅을 해두고 코딩시 내가 찾으려는 심볼이 프로젝트 내부의 것인지 외부것인지 정도는 머리속에 들어있으니 상황따라 global, cscope 를 구분해서 쓰는 편.


2010년 2월 24일 수요일

인수인계를 위해 남겨둔 최소한의 .emacs 파일

퇴사전 PC 정리중인데 인수인계가 늦어져서 간단히 코드와 문서를 보여줄수있을 정도의 .emacs 를 만들었다. emacs 안에 워낙 잡스러운것들을 들고있다보니 이런 작업도 하게 됐네

내가 필요했던것은
  1. 소스브라우징을 위한  gtags, cscope
  2. 잡스런 파일을 숨긴 dired
  3. ido
  4. F5 로 커맨드창 실행
  5. alt-F5 로 탐색기 실행
  6. 문서를 org 로 썼기 때문에 org

그래서 ~/.emacs.d 에 gtags.el xcscope.el 만 넣어두고 .emacs 에 아래 코드만 남기고 나머진 모두 삭제했다.

;;; 최소한의 el 들은 이곳에 넣어둔다.
(add-to-list 'load-path "~/.emacs.d")


;;; cscope 설정
(require 'xcscope)

;;; gtags 설정, gtags.el 이 필요
(load "gtags")
(add-hook 'c-mode-common-hook (lambda () (gtags-mode 1)))
(global-set-key "\C-c\M-." 'gtags-find-rtag)
(defun yoonkn%search-project-by-gtags ()
  (interactive)
  (if current-prefix-arg
      (yoonkn-grep-project)
    (gtags-find-pattern)))
(add-hook 'gtags-mode-hook
          '(lambda ()
             (local-set-key (kbd "C-S-f")
                            'yoonkn%search-project-by-gtags)))

;;; dired 쪽 설정은 가지고있는게 좋겠군.
(require 'dired-x)
(defun add-to-dired-omit-files (pattern)
  (setq dired-omit-files
        (concat dired-omit-files
                "\\|"
                pattern)))
(mapc #'add-to-dired-omit-files
      '("\\`\\."
        "\\`semantic.cache\\'"
        "\\.elc\\'"
        "\\`tags\\'"
        "\\`TAGS\\'"
        "\\`GPATH\\'"
        "\\`GRTAGS\\'"
        "\\`GSYMS\\'"
        "\\`GTAGS\\'"
        "\\`cscope.out\\'"
        "\\`cscope.files\\'"
        "\\`cscope.index\\'"))
(add-hook 'dired-mode-hook '(lambda () (dired-omit-mode 1)))
(when (eq system-type 'windows-nt)
  (setq ls-lisp-verbosity (delq 'uid ls-lisp-verbosity))
  (setq ls-lisp-verbosity (delq 'gid ls-lisp-verbosity)))


;;; ido 도 필요하겠다
(require 'ido)
(ido-mode t)
(ido-everywhere 1)
(setq ido-use-filename-at-point 'guess
      ido-use-url-at-point t)


;;; F5 로 터미널
(when (eq system-type 'windows-nt)
  (global-set-key [(f5)]
                  '(lambda ()
                     (interactive)
                     (w32-shell-execute "OPEN"
                                        "cmd"
                                        "/K echo hello"))))
;;; alt-F5 로 탐색기
(when (eq system-type 'windows-nt)
  (global-set-key [(meta f5)]
                  '(lambda ()
                     (interactive)
                     (w32-shell-execute "OPEN" default-directory))))


;;; 문서를 org 모드로 주로 남기기 때문에 이 모드도 필요하겠다
(require 'org)
(setq org-hide-leading-stars t)

2009년 8월 28일 금요일

emacs 에서 autohotkey 를 이용해서 IDE 에 빌드명령 내리기(키입력 보내기)

IDE 하고 컴파일러가 한몸이라 커맨드라인으론 실행하지 못하는 경우도 있네
그런경우를 위해서 emacs 에서 빌드할수 있도록 오토핫키를 이용한 간단한 스크립트를 만들어봤다.

덧붙여 나는 빌드시에 태깅 업데이트되는것을 좋아 하니 먼저 태그 업데이트 후에 이 오토핫키 스크립트를 실행하는 배치파일로 작성했다. 이걸로 emacs 에서 F7 하나로 빌드가 가능해졌다.


먼저 build.cmd

펼쳐두기..



그리고 build.ahk
별거없다. 그냥 타이틀을 이용해서 창을 찾아서 F7 보내주는게 전부

펼쳐두기..





2009년 7월 3일 금요일

emacs 에서 시리얼 포트 접근

NEWS 보다 보니 M-x serial-term 이 추가됐네.
헐 좀 짱인듯.

요즘 시리얼을 읽을일이 종종있는데 테라텀 띄우는 버릇 버리고 이놈을 쓰자.

2009년 5월 18일 월요일

현재 사용중인 dot emacs 파일

emacs 를 사용한 이후로 emacs 설정파일 묶음은 내 개발역사나 마찬가지다.
org 모드에 블로그보다 많은 정보를 들고 있고 이걸 .emacs 들과 함께 hg 로 버전관리중이니 뭐 그 이상이지...

오래전 위키에 올렸던 페이지가 어쩌다 오늘 내눈에 보이길래 지금 쓰는 dot emacs 파일을 올려봤다. 예전 위키에 적을때하고 다른점은.. 그때는 주로 윈도에서 놀았으나 지금은 거의 리눅스에서만 개발을 하고 있다는 점? 그리고 그때는 재미삼아 common lisp 을 주로 구경했는데 지금은 haskell 에 좀더 관심있다는 정도...

그때나 지금이나 허접한 개발자란건 변함이 없구만.

아래 소스를 올리긴 하는데 내가 워낙 게으른놈이라 코드가 정리가 전혀안됐다. 주석도 처음에 주절주절 적어둔거 그대로.. 심지어는 svn 쓰던 시절의 $Id$ 이것까지 남아있네. 이거 전부 정리해야 할 글인데.. 지금도 몇몇 코드들은 다픈 파일로 따로 뽑아낸 상태인데 언제 시간내서 싹 정리를 해야겠다.

펼쳐두기..


흠. 그나저나 예전에는 여러가지로 불편해서 남들 elisp 도 뒤져보고 내가 직접 만들어보는 삽질도 하고 했는데 요즘은 그야말로 불편한게 없어서 더이상 발전이 없네. 오랜만에 emacswiki 좀 구경가야겠다... 음 내일.. ㅎㅎ