জাভাস্ক্রিপ্ট থাকা এইচটিএমএল ফাইল সম্পাদনা করার জন্য আমি কীভাবে ইম্যাক্স কনফিগার করব?


94

আমি এইচএমএল ট্যাগ এবং জাভাস্ক্রিপ্ট উভয় সামগ্রীর সাহায্যে একটি HTML ফাইল সম্পাদনা করতে ইম্যাক্স ব্যবহারের বেদনাদায়ক প্রথম পদক্ষেপগুলি শুরু করেছি। আমি এনএক্সএইচটিএমএল ইনস্টল করেছি এবং এটি ব্যবহার করে দেখার চেষ্টা করেছি - অর্থাত্ .html ফাইলগুলির জন্য এনএক্সএইচটিএমএল-মুমোমো-মোড ব্যবহার করার জন্য সেট আপ করেছি। তবে আমি এটি ভালোবাসি না। আমি যখন কোডটির জাভাস্ক্রিপ্ট অংশটি সম্পাদনা করছি তখন সি / সি ++ কোড সম্পাদনা করার সময় ট্যাব সূচকগুলি তাদের মতো আচরণ করে না। এটি লাইনটির মধ্যে ট্যাব স্থাপন শুরু করে এবং যদি আপনি একটি লাইনের পূর্ববর্তী সাদা স্থানটিতে ট্যাবটি চাপার চেষ্টা করেন এবং লাইনটিকে পুনরায় ট্যাবফিটিংয়ের পরিবর্তে ট্যাবটি সন্নিবেশ করান।

অন্য একটি বিষয় যা আমি পছন্দ করি না তা হ'ল এটি সি সি / সি ++ মোডের মতো সিনট্যাক্স রঙিন করে না। এইচটিএমএল ফাইলগুলি সম্পাদনা করার সময় আমি ডিফল্ট জাভা-মোডের আচরণকে অনেক পছন্দ করি তবে এটি HTML কোডের সাথে খুব সুন্দরভাবে খেলেন না। :-(

1) জাভাস্ক্রিপ্ট অংশের সাথে এইচটিএমএল ফাইল সম্পাদনা করার জন্য আরও ভাল মোড আছে?

2) জাভাস্ক্রিপ্ট অংশগুলির জন্য ডিফল্ট জাভা-মোডটি ব্যবহার করার জন্য এনএক্সএইচটিএমএল পাওয়ার কোনও উপায় আছে কি?

শুভেচ্ছা,

এম


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

4
আমি অনুমান করি যে একটি কার্যনির্বাহী দুটি ফাইল তৈরি করছে এবং জাভাস্ক্রিপ্ট ফাইলটিকে একটি দিয়ে রেফারেন্স করছে <script src>। আপনি উভয়কে কিছুটা C-x 2বা কিছু দিয়ে দেখতে পারেন C-x 3এবং প্রতিটিটির জন্য একটি মোড রাখতে পারেন। : - /
প্যাট্রিক

উত্তর:


41

আর একটি সমাধান হ'ল multi-web-mode:

https://github.com/fgallina/mલ્ટ-web-mode

যা ইতিমধ্যে উল্লিখিত তুলনায় আরও সহজে কনফিগারযোগ্য হতে পারে multi-mode

আপনি কেবল আপনার .emacsফাইলটিতে আপনার পছন্দসই মোডগুলি কনফিগার করেছেন:

