ইমাস, কীভাবে অঞ্চল অনুলিপি করতে হবে এবং এটিকে হাইলাইট করা যায়?


9

আমি পূর্বনির্ধারিত মেগাওয়াট দিয়ে যথেষ্ট খুশি (kill-ring-save)যা কমান্ডটি চালানোর পরে এই অঞ্চলের হাইলাইটটি হারিয়ে ফেলে। আমি এর আচরণটি পরিবর্তন করতে চাই না, তবে আমি <C-insert>অনুরূপ ক্রিয়া সম্পাদন করতে এবং অঞ্চলটির হাইলাইটিং বজায় রাখতে পুনরায় বাঁধতে চাই ।

আমি transient-mark-modeসরাসরি এবং কোনও ফাংশনের মাধ্যমে (আন) সেটিং করার চেষ্টা করেছি , তবে অঞ্চলটি এখনও তার হাইলাইটিং হারায়।

কেবলমাত্র (kill-ring-save (region-beginning) (region-end))একটি ইন্টারেক্টিভ ফাংশনে চলমান প্রত্যাশার মতো কাজ করে। এটি হাইলাইটিং হারায়।

কেবলমাত্র (exchange-point-and-mark) (exchange-point-and-mark)একটি ইন্টারেক্টিভ ফাংশনে চলমান প্রত্যাশার মতো কাজ করে। এটি অঞ্চলটিকে পুনরায় হাইলাইট করে এবং মূল / সঠিক জায়গায় পাতাগুলি রাখে।

যাইহোক আমি যখন সমস্তগুলিকে একটি ফাংশনে একত্র করি, এটি অঞ্চলটিকে পুনরায় হাইলাইট করে না । এখানে অ-কার্যক্ষম ফাংশন এবং বাধ্যবাধকতা রয়েছে:

(defun kill-ring-save-keep-highlight ()
  (interactive)
  (kill-ring-save (region-beginning) (region-end))
  (exchange-point-and-mark) (exchange-point-and-mark)
)
(global-unset-key (kbd "<C-insert>"))
(global-set-key   (kbd "<C-insert>") 'kill-ring-save-keep-highlight)

ব্যবহার: উবুন্টু 10.04.3 এ জিএনইউ ইমাক্স 23.1.1

উত্তর:


8

চলমান kill-ring-saveসরাসরি চিহ্ন নিষ্ক্রিয় করে না, কিন্তু নিছক পরিবর্তনশীল সেট করে deactivate-markকরতে tঅনুক্রমে জন্য নিষ্ক্রিয় করা পরে । এটিকে রোধ করতে, রিসেট deactivate-markকরতে nil সামনে নিষ্ক্রিয়।

(defun kill-ring-save-keep-highlight (beg end)
  "Keep the region active after the kill"
  (interactive "r")
  (prog1 (kill-ring-save beg end)
    (setq deactivate-mark nil)))

(global-set-key (kbd "<C-insert>") 'kill-ring-save-keep-highlight)

0

অঞ্চলটি হাইলাইট করা হয়েছে কারণ চিহ্নটি "সক্রিয়" - তাই স্পষ্টভাবে চিহ্নটি সক্রিয় করা কৌশলটি কার্যকর করে। দ্রষ্টব্য: আমি কেন নিশ্চিত নই কেন পয়েন্ট / চিহ্নের বিনিময় কাজ করে না। এখানে একটি আপডেট হওয়া ফাংশন, আমি যুক্তিগুলি পূরণ করতে ইন্টারেক্টিভ ব্যবহার করতে এটি আপডেটও করেছি।

(defun kill-ring-save-keep-highlight (beg end)
  "Keep the region active after the kill"
  (interactive "r")
  (kill-ring-save beg end)
  (activate-mark))

ইন্টারেক্টিভ আরগস এবং পয়েন্টার জন্য ধন্যবাদ activate-mark, কিন্তু এটি এখনও কার্যকর হয় না। এমনকি আমি .emacsএই ফাংশনটি হওয়ার একমাত্র কোড সহ উবুন্টু ১১.০৪ এর একটি ক্লিন-স্লেট ভিএম ইনস্টল করেছি , তবে এটি এখনও চিহ্নটি সক্রিয় করে না, তবে হাইলাইটিংটি পুনরুদ্ধার করার C-x C-xপরে অবিলম্বে ম্যানুয়ালি আবেদন C-insertকরে ...
পিটার.ও

@ ফ্রেড আপনি কি এটি ইমাসে চেষ্টা করে দেখেছেন আপনার .emacs? অর্থাত্ emacs -qকোডটি চালান এবং এটি কাজ করে কিনা তা পরীক্ষা করে দেখুন।
ট্রে জ্যাকসন

আমি কিছুই ছাড়াই এটি (unsuccesfully) চালানো ছিল ব্যতীত এটির ফাংশন ~/.emacsএবং কিছু ছাড়া ~/.emacs.d/, এবং উল্লেখ করা হয়েছে, এছাড়াও একটি ব্র্যান্ড নতুন একটি ব্র্যান্ড নতুন VM মধ্যে Emacs এর ইনস্টল .... আমি এখন এই কমান্ড চেষ্টা করেছি, কিন্তু এটিও কাজ করে না: /usr/bin/emacs --no-init-file --no-site-file --eval '(defun kill-ring-save-keep-highlight (beg end) (interactive "r") (kill-ring-save beg end) (activate-mark))'... ফাংশনটি কি আপনার জন্য কাজ করে?
পিটার.ও
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.