.Dir-local.el ফাইল অবস্থানের তুলনায় কীভাবে আমি ডিরেক্টরি স্থানীয় পরিবর্তনশীল সেট করতে পারি?


15

আমি প্রায়শই নিজেকে এমন পরিস্থিতিতে দেখতে পাই যেখানে আমাকে স্থানীয় স্থানীয় ভেরিয়েবল হিসাবে আপেক্ষিক পাথগুলি রাখতে বলা হয়। উদাহরণস্বরূপ cmake- আদর্শ এর cmake-ide-project-dirএবং cmake-ide-build-dir। অবশ্যই এটি খুব বহনযোগ্য নয়।

পরিবর্তে তাই

.dir-locals.el:

((nil . ((cmake-ide-project-dir . "/home/user/code/project"))))

আমি কিছু চাই

((nil . ((cmake-ide-project-dir . directory-of-current-dir-locals-file))))

আমি কীভাবে এ জাতীয় পরিবর্তনশীল সংজ্ঞা দিতে পারি directory-of-current-dir-locals-file? এবং আমি উদাহরণস্বরূপ সেট করব cmake-ide-build-dir, যা সাধারণত (concat directory-of-current-dir-locals-file "build")?

উত্তর:


7

আমার সমাধান এখন পর্যন্ত ( এই স্ট্যাকওভারফ্লো উত্তরের উপর ভিত্তি করে ):

.dir-locals.el:

;;; Directory Local Variables
;;; For more information see (info "(emacs) Directory Variables")

((nil . ((eval . (set (make-local-variable 'my-project-path)
                      (file-name-directory
                       (let ((d (dir-locals-find-file ".")))
                         (if (stringp d) d (car d))))))
         (cmake-ide-project-dir . my-project-path)
         (eval . (setq cmake-ide-build-dir (concat my-project-path "build")))
         )))

4
আপনি এটিও ব্যবহার করতে পারেন(locate-dominating-file default-directory ".dir-local.el")
ইবিজামান

0

আপনি এর সাথে ভেরিয়েবল সংজ্ঞায়িত করতে পারেন (defvar directory-of-current-dir-locals-file "/home/user/code/project")


2
দুঃখিত, আমার প্রশ্নটি পরিষ্কার ছিল না। তবে ধারণাটি ছিল নিখুঁত পথ ব্যবহার না করা । যেহেতু আপনি জানেন যে আপনি .dir-locals.elফাইলের সাথে সম্পর্কিত কিছুতে ভেরিয়েবল সেট করতে চান ।
ফ্লো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.