سؤال

أحاول استخدام Flymake لتشغيل Pyflakes ، كما هو مقترح هنا

يعمل هذا بشكل جيد للملفات المحلية ، ويعمل تقريبًا مع الملفات البعيدة مع القليل من التغيير والتبديل ، لكنني تركت مشكلة حيث يعدل Flymake/Pyflakes "المخزن المؤقت عندما يتم تشغيله (على الرغم من أنه لا يوجد شيء يتغير بالفعل) ، مما يجعل إنه أمر غير مجدي قليلاً في الممارسة (على سبيل المثال حفظ ملف يعمل على تشغيل flymake الذي يعدل على الفور المخزن المؤقت مرة أخرى).

إليك ما فعلته للعمل تقريبًا:

  1. تثبيت Pyflakes على المربع البعيد.
  2. تخصيص بلدي tramp-remote-process-environment متغير بحيث يمكن العثور على أفعى في طريقها
  3. تستخدم متغيرًا من الرمز من رابط الويكي أعلاه. من الواضح أنني استبعدت التحقق من تعطيله للمخازن المؤقتة عن بُعد. أيضا ، (when (load "flymake" t) ...) لا يبدو أن البناء يعمل كما كنت أتوقع ، لكنني لست قلقًا جدًا بشأن ذلك.
  4. إعادة تعريفها (لأغراض الاختبار-يجب أن تكون المشورة جيدة إذا كان من الممكن عمل ذلك) flymake-start-syntax-check-process الوظيفة بحيث تستخدم start-file-process (الذي يعمل مع Tramp) بدلاً من start-process (الذي لا).

لا يبدو أن التغيير في #4 يسبب أي مشكلات عند معالجة ملف محلي ، ولكن على الرغم من أن هذا يمكّن الآن Flymake من تشغيل Pyflakes عن بُعد للملفات البعيدة (يتم تمييز الأخطاء كما هو متوقع) ، في هذه الحالة "تم تعديل" المخزن المؤقت كلما ركض flymake.

أنا أظن ذلك start-file-process, بالنسبة للعمليات عن بُعد ، يؤدي إلى بعض قيمة/بيانات الإرجاع الإضافية التي لا تحدث للعمليات المحلية.

هل لدى أي شخص أي رؤية/نصيحة؟

  • emacs 23.1 و 23.2 على Ubuntu
  • بيثون 2.4.6
  • Pyflakes 0.4.0 (عبر easy_install)
هل كانت مفيدة؟

المحلول

تحتاج إلى إخبار flymake خلق إنها نسخة من المخزن المؤقت مكان ما محليا ، أفضل استخدام $TMP دليل منذ هذا ايضا يسمح لي باستخدام Tramp على الملفات في الدلائل التي لا أملك أذونات الكتابة إليها.

قد ترغب في الخروج من شوكة flymake-python لأنه يفعل كل هذا.

نصائح أخرى

لدي هذا ثابت في شوكة flymake (https://github.com/illusori/emacs-flymake).

سيقوم إما بتشغيل مجموعة بناء الجملة على الجهاز البعيد عبر Tramp ، دون مشكلة تعديل المخزن المؤقت الذي تراه ؛ أو يمكنك ضبط flymake-run-in-place إلى nil وسيقوم بإجراء فحص بناء الجملة على الجهاز المحلي ، تمامًا مثل Flymake على مخزن مؤقت غير منتظم.

نظرًا لأنه ثابت على مستوى Flymake ، يعمل هذا الإصلاح لجميع اللغات والتحقق من بناء الجملة بدلاً من مجرد Pyflakes.

إذا كنت مهتمًا بتفاصيل سبب حدوثها ، بشكل أساسي عندما يبدأ معالج الترام في عملية بدء تشغيل ملفات البداية ، فإنه يتفريغ رسالة تسجيل الدخول للاتصال على نهاية المخزن المؤقت الحالي قبل إرفاق أي مرشح إخراج معالجة.

عادةً ما يتجلى هذا عندما يرى الأشخاص محتويات /etc /المشكلة في نهاية ملفهم إلى جانب "لديك بريد". وهلم جرا.

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

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