تعيين إيماكس الخط الافتراضي وجه المساواة العازلة / وضع

StackOverflow https://stackoverflow.com/questions/534307

سؤال

وكيف تغير وجه الافتراضي الذي يستخدم إيماكس إلى نمط النص على أساس لكل واسطة؟

وعلى سبيل المثال، أن أقول إنني سعيد بالفعل مع التخصيصات الوجه الذي لدي، والتي تشمل الافتراضية عرض ثابت الخط. ومع ذلك، في وضع واحد معين (markdown-mode.el، ويقول)، وأريد الخط الافتراضي ليكون متغير العرض.

فمن السهل أن رؤوس النمط، وصلات الخ فريد لتخفيض السعر واسطة: ببساطة ضع المؤشر فوق النص على غرار وM-x describe-face، ثم اضغط على الرابط لتخصيصه

ولكن، وعلى وجه الافتراضي هو وجه استخدامها إذا لم يتم تحديد الوجه الآخر، لذلك هو ليس تحديدا إلى تخفيض السعر واسطة وإذا المعدلة سوف تؤثر على جميع وسائط أخرى.

وماذا يمكن أن السحر أضع في markdown-mode-hook لضبط وجه الافتراضي للمخازن باستخدام هذا الوضع؟

هل كانت مفيدة؟

المحلول

وماذا عن شيء مثل هذا:

(add-hook 'markdown-mode-hook (lambda () (variable-pitch-mode t))

وبعد ذلك يمكنك تخصيص وجه variable-pitch، وسوف جوه أخرى في المنطقة العازلة يرث هذا بدلا من مواجهة الافتراضي.

وقراءة مستندات لbuffer-face-mode لمزيد من التفاصيل التخصيص. (يتم استخدام BufFace أيضا لtext-scale-increase وtext-scale-decrease ... مفيدة جدا).

نصائح أخرى

ولقد لإعطاء إجابة جزئية لأن هذا هو معقدة للغاية لمعرفة على الفور ولقد وضعت بالفعل ميزانية وقتي.

والوجه هو خاصية الإطار. يؤطر يمكن عرض مخازن متعددة في نفس الوقت. وضع خاصية العازلة. عليك أن تسأل كيف تختلف وجهه على أساس لكل واسطة. الجمع بين كل هذا، يبدو أن السؤال لا يمكن أن لا يكون الجواب-الصحيحة تماما واحدة.

ويمكنك تقريب الجواب المطلوب إذا كنت تفترض أن إطار محدد سيعرض أبدا عازلة أكثر من واحد. يمكنك إنجاز في الواقع أن شيئا من هذا القبيل، ولكن تعديلها لاستخدام خاص بتقنية-regexps ومجموعة من regexps تتطابق مع أسماء عازلة تخفيض السعر الوضع الخاص بك.

(append special-display-buffer-names
        '("*VC-log*"
          "*Help*"
          ("*Completions*" 
           (height . 25)
           (font . "8x13"))))

ولكن، وهذا ربما هو ليس ما تريد. يبدو سؤالك يعني تغيير خصائص الوجه من إطار واحد.

وعلى افتراض مرة أخرى أن الإطار سيتم عرض أبدا عازلة احد أو أكثر في وقت واحد، يمكنك محاولة تقديم المشورة التحول إلى العازلة. ولكن هذا قد لا يكون مستوى منخفض بما فيه الكفاية، وأنه قد يكون بطيئا جدا. (غير مجربة)

(defadvice switch-to-buffer (after switch-to-buffer activate compile)
  "change the frame's default face after switch-to-buffer"
  (doSomethingToChangePropertiesOfDefaultFace))

والآن لبلدي الفعلية (غير مكتملة) الجواب ...

وA، وإن كان أكثر تعقيدا، والنهج الأفضل هو إرشاد تخفيض السعر واسطة لاستخدام وجها جديدا لجميع المناطق التي لم يتم تعيينها بالفعل واحدة من وجوه المضمنة. يمكنك إنشاء وجها جديدا مع نسخة وجه واعطائها خصائص مثيرة للاهتمام مع مجموعة-جها *.

