Linum.el bazı elisp kodunu değiştiriyorum:
(custom-set-variables '(linum-format 'dynamic))
(defadvice linum-update-window (around linum-dynamic activate)
(let* ((w (length (number-to-string
(+ (count-lines (point-min) (point-max)) 1))))
(linum-format (concat " %" (number-to-string w) "d ")))
ad-do-it))
Ben girinti kapalı-birer idi değiştirerek bir hatayı düzeltmek başardı (count-lines (point-min) (point-max))
için (+ (count-lines (point-min) (point-max)) 1)
. Kolaydı.
Ama şimdi bunu değiştirmek istiyorum, böylece eğer minimum (concat " %" (number-to-string w) "2d ")
sayı 2 olacaksa, eğer koşullu sayı eklenirse, burada satır sayısı sayısı <10 ise.
Bu kolay olmalı! Bir koşul ekleyin ve concat'ı kopyalayın / yapıştırın. Çocuk oyuncağı, değil mi? Demek istediğim, ne yapmam gerektiğini biliyorum ama nadiren elisp'e dokunuyorum ve çok fazla parantez ile herhangi bir şeyi değiştirmem gerektiğinde hep göz korkuyorum.
Anladığım kadarıyla "doğru" stil, kodu girintiye göre yapılandırmak ve sondaki parantezleri kendi yerine bir satırın sonuna sarmaktır. Diğer 'C' tarzı dillerden gelince, kodu hem okuma hem de yazma ile bu şekilde mücadele ediyorum. Benim sorum şu: neyi yanlış yapıyorum? Nasıl orada oturup her parantez saymak zorunda kalmayacak şekilde elisp düzenlemek ve kod etrafında gezinmek için nasıl?
Elisp'te çok derinleşen bir şeyle çalıştığımda, kapımı kapatmam, panjurları çekmem ve K & R-tarzı parantezini konumlandırmaya başlamalıyım, böylece lanet şeyi korkutmadan okuyamaz, değiştiremem.
Açıkçası tüm bunları yanlış yapıyorum. Korkmadan böyle elisp'e nasıl dokunabilirim?
Sorumun stil hakkında bir soru olarak değil, elisp'de nasıl gezinileceği ve düzenleneceği olduğunu lütfen unutmayın. Şimdiden bir stil kılavuzu olarak aşağıdakileri kullanıyorum: https://github.com/bbatsov/emacs-lisp-style-guide
Güncellemeler:
Emacs.stackexchange'e kendinizi zorlamadan önce elisp nasıl düzgün biçimlendirilir:
Elisp'inizi işaretleyin ve performans gösterin M-x indent-region
.
Sorun Çözümü:
Minimum iki genişliğe sahip linum için doğru bir yaslama gerçekleştirmeyi bilmek isteyenler için işte çözüm:
(defadvice linum-update-window (around linum-dynamic activate)
(let* ((w (length (number-to-string
(+ (count-lines (point-min) (point-max)) 1))))
(linum-format (if (> w 1)
(concat " %" (number-to-string w) "d ")
" %2d ")))
ad-do-it))
%2d
çünkü genişlik 3 veya daha fazla karaktere yuvarlandıktan sonra sağa yaslanmış getirmeden sola yaslanmış getir.
highlight-parentheses
; rainbow-delimiters
; vb. highlight-parentheses
Son renklendirilmiş parantezleri kaldırmadan kaydırmaya izin veren kendi basitleştirilmiş sürümüm: stackoverflow.com/a/23998965/2112489 Gelecekte, müşteri / iş parçacığı başına bir soru.