অটো-ইনডেন্টিং AU যদি অ্যাক্টেক্সের সাথে বিবৃতি


12

যদি পছন্দ মত বিবৃতি জড়িত AUCTeXআদিম texকোডের বর্তমান আচরণ আশেপাশের শর্ত হিসাবে একই স্তরে শর্তাধীন বিবৃতি ইনডেন্ট করা হয়। যেমন কোড

\if@sometoggle%
\dosomething%
\else%
\doanotherthing%
\fi%

পাঠ্যের একটি বড় ব্লক হিসাবে উপস্থিত হয়। আমি AUCTeXনীচে স্নিপেট ইনডেন্ট করতে চাই :

\if@sometoggle%
  \dosomething%
\else%
  \doanotherthing%
\fi%

এটা কি সম্ভব?

উত্তর:


7

এটা সম্ভব:

(setq LaTeX-begin-regexp "\\(?:begin\\|if@\\)\\b")
(setq LaTeX-end-regexp "\\(?:end\\|else\\|fi\\)\\b")
(defun LaTeX-indent-level-count ()
  "Count indentation change caused by all \\left, \\right, \\begin, and
\\end commands in the current line."
  (save-excursion
    (save-restriction
      (let ((count 0))
        (narrow-to-region (point)
                          (save-excursion
                            (re-search-forward
                             (concat "[^" TeX-esc "]"
                                     "\\(" LaTeX-indent-comment-start-regexp
                                     "\\)\\|\n\\|\\'"))
                            (backward-char)
                            (point)))
        (while (search-forward TeX-esc nil t)
          (cond
            ((looking-at "left\\b")
             (setq count (+ count LaTeX-left-right-indent-level)))
            ((looking-at "right\\b")
             (setq count (- count LaTeX-left-right-indent-level)))
            ((looking-at LaTeX-begin-regexp)
             (setq count (+ count LaTeX-indent-level)))
            ((looking-at "else\\b"))
            ((looking-at LaTeX-end-regexp)
             (setq count (- count LaTeX-indent-level)))
            ((looking-at (regexp-quote TeX-esc))
             (forward-char 1))))
        count))))

নোট করুন যে আমাকে আবার সংজ্ঞা দিতে হয়েছিল LaTeX-indent-level-count। পার্থক্য কেবল একটি condশাখা:

((looking-at "else\\b"))

একটি যাদুমন্ত্র মত কাজ করে!
এলেমাকিল

ওপি-র মতো একই সমস্যাটি পেয়ে আমি আপনার কোডটি অনুলিপি করেছি এবং এটি কার্যকর হয়েছে তবে সম্পূর্ণ সন্তোষজনক নয়। এটি কেবল পরবর্তী পর্যন্ত প্রবেশ করে \else। এর অবস্থানটি \elseসঠিক, তবে নিম্নলিখিত কোডটি ( \doanotherthin, প্রশ্নটি দেখুন) এখনও 3 কলামের পরিবর্তে, প্রথম কলামে রয়েছে \ ifx- কমান্ড এবং চিন্তাকে যুক্ত করার জন্য, আমি আপনার প্রথম কোড লাইনটি পরিবর্তন করেছি সাহায্য করবে, কিন্তু আমি ব্যর্থ (কমপক্ষে আবার ইনডেন্টিং পরে \else)। সুতরাং এখানে আমার আংশিক কাজের কোড: (setq LaTeX-begin-regexp "\\(?:begin\\|if\\|ifx\\|else\\)\\b") কোন ধারণা?
জানুয়ারী
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.