وتعديل الخط قفل التخلف تخفيض السعر واسطة لتجاوز الخط قفل fontify-المنطقة وظيفة الافتراضي كما هو موضح في كتلة تعليق قرب خط 946 من الخط lock.el التي تبدأ، "وظائف Fontification". ربما يمكنك استخدام خط قفل الافتراضية-fontify-المنطقة معدلة بشكل طفيف جدا أن يفعل واحد فقط خطوة اضافية على الفور بعد أن يفعله:

  (unless font-lock-keywords-only
    (font-lock-fontify-syntactically-region beg end loudly))

ووخطوة اضافية بتوزيع المنطقة على غرار ما الخط قفل fontify-نحويا-المنطقة يفعل، وكسر المنطقة إلى "مثيرة للاهتمام" المناطق الفرعية. ولكن هذه المرة تجد المناطق الفرعية التي لديها وجه الافتراضي وكنت وضعت النص الملكية تلك المناطق الفرعية إلى الوجه الجديد الذي قمت بإنشائه سابقا.

في كل هذا يبدو وكأنه يجب أن يكون فقط بضعة خطوط من elisp في ملف .emacs الخاص بك، بالإضافة إلى تقديم نسخة من الخط قفل الافتراضية-fontify-المنطقة التي ليس لديها سوى فرق بسيط من النص الأصلي (دعوة واحدة جديدة وظيفة)، بالإضافة إلى تقديم نسخة من الخط قفل fontify-نحويا-المنطقة وتعديله للقيام العطاءات الخاصة بك (الجزء الأكثر صعوبة).

والواقع، إذا كنت "بعد" تقديم المشورة الخط قفل fontify-نحويا-المنطقة فإنك ربما لا تحتاج حتى لتعديل الخط قفل التخلف أو الخط قفل الافتراضية الخاصة بالمناطق fontify.

وووضع variable-pitch رائع. اكتشفت عن ذلك من خلال هذا الموضوع. ولكن يمكن جعلها أكثر رهيبة:

(dolist (hook '(erc-mode-hook
        LaTeX-mode-hook
        org-mode-hook
        edit-server-start-hook
        markdown-mode-hook))
  (add-hook hook (lambda () (variable-pitch-mode t))))

وأضيف أيا كان الوضع الذي تريده الخطوط بلا الرقيق في إلى القائمة.

وانها واضحة في الواقع حتى لايماكس النسخة 22.3.1 ...

ومجرد محاولة ما يلي:

(progn 
  (set-buffer "your buffer name here")
  (overlay-put (make-overlay 0 (buffer-size)) 'face 'your-face))

وهناك كتلة من التعليمات البرمجية التي أجد مريحة للغاية، من EmacsWiki. وميزة هذا هو أنه يمكنك وضع وجهه ليس فقط الخط، ولكن تكوين ملائم :height، :width الخ، وكذلك

;; Use variable width font faces in current buffer
(defun my-buffer-face-mode-variable ()
  "Set font to a variable width (proportional) fonts in current buffer"
  (interactive)
  (setq buffer-face-mode-face '(:family "DejaVu Sans" :height 100 :width semi-condensed))
  (buffer-face-mode))
;; Use monospaced font faces in current buffer
(defun my-buffer-face-mode-fixed ()
  "Sets a fixed width (monospace) font in current buffer"
  (interactive)
  (setq buffer-face-mode-face '(:family "Consolas" :height 100))
  (buffer-face-mode))
;; Set default font faces for Info and ERC modes
(add-hook 'erc-mode-hook 'my-buffer-face-mode-variable)
(add-hook 'Info-mode-hook 'my-buffer-face-mode-variable)

وجنبا إلى جنب مع حزمة load-theme-buffer-local، يمكنك تحديد حتى موضوع اللون لعازلة بسهولة:

(defun my-buffer-face-mode-variable ()
  "Set font to a variable width (proportional) fonts in current buffer"
  (interactive)
  (setq buffer-face-mode-face '(:family "DejaVu Sans" :height 100 :width semi-condensed))
  (buffer-face-mode)
  (load-theme-buffer-local 'leuven (current-buffer)))
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top