.Ir- লোকাল.এল-এ সাব-ডিরেক্টরিতে ফাইল পাথগুলি কীভাবে ম্যাপ করা হয়?


10

আমি এর ধারণা পছন্দ করি .dir-locals.el। আমার নিজের .dir-locals.elহোম ডিরেক্টরিতে আমার নিজস্ব ফাইল রয়েছে যে ডিরেক্টরিটি বা ফাইলটি খুলতে না .dir-locals.elপারলে আমি যে ফাইলগুলি খোলি সেগুলির জন্য সমস্ত ভেরিয়েবলগুলি সেট করা উচিত However খোলা ফাইলগুলিতে প্রয়োগ করা হয়েছে।

এটি আমার ~/.dir-locals.el:

(("dev/school" .
  ((indent-tabs-mode . nil)
   (c-basic-offset . 4)))
 ("dev/test" .
  ((indent-tabs-mode . nil)
   (c-basic-offset . 4)))
 (c-mode .
  ((c-file-style . "linux")
   (c-basic-offset . 8))))

আমি ফাইল খুললে ~/dev/test/test.cভেরিয়েবল indent-tabs-modeসেট করা হয় tএবং c-basic-offsetহয় 8।

(describe-variable 'c-basic-offset)ফাইলটি আমাকে বলে যে এটি 8থেকে সেট করা আছে ~/.dir-locals.el।

(describe-variable 'indent-tabs-mode)ফাইলটিতে এটির মান ( t) কেবল তার ডিফল্ট অবস্থায় রয়েছে in

আমি কি কোনওভাবে কাঙ্ক্ষিত আচরণ অর্জন করতে পারি? আমি কি ভুল করছি? সাব-ডিরেক্টরিতে ফাইল পাথগুলি কীভাবে ম্যাপ করা হয় ~/.dir-locals.el?

সম্পাদনা:

জোনাথন যেমন পরামর্শ করেছিলেন , আমিও চেষ্টা করেছি:

(;; dev/school subdir
 ("dev/school" .
  ;; dev/school specification for all modes
  (nil . ((indent-tabs-mode . nil)
          (c-basic-offset . 4)))))

এবং কি add-dir-local-variableযোগ করেছে:

(("dev/school"
  (indent-tabs-mode)
  (c-basic-offset . 4)))

দুর্ভাগ্যক্রমে, যারা কেউ কাজ করে না।

উত্তর:


7

ম্যানুয়ালটিতে থাকা ডকুমেন্টেশনের ভিত্তিতে আপনি সাবডিরের নির্দিষ্টকরণের একটি অংশ মিস করছেন missing

নমুনা .ডির-লোকাল.এল

জোর / স্পষ্টকরণের জন্য মন্তব্য সহ ম্যানুয়াল থেকে

(;; Dir settings
 (nil . ((indent-tabs-mode . t)
         (fill-column . 80)))
 (c-mode . ((c-file-style . "BSD")
            (subdirs . nil)))
 ;; Subdir specification
 ("src/imported" .
  ;; Subdir settings
  ((nil . ((change-log-default-name
            . "ChangeLog.local"))))))

সংশোধিত .ডির-লোকাল.এল

আপনি যে ধরণের subdirবৈশিষ্ট্যগুলি সমস্ত মোডে প্রয়োগ করতে চান তা এই ধারণার ভিত্তিতে তৈরি । আপনি যদি চান কেবল তাদের মোড-নির্দিষ্টকরণের সাথে c-modeপ্রতিস্থাপনের জন্য প্রয়োগ করতে পারেন ।nilc-mode

(;; dev/school subdir
 ("dev/school" .
  ;; dev/school specification for all modes
  ((nil . ((indent-tabs-mode . nil)
           (c-basic-offset . 4)))))
 ;; dev/test subdir
 ("dev/test" .
  ;; dev/test specification for all modes
  ((nil . ((indent-tabs-mode . nil)
           (c-basic-offset . 4)))))
 ;; c-mode specification for dir + subdirs
 (c-mode .
  ((c-file-style . "linux")
   (c-basic-offset . 8))))

আমি দস্তাবেজটিতে সেই উদাহরণটি ভুল বুঝেছি, তা স্পষ্ট করার জন্য আপনাকে ধন্যবাদ। যাইহোক, আমি আপনার সংস্করণটি চেষ্টা করেছি (অনুলিপি-পেস্ট) এবং এটি এখনও একইভাবে আচরণ করে। এমনকি 'ইম্যাকস-কিউ' দিয়েও। ডিবাগিংয়ের জন্য পরামর্শগুলিও স্বাগত।
— নারেট

আমিও ব্যবহার করার চেষ্টা add-dir-local-variableএবং এটি যোগ করা হয়েছিল করার ~/.dir-locals.elচেয়ে আমি প্রশ্ন ব্যবহৃত এমনকি খাটো সিনট্যাক্স সঙ্গে ("dev/test" (indent-tabs-mode))। এখনও কাজ করে না, যদিও।
— নারেট

আমি মনে করি আমার সংস্করণটি কিছু প্যারেন অনুপস্থিত ছিল, আমি সেগুলিতে যুক্ত করেছি (স্যাম্পলটির তুলনায় এটি সন্ধান করা এবং সাবডির চশমার চারপাশে অতিরিক্ত কিছু হওয়া উচিত ছিল("dev/test" . ((spec1 ...) (spec2 ...) ...))
— জোনাথন লিচ-পেপিন

হ্যাঁ, এটি কাজ করে! এখন কেবলমাত্র সমস্যাটি হল মোড ভেরিয়েবলগুলি ডিরেক্টরিগুলির চেয়ে বেশি অগ্রাধিকার গ্রহণ করে তবে সেগুলি কেবল সি-মোডের সাথে সম্পর্কিত হওয়ায় আমি সেগুলি init-এর সময় সেট-ডিফল্ট দিয়ে সেট করতে পারি। আপনাকে অনেক ধন্যবাদ.
— 14-28 এ 14

1
এটা অদ্ভুত. আমি আজ ব্যবহার করে একটি পরীক্ষা করেছি ((org-mode . ((org-indent-mode . t))) ("subdir" . ((nil . ((org-indent-mode . nil))))এবং এটি সঠিকভাবে কাজ করেছে (লোকাল ভেরিটি সেট করতে অনুরোধ জানানো হয়েছে)। তালিকার মধ্যে সাব-ডির স্পেসিফিকেশনগুলির উপরে মূলগুলি রাখার চেষ্টা করুন, এটি এটি পাওয়া সর্বশেষ মানটিতে সেট করে possible
— জোনাথন লিচ-পেপিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.