मैं पैराग्राफ को एक-पंक्ति-प्रति-वाक्य में कैसे विभाजित कर सकता हूं लेकिन फिर भी इसे नेत्रहीन लपेट कर रख सकता हूं?


14

यह एक-वाक्य-प्रति-पंक्ति (फ़ंक्शन के साथ-साथ मकसद) के साथ संपादन फ़ाइलों के समान है , लेकिन मैं हर वाक्य में दृश्य विराम के बजाय पूर्ण, बहने वाला पैराग्राफ चाहता हूं।

मैं एक छोटी सी विधा रखना चाहता हूं, जो सक्रिय होने पर, उसी पैराग्राफ से लाइनों को जोड़ेगी (न कि अलग \n\nया paragraph-separateया ...) और फिर सक्रिय व्यवहार (शायद व्युत्पन्न visual-line-mode) जो सक्रिय रूप से सम्मिलित किए बिना रेखा को लपेट देगा \n

क्या ऐसी विधा मौजूद है? यदि नहीं, तो मैं परिणाम प्राप्त करने के लिए पैराग्राफ के प्रदर्शन गुणों को बदलने की प्रक्रिया के बारे में कैसे जाऊँगा? (आखिरकार, यह इस तरह की एक विधा है और स्निपेट से इसे विकसित किया जा सकता है।)


[...] नेत्रहीन रूप से शामिल हो जाएगा [...]। क्या आपका मतलब है अंतर्निहित \n(यदि मौजूद है), या क्या आप चाहते हैं कि यह वास्तव में 1-पैरा-प्रति-लाइन प्रदान करने के लिए नई कड़ियों को हटा दे?
जोनाथन लीच-पेपिन

1
शायद आप buffer-display-tableनई लाइनें बनाने के लिए \nरिक्त स्थान या कुछ और की तरह दिखाई दे सकते हैं - लिंक में निम्न उदाहरण देखें: stackoverflow.com/a/24842771/2112489 इसके साथ लाभ यह होगा कि पाठ में दस्तावेज़ संशोधित नहीं है। नई लाइन कुछ भी हो सकती है - जैसे, एक स्माइली चेहरा, रिक्त स्थान, एक पाइलो प्रतीक, आदि। दृश्य प्रभाव यह है कि रैपिंग घटित होगी।
कानून व्यवस्था

@ जोनाथनलैक-पेपिन मैं नई कहानियों को रखना चाहता हूं जहां मौजूद है। वास्तव में, मैं वाक्य-अंत पर नई पंक्ति को लागू करना चाहूंगा, लेकिन यह अलग हुक के माध्यम से किया जा सकता है।
सीन एलेड

1
@ दृश्य प्रभाव को प्रदर्शित करता है कि नई सुर्खियां हर जगह चली जाएंगी, है न? सभी पैराग्राफ एक में नहीं ढह जाएंगे?
मालाबार

1
मुझे इस अनुरोध पर सहानुभूति है लेकिन लगता है कि ओपी द्वारा वर्णित लघु-विधा सही समाधान नहीं है। अंतर्निहित समस्या यह है कि भिन्न पाठ के लिए अच्छी तरह से काम नहीं करता है क्योंकि यह कोड के लिए डिज़ाइन किया गया था। Emacs में इस मुद्दे पर काम करना संभव है लेकिन विभिन्न कारणों से एक साफ समाधान नहीं है। पाठ के साथ अच्छी तरह से काम करने के लिए अलग-अलग सुधार करना बेहतर होगा।
tmalsburg

जवाबों:


3

जैसा कि टॉम ने कहा था, नई कहानियों पर प्रदर्शन संपत्ति डालना एक तरह का काम होगा।

समस्या यह जानने की है कि कौन सी रेखाओं को लपेटना है।

यहां आपको आरंभ करने के लिए एक उदाहरण दिया गया है:

(let ((eol-regexp "[[:graph:]] ?\\(\n\\)[^\t\n ]"))
  (font-lock-add-keywords nil
   `((,eol-regexp 1 '(face default display " ")))))

(visual-line-mode 1)

यदि यह चित्रमय वर्णों से पहले है और अगली पंक्ति इंडेंट या खाली नहीं है, तो यह "नई" हटा देगा। आपके लिए कुछ काम करने के लिए आपको प्रयोग करना होगा।

कुछ और स्पष्टीकरण:

  1. font-lock-add-keywordsफ़ॉन्ट लॉकिंग के नियमों की एक सूची जोड़ता है (इसलिए फ़ॉन्ट लॉक सक्षम होना चाहिए। पहला तर्क एक मोड (जैसे text-mode) हो सकता है , हमारे मामले में यह शून्य है, जिसका अर्थ है कि नियम केवल वर्तमान बफर के लिए जोड़ें।
  2. हमारे "नियम" है (,eol-regexp 1 '(face default display " "))। पहला तत्व नियमित अभिव्यक्ति है जिसे हमने पहले बनाया था; दूसरा उपप्रकार है जिसे हम रुचि रखते हैं; तीसरा "चेहरा" है जिसे हम लागू करना चाहते हैं।
  3. जबकि newlines के लिए एक चेहरे का उपयोग हमारे लिए कोई फायदा नहीं है, हम भी पाठ गुण जोड़ सकते हैं। इसलिए हम डिफॉल्ट फेस का उपयोग करते हैं और एक डिस्प्ले प्रॉपर्टी को जोड़ने के बजाय एक स्पेस के साथ प्रतिस्थापन 1 (यानी न्यूलाइन) को बदल देते हैं।
  4. यदि आप पैर में खुद को गोली मारते हैं, तो बफर को हटा दें या कीवर्ड को हटा दें font-lock-remove-keywords
  5. आप यह भी जोड़ सकते हैं displayकरने के लिए font-lock-extra-managed-props(मैं इस प्रयास नहीं किया है)।
  6. मुश्किल हिस्सा regexp सही पाने के लिए है। "\ \ (\ n \) [^ \ n]" किसी भी नई पंक्ति से मेल खाएगा जो तुरंत दूसरे के बाद नहीं है। "। \ {30, \} (\ n \)" केवल कम से कम 30 वर्णों से पहले की गई नई सूचियों से मेल खाएगा।


0

यदि मैं समस्या को सही ढंग से समझता हूं, तो यह है कि आप बफर में सभी नई कहानियों को संरक्षित करना चाहेंगे जैसे वे हैं; लेकिन आप उनमें से कुछ को रिक्त स्थान के रूप में प्रदर्शित करना चाहेंगे। फिर, आप शब्द-रैपिंग करना चाहेंगे।

शब्द-रैपिंग के लिए मुझे लगता है कि आप उपयोग कर सकते हैं visual-line-mode

न्यूलाइन्स से निपटने के लिए, मुझे लगता है कि आप शायद अलग-अलग प्रदर्शन करना चाहते हैं न्यूलाइन्स पर एक मूल्य के रूप में (एकल स्थान से युक्त एक स्ट्रिंग) के displayसाथ एक संपत्ति डाल " "सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.