특정 파일 형식의 파일을 열 때 명령 실행


14

특정 파일 형식의 파일을 열 때 lisp 스크립트를 사용하여 일부 명령을 실행하려고합니다. 테마를 제거하면 emacs가 테마를 시작할 때 테마가 없기 때문에 올바른 init 파일에서 작업하고 있음을 알고 있습니다.

이것은 내가 사용하고있는 스크립트이며 작동하지 않습니다 (오류 또는 아무것도 없음).

(defun my-project-hook (filename)
  (when (string= (file-name-extension filename) "ts")
    ((typescript-mode)
     (tss-setup-current-buffer))
  ) 
)

(add-hook 'after-load-functions 'my-project-hook)

이 문맥에서 "로드"는 "리스프 코드로로드"를 의미합니다. 대신 find-file-hook을 원한다고 생각합니다 (이것은 인수로 호출되지 않습니다! 대신 buffer-file-name을 사용하십시오). 자동 모드를 사용하고 자신의 주요 모드를 정의 할 수도 있습니다.
YoungFrog

3
실제로는 모드 후크를 원하는 것 같습니다.
Dan

함수가 실행되지 않아서 위의 내용이 유효하지 않다는 것을 알기 때문에 아직 문제를 해결하지 못했습니다. when전화 본문 이 잘못되었습니다. 두 함수 호출은 괄호로 둘러 쌀 수 없습니다. 코드와 @sds의 차이점에 주목하십시오
Jordon Biondo

답변:


16

이맥스 용어에서 두 단계는 다음과 같습니다.

  • .ts확장명을 가진 파일을 주 모드 와 연결하십시오 typescript-mode.
  • tss-setup-current-bufferTypescript 모드가 시작될 때 기능을 실행하십시오 .

특정 파일 이름 에 사용할 주 모드 를 선택하려면 변수에 항목을 추가하십시오 auto-mode-alist. init 파일에 다음 줄을 넣으십시오.

(add-to-list 'auto-mode-alist '("\\.ts\\'" . typescript-mode))

\.ts\'파일 이름과 .ts확장자 를 일치시키는 정규식 입니다.

tss-setup-current-bufferTypescript 모드가 시작될 때마다 함수를 실행하려면 ( .ts확장자 가없는 Typescript 모드 파일에서도 실행하고 싶다고 가정 ) Typescript 모드 시작 후크에 추가하십시오 .

(add-hook 'typescript-mode-hook 'tss-setup-current-buffer)

설치 방법에 따라 typescript.el그리고 tss.el, 당신은 또한 기능을 선언해야 typescript-mode하고 tss-setup-current-buffer해당 파일에서로드해야합니다. 이 피합니다로드 할 필요 typescript.eltss.el이맥스 시작하자마자 : 그들이 요구에로드됩니다, 당신은 처음 열 때 .ts파일을 실행하거나 typescript-mode명시 적으로.

(autoload 'typescript-mode "Major mode for typescript files" t)
(autoload 'tss-setup-current-buffer "Set up the current file for TSS" t)

9

당신이 찾고있는 것은 find-file-hook:

(add-hook 'find-file-hook 'my-project-hook)
(defun my-project-hook ()
  (when (string= (file-name-extension buffer-file-name) "ts")
    (typescript-mode)
    (tss-setup-current-buffer)))

4
작동하지만 파일을 찾을 때 주 모드를 시작하거나 주 모드에 대한 사용자 정의를 설정하는 올바른 방법이 아니라는 점을 지적해야합니다. 는 auto-mode-alisttypescript-mode 시작시기를 결정하는 데 사용해야하며을 typescript-mode-hook실행하는 데 사용해야합니다 tss-setup-current-buffer.
Jordon Biondo

사용 (add-to-list 'auto-mode-alist '("\\.ts\\'" . typescript-mode))하고 (add-hook 'typescript-mode-hook 'tss-setup-current-buffer)일반적인 방법입니다.
Jordon Biondo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.