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.