어휘 및 동적 범위 지정 (결과적으로 파일 변수)에 대해 배우고 있습니다.로컬 파일 변수를 정의 할 때 세미콜론의 역할
많은 리소스가 Specifying Local File Variables 문서, 일반 과제의 형태는 그 형태에 따라
-*- mode: modename; var: value; … -*-
이다,
;;; -*- lexical-binding: t -*-
그러나
;; -*- lexical-binding: t -*-
또는
를 사용하여lexical-binding
파일 변수를 업데이트하는 것이 좋습니다 , 나는 a를 기대할 것이다
lexical-binding
모양은 다음과 같습니다.
-*- lexical-binding: t -*-
그래서 테스트 해 보았습니다. 나는 lexical-scratch.el
이라는 파일을 가지고있다. 첫 번째 줄은 파일 변수 사양 중 하나입니다 (세미콜론 사용 또는 사용 안 함). 나는 버퍼를 저장하고 M-x revert-buffer
을 호출한다. 그럴 때 C-h v lexical-binding
을 호출하면 변수가 업데이트 되었음이 표시됩니다. 이 절차를 t
대신 nil
을 사용하여 반복하여 변수를 재설정 할 수 있습니다.
모든 양식을 실행하면 파일 변수를 업데이트하는 것과 동일한 효과가 나타납니다.
주요 세미콜론이 할당을 주석 처리하지 않는 이유는 무엇입니까? 그것은 세미콜론이 파일 변수 사이의 구분자로 취급되기 때문입니까? 그렇다면 Emacs는 주석과 구분 기호를 나타내는 세미콜론을 어떻게 구분합니까?
파일 로컬 변수는 C로 구현 된 Emacs의 부분에서 왔습니까? –
필요는 없습니다. 이맥스로 편집 한 동일한 파일은 다른 소프트웨어 (HTML 파서, 파이썬 인터프리터, C 컴파일러 등)에서 읽을 수 있으므로 파일의 의미를 깨뜨리지 않도록 파일 로컬 변수 토큰에 주석을 달 수 있어야합니다. 세미콜론없이'eval-buffer'를 시도하면 실패합니다. – Juancho
나는 당신의 코멘트 Lorem Ipsum을 이해하지 못한다. 그러나 나는 그 대답에서 "C 프로그램"에 대한 언급으로 혼란 스러울 것이라고 생각한다. '- * -'줄은 파일의 일부이기 때문에 어떤 파일이든 파싱해야 할 필요가있는 것은 무엇이든 볼 수 있지만 * 그러한 구문 분석기에 대해서는 유효한 구문 *이 될 수 없으므로 필요합니다. 의견. 주석 구문은 파일의 종류에 따라 다릅니다. 예 : '// - * - indent-tabs-mode : nil; - * -'는 자바 스크립트 프로그램에서 사용될 수 있습니다. – phils