0

モードに関係なくコメントを外す関数を書いています。行頭のコメント文字をすべて削除したい。

次の文字がcomment-startと等しくなくなるまで、以下のスニペットをループさせるにはどうすればよいですか?(したがって、基本的に、この「if」を継続して、following-char等しくなくなるまで継続させcomment-startます)

(if (string= (byte-to-string (following-char)) comment-start)
   (progn (delete-forward-char 1) 
          (when (string= (byte-to-string (following-char)) " ") 
               (delete-forward-char 1))))
4

1 に答える 1

0

whileループは、私が思っていたよりも簡単でした。

(defun uncomment-mode-specific ()  
  "Uncomment region OR uncomment beginning of line comment OR uncomment end"
  (interactive)
  (if (region-active-p)
      (uncomment-region (region-beginning) (region-end))
    (back-to-indentation))
  (setq scvar 0)
  (setq scskipvar 0)
  (while (= scvar 0) 
     (if (string= (byte-to-string (following-char)) comment-start)
         (progn (delete-forward-char 1) 
            (when (string= (byte-to-string (following-char)) " ") 
                      (delete-forward-char 1))
            (setq scskipvar 1))
       (setq scvar 1)))
  (if (= scskipvar 0)
      (progn (search-forward comment-start nil t)
         (left-char 1)
         (kill-line))
    )
)
于 2012-11-03T20:38:25.243 に答える