방금 친숙한 프로그래밍 언어 (주로 HTML / XML 및 C와 같은 언어)와 함께 잘 작동하는 jEdit의 탄력적 탭 스톱 구현을 시도했습니다. 그러나 Python 코드를 사용하면 렌더링 방법이 표시됩니다 (탭 대신 공백이 정렬되는 방식을 보여주는 공간).
def foo(x):
'''<1 tab before the docstring.
No tab <tab
No tab <tab
<tab <another tab
<tab <another tab
<tab'''
if 1 or 2: #<Tab before this comment
yield True
간격에 의존하는 Python과 같은 언어의 경우 탄력적 인 탭 중지에서 제공하는 기능을 비활성화하지 않으면이 기능이 중단됩니다. Vim 및 Emacs와 같은 편집기는 옵션의 이름과 비활성화 방법을 알고 있으면 대부분의 기능을 비활성화 할 수 있지만 위와 같은 코드에서는이 기능을 비활성화해야합니다.
즉, x86 ASM, C, C ++, Go, XML, HTML 및 공백에 크게 의존하지 않는 다른 사람들에게 좋습니다.
import (
"fmt" // We love formatting functions.
"io" // Because I/O is useful.
"os" // Can't open a file without os.Open!
)
type Foo struct {
Field1 int // This is properly aligned
ReallyLongField2 string // with this.
privateField io.Reader // Elastic tabstops are great for Go.
}
Scheme과 같은 Lisp 방언에는 탄력적 인 탭 스톱을 "못생긴"코드로 만드는 자체 규칙이 있습니다. tabstop 설정을 2 열 규칙에 맞게 변경하고 비정상적인 위치에 함수와 인수 사이에 tabstops를 삽입하면 다음과 같습니다.
(let loop ((n 1))
(if (> n 10)
'()
(cons n
(loop (+ n 1)))))
더 읽기 쉬운 대 :
(let loop ((n 1))
(if (> n 10)
'()
(cons n
(loop (+ n 1)))))
물론 이것은 파이썬 예제만큼 나쁘지는 않지만 코드의 가독성을 확실히 감소시킵니다. C # 또는 C ++와 같은 코드로 코딩 할 때 기능을 매우 좋아하지만 공백이나 기능이 시각적으로 도움이되는 Python 또는 Scheme과 같은 언어로 코딩 할 때는 기능을 싫어합니다. 탄력적 인 탭 스톱은 별도의 들여 쓰기 유틸리티 없이도 도움이되도록 특별히 만들어졌지만 모든 프로그래밍 언어에 적용되는 것은 아닙니다.