تسليط الضوء على تسليط الضوء على جمل الثعبان سلسلة البيثون كما رمز

لدي بعض رمز python ، يحتوي على بعض حرفية سلسلة طويلة تحتوي على المزيد من رمز python. يجب أن تكون هذه السلاسل في معظم الأحيان ملونة بشكل موحد ، كما يحدث افتراضيًا.

ومع ذلك ، أود أن أتمكن في بعض الأحيان من تضييق الخزن المؤقت الخاص بي إلى أي من هذه السلاسل ، ومن ثم نحدد بناء الجملة emacs كما لو كانت رمزًا ، وليس سلاسل داخل الكود (أي كما لو كانت "" "</رمز> لم تكن هناك في المخزن المؤقت الأصلي)

هل هناك أي طريقة للقيام بذلك ، وهذا لا ينطوي على الكثير من elisp؟

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

5
لن تضيق فقط على محتويات السلسلة ، وليس بما في ذلك علامات الاقتباس ، حل المشكلة؟
وأضاف المؤلف Louis Salin, مصدر
jmlorenzi بعد أن تضيق يمكنك تغيير الوضع الرئيسي لدعم أي شيء تريده. ثم قم بتغييره مرة أخرى بمجرد اتساع. يتحدثlindydancer عن حزمة string ، لكنه لن يدعم التمييز كما تريد.
وأضاف المؤلف Louis Salin, مصدر
منذ فترة ، رأيت شخصًا يفعل شيئًا مشابهًا في وضع HTML ، لكني أتذكر الآن أين رأيت ذلك. على أي حال ، كانت الفكرة الأساسية هي نسخ الشفرة المدمجة إلى مخزن مؤقت جديد وعرضها باستخدام الوضع الرئيسي المناسب. وبمجرد الانتهاء من ذلك ، سيؤدي تسلسل المفاتيح السحرية (مثل C-c C-c) إلى نسخ النتيجة مرة أخرى في مكانها الأصلي. لسوء الحظ ، فإنه يتطلب كتابة بعض إيليز ، أخشى.
وأضاف المؤلف Daniel McPherson, مصدر
JordonBiondo في بلدي ، لا يضيق تضيق إلى سلسلة (بدون علامات اقتباس) تسليط الضوء ... أيضا تشغيل font-lock-fontify-buffer لا يساعد
وأضاف المؤلف Faito Dayo, مصدر
ردًا عنLindydancer اعتقدت أن شيئًا من هذا القبيل يجب أن يكون ممكنًا ، ولكن مهارتي البعيدة منخفضة حقًا ... أتمنى أن أحصل على بعض الوقت لمحاولة القيام بذلك ...
وأضاف المؤلف Faito Dayo, مصدر

1 إجابة

يمكن إجراء ذلك باستخدام polymode .

(require 'polymode)
(defcustom pm-host/python
  (pm-bchunkmode "python"
                 :mode 'python-mode
                 :font-lock-narrow nil)
  "Python host chunkmode"
  :group 'hostmodes
  :type 'object)

(defcustom pm-inner/python
  (pm-hbtchunkmode "python"
                   :mode 'python-mode
                   :head-reg  "\"\"\""
                   :tail-reg  "\"\"\"")
  "Python typical chunk."
  :group 'innermodes
  :type 'object)

(defcustom pm-poly/python
  (pm-polymode-one "python"
                   :hostmode 'pm-host/python
                   :innermode 'pm-inner/python)
  "Python typical polymode."
  :group 'polymodes
  :type 'object)

(define-polymode poly-python-mode pm-poly/python)
  1. C-x b test.py RET
  2. M-x poly-python-mode RET

باستخدام هذا الوضع ، يتم تمييز السلاسل الثلاثية المشار إليها برمز python. (عادة ليست فكرة جيدة ، ولكن يمكنك تبديلها).

enter image description here

في الوقت الحالي ، يبدو أن polymode لديه مشكلات في تحديث قفل الخط. ومع ذلك ، يجب أن هذا العمل في الممارسة.

4
وأضاف
PythonNut هذا لا يعمل بالنسبة لي ... ربما هي المشاكل مع قفل الخط الذي ذكرته؟ ما هي هذه القضايا؟ أنا أستخدم Emacs 24.3.1
وأضاف المؤلف Faito Dayo, مصدر
أرى الآن ... في الواقع أن تغيير النص يجبر التحديث ... إنه أمر مؤسف ليس تلقائيًا. على أي حال ، شكرا جزيلا للإجابة !!
وأضاف المؤلف Faito Dayo, مصدر
elethan ، كما ألاحظ في النهاية ، يبدو أن هناك بعض المشاكل المتعلقة قفل الخط عند تبديل. أنا أبحث في ذلك ، ومن المرجح أن ينتج عن ذلك مشكلة لمعرفة ما إذا كان يمكن حلها.
وأضاف المؤلف PythonNut, مصدر
elethan آه ، لا تبديل وسائط رئيسية. ؛) ستحتاج إلى استخدام python-mode للعودة إلى غير polymode.
وأضاف المؤلف PythonNut, مصدر
jmlorenzi ما هي المشكلة بالضبط؟ إذا كانت المشكلة هي أنه لن يبدأ التشغيل ، حاول إجراء تعديل على رمز python داخل علامات الاقتباس. يجب أن يجبرها على تسليط الضوء. هذا هو الخطأ الذي كنت أشير إليه
وأضاف المؤلف PythonNut, مصدر
آمل أن يعمل هذا من أجل OP ، ولكن بالنسبة لي يبدو أنه يعمل بشكل رائع! أنت تقول أنه يمكنك تبديلها ، ولكن كيف تفعل ذلك؟ يمكنني تبديله ، ولكن لا يمكنني معرفة كيفية تبديله ...
وأضاف المؤلف Lord Loh., مصدر
ولكن عندما أقول لا أستطيع تبديلها ، أعني أنني لا أستطيع معرفة الأمر. أتفهم ما إذا لم يتم إبطاء تمييز البنية ، ولكن عندما أتصل بـ وضع python-mode مرة ثانية ، ما زلت أرى PM في سطر الوضع ، مع الإشارة إلى انها لا تزال نشطة
وأضاف المؤلف Lord Loh., مصدر
حسنًا ، يعمل التبديل إلى python-mode مثل السحر! لم أكن أدرك أنني قد تركت نمط الثعبان ... (راجع للشغل ، سأمنح الجائزة عندما يسمح لي الموقع أيضًا. شكرًا على الإجابة ... على الرغم من أنها ليست سؤالي ، هاها!)
وأضاف المؤلف Lord Loh., مصدر