.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.