emacs 와 cscope 관련하여 의견 구합니다.

paranoea의 이미지

안녕하세요

emacs 와 cscope 사용하시는 분들이 겪을만한 질문인데, 비슷한 경험이 있으시면
말씀좀 부탁드릴께요.

사용환경
MS Windows
cygwin
GNUEmacs 22 release version
cscope (win32 로 컴파일된 바이너리 제공하는 사이트에서 받은것)
indexer 와 cscope 는 리네임후에 실제로는 bat 화일로 -q (large project)
-C (case-insensitive) 옵션사용

1. readonly 속성의 A 라는 화일을 열고 있다가 수정이 필요해서 check out 후에
수정하기 위해서는 C-x k 로 buffer 를 kill 한후에 다시 buffer 를 open 하고 수정함.
제가 원할때 원하는 buffer 를 reload 해주는 명령이 있는지요?

2. cscope 에서 -C 옵션으로 검색할때 text search 를 제외한 기능은 모두 정상동작하지만,
text search 의 경우에는 모두 소문자로 해줘야만 검색이됩니다.
또는 "emacs newbie" 처럼 공백문자를 포함하는 text 검색이 되질 않습니다.

3. 여러개의 window 가 열려있는경우 cscope 검색후에 검색결과를 마우스로 클릭할경우
아무 window 나 랜덤하게 file 이 open 됩니다. 이럴경우 기존에 보고있던 파일을 다시 열어야
하는 불편함이 있고, 혹은 o 를 누를경우 모든창이 닫히고
파일이 열리게 되는데요, 내가 원하는 윈도우에서 열수있는 방법은 없을까요?

4. c-mode 에서 키입력시에 CPU 90% 이상이 되면서 emacs 가 lockup 되는 현상으로
extern const char *i_m_string[LANG]; 이런식으로 2000개의 line 정도가 있는 header 파일입니다.
font-lock 을 off 하고도 같은 현상이 나오는것으로 미루어 c-mode 자체의 문제라고 보여지는데
비슷한 경험 있는분 없으신가요?

5. cscope 에서 db (?) 를 만든후에 화일하나 수정하고 이후 search 할때 db 를 다시만드는것은
이해가 됩니다만, 전체를 새로 갱신하여 시간이 오래 걸립니다.
화일한개가 수정되었을때, 수정된 화일에대해서만 갱신하는 방법은 없을까요?

klenui의 이미지

cscope은 그렇게 많이 쓰지 않아서 잘 모르겠습니다만.. 1번 같은 경우에는 revert-buffer하면 되지 않을까요..?

음.. 해보니 잘 되네요... revert-buffer쓰시면 될 듯...
3번은.. 파일 여는 함수에 advise를 걸면 되지 않을까..라고 생각합니다만.. 역시 cscope은 잘 안쓰는 관계로....

paranoea의 이미지

klenui 님 답변 고맙습니다.

3번 advise 는 검색해봤는데 잘 모르겠네요 ^^
간단한 예나 링크가 없을까요?

cscope 를 잘 안쓰시면 혹시 Semantic 을 사용하시나요?
emacs 과 함께 사용할수 있는 다른 분석툴이 있으시면 살짝 알려주세요

ptmono의 이미지

C-x C-q(toggle-read-only) 을 이용하시면 read-only 로 열린 파일을 수정할 수가
있습니다. 수정후 저장은 C-x C-s로 하시면 됩니다.

http://www.emacswiki.org/cgi-bin/wiki/EmacsCodeBrowser 라는 것이 있더군요.

------------------------------------------
emacs user

댓글 메일이 오지않는 이유로 답글의 답변은 없을 수 있습니다.

------------------------------------------
emacs user

paranoea의 이미지

2번 관련해서 text search 의 경우는 검색문자 입력시 소문자밖에 입력되지 않는것으로 보입니다.
cscope 단독으로 실행할경우에도 소문자로만 입력 되도록 되어 있네요.
중간에 스페이스가 들어간 단어 서치가 안되는 문제는 cscope 실행화일이 c:\program files\ 아래 있어서 발생한 문제입니다. 다른곳으로 옮기니 검색이 잘되네요

5번의 경우에는 xcscope 에서 지원하는 db갱신하지 않는 옵션이 존재하네요,
기본으로 끄고 사용하다가 sync 를 맞춰야하는 경우만 생성하도록 사용하면 되겠습니다.

끝으로 괜찮은 extension 소개합니다.
http://nschum.de/src/emacs/
1) highlight symbol - symbol highlighting 과 search 를 아주 쉽게 할수있네요
2) window numbering mode - window 이동시에 M-숫자 키로 간단하게 이동할수 있습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.