নির্দিষ্ট ফাইল টাইপের কোনও ফাইল খোলার সময় কমান্ড রান করুন


14

আমি যখন একটি নির্দিষ্ট ফাইল টাইপের একটি ফাইল খুলি তখন আমার জন্য কয়েকটি কমান্ড চালানোর জন্য একটি লিস্প স্ক্রিপ্ট পাওয়ার চেষ্টা করছি। আমি জানি যে আমি সঠিক থিম ফাইলে কাজ করছি কারণ যদি আমি এটি থেকে থিমটি সরিয়ে ফেলি, আমি যখন এটি শুরু করি তখন ইমাসের কোনও থিম থাকে না।

এটি যে স্ক্রিপ্টটি আমি ব্যবহার করছি যা কাজ করে না (কোনও ত্রুটি বা কোনও কিছুই নয়):

(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)

এই প্রসঙ্গে, "লোড" এর অর্থ "লিস্প কোড হিসাবে লোড"। আমি মনে করি আপনি পরিবর্তে ফাইল-হুক চান (নোট করুন যে এগুলি একটি আর্গুমেন্টের সাথে ডাকা হয় না! পরিবর্তে বাফার-ফাইল-নাম ব্যবহার করুন)। আপনি অটো-মোড-আলিস্ট ব্যবহার করতে এবং আপনার নিজস্ব প্রধান মোডটি সংজ্ঞায়িত করতে পছন্দ করতে পারেন।
ইয়ংফ্রোগ

3
আসলে, দেখে মনে হচ্ছে আপনি একটি মোড হুক চান।
ড্যান

আপনি এখনও এই সমস্যাটিতে আঘাত করেন নি কারণ আপনার ফাংশনটি চালিত হচ্ছে না তবে যখন আপনি জানেন যে উপরেরটি বৈধ লিস্প নয়। আপনার whenকলের শরীরটি বিকৃত। দুটি ফাংশন কলগুলি তাদের প্রথম বন্ধনী হিসাবে ঘিরে রাখা যায় না। আপনার কোড এবং @ এসডিএস এর মধ্যে পার্থক্যটি নোট করুন
জর্ডন বিওনদো

উত্তর:


16

ইমাস টার্মিনোলজিতে, এটি দুটি পৃথক পদক্ষেপ:

  • প্রধান মোডের.ts সাথে এক্সটেনশনের সাথে ফাইলগুলি সংযুক্ত করুন typescript-mode
  • tss-setup-current-bufferটাইপস্ক্রিপ্ট মোড শুরু হয়ে গেলে ফাংশনটি চালান ।

নির্দিষ্ট ফাইলের নামের জন্য কোন প্রধান মোডটি ব্যবহার করতে হবে তা চয়ন করতে, ভেরিয়েবলটিতে একটি এন্ট্রি যুক্ত করুন auto-mode-alist। আপনার init ফাইলটিতে নিম্নলিখিত লাইনটি রাখুন:

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

\.ts\'.tsএক্সটেনশনটির সাথে ফাইলের নামের সাথে মেলে এমন একটি নিয়মিত প্রকাশ ।

ফাংশন চালানোর জন্য tss-setup-current-bufferযখনই টাইপ করা বিষয় মোড শুরু (আমি অনুমান আপনি এটি এমনকি যে হবে না টাইপ করা বিষয় মোড ফাইলের জন্য চালাতে চান .tsএক্সটেনশন), টাইপ করা বিষয় মোড প্রারম্ভে থেকে এটি যোগ হুক

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

আপনি কীভাবে ইনস্টল করেছেন typescript.elএবং তার উপর নির্ভর করে আপনাকে এই tss.elঘোষণা করতেও পারে যে ফাংশনগুলি typescript-modeএবং tss-setup-current-bufferসেই ফাইলগুলি থেকে লোড করতে হবে be এটি লোড করা এড়ায় typescript.elএবং tss.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-alistনির্ধারণ যখন টাইপ করা বিষয়-মোড চালু করা ব্যবহার করা উচিত, এবং একটি typescript-mode-hookচালানোর জন্য ব্যবহার করা উচিত tss-setup-current-buffer
জর্ডন বিয়নদো

এটি করার সাধারণ উপায়টি ব্যবহার (add-to-list 'auto-mode-alist '("\\.ts\\'" . typescript-mode))এবং (add-hook 'typescript-mode-hook 'tss-setup-current-buffer)হবে and
জর্ডন বিয়নদো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.