ทำให้ย่อหน้าเติมใน python docstring ปล่อยให้สามคำพูดในบรรทัดแยก


16

ฉันพิมพ์ python docstring ทั้งหมดในหนึ่งบรรทัดเช่นนี้

"""
This is a long docstring. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec consectetur ante hendrerit. Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ut gravida lorem. Ut turpis felis, pulvinar a semper sed, adipiscing id dolor. Pellentesque auctor nisi id magna consequat sagittis.
"""

แล้วฉันก็กด Mq ( fill-paragraph) แล้วฉันจะได้รับสิ่งนี้:

"""This is a long docstring. Lorem ipsum dolor sit amet, consectetur
adipiscing elit. Donec a diam lectus. Sed sit amet ipsum
mauris. Maecenas congue ligula ac quam viverra nec consectetur ante
hendrerit. Donec et mollis dolor. Praesent et diam eget libero egestas
mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem
lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non
tortor. Lorem ipsum dolor sit amet, consectetur adipiscing
elit. Aenean ut gravida lorem. Ut turpis felis, pulvinar a semper sed,
adipiscing id dolor. Pellentesque auctor nisi id magna consequat
sagittis.

"""

ฉันมีสองปัญหากับสิ่งนี้:

  1. docstring เริ่มต้นในบรรทัดเดียวกับ"""- ฉันต้องการให้สามใบเสนอราคาอยู่ในบรรทัดของตัวเอง
  2. (ลำดับความสำคัญต่ำกว่ามาก) docstring ลงท้ายด้วยบรรทัดว่าง

ตัวอย่างด้านบนนี้ได้ถูกวางแผนไว้ แต่ฉันพบเจอสิ่งนี้บ่อยครั้งโดยเฉพาะเมื่อแก้ไขเอกสารที่มีอยู่ซึ่งฉันต้องการเรียบง่ายM-qและมีทั้งย่อหน้าใหม่

คำตอบ:


15

ปรับแต่งให้python-fill-docstring-styleเหมาะสมโดยสันนิษฐานว่าคุณกำลังใช้โหมด Python ในตัวใน Emacs 24.4 ค่าเริ่มต้นคือpep-257ซึ่งนำไปสู่รูปแบบที่คุณสังเกตเห็นคือไม่มีการขึ้นบรรทัดใหม่ที่จุดเริ่มต้นและสองบรรทัดใหม่ก่อนที่จะสิ้นสุดของสตริง

เปลี่ยนตัวแปรนี้เป็นsymmetricหรือdjangoเพื่อให้โหมด Python เป็นไปตามสไตล์ที่คุณต้องการเช่นขึ้นบรรทัดใหม่ที่จุดเริ่มต้นของ docstring และขึ้นบรรทัดใหม่ก่อนที่จะสิ้นสุด:

(setq python-fill-docstring-style 'django)

หรือตั้งค่าผ่านทางตัวแปรไดเรกทอรีเพื่อกำหนดค่าสไตล์ docstring ทีละรายการ

symmetricและdjangoเป็น docstrings แบบบรรทัดเดียว wrt ที่แตกต่างกัน อดีตวางราคาสามในบรรทัดเดียวกันถ้า docstring พอดีกับหนึ่งบรรทัดในขณะที่หลังทำให้ราคาสามในบรรทัดแยกในกรณีนี้

ลองดูที่docstring ของpython-fill-docstring-styleเพื่อดูตัวเลือกที่มีทั้งหมด


-1

Wrt บรรทัดที่ว่างเปล่าในตอนท้ายดูเหมือนว่าข้อผิดพลาดธรรมดา, M-x report-emacs-bugกรุณาแจ้งกับ แต่สำหรับองค์ประกอบแรกฉันไม่แน่ใจว่ามันเป็นข้อบกพร่องหรือคุณสมบัติดังนั้นคุณอาจต้องการพูดถึงมันในรายงานข้อผิดพลาดของคุณ

สิ่งนี้กล่าวว่าคุณอาจสามารถแก้ไขปัญหาแรกด้วยสิ่งต่อไปนี้:

(add-hook 'python-mode-hook
          (lambda ()
            (set (make-local-variable 'paragraph-separate)
                 (concat paragraph-separate "\\|^[ \t]*\"\"\"[ \t]*$"))))

1
paragraph-separateมันเป็นค่าข้อผิดพลาดหรือคุณควรจะต้องมีการเปลี่ยนแปลง รูปแบบ docstring ของpython.elสามารถปรับแต่งได้
Lunaryorn

ว้าวฉันไม่เคยเดาเลยว่าบรรทัดว่างที่ปลายเชือกนั้นอาจเป็นสิ่งที่มาตรฐานบังคับใช้
สเตฟาน

1
มาตรฐาน (PEP 257) ไม่ได้บังคับใช้สิ่งนี้จริง ๆ มันเป็นเพียงการตีความ (ทั่วไป) ของมัน Emacs ยังสนับสนุนตัวแปรได้โดยไม่ต้องขึ้นบรรทัดใหม่เช่นในpep-257-nn python-fill-docstring-style
Lunaryorn

1
กระแทกแดกดันเหตุผลสำหรับการเชื่อมโยงที่ว่างเปล่าคือ: ยกเว้นว่าทั้ง docstring เหมาะกับบรรทัดวางคำพูดปิดในบรรทัดด้วยตนเอง ด้วยวิธีนี้คำสั่งเติมย่อหน้าของ Emacs สามารถใช้ได้กับมัน
เฟลิเป้
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.