নির্দিষ্ট মুখ দিয়ে আমি কীভাবে পাঠ্য সন্নিবেশ করব?


15

আমার মুখ আছে, এইভাবে তৈরি করা হয়েছে:

(defface test-face
  '((t . (:height 2.0)))
  "A face for testing.")

আমি সেই মুখ দিয়ে কিছু পাঠ্য সন্নিবেশ করতে চাই। তবে এই উপায়গুলি ছাড়াই পাঠ্যটি সন্নিবেশ করান:

(insert (propertize "text to insert" 'face 'test-face))

(let ((current-string "text to insert"))
  (put-text-property 1 (length current-string) 'face 'test-face)
  (insert current-string))

এমনকি প্রথমে পাঠ্য সন্নিবেশ করা, তারপরে মুখ putোকাতে ফিরে যাওয়া কোনও কাজ করছে না:

(progn
  (insert "text to insert")
  (add-text-properties
   (save-excursion
     (backward-word 3)
     (point))
   (point)
   '(face test-face)))

সমস্যাটি মুখের সংজ্ঞা নয়, কারণ যদি আমি এটি কাস্টমাইজ করতে যাই তবে এটি ইতিমধ্যে দ্বিগুণ হিসাবে উচ্চতার সাথে প্রদর্শিত হচ্ছে। তবুও, মুখ inোকানোও কাজ করে না:

(insert (propertize "to insert" 'face '(:height 2.0)))

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


2
মৌলিক মোডে বা ফন্ট-লক অক্ষম করে অন্য কোনও মোডে উপরের উদাহরণগুলি ব্যবহার করে দেখুন (তারা ভাল কাজ করবে)। সমস্যাটি হ'ল ফন্ট-লকটি faceসিনট্যাক্স হাইলাইটিং কোডের জন্যও ব্যবহার করে তাই এটি আপনার মুখের সম্পত্তিটিকে প্রতিস্থাপন করছে। আমি নিশ্চিত যে প্রদত্ত পাঠ্যের জন্য ফন্ট-লক নিষ্ক্রিয় করার কিছু উপায় থাকতে হবে তবে কোডটি কিছুটা গবেষণা করতে হবে (এখনই সময় নেই)। সম্ভবত font-lock.elকোড পড়ার ফলে কিছুটা ধারণা পাওয়া যাবে
ইকবাল আনসারী

উত্তর:


16

কোডটি নিয়ে কিছু সমস্যা রয়েছে:

  • put-text-propertyএকটি বস্তু প্রয়োগ করা হয়। এই ক্ষেত্রে আপনার স্ট্রিং। আপনাকে শেষ প্যারামিটার হিসাবে পাস করতে হবে।
  • put-text-property শূন্য থেকে গণনা শুরু হয়।
  • যদি font-lock-modeসক্ষম করা থাকে তবে এটি faceসম্পত্তিটির যে কোনও পাঠ্য ছিনিয়ে নেবে ।

ফন্ট-লক মোড অক্ষম করা থাকলে নিম্নলিখিত কোডের টুকরোটি কাজ করে:

(let ((current-string "text to insert"))
  (put-text-property 0 (length current-string) 'face 'font-lock-warning-face
                     current-string)
  (insert current-string))

আপনি যদি এটি হরফ-লক সক্ষম সহ ব্যবহার করতে চান তবে আপনি font-lock-faceপরিবর্তে সম্পত্তি সেট করতে পারেন । এটি একই প্রভাব ফেলে তবে এটি দ্বারা প্রভাবিত হয় না font-lock


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