특정 디렉토리 밑의 소스 코드의 들여쓰기를 자동으로 맞추어 주

rain의 이미지

특정 디렉토리 밑의 소스 코드의 들여쓰기를 자동으로 맞추어 주는 방법있으면 좀 알려주세요.

vim에서 =G가 있는데 소스 코드가 많아서 적용하기가 힘드네요.
argdo?로 하면 될꺼 같은데 정확히 모르겠네요.

다른 툴들도 있으면 소개 좀 부탁드려요. ^^

익명 사용자의 이미지

indent라는 프로그램이 있습니다.

shamlock의 이미지

와 =G 감사히 쓰겠습니다.
이런게 있었군요
일일이 손으로 다 들여쓰기 했네요. 흐유

@.@

cinsk의 이미지

$ # K&R style로 SOME_DIR 아래의 모든 .c .h 파일을 이쁘게..
$ find SOME_DIR -name '*.[ch]' -exec indent -kr {} \;
shamlock의 이미지

오늘 처음 indent 라는 프로그램을 알았습니다

그래서 CVS 작업에 적용시키려고 .indent.pro 파일을 만들어보았는데요
-kr옵션으로 해봤는데 제 개인적인 취향에는 안맞는군요
(우리 팀원들에게도 마찬가지구요 ^^)
그래서 맨페이지읽어가면서 일일이 수정하면서 테스트해보았는데요

거의 다 되었는데.. do-while문이 맘에 안드는데 어떤 옵션을 써야할지 모르겠네요

제가 원하는것은 아래와 같구요

do
{
    m_bfr |= *m_rdptr++ << (24 - incnt);
    incnt += 8;
} while (incnt <= 24);





현재 맘에 안들게 나오고 있는 것은 아래와 같이 나오고 있습니다.
(while문이 블럭 괄호 아래로 내려가네요)


do
{
    m_bfr |= *m_rdptr++ << (24 - incnt);
    incnt += 8;
} 
while (incnt <= 24);


아래는 제가 적용한 .indent.pro 파일입니다.
(아래 설정에 대하여 조언 주시면 감사)

--braces-after-if-line
--break-before-boolean-operator
--braces-after-if-line
--brace-indent0
--braces-after-struct-decl-line
--case-indentation4
--case-brace-indentation4
--else-endif-column4
--line-length100
--tab-size4
--honour-newlines
--indent-level4
--no-tabs
--space-after-for
--space-after-if
--space-after-while
--declaration-indentation4
--dont-break-function-decl-args
--dont-cuddle-do-while
--dont-break-procedure-type

P.S:
--dont-cuddle-do-while 라는 옵션이 있길래 한번 해봤는데
무슨 차이가 있는건지 모르겠네요
cuddle 가 장난감이라는 뜻이던데
뭘하라는 옵션인지 모르겠습니다.
일단 이 옵션은 적용하든 안하든 제가 원하는 결과는 안나오더군요

@.@

익명 사용자의 이미지

Cuddle은 동사로 "꼭 붙는다"는 뜻입니다. 주로 연인들이 찰싹 달라붙는 것을 말할 때 쓰는 말입니다.

--cuddle-do-while을 써보세요.

shamlock의 이미지

흠... cuddle에 그런뜻이 있는것이었군요

근데 그렇게 해도 안되네요

@.@

익명 사용자의 이미지

그러게요. -ncdw가 적용된 소스에 실행하면 -cdw나 -ncdw나 차이가 없네요. bug-indent@gnu.org에 보고했습니다.

랜덤여신의 이미지

그냥 vim 자체 기능을 이용하는 것은 어떨까요? 8)
find -iname '*.c' -exec vim -c 'norm gg=G' -c 'wq' '{}' \;

익명 사용자의 이미지

좋군요. 그런데 indent--preserve-mtime 이나 -pmt 옵션을 vim 기능으로 대체하려면 어떻게 해야 하나요?

cinsk의 이미지

대부분의 GNU 프로그램이 그렇듯이, man page는 요약본입니다. indent의 자세한 사용법을 보시려면 info를 활용하세요.

$ info indent
rain의 이미지

랜덤의여신 wrote:
그냥 vim 자체 기능을 이용하는 것은 어떨까요? 8)
find -iname '*.c' -exec vim -c 'norm gg=G' -c 'wq' '{}' \;

위와 같은 명령으로 200M정도의 소스를 돌려봤습니다.
2일 동안 돌더군요... ^^; vim의 CPU점유율이 90%에
달하면서...ㅋㅋ

학교 다닐 때 친구가 서버에서 find는 왠만하면 쓰지 말라구
조언을 받은 적이 있었는데 갑자기 생각나네요...

세상에서 가장 이해하기 힘든 것은 내 자신이 그것을 이해할 수 있다는 것이다.
- 알베르트 아인슈타인 -

랜덤여신의 이미지

rain wrote:
랜덤의여신 wrote:
그냥 vim 자체 기능을 이용하는 것은 어떨까요? 8)
find -iname '*.c' -exec vim -c 'norm gg=G' -c 'wq' '{}' \;

위와 같은 명령으로 200M정도의 소스를 돌려봤습니다.
2일 동안 돌더군요... ^^; vim의 CPU점유율이 90%에
달하면서...ㅋㅋ

학교 다닐 때 친구가 서버에서 find는 왠만하면 쓰지 말라구
조언을 받은 적이 있었는데 갑자기 생각나네요...


헉, 소스가 그렇게 많으셨다니...;

저 정렬 방식의 속도가 느린건 find 가 느린탓이라기보다는 매번 vim 이 켜졌다 꺼졌다 하기 때문일것 같네요.
몇십개씩 잘라서 vim 으로 정렬하면 훨씬 더 빠를듯...

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.