অন্য একটি বড় মোডের সাহায্যে একটি বাফারের অঞ্চলকে সুনিশ্চিত করুন


12

আমার কাছে একটি বাফার রয়েছে যা উত্তরযোগ্য মডিউলগুলির জন্য ডকুমেন্টেশন দেখায়। এই বাফারের নিজস্ব প্রধান মোড রয়েছে যা সমস্ত স্ট্যান্ডার্ড স্টাফ সরবরাহ করে। উল্লেখ্য, এটি সমস্ত মধ্যে হাইলাইট ইনলাইন মার্কআপ, বিকল্প, বিভাগে, ইত্যাদি সকলের জন্য বাফার fontifies, এটা প্রশংসনীয় অনুরূপ M-x man

ডকুমেন্টেশনের নীচে ওয়াইএএমএলে সাধারণত কিছু কোড উদাহরণ থাকে। আমি এগুলিও সার্থক করতে চাই। আমি অবশ্যই YAML এর জন্য আমার নিজের ফন্ট লক কীওয়ার্ডগুলি যুক্ত করতে পারি, তবে আমি YAML মোডের ফন্টিফিকেশনটি পুনরায় ব্যবহার করতে পছন্দ করব।

আমি এটা কিভাবে করবো? বিশেষত, আমি বাফারের একটি নির্দিষ্ট অঞ্চলকে সজ্জিত করার জন্য কীভাবে একটি আলাদা প্রধান মোড ব্যবহার করতে পারি?

নোট করুন যে YAML মোড এই অঞ্চলে সক্রিয় হওয়ার প্রয়োজন নেই । পুরো বাফারটি কেবলমাত্র একটি প্যাসিভ ডিসপ্লে বাফার এবং এটি সম্পাদনা করার উদ্দেশ্যে নয়। আমার সত্যিকার অর্থেই উত্সর্গীকৃত ফন্টিফিকেশনটি প্রয়োজন যেমন যদি YMAL মোড সেই অঞ্চলে সক্রিয় ছিল।

আমার ধারণা আমি বাফারের অঞ্চলটিকে একটি অস্থায়ী বাফারে অনুলিপি করতে, YAML মোড সক্ষম করতে, বাফারকে সজ্জিত করতে এবং সমস্ত পাঠ্য বৈশিষ্ট্য অনুলিপি করতে পারি। কাজ করবে? যদি তা হয়, তবে আমি কীভাবে পাঠ্য বৈশিষ্ট্যগুলি অনুলিপি করব এবং অনুলিপি করার জন্য সম্পর্কিত বৈশিষ্ট্যগুলি কী কী? বা আরও ভাল পদ্ধতির আছে?


নন ইয়ামল ফন্টিফিকেশন কীভাবে প্রয়োগ করা হয়? আপনি নিজে পাঠ্য বৈশিষ্ট্য প্রয়োগ করেন, বা আপনি ফন্ট-লক-মোড ব্যবহার করেন?
মালবারবা

: এই পোস্টে লিঙ্ক সমষ্টি-আপ কমপক্ষে একটি ভাল সেখানে অপশনের খণ্ড wisdomandwonder.com/link/8610/...
grettke

উত্তর:


10

আমি সম্প্রতি একই ধরণের সমস্যার মুখোমুখি হয়েছি, আমি মূলত ডকুমেন্টেশনে কোড স্নিপেটগুলি ফন্টিফাই করতে চেয়েছিলাম যা আমি অন্য কোনও উত্স পেয়েছি। আমি আপনার উত্তরের শেষে উল্লিখিত পদ্ধতির অনুসরণ করেছি এবং এটি আমার পক্ষে ভাল কাজ করেছে। ফাংশনটি আমি নীচের মতো কিছু দিয়ে শেষ করেছি

