मेकफाइल मोड में इंडेंटेशन को अनुकूलित करना?


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

केवल समस्या यह है कि यह तब काम नहीं करेगा जब आपकी फ़ाइल सूची TABs द्वारा इंडेंट की जाती है, क्योंकि मेरा कोड उन लोगों को अछूता छोड़ देता है।
एलेक्स श्रोडर

ठीक से 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 डॉट्स sth हैं मुझे यकीन नहीं है कि कैसे भरना है ... लेकिन आंशिक सूचक के लिए धन्यवाद।
मेक

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चालू के साथ काम करता है ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.