هل هناك أي طريقة لتنسيق عازلة بيثون كاملة في emacs مع الصحافة الرئيسية؟

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

  •  18-09-2019
  •  | 
  •  

سؤال

أنا أبحث عن أي وسيلة للحصول على تنسيق emacs مخزن مؤقت بيثون عن طريق ضرب عدد قليل من المفاتيح. بالتنسيق، أعني:

  1. استبدال علامات التبويب مع 4 مسافات
  2. لف جميع الخطوط الطويلة بشكل صحيح في 79 حرف. ويشمل ذلك التفاف وتسلسل السلاسل الطويلة، وتفويل التعليقات الطويلة، وقوائم التفاف، ورؤوس الوظائف، إلخ.
  3. لا علاقة لها، ولكن عندما تضغط على إدخال، سيكون من الرائع أن يكون المؤشر مبدأ تلقائيا.

بشكل عام، أود فقط تنسيق كل شيء وفقا ل PEP 8.

لقد بحثت عن تجميل / رمز طابعة / رمز جميلة من Python لتشغيل المخزن المؤقت من خلال، ولكن لا يمكن العثور على مصدر مفتوح.

بلدي .emacs هو هنا.

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

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

المحلول

لتغيير علامات التبويب إلى مسافات وملء التعليقات في نفس الوقت، يمكنك استخدام هذا الأمر:

(defun my-format-python-text ()
  "untabify and wrap python comments"
  (interactive)
  (untabify (point-min) (point-max))
  (goto-char (point-min))
  (while (re-search-forward comment-start nil t)
    (call-interactively 'fill-paragraph)
    (forward-line 1)))

التي يمكنك ربطها بمفتاح اختيارك، من المفترض أن تكون كذلك:

(eval-after-load "python"
  '(progn
     (define-key python-mode-map (kbd "RET") 'newline-and-indent)
     (define-key python-mode-map (kbd "<f4>") 'my-format-python-text)))

لاحظ إعداد RET مفتاح المسافة البادئة تلقائيا.

إذا كنت ترغب في جميع علامات التبويب مع مسافات مع أوامر مدمجة فقط، فهذا هو تسلسل ممكن:

C-x h           ;; mark-whole-buffer
M-x untabify    ;; tabs->spaces

للحصول على عمود التعبئة وعرض علامة التبويب ليكون ما تريد، أضف إلى .emacs:

(setq fill-column 79)
(setq-default tab-width 4)

يمكن القول بأن علامة التبويب يجب ضبط عرضها على 8، اعتمادا على كيفية طبقي الأشخاص الآخرين في بيئتك (8 كونهم افتراضيا أن بعض المحررين الآخرين لديهم). إذا كان هذا هو الحال، فيمكنك ضبطه فقط على 4 في 'python-mode-hook. وبعد هذا النوع يعتمد على بيئتك.

نصائح أخرى

حول وجهة نظرك 3:

لا علاقة لها، ولكن عندما تضغط على إدخال، سيكون من الرائع أن يكون المؤشر مبدأ تلقائيا.

وضع بيثون emacs الخاص بي يفعل هذا افتراضيا، على ما يبدو. انها ببساطة دعا بيثون وضع...

استخدام طبقة بايثون SPACEMACS مع الارتباطات الافتراضية:

الترتيب , = سوف يدير yapfify-buffer لفرض تنسيق PEP8 على المخزن المؤقت بأكمله.

يمكنك ضبط

(setq-default dotspacemacs-configuration-layers '(
  (python :variables python-enable-yapf-format-on-save t)))

لتمكين أتمتة إعادة التهيم في حفظ.

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

;; Turn off tab insertion in favor of space insertion
(setq-default indent-tabs-mode nil)

أرى أن لديك هذا في ملف .emacs الخاص بك بالفعل

يجب أن تلبي Autopep8 و EMACS Wrapper لذلك رغبتك .. https://github.com/paetzke/py-autopep8.el.

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