(require 'multi-web-mode)
(setq mweb-default-major-mode 'html-mode)
(setq mweb-tags 
  '((php-mode "<\\?php\\|<\\? \\|<\\?=" "\\?>")
    (js-mode  "<script[^>]*>" "</script>")
    (css-mode "<style[^>]*>" "</style>")))
(setq mweb-filename-extensions '("php" "htm" "html" "ctp" "phtml" "php4" "php5"))
(multi-web-global-mode 1)

ইমাক্সের একাধিক একাধিক মোড (দীর্ঘশ্বাস) সম্পর্কে এখানে আরও:

http://www.emacswiki.org/emacs/ মাল্টিপলমডস

আপডেট: HTML5 এর সাথে কাজ করার জন্য জাভাস্ক্রিপ্ট বা সিএসএস অঞ্চলগুলি সনাক্ত করার জন্য রেগেক্সপগুলি সরল করে তুলেছে - সুপার-সুনির্দিষ্ট এবং ভঙ্গুর নিয়মিত এক্সপ্রেশনগুলির প্রয়োজন নেই।


এটিকে ফ্লাইমেকের সাথে একত্রিত করতে আমার খুব ঝামেলা হয়েছিল
জুয়ানমার্কস

এইচটিএমএল 5 এর মতো আরও কেসগুলি হ্যান্ডেল করার জন্য, আমি এখন জাভাস্ক্রিপ্ট এবং সিএসএসের জন্য সহজ এবং আরও ক্ষমাশীল ট্যাগ বিবরণ ব্যবহার করি:(js-mode "<script[^>]*>" "</script>") (css-mode "<style[^>]*>" "</style>")
কাই কার্ভার

32

আমি এই জাতীয় ব্যবহারের জন্য মুখ্য মোড ওয়েব-মোড.এল লিখেছি: এইচটিএমএল টেমপ্লেটগুলি সম্পাদনা করে যা জেএস, সিএসএস, জাভা (জেএসপি), পিএইচপি এম্বেড করে। আপনি এটি http://web-mode.org এ ডাউনলোড করতে পারেন ওয়েব-মোড.el ব্লকের ধরণ অনুসারে সিনট্যাক্স হাইলাইটিং এবং ইন্ডেন্টেশন করে। ইনস্টলেশন সহজ:

(require 'web-mode)
(add-to-list 'auto-mode-alist '("\\.html$" . web-mode))

4
প্যাকেজ হিসাবে ওয়েব-মোড উপলব্ধ। কমপক্ষে মেলপা থেকে।
mcginniwa

প্লে / রেজার ইঞ্জিন সমর্থন!
juanmirocks

হাই fxbois, কেন এটি আমার জন্য কাজ করে না? আমি ওয়েব-মোড.এলকে / ব্যবহার / লোকাল / শেয়ার / ইমাস / সাইট-লিস্প / (এবং অন্যান্য সমস্ত .el ফাইলগুলি সরিয়ে ফেলে) অনুলিপি করেছি, এবং ওয়েব -মোড.অর্গ.এর "ইনস্টল" বিভাগটি অনুসরণ করেছি (এবং কেবলমাত্র .emacs ফাইল) এই কয়েকটি লাইন আছে)। আপনি কি সাহায্য করতে পারেন? ধন্যবাদ
টনি শো

4
আপনি কি ইমাসের ভিতরে ওয়ে-মোড.ইল ফাইল এবং এমএক্স ওয়েব-মোডের পরে লোড-ফাইল করতে পারবেন
fxbois

14

দুর্দান্ত প্রশ্ন। আপনার প্রথমটিতে আপনি কতগুলি উত্সাহ পেয়েছেন তা দেখুন!

প্রত্যেকেরই আপনার মতো অভিজ্ঞতা রয়েছে। আমিও.

আপনি বর্ণিত হিসাবে এনএইচটিএমএল-মোডে নির্ভর করে যা আমার জন্য একই ধরণের অদ্ভুততা প্রদর্শন করেছিল, আমি অন্য একটি বিকল্পের সন্ধান করেছি এবং মাল্টি-মোড.এল খুঁজে পেয়েছি । এটি এক ধরণের সাধারণ উদ্দেশ্যমূলক মাল্টি-মোড কঙ্কাল। এটি ব্যবহার করতে, আপনাকে একটি মোড শুরু হয় এবং অন্যটি শেষ হয় কোথায় তা বর্ণনা করার জন্য আপনাকে নিয়মিত এক্সপ্রেশন নির্দিষ্ট করতে হবে। সুতরাং, আপনি <script...>একটি জাভাস্ক্রিপ্ট ব্লক শুরু করার জন্য , এবং <style...>একটি সিএসএস ব্লক শুরু করার সন্ধান করছেন । তারপরে আপনি প্রতিটি ব্লকের জন্য আপনার নিজস্ব মোডগুলিতে প্লাগ ইন করেন - যদি আপনি জাভাস্ক্রিপ্টের জন্য এসপ্রেসো পছন্দ করেন তবে এটি ব্যবহার করুন। এবং এই জাতীয় রেগেক্সগুলির জন্য যা অন্যান্য ব্লকগুলি সনাক্ত করে।

অনুশীলনে, আপনি দস্তাবেজটি নেভিগেট করার সময়, প্রতিটি ব্লকের জন্য আলাদা মোড সক্ষম করা হয়।

আমি একটি এএসপি.এনইটি উত্পাদন করতে মাল্টি-মোড ব্যবহার করেছি, এটি কার্সার বাফারে কোথায় রয়েছে তার উপর নির্ভর করে সঠিক হাইলাইটিং এবং ফন্টিফিকেশন সহ আমাকে একটি ফাইলে সি #, এইচটিএমএল, সিএসএস এবং জাভাস্ক্রিপ্ট সম্পাদনা করতে দেয়। এটি নিখুঁত নয় তবে আমি এটি বিদ্যমান সম্ভাব্যতার একটি চিহ্নিত উন্নতি হিসাবে পেয়েছি। আসলে এটি আপনি যা চান তা হতে পারে। চেষ্টা কর.

https://code.google.com/p/csharpmode/source/browse/trunk/aspx-mode.el?r=14


আমি সবেমাত্র এসপেক্স-মোড চেষ্টা করে দেখতে পেলাম। এটা দুর্দান্ত কাজ করেছে। আমি কেবল যা করেছি তা হ'ল জাভাস্ক্রিপ্ট সমর্থনটি এক্সপ্রেসো-মোড থেকে জাভাস্ক্রিপ্ট-মোডে পরিবর্তন করুন।
MakeDummy

7

সত্যিই ভাল সমাধান নয় তবে দ্রুত সমাধান যদি আপনার এইচটিএমএলটিতে জাভাস্ক্রিপ্ট থাকতে হয় তবে জাভাস্ক্রিপ্টযুক্ত অঞ্চলটি নির্বাচন করতে হবে এবং কমান্ড narrow-to-region( C-x n n) ব্যবহার করতে হবে এবং তারপরে আপনার পছন্দসই জাভাস্ক্রিপ্ট মোডে স্যুইচ করতে হবে। কমান্ডটি widenআপনাকে ফিরিয়ে আনবে, ( C-x n w)।


0

দেখে মনে হচ্ছে আপনি নিজের এনএক্সএইচটিএমএলটিকে ভুলভাবে সেটআপ করেছেন। কেবলমাত্র প্রয়োজনীয় সেটআপটি autostart.elফাইলটি লোড করা উচিত এবং তারপরে সবকিছু কিছু স্তরে কাজ করা উচিত। এনএক্সএইচটিএমএল কোনওভাবেই নিখুঁত নয়, তবে এটি এইচটিএমএল / সিএসএস / জাভাস্ক্রিপ্ট / মকো ব্যবহার করে আমার অভিজ্ঞতাগুলি বেশ ভাল, কমপক্ষে মকো ছাড়াও সব চেয়ে ভাল for তবে আমি পুরোপুরি নিশ্চিত যে আমি মকো অংশটি নিয়ে কাজ করেছি।

এইভাবে আমি আমার এনএক্সএইচটিএমএল সূচনা করি:

(when (load "autostart.el" t)
  (setq nxhtml-skip-welcome t
        mumamo-chunk-coloring 'submode-colored
        indent-region-mode t
        rng-nxml-auto-validate-flag nil))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.