Dosya doldurma modunda girintiyi özelleştirme?


11

Markalarımda, devam hatları için aşağıdaki girintiyi tercih ederim:

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

LIBS:=                 \
    libsth1.so         \
    libelsewhere.so

yine de, makefile modu bunu aşağıdaki şekilde girintili hale getirir (dosya veya bölgeyi yeniden eklemeniz istendiğinde):

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

LIBS:=             \
libsth1.so         \
libelsewhere.so

Bir şekilde eski varyantı kullanacak şekilde yapılandırmak mümkün mü (= devam satırlarını 4 boşluk veya sekme ile girintilemek)?


indent-according-to-modeKomuta ne olacak ?
Andriy Tykhonov

Yanıtlar:


1

Purple_arrows'un çözümü üzerine inşa etmek:

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

Tek sorun, dosya listeniz SEKMELER tarafından girintili ise, bu çalışmaz, çünkü benim kod bu el değmemiş bırakır.
Alex Schröder

girintiyi 4'e düzeltmek iyi bir çözüm değildir, ya FILESve LIBSuzunsa ve sonra bir öğe :=varsa ve aşağıdaki öğeleri ilk olanla daha iyi hizalarsanız :=?
CodyChan

Sorunun sorduğu dört boşluk.
Alex Schröder

0

Evet. Bir şekilde yapılandırmak mümkündür.

(Snark için özür dileriz.)

Girintiler bir çizgi istediğiniz gibi, daha sonra belirlemesinin bir fonksiyon yazın o değişkenin değeri olarak işlev indent-line-functioniçin makefile-mode. Gibi bir şey:

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

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

Peki, bu 3 nokta sth nasıl doldurulur emin değilim ... Ama kısmi işaretçi için teşekkürler.
Mekk

0

Kullanmanız durumunda aggressive-indent-mode, makefile-modeşu listeye koymamda bana yardımcı oldu aggressive-indent-excluded-modes:

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

Bunun yalnızca global-aggressive-indent-modeaçıkken çalıştığını unutmayın .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.