উত্তর:
এটি মধ্যে সংজ্ঞায়িত করা হয় company-active-map
। আপনি সেই মানচিত্রে রিটার্ন কীটি আবদ্ধ করতে পারেন:
(define-key company-active-map (kbd "<return>") nil)
তবে নোট করুন যে একাধিক প্রার্থী থাকলে রিটার্ন এবং ট্যাব বিভিন্ন কাজ করে। ট্যাবটি আবদ্ধ হয় company-complete-common
, যখন ফেরতের সাথে আবদ্ধ থাকে company-complete-selection
। আপনি যদি রিটার্ন কীটি আবদ্ধ করেন তবে আপনি ব্যবহার করতে পারবেন না M-n
এবং M-p
তালিকা থেকে একটি সম্পূর্ণতা বাছাই করতে পারবেন না ।
আপনি ব্যবহার করতে অন্য কিছু কী বাছতে চাইতে পারেন company-complete-selection
, উদাহরণস্বরূপ:
(with-eval-after-load 'company
(define-key company-active-map (kbd "<return>") nil)
(define-key company-active-map (kbd "RET") nil)
(define-key company-active-map (kbd "C-SPC") #'company-complete-selection))
এই বিরক্তিকর ডিফল্ট আচরণটি ঠিক করার জন্য আমার সম্পূর্ণ সেটআপটি হ'ল:
;;; Prevent suggestions from being triggered automatically. In particular,
;;; this makes it so that:
;;; - TAB will always complete the current selection.
;;; - RET will only complete the current selection if the user has explicitly
;;; interacted with Company.
;;; - SPC will never complete the current selection.
;;;
;;; Based on:
;;; - https://github.com/company-mode/company-mode/issues/530#issuecomment-226566961
;;; - https://emacs.stackexchange.com/a/13290/12534
;;; - http://stackoverflow.com/a/22863701/3538165
;;;
;;; See also:
;;; - https://emacs.stackexchange.com/a/24800/12534
;;; - https://emacs.stackexchange.com/q/27459/12534
;; <return> is for windowed Emacs; RET is for terminal Emacs
(dolist (key '("<return>" "RET"))
;; Here we are using an advanced feature of define-key that lets
;; us pass an "extended menu item" instead of an interactive
;; function. Doing this allows RET to regain its usual
;; functionality when the user has not explicitly interacted with
;; Company.
(define-key company-active-map (kbd key)
`(menu-item nil company-complete
:filter ,(lambda (cmd)
(when (company-explicit-action-p)
cmd)))))
(define-key company-active-map (kbd "TAB") #'company-complete-selection)
(define-key company-active-map (kbd "SPC") nil)
;; Company appears to override the above keymap based on company-auto-complete-chars.
;; Turning it off ensures we have full control.
(setq company-auto-complete-chars nil)
( বর্তমান কনফিগারেশনের লিঙ্ক , যা আরও উন্নত করা হয়েছে তবে এদিক থেকে জটিল)
( এই প্রশ্ন অনুসারে আপডেট হয়েছে )
(define-key company-active-map (kbd "C-RET") #'company-complete-selection)
তবে এটি কার্যকর হয়নি। আপনি কি জানেন যে এটি সম্ভব হবে এবং কীভাবে অর্জন করা যায়?
TAB
তালিকার প্রথম আইটেমটি 'ইন্টারঅ্যাক্ট' না করেই নির্বাচন করতে পারেন । তবে আপনার প্রশ্নের উত্তর দেওয়ার জন্য, আমি বাজি ধরছি যে আপনার টার্মিনাল প্রেরণ করতে পারে না C-RET
(আমার পারে না)। চেষ্টা করুন C-h k C-RET
এবং দেখুন যে ইমাসগুলি আসলে ন্যায়বিচারের C-RET
পরিবর্তে সংকেত পেয়েছে কিনা RET
।
(define-key company-active-map (kbd "TAB") #'company-complete-common-or-cycle)
তবে এটি আপনার অধিকার বলে মনে হচ্ছে, যখন আমি সি-আরইটি ছাড়া অন্য কোনও কিছুতে পরিবর্তিত হয়েছি তখন আমি পছন্দসই আচরণ পেয়েছিলাম। ধন্যবাদ।
M-p
এবং এর মাধ্যমে চক্র করতে পারেন M-n
বা সেগুলি অনুসন্ধান করতে পারেন C-s
বা সরাসরি প্রার্থী নির্বাচন M-1
করে M-0
(যদি আপনি সেট করেন তবে সংখ্যাগুলি প্রদর্শিত হয় company-show-numbers
)।
একই সমস্যার সমাধানের সন্ধান করতে গিয়ে এটি কেবল দেখেছি (যদিও আমার জন্য বিরক্তিকর কীগুলি ছিল SPC
এবং .
)।
আমি দেখতে পেয়েছি যে nil
@ গ্লুকাস এবং @ রেডন রোসবারো প্রস্তাবিত আপত্তিকর কীগুলি বাঁধাই একটি দুর্দান্ত ইউএক্স নয়, সুতরাং আপনাকে গতি টাইপ করার জন্য ব্যাঘাতী এমন সংস্থা ড্রপডাউন নিজেই বাতিল করতে হবে।
মানে, যদি কোম্পানী সক্রিয় হয় এবং আপনি একটি চাবি বাধ্য টাইপ nil
কিছুই ঘটবে। আপনি যখন কোনও চরিত্র টাইপ করবেন তখন আপনি যা প্রত্যাশা করবেন তা নয়। আপনি চরিত্রটি sertedোকানো আশা করবেন।
বরং ইমাকগুলি স্বয়ংক্রিয়ভাবে কল করা company-abort
এবং তারপরে আপনার জন্য টাইপ করা অক্ষরটি সন্নিবেশ করা আরও অনেক সুবিধাজনক । এখানে আমার সমাধান:
(defun company--my-insert-spc() (interactive) (company-abort)(insert-char #10r32))
(defun company--my-insert-dot() (interactive) (company-abort)(insert-char #10r46))
(define-key company-active-map (kbd "SPC") 'company--my-insert-spc)
(define-key company-active-map (kbd ".") 'company--my-insert-dot)
আমি মনে করি আপনি সহজেই এর পরিবর্তে RET
কল করে এটিতে প্রসারিত করতে পারেন (যদিও আমি এটি চেষ্টা করি নি কারণ আমি নির্বাচনের জন্য ব্যবহার করি না )।(newline)
(insert-char)
RET
আসলে আমি ব্যবহার করছি use-package
তাই এটি আমার উদ্যোগে যা ছিল:
(use-package company
:config
(global-company-mode)
(setq company-minimum-prefix-length 3)
(setq company-auto-complete t)
(setq company-show-numbers t)
:bind
(("C-<tab>" . company-complete)
:map company-active-map
("ESC" . company-abort)
;; prevent company from completing on its own when we type regular characters
("SPC" . company--my-insert-spc)
("." . company--my-insert-dot)
)
)