আমি কি আমার মডেলাইন লাইটারে একটি চিত্র ব্যবহার করতে পারি?


12

আমার মডেলিন বিশৃঙ্খল। আমি কি মোড নামের পরিবর্তে ছবি প্রদর্শন করতে পারি?

আমি ইউনিকোড ইমোজি ব্যবহার করতে পারি (যেমন Py পাইথনের জন্য or বা কোকের জন্য,), তবে যে কয়েকটি মেশিনে আমি আমার ইমাস কনফিগারটি ব্যবহার করি সেগুলির সঠিক ফন্টগুলি প্রাক-ইনস্টল করা নেই (আদর্শভাবে, আমি এই প্রযুক্তিটি আবারও ব্যবহার করতে চাই মোড যা আমি লিখছি, তাই আমি ব্যবহারকারীদের সঠিক ফন্ট সেটআপের আশা করতে পারি না)।

আমি :imageখেলনা মাইনর-মোডের মডেলিন লাইটারে একটি ডিসপ্লে সম্পত্তি যুক্ত করার চেষ্টা করেছি , তবে মডেলিনে কিছুই উপস্থিত হয়নি:

(define-minor-mode my/test-mode
  "Test mode."
  :lighter (propertize " 🐓" 'display '(image :type imagemagick
                                             :file "/home/clement/.emacs.d/rooster.png")))

টিডব্লিউইমজি মোরগ (https://raw.githubusercontent.com/twitter/twemoji/gh-pages/72x72/1f413.png)


ফন্টগুলি আপনার কনফিগারেশনে আনার কোনও উপায় আছে?
পাইথননট

2
হ্যাঁ, এটি করা সম্পূর্ণভাবে সম্ভব। ন্যান-মোড দেখুন। এটি কি এমন হতে পারে যে চিত্রটি সঠিকভাবে প্রদর্শিত হতে পারে না?
wasamasa

@ ওয়াসমাস, দুর্দান্ত পয়েন্ট! আপনি জানেন কীভাবে এটি ন্যান-মোড করে?
ক্লিমেট

এই আইকনটির সাহায্যে মোড-লাইনে মেজর-মোড স্ট্রিং কীভাবে প্রতিস্থাপন করবেন?
stardiviner

উত্তর:


11

মোড লাইনটি বিভাগগুলির একটি তালিকা থেকে রেন্ডার করা হয়, যার প্রত্যেকটি তাদের নিজস্ব বিশেষ নিয়ম নিয়ে আসে। বিশদটির জন্য মোড লাইন ডেটা দেখুন । প্রতীক বিভাগে আপনার কোডটি কাজ করার জন্য একটি গুরুত্বপূর্ণ ইঙ্গিত রয়েছে:

SYMBOL "ঝুঁকিপূর্ণ" হিসাবে চিহ্নিত না করা (যেমন এটির একটি 'নন' 'ঝুঁকিপূর্ণ-স্থানীয়-ভেরিয়েবল' সম্পত্তি রয়েছে), SYMBOL এর মান উল্লেখ করা সমস্ত পাঠ্য বৈশিষ্ট্য উপেক্ষা করা হবে। এটিতে SYMBOL এর মানগুলিতে স্ট্রিংয়ের পাঠ্য বৈশিষ্ট্য অন্তর্ভুক্ত রয়েছে, পাশাপাশি এতে সমস্ত ': ইভাল' এবং ': যথাযথ' ফর্ম রয়েছে। (এর কারণ সুরক্ষা: অ-ঝুঁকিপূর্ণ ভেরিয়েবলগুলি ব্যবহারকারীকে অনুরোধ না করেই ফাইল ভেরিয়েবল থেকে স্বয়ংক্রিয়ভাবে সেট করা যেতে পারে))

আমার সন্দেহ হয় ন্যান-মোড এটি আদর্শের চেয়ে কম উপায়ে করছে , সুতরাং এখানে আমার ন্যূনতম উদাহরণ:

(defvar my-nyan-mode-lighter
  (list " " (propertize ":3" 'display
                        `(image :type imagemagick
                                :file ,(expand-file-name "~/nyan.png")))))
(put 'my-nyan-mode-lighter 'risky-local-variable t)

(define-minor-mode my-nyan-mode
  "Nyan mode"
  :lighter my-nyan-mode-lighter)

(my-nyan-mode)

আমি কোনও স্থান এবং একটি চিত্রের তালিকা ব্যবহার করার কারণ হ'ল পূর্ববর্তী স্থানগুলি থেকে পৃথক করার জন্য একটি স্থান দিয়ে একটি লাইটার শুরু করার কনভেনশন।


আসলে, আপনি কি এটি চেষ্টা করেছিলেন emacs -Q? এটি স্মার্ট-মোড-লাইন সক্ষম করার সাথে দুর্দান্ত কাজ করে, তবে আমি যখন খালি Emacs থেকে শুরু করি তখন এটিকে কাজ করতে পারি না।
ক্লাইমেন্ট

হু, আপনি ঠিক বলেছেন। আমি কী নিখোঁজ তা যাচাই করবো।
wasamasa

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

ব্রিলিয়ান, অনেক ধন্যবাদ! তালিকাটি :propertizeডিফল্টের শীর্ষ-স্তরের প্রয়োগ না করার জন্য মোড লাইন ফর্ম্যাটারটিকে কৌশল করে mode-line-format
ক্লিমেট

@ ওসামাসা বাহ, খুব সুন্দর। এখন আপনি যখন চিত্রটি মাউস করবেন তখন একটি জেনেরিক মেনু রয়েছে; কিভাবে এটি এন্ট্রি করা হবে? মাউস হোভার বার্তা হিসাবে কেবল একটি সাধারণ স্ট্রিং খুব ভাল হবে।
yPhil

4

ভাল প্রশ্ন.

আপনি লাইটার হিসাবে এর মতো কিছু ব্যবহার করার চেষ্টা করতে পারেন: আপনার চিত্র ফাইলের নাম (concat " " (propertize " " 'display (create-image img-file)))কোথায় img-file। (প্রথম স্পেস চরটি কেবল আগের হালকা থেকে এই লাইটারকে পৃথক করা))

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

(defvar my-lighter-string
        (concat " " (propertize " " 'display (create-image "/path/to/an/image/file.png"))))

(define-minor-mode foo "..." nil my-lighter-string)

লাইটারটি কেবল একটি সাধারণ স্পেস চর হিসাবে দেখায় - displayসম্পত্তিটি সম্মানিত বলে মনে হয় না।

আপনি যদি এই প্রশ্নের একটি ভাল উত্তর না পান তবে ব্যবহার করে একটি ইম্যাক্স বর্ধিতকরণের আবেদন করার জন্য বিবেচনা করুন M-x report-emacs-bug

একটি জিনিস যা আপনি অবশ্যই করতে পারেন তা হল মোড-লাইনের স্ট্রিংয়ে এক বা দুটি ইউনিকোড অক্ষর ব্যবহার করা। এবং আপনি কার্যকরভাবে গ্রাফিক্সযুক্ত চরগুলি ব্যবহার করতে পারেন।

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