Emacs: projectile-переключение между реализацией и тестированием для обнаружения файлов спецификации TypeScript

#emacs #projectile #emacs-projectile

#emacs #projectile #emacs-projectile

Вопрос:

Мне действительно понравилось использовать эту функцию projectile на других языках, но в настоящее время мне трудно найти способ настроить ее для типичного проекта TypeScript.

 ls services/
foo.service.ts foo.service.spec.ts bar.ts bar.spec.ts
 

При выполнении projectile-toggle-between-implementation-and-test в любом из этих 4 файлов я получаю следующую ошибку:

 helm-M-x-execute-command: No matching test file found for project type ‘npm’
 

Другими словами, правило try to find a file in the same directory with/without *.spec.ts* suffix

Ответ №1:

Оказывается, это довольно просто. Вам необходимо оценить следующий фрагмент (обратите внимание на тип проекта npm):

 (defun projectile-test-suffix (project-type)
  "Find default test files suffix based on PROJECT-TYPE."
  (cond
   ((member project-type '(emacs-cask)) "-test")
   ((member project-type '(rails-rspec ruby-rspec)) "_spec")
   ((member project-type '(rails-test ruby-test lein-test boot-clj go)) "_test")
   ((member project-type '(scons)) "test")
   ((member project-type '(npm)) ".spec")
   ((member project-type '(maven symfony)) "Test")
   ((member project-type '(gradle gradlew grails)) "Spec")))
 

Комментарии:

1. Я не знаком с TypeScript, но, возможно, было бы лучше определить некоторый тип проекта TS, если его можно идентифицировать на основе его файловой структуры.