(defun my-fontify-yaml (text)
  (with-temp-buffer
    (erase-buffer)
    (insert text)
    (delay-mode-hooks (yaml-mode))
    (font-lock-default-function 'yaml-mode)
    (font-lock-default-fontify-region (point-min)
                                      (point-max)
                                      nil)
    (buffer-string)))

@ মালবারবা মন্তব্যগুলিতে যেমন উল্লেখ করেছেন যে গন্তব্য বাফার ফন্ট-লক-মোড ব্যবহার করে তবে উপরের সহজ পদ্ধতির কাজ করে না। তবে আমরা বিশ্বাস করে যে স্ট্রিং ইতিমধ্যে ফন্ট টেক্সট সম্পত্তি সেটিং দ্বারা লক করা আছে মধ্যে ফন্ট-লক-মোড রত পারেন font-lock-faceকরতে face, (আমরা পেতে faceসম্পত্তি সেট, যখন আমরা উপরের ফাংশন ব্যবহার করুন) এবং পাঠ্য-সম্পত্তি সেটিং fontifiedকরতে t। নিম্নলিখিত ফাংশনটি উপরে ফাংশন দ্বারা ফিরে আসা একটি স্ট্রিং নেয় এবং প্রয়োজনীয় প্রসেসিং করে যাতে স্ট্রিংটি ফন্টিফাইড করা হয় (এটি org- মোডের org-src-font-lock-fontify-blockফাংশন থেকে নেওয়া হয়)

(defun my-fontify-using-faces (text)
  (let ((pos 0))
    (while (setq next (next-single-property-change pos 'face text))
      (put-text-property pos next 'font-lock-face (get-text-property pos 'face text) text)
      (setq pos next))
    (add-text-properties 0  (length text) '(fontified t) text)
    text))

এখন আপনি নিম্নলিখিত হিসাবে এটি ব্যবহার করতে পারেন

(insert (my-fontify-using-faces (my-fontify-yaml "application: test\nversion: 1")))

এটি আমি একই সমাধানের সন্ধান পেয়েছি sx.elতবে এটি লক্ষ্য করা গুরুত্বপূর্ণ যে গন্তব্য বাফার ফন্ট-লক-মোড ব্যবহার না করে তবেই এটি কাজ করবে।
মালবারবা

রাইট! আমি ঠিক বুঝতে পেরেছিলাম এটি আমার জন্য কাজ করেছে কারণ আমি যেখানে বাফারে ব্যবহার করেছি যেখানে ফন্ট-লক ব্যবহার করা হয়নি (সহায়তা বাফার)
ইকবাল আনসারী

@ মালবারবা ফন্ট-লক-মোড সক্ষম করে গন্তব্য বাফারদের সাথে এই কাজটি করার একটি উপায় খুঁজে পেয়েছে
ইকবাল আনসারী


ওহ্হ দারুন! খুশী আমি সাহায্য করতে পারি :)
ইকবাল আনসারী

3

লাইব্রেরী সংকীর্ণ পরোক্ষ ( narrow-indirect) এখানে সহায়তা করতে পারে - শিরোনামের ভাষ্যটি দেখুন। এটি নির্ভর করে:

  1. সংকীর্ণ, যা কোনও বাফারের অংশে সম্পাদনা সীমাবদ্ধ করে এবং
  2. অপ্রত্যক্ষ বাফারস, যা অন্য একটিতে বাফার অনুলিপি করে যার জন্য আপনি প্রধান মোড পরিবর্তন করতে পারেন।

নোট করুন যে সংকীর্ণতা ডিফল্ট হিসাবে অক্ষম করা হয়েছে কারণ এটি সূচনা-বন্ধুত্বপূর্ণ হিসাবে বিবেচিত হয় (ডিফল্ট বাঁধাই হয় C-x n n)। নিম্নলিখিতটি আপনার init ফাইলে রেখে আপনি এটি সক্ষম করতে পারেন:

(put 'narrow-to-region 'disabled nil)

আপনি myfn-narrow-indirectআমার কনফেমে আমার হাতে তৈরির জন্যও দেখতে পারেন ।


সংকীর্ণকরণ আসলে ফন্ট লককে প্রভাবিত করে, অর্থাত্ সংকীর্ণ অঞ্চলের বাইরে থেকে দূরে রাখে? ফন্ট লক কি আসলেই বাফার সীমাবদ্ধতাগুলি সরিয়ে দেয়?
চন্দ্রালগ্ন

এবং যাইহোক, একটি উইকি প্যাকেজ কোনও বিকল্প নয়।
চন্দ্রালগ্ন

তদ্ব্যতীত, disabledইমাস লিস্প থেকে কল করার জন্য আপনাকে কোনও আদেশটি থেকে সম্পত্তি সরিয়ে ফেলতে হবে না । এটি কেবল ইন্টারেক্টিভ ব্যবহারকে প্রভাবিত করে।
চন্দ্রালম্বি

0

আমি org-src-font -ock-fontify-block যা org- মোড উত্স ব্লকগুলির জন্য এই কার্যকারিতা সরবরাহ করে তা দেখার পরামর্শ দেব would এটি কেবল প্রাসঙ্গিক অংশগুলি অন্য একটি বাফারে অনুলিপি করে, সেখানে প্রধান মোডটি সক্ষম করে এবং তারপরে ফন্টিফাইড পাঠ্যটি অনুলিপি করে দেখায়। হ্যাকিশ, তবে এটি কার্যকর বলে মনে হচ্ছে।


2
এই উত্তরটি আরও একটি মন্তব্যের মতো দেখায় কারণ এটি সমস্যার সাথে মোকাবিলা করার জন্য প্রস্তাবিত দিকনির্দেশনা সরবরাহ করে তবে সম্পূর্ণ উত্তর নয়। এটি একটি মন্তব্যে পরিবর্তন বিবেচনা করুন।
ড্যান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.