কিভাবে ইমাসে পাঠ্য রঙিন করা যায়?


11

আমি চাই যেমন দ্বারা আউটপুট করছে তা দেখে (এবং / অথবা সম্পাদনা) Emacs মধ্যে রঙীন করা টেক্সট, এর ls -l --color=always, tree...অথবা যা খুশি।

আমি উল্লেখ করা পাঠ্যটি একটি ফাইলে বিদ্যমান। আমি যখন ফাইলটি ইম্যাকগুলিতে খুলি, আমি এটিকে রঙিন দেখতে বা এএনএসআই (এসজিআর) অব্যাহতি ক্রমগুলি দেখানোর জন্য টগল করতে সক্ষম হতে চাই।

ansi-color.el আমার যা প্রয়োজন তা মনে হচ্ছে , তবে আমি এএনএসআই পালানোর ক্রমগুলির কোনও রঙিন করতে সক্ষম হতে পারি না, তবে আমি পৃথক কনটোল বাইটের জন্য নীল-সাহসী দেখতে পাচ্ছি (যেমন ^Aএবং ^[) ... আমি না নিশ্চিত যে এটি একটি বৈশিষ্ট্য হয় ansi-color, কিন্তু আমি মনে করি এটি।

মতে ANSI-color.el মন্তব্য , এটা স্ট্রিং এবং অঞ্চলে সাথে কাজ করতে পারেন, কিন্তু এমনকি যে কাজ বলে মনে হচ্ছে না .. উদাহরণস্বরূপ ফাংশন ansi-color-apply-on-regionদ্বারা স্বীকৃত হয় না M-x। এটি বলে, "কোনও মিল নেই"

আমি (require 'ansi-color)আমার .emacs ফাইল এবং এমনকি যোগ করেছি (add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)। ইমাস শুরু হওয়ার পরে আমি কোনও ত্রুটি বা সতর্কতা পাই না, তাই আমি আটকে আছি।

আমি কীভাবে স্ট্যান্ডার্ড ফাংশনগুলি কাজ করতে পারি এবং যার নাম প্রত্যয়যুক্ত কোনও ফাইল খোলার সময় এটি স্বয়ংক্রিয়ভাবে প্রয়োগ করা যেতে পারে .col?

উত্তর:


15

আমি মনে করি আপনি যে অংশটি মিস করছেন তা interactiveফর্ম। এটি ইমাকস কীভাবে অন্যান্য ফাংশনগুলির দ্বারা ডেকে আনা একটি ফাংশন এবং ব্যবহারকারী দ্বারা সরাসরি কল করার জন্য ডিজাইন করা একটি ফাংশনটির মধ্যে পার্থক্য করে। ইমাস লিসপ ইন্ট্রো নোড দেখুন

এখন আপনি যদি সংজ্ঞাটি পড়েন ansi-color-apply-on-region, আপনি দেখতে পাবেন এটি ইন্টারেক্টিভ ব্যবহারের জন্য ডিজাইন করা হয়নি। "আনসি-রঙ" কমেন্ট আউটপুট ফিল্টার করার জন্য ডিজাইন করা হয়েছে। তবে এটির জন্য একটি ইন্টারেক্টিভ মোড়ক তৈরি করা সহজ।

(defun ansi-color-apply-on-region-int (beg end)
  "interactive version of func"
  (interactive "r")
  (ansi-color-apply-on-region beg end))

পরবর্তী বিটটি হল আপনি .col এক্সটেনশনের জন্য আনসির রঙগুলি চালু করতে চান। এই ফাইলগুলি সম্পাদনা করতে আপনি যে মেজর-মোডটি ব্যবহার করতে চান তাতে আপনি একটি হুক ফাংশন যুক্ত করতে পারেন। আপনি যখনই মেজর-মোডটি চালু করেন তখন ফাংশনটি চালানো হবে, সুতরাং আপনাকে যথাযথ ফাইল প্রত্যয়টির জন্য একটি চেক যোগ করতে হবে।

বিকল্পভাবে আপনি "মৌলিক" মোডের উপর ভিত্তি করে একটি দ্রুত উত্পন্ন মোড হ্যাক করতে পারেন।

(define-derived-mode fundamental-ansi-mode fundamental-mode "fundamental ansi"
  "Fundamental mode that understands ansi colors."
  (require 'ansi-color)
  (ansi-color-apply-on-region (point-min) (point-max)))

এবং এটিকে এক্সটেনশনের সাথে যুক্ত করুন।

(setq auto-mode-alist
      (cons '("\\.col\\'" . fundamental-ansi-mode) auto-mode-alist))

কল্পনাপ্রসূত .. যেন যাদু দ্বারা! ভাল ব্যাখ্যা করা হয়েছে, এবং আপনার একটি ফাংশন ইন্টারেক্টিভ লিঙ্কটি অনেক সহায়তা করেছে। আমি ইমাসের সাধারণ কাঠামো দেখতে শুরু করছি । ধন্যবাদ ...
পিটার.ও

আমি ভাবছি আমি কী ভুল করছি। আমার .emacs ফাইলে আপনার উপরের সমস্ত পাঠ্য আমি যুক্ত করেছি তবে আমি যে পাঠ্যটি হাইলাইট করেছি তা অঞ্চল-অন্তর্-এ-এ-এন-এস-বর্ণ-প্রয়োগের পরে রঙিন হয়ে উঠবে বলে মনে হয় না।
এসএফবি 1007

5

নিম্নলিখিত সমাধানটি এএনএসআই রঙের সিকোয়েন্সযুক্ত ফাইলগুলি পড়ার (এবং সংরক্ষণ না করে) অনুমতি দেয়। ফাইলের নামগুলির অবশ্যই একটি .txtএক্সটেনশন থাকতে হবে ।

গ্রন্থাগার রাখুন TTY-বিন্যাসে মধ্যে ~/.emacs.d/site-lisp/, তারপর আপনার কাছে এই লাইন যোগ ~/.emacsInit ফাইল।

(add-to-list 'load-path "~/.emacs.d/site-lisp/")              
(require 'tty-format)
(add-hook 'find-file-hooks 'tty-format-guess)

এটিও একটি দরকারী বিকল্প। এটা তোলে সদ্ব্যবহার ansi-colorকরুন এবং আরও এক ধাপ এটা লাগে, যেমন আপনার লিঙ্ক বলছেন, "... TTY-format.el উদ্দেশ্য শুধু * এই ধরণের ফাইলগুলিকে করা হয় দর্শনীয়।" * .. " এই ধরণের ফাইলগুলিকে " ধারণকারী সেই হচ্ছে ANSI SGR পালাবার ক্রম এবং ব্যাকস্প্যাকিং .. ধন্যবাদ ..
পিটার.ও

1
এটির মূল্য কীসের জন্য .. ইভেন্ট_জেআর দ্বারা পোস্ট করা হিসাবে এই পদ্ধতিটি সম্পূর্ণরূপে সম্পাদনযোগ্য সংস্করণটির তুলনায় দ্রুত (~ 25%) অবিরত পেজিং গতি হ'ল তাত্পর্যপূর্ণ (আরও ভাল!) রিফ্রেশ ফ্রিকোয়েন্সি সহ .. পরীক্ষার ফাইলে 45,000 লাইন ছিল। সম্পাদনাযোগ্য সংস্করণের জন্য স্ক্রিন রিফ্রেশ গ্রাউন্ডটি ফাইলের মাধ্যমে প্রায় 75% পথে থামতে হবে, তবে স্ক্রোল বারটি এখনও স্ক্রল করছে .. আমার সন্দেহ হয় এটি সম্পাদনাযোগ্য সংস্করণে কিছু পয়েন্ট / চিহ্নের পূর্বাবস্থায় ফিরে আসা বাফারের কিছু ওভারহেডের কারণে of .. দুটি
পদ্ধতিরই

PS .. tty- ফর্ম্যাট পৃষ্ঠাগুলি টার্মিনালে যতটা সহজে এবং তত কম দ্রুত হয় (সময়গুলি একে অপরের দ্বিতীয় বা দু'এর মধ্যে ছিল; শীর্ষ-বাটন এবং নীচে-শীর্ষ থেকে প্রায় 50 সেকেন্ড)।
পিটার.ও

আমি সচেতন ছিলাম না tty-format। এটি আমার মোড়ক ফাংশন বা 3 লাইন উত্পন্ন মোডের চেয়ে উচ্চতর বলে মনে হচ্ছে। :) ইমাক্সের প্রচুর ওভারলে নিয়ে কাজ করা খুব কঠিন সময়, যা কীভাবে আনসির বর্ণের রঙিনকরণ করে। এখানে আরও অপ্টিমাইজেশনের সুযোগ রয়েছে, কারণ আমাদের পুরো বাফারটিকে রঙিন করার দরকার নেই, কেবল অংশটি প্রদর্শিত হচ্ছে।
ইভেন্ট_জেআর

0

আপনার সমাধানের জন্য আপনাকে অনেক ধন্যবাদ @ এনজোটিব!

আপনার সমাধানটিতে যেমন একটি সংযোজন, তেমনি এটির মাধ্যমে ব্যবহারকারী এটি স্পষ্টত কল করার জন্য একটি উপায়:

;; M-x display-ansi-colors to explicitly decode ANSI color escape sequences                                                                                                                                        
(defun display-ansi-colors ()
  (interactive)
  (format-decode-buffer 'ansi-colors))

এবং কেবল * .txt বা README ব্যতীত অন্য ফাইলগুলির জন্য স্বয়ংক্রিয়:

;; decode ANSI color escape sequences for .log files                                                                                                                                                               
(add-to-list 'auto-mode-alist '("\\.log\\'" . display-ansi-colors))

সমাধানগুলি ব্যবহার না করে আপনি আসল ফাইলটি পরিবর্তন না করে আপনি পালানোর ক্রমগুলি রঙের সাথে প্রতিস্থাপন করতে পারেন ansi-color-apply-on-region

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