মেকফাইল মোডে ইনডেন্টেশন কাস্টমাইজ করছেন?


11

আমার মেকফিলগুলিতে, আমি ধারাবাহিকতা রেখাগুলির জন্য নিম্নলিখিত ইনডেন্টেশনটি পছন্দ করি:

FILES:=                \
    file1.cpp          \
    file2.cpp          \
    fileYetAnother.cpp

LIBS:=                 \
    libsth1.so         \
    libelsewhere.so

তবুও, মেকফাইল মোড এটিকে নিম্নোক্তভাবে প্রবেশ করে (যখন ফাইল বা অঞ্চল পুনরায় পাঠাতে বলা হয়):

FILES:=            \
file1.cpp          \
file2.cpp          \
fileYetAnother.cpp

LIBS:=             \
libsth1.so         \
libelsewhere.so

পূর্বের বৈকল্পটি (4 স্পেস বা ট্যাব দ্বারা = ইনডেন্ট ধারাবাহিকতা রেখা) ব্যবহার করার জন্য কি কোনওভাবে এটি কনফিগার করা সম্ভব?


indent-according-to-modeকমান্ডের কী হবে ?
অ্যান্ড্রি টাইখনভ

উত্তর:


1

বেগুনি_রোজের সমাধানের উপর বিল্ডিং:

(defun my-makefile-indent-line ()
  (save-excursion
(forward-line 0)
(cond
 ;; keep TABs
 ((looking-at "\t")
  t)
 ;; indent continuation lines to 4
 ((and (not (bobp))
       (= (char-before (1- (point))) ?\\))
  (delete-horizontal-space)
  (indent-to 4))
 ;; delete all other leading whitespace
 ((looking-at "\\s-+")
  (replace-match "")))))

(add-hook 'makefile-mode-hook
      (lambda ()
    (setq-local indent-line-function 'my-makefile-indent-line)))

একমাত্র সমস্যাটি হ'ল এটি যদি আপনার ফাইল তালিকটি টিএবস দ্বারা ইন্টেন্ট করা থাকে তবে এটি কাজ করবে না, কারণ আমার কোডগুলি সেগুলিকে ফেলেছে।
অ্যালেক্স শ্র্রেডার

4 এ ইন্ডেন্টেশন ঠিক করে নেওয়া ভাল সমাধান নয়, তবে কী FILESএবং LIBSযদি দীর্ঘ হয় এবং এর পরেও একটি উপাদান থাকে :=এবং আপনি নিম্নলিখিত উপাদানগুলির সাথে প্রথমটির সাথে আরও ভালভাবে সারিবদ্ধ হন :=?
কোডিচান

চারটি স্পেসই প্রশ্নটি জিজ্ঞাসা করেছিল।
অ্যালেক্স শ্রাইডার

0

হ্যাঁ. এটি কোনওরকমভাবে কনফিগার করা সম্ভব।

(স্নার্কের জন্য ক্ষমা চেয়ে।)

একটি ফাংশন যে ইনডেন্ট একটি লাইন আপনি যেভাবে চান, তাহলে সেট লিখুন যে ভেরিয়েবলের মান হিসেবে ফাংশন indent-line-functionজন্য makefile-mode। কিছুটা এইরকম:

(defun my-makefile-indent-line ()
  ...)

(add-hook 'makefile-mode-hook (lambda () (setq-local indent-line-function 'my-makefile-indent-line)))

ঠিক আছে, এই 3 টি বিন্দুগুলি আমি কীভাবে পূরণ করব তা নিশ্চিত নই ... তবে আংশিক পয়েন্টারের জন্য ধন্যবাদ।
মেকক

0

আপনি যদি ব্যবহার করছেন তবে aggressive-indent-modeএটি আমাকে makefile-modeতালিকাটিতে রাখতে সহায়তা করেছে aggressive-indent-excluded-modes:

(global-aggressive-indent-mode)
(add-to-list 'aggressive-indent-excluded-modes 'makefile-mode)

মনে রাখবেন এটি কেবল global-aggressive-indent-modeচালু থাকা নিয়েই কাজ করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.