سؤال

هناك ما يسمى بالتنسيقات الصارمة، مثل pdb - حيث يتم تحديد معنى الرمز من خلال رقم عمود الرمز.على سبيل المثال هنا هي مواصفات تنسيق pdb المذكور أعلاه.

هل هناك طريقة يمكنني من خلالها تطبيق لون الوجه على نطاق الأعمدة؟

يمكن للمرء عادةً إضافة تعبير عادي ليتم تسليط الضوء عليه، على سبيل المثال للجلسة الحالية بالطريقة التالية:

(font-lock-add-keywords nil '(("\\[\\(.+?\\)\\]" . font-lock-keyword-face)))

فهل هناك طريقة لتحديد ذلك الوجه في الأعمدة، على سبيل المثال 7-11 - يجب أن يكون أحمرًا على سبيل المثال؟

يحرر:

إذن الجواب هو:

(font-lock-add-keywords nil '(("^.\\{2\\}\\(.\\{2\\}\\)" 1 font-lock-warning-face)))
هل كانت مفيدة؟

المحلول

حدد regexp الذي سيحدد العمود المناسب.على سبيل المثال لتحديد العمود الثالث (بافتراض أن الأعمدة تحتوي على حرف فقط لوضوح المثال) يمكنك القيام بشيء مثل "\(?:[a-z]+ \)\{2\}\([a-z]+\)" ومن ثم المباراة على المجموعة الأولى.

بالطبع يمكنك إنشاء مثل هذه السلسلة باستخدام format وتمرير بعض الحجج لمزيد من المرونة.

(font-lock-add-keywords nil '(("\\(?:[a-z]+ \\)\\{2\\}\\([a-z]+\\)" 1 font-lock-warning-face)))

وكإتجاه آخر، تم العثور على الكود التالي في وضع المسافة البيضاء الذي يسلط الضوء على الأحرف فوق رقم معين:

;; Show "long" lines
(list
(let ((line-column (or whitespace-line-column fill-column)))
   (format
    "^\\([^\t\n]\\{%s\\}\\|[^\t\n]\\{0,%s\\}\t\\)\\{%d\\}%s\\(.+\\)$"
    whitespace-tab-width
    (1- whitespace-tab-width)
    (/ line-column whitespace-tab-width)
    (let ((rem (% line-column whitespace-tab-width)))
      (if (zerop rem)
      ""
    (format ".\\{%d\\}" rem)))))
 (if (memq 'lines whitespace-active-style)
     0              ; whole line
   2)               ; line tail
 whitespace-line t)

نصائح أخرى

يتصفع التالي التلوين في البداية إلى النص من العمود 7 إلى 11: giveacodicetagpre.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top