भरण-क्षेत्र / पैराग्राफ को एक पैराग्राफ उपसर्ग की पहचान कैसे करें?


11

मान लीजिए कि मेरे पास निम्नलिखित बफर हैं।

1. lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum

निम्नलिखित के लिए नेतृत्व M-qकरते हुए यहां बैठे text-mode

1. lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem
ipsum lorem ipsum lorem ipsum lorem ipsum

दूसरी ओर, यदि मैं सक्रिय करता हूं, तो मुझे markdown-modeनिम्नलिखित मिलता है (मार्कडाउन सिर्फ एक उदाहरण है, आप विभिन्न तरीकों में समान व्यवहार देखते हैं)।

1. lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem
   ipsum lorem ipsum lorem ipsum lorem ipsum

मैं ऐसा करने के लिए पाठ-मोड को कैसे कॉन्फ़िगर करूं?

मुझे लगता है यह एक विशेष writting द्वारा प्राप्त किया जा सकता fill-paragraph-functionहै, लेकिन इस चर बस के लिए सेट है nilमें markdown-modeहै, इसलिए शायद एक आसान तरीका है।

जवाबों:


6

मैं एक लंबे समय के लिए filladapt- मोड का एक खुश उपयोगकर्ता रहा हूं, जो इस तरह की चीज को वास्तव में अच्छी तरह से संभालता है। जानकारी के लिए, देखें

http://emacswiki.org/emacs/FillAdapt

उस पेज से:

KyleJones द्वारा Filladapt एक भरने उपसर्ग का अनुमान लगाकर Emacs के फ़ंक्शंस को बढ़ाता है, जैसे कि प्रोग्राम कोड में एक टिप्पणी अनुक्रम, और "1." जैसे बुलेट पॉइंट्स को हैंडल करना। या "*"।

उदाहरण के लिए, यह इसे बदल सकता है

* Pretend I'm a really super long line.
* And the window's narrow.

में

* Pretend I'm a really super
  long line.
* And the window's narrow.

ठीक है, पता करने के लिए संपादित किया गया।
क्रिस

इस मोड को संयोजन w / किसी अन्य मोड में सक्षम करने के लिए, (add-hook 'org-mode-hook 'turn-on-filladapt-mode)अपनी कॉन्फ़िग फ़ाइल की तरह कुछ जोड़ें (यह जानकारी सीधे लिंक किए गए विकी पृष्ठ पर उपलब्ध नहीं है)।
मार्क

अंदर काम करने के लिए खूबसूरती से काम करता fill-paragraphहै markdown-mode
रेडॉन रोसबोरो

जवाब दिए 2 साल बीत चुके हैं। डाउनलोड लिंक Wonderworks.com/download/filladapt.el अब उपलब्ध नहीं है।
टैंकमैन Tank

लिंक अभी मेरे लिए काम करता है। शायद साइट के साथ एक अस्थायी समस्या थी।
क्रिस

3
(fill-paragraph &optional JUSTIFY REGION)

[...]

If `fill-paragraph-function' is non-nil, we call it (passing our
argument to it), and if it returns non-nil, we simply return its value.

If `fill-paragraph-function' is nil, return the `fill-prefix' used for filling.

[...]

markdown-modeसंभवतः सेट fill-paragraph-functionकरने के nilलिए फ़ंक्शन का उपयोग fill-prefixकरने के लिए सेट करता है।

(let ((fill-prefix (make-string (length "1. ") ? ))
  (fill-paragraph))

पूर्ण उदाहरण:

(let* ((num 15)
       (numstr (format "%d. " num))
       (fill-prefix (make-string (length numstr) ? )))
  (with-temp-buffer
    (loop for i from 1 to 15 do
          (insert (format "lorem ipsum (%d) doler sit amet " i)))
    (beginning-of-line)
    (insert numstr)
    (fill-paragraph)
    (buffer-string)))

;; =>

"\
15. lorem ipsum (1) doler sit amet lorem ipsum (2) doler sit amet
    lorem ipsum (3) doler sit amet lorem ipsum (4) doler sit amet
    lorem ipsum (5) doler sit amet lorem ipsum (6) doler sit amet
    lorem ipsum (7) doler sit amet lorem ipsum (8) doler sit amet
    lorem ipsum (9) doler sit amet lorem ipsum (10) doler sit amet
    lorem ipsum (11) doler sit amet lorem ipsum (12) doler sit amet
    lorem ipsum (13) doler sit amet lorem ipsum (14) doler sit amet
    lorem ipsum (15) doler sit amet "

1
"मार्कडाउन-मोड संभवतः फिल-पैरा-फंक्शन को शून्य पर सेट करता है ताकि फ़ंक्शन फिलिंग करने के लिए फिल-प्रीफिक्स का उपयोग करे।" वह पूरी कहानी नहीं हो सकती। जब मैं हिट करता हूं M-q, तो fill-paragraphइसे सीधे लागू किया जाता है (इसके आस-पास कोई ले-बंध नहीं होता है)। हालांकि यह संभव है कि fill-prefixअंततः इस उद्देश्य के लिए उपयोग किया जाता है, कुछ कॉन्फ़िगरेशन चर होना चाहिए जो इसे ऑटो-डिटेक्ट करने की अनुमति देता है।
मालाबार

1
@ मलबारबा markdown-modeवास्तव में ऐसा लगता है कि यह अनुच्छेद परिभाषाओं के माध्यम से होता है: gist.github.com/vermiculus/88759fd9f8368adbf663
सीन

हाँ, यह अधिक पसंद है।
मालाबार

2

शॉन के लिंग ने मुझे सही दिशा में इशारा किया, और यहाँ स्निपेट है जो इसे हल करता है।

(defun my-adaptive-fill-function ()
  "Return prefix for filling paragraph or nil if not determined."
  (cond
   ;; List item inside blockquote
   ((looking-at "^[ \t]*>[ \t]*\\([0-9]+\\.\\|[*+-]\\)[ \t]+")
    (replace-regexp-in-string
     "[0-9\\.*+-]" " " (match-string-no-properties 0)))
   ;; Blockquote
   ((looking-at "^[ \t]*>[ \t]*")
    (match-string-no-properties 0))
   ;; List items
   ((looking-at "^\\([ \t]*\\)\\([0-9]+\\.\\|[\\*\\+-]\\)\\([ \t]+\\)")
    (match-string-no-properties 0))
   ;; No match
   (t nil)))

;; Paragraph filling in text-mode.
(add-hook 'text-mode-hook
  (lambda ()
    (set (make-local-variable 'paragraph-start)
         "\f\\|[ \t]*$\\|[ \t]*[*+-] \\|[ \t]*[0-9]+\\.[ \t]\\|[ \t]*: ")
    (set (make-local-variable 'paragraph-separate)
         "\\(?:[ \t\f]*\\|.*  \\)$")
    (set (make-local-variable 'adaptive-fill-first-line-regexp)
         "\\`[ \t]*>[ \t]*?\\'")
    (set (make-local-variable 'adaptive-fill-function)
         'my-adaptive-fill-function)))
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.