সমাবেশ উত্স কোডে আরও ভাল ইন্ডেন্টেশন এবং নেভিগেশন


13

আমি যখন সি বা জাভা কোডটি লিখি এটি অত্যন্ত নিয়মিত, তবে সমাবেশ ( asm-mode) সহ এটি এতটা বিশৃঙ্খল।

আমি ব্যবহার করছি auto-completeএবং yasnippet। আমি স্নিপেট তৈরি করেছি এবং সেগুলি ব্যবহার করছি, তবে কোড সংগঠন এবং ইনডেন্টেশনটি অগোছালো।

কী প্যাকেজ (গুলি) আমাকে সহায়তা করবে:

  • সহজেই ইনডেন্ট কোড এবং মন্তব্যগুলি সঠিকভাবে, যাতে আমি দেখতে পারি যে কোডের প্রতিটি টুকরা কী করছে;
  • কোডের সেই বিশাল ভরতে নেভিগেট করুন, তাই আমি সহজেই কোডের টুকরাগুলির মধ্যে লাফ দিতে পারি?

3
আপনার প্রশ্নটি আরও নির্দিষ্ট করে দেওয়ার চেষ্টা করুন। উদাহরণস্বরূপ: আপনার কি মনে করা asm-modeউচিত যা করা উচিত, কিন্তু তা করে না? (কোন বৈশিষ্ট্যগুলি অনুপস্থিত?)
কনস্টান্টাইন

2
EmacsWiki সমাবেশ জন্য তালিকাভুক্ত কয়েকটি অপশন আছে। তবে দয়া করে আপনার প্রশ্নটি সম্পাদন করুন সমস্যা এবং আপনি এখন পর্যন্ত কী করেছেন সে সম্পর্কে আরও সুনির্দিষ্ট হওয়ার জন্য question "যে কোনও দরকারী প্যাকেজ" প্রচুর জমি coversেকে দেয়।
ড্যান

কেন এই প্রশ্ন বন্ধ? ইন্ডেন্টেশন কাজ করা ( asm-modeঅন্য সব কিছুর সাথে আলাদাভাবে আচরণ করে) এবং একটি শালীন পরিবেশ কনফিগার করা (চারপাশে ঝাঁপ দাও, কোড সমাপ্তি) একটি বৈধ কনসার্ট।
আপনি ডু

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

উত্তর:


11

শুধু বিল্ট-ইন ব্যবহার করুন asm-mode। এটি আপনাকে যে কোনও সমাবেশ ভাষার জন্য সিনট্যাক্স হাইলাইট করে। gas-modeএটি করে না এবং এটি অ্যান্ড টি সিনট্যাক্সের সাথে ব্যবহারযোগ্য নয়।

আপনি যদি ইন্ডেন্টেশন সেট করতে চান তবে asm-modeনোট করুন যে আপনি ব্যবহার করতে পারবেন না tab-widthতবে tab-stop-listএটি যে স্পেসগুলি উল্লেখ করে যে 1 টি ট্যাব, 2 টি ট্যাব, 3 টি ট্যাব ... প্রদর্শিত হতে পারে:

(setq tab-stop-list '(4 8 12 16 20 24 28 32 36 40 44 48 52 56 60
                      64 68 72 76 80 84 88 92 96 100 104 108 112
                      116 120))

উপরের উদাহরণটির অর্থ হ'ল মুঠ ট্যাবটিতে 4 টি স্পেস রয়েছে, ২ য় ট্যাব (প্রথম ট্যাবের পাশের) 8 টি স্পেস রয়েছে, তৃতীয় ট্যাব (দ্বিতীয় ট্যাবের পাশের )টিতে 12 স্পেস রয়েছে ... ইত্যাদি so

আপনি এই তালিকাটি তৈরি করতে পারেন:

(setq tab-stop-list (number-sequence 2 60 2))

number-sequenceশুরুর সংখ্যা 2(প্রথম যুক্তি) 60(দ্বিতীয় আর্গুমেন্ট) পর্যন্ত সংখ্যার একটি তালিকা তৈরি করে , প্রতিটি সংখ্যা 2তার পাশের সংখ্যার সাথে পৃথক হয় । এবং newline-and-indentআরইটি-র সাথে আবদ্ধ হওয়া মনে রাখবেন , যাতে ইমাক্স স্বয়ংক্রিয়ভাবে আপনার জন্য ইনডেন্ট হয়।

আপনি যদি চারপাশে ঝাঁপিয়ে পড়তে চান তবে এই জাতীয় সারণি ব্যবহার করুন:

ctags -e -R

-eএর অর্থ ইমাক্স দ্বারা ব্যবহৃত ট্যাগ ডাটাবেস উত্পন্ন। -Rএর অর্থ প্রকল্পের রুট থেকে উপ-ডিরেক্টরিগুলিতে ফাইলগুলির জন্য পুনরাবৃত্তভাবে ট্যাগ তৈরি করা।

এর পরে, আপনি যদি হেলম ব্যবহার না করেন তবে আপনি ইমা্যাক্সের helm-etags-selectচারপাশে বা অন্য কোনও etagsক্লায়েন্ট লাফিয়ে ব্যবহার করতে পারেন ।

সম্পাদনা : এখানে একটি নমুনা সেটআপ করা হল:

(require 'asm-mode)
(add-hook 'asm-mode-hook (lambda ()
                           (setq indent-tabs-mode nil) ; use spaces to indent
                           (electric-indent-mode -1) ; indentation in asm-mode is annoying
                           (setq tab-stop-list (number-sequence 2 60 2))))

(define-key asm-mode-map (kbd "<ret>") 'newline-and-indent)
(define-key asm-mode-map (kbd "M-.") 'helm-etags-select)

company-completeচাপ দেওয়ার সাথে সাথে আপনার প্রাথমিক সমাপ্তিও থাকতে পারে S-TAB:

(define-key asm-mode-map (kbd "<backtab>") 'company-complete)

আপনি ব্যবহার করতে পারেন <tab>উভয় কারণ ট্রিগার সমাপ্তির <tab>এবং M-iএকই কমান্ড চালানোর tab-to-tab-stopযে টিপে স্পেস বা ট্যাবের আপনার সেটিং উপর নির্ভর করে indent-tabs-mode। এর সাথে দুর্দান্ত জিনিসটি company-modeহ'ল আপনি যদি মিনিউফারটিতে বর্তমানে উপস্থিত হন তবে হাইলাইটেড প্রার্থীর একটি সংক্ষিপ্ত বিবরণ পাবেন। উদাহরণস্বরূপ, আপনার যদি এর মতো সংজ্ঞা থাকে:

KeyStrokes  word    0

আপনি যখন কার্সারটিকে KeyStrokesপ্রার্থীর কাছে নিয়ে যান, এটি word 0মিনিবাসে মুদ্রণ করে।


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