主な目標: スマートな「コメント解除」機能をあらゆるモードに適したものにすること。
(defun uncomment-mode-specific ()
(interactive)
(if (region-active-p)
(comment-region (region-beginning) (region-end) -1) ; so far so good
(if (= ";" (line-beginning-position)) ; here is the problem
(message "successful")
(message "unsuccessful"))
))
ステートメントではif
、行の最初の文字の値を確認したいと思います。それequals
が変数( emacs lispcomment-start
では " " を返す) である場合は、その文字に移動して削除します。アイデア?;
beginning-of-line
編集:以下のコメントで要求された詳細な説明が続きます。私は機能をしたい:
1)リージョンが選択されている場合は、コメントを削除します(ここでは、パトリックが指摘したように、コメント解除リージョンまたはコメント dwim が機能します)。
そうしないと:
2) ポイントの行の最初の文字がコメント文字である場合は、コメント文字を削除します。
そうしないと:
\%
3) コメントの現在の行を検索し ( or 、モード依存を除く\;
)、コメントまで上に移動し、コメント記号で始まる行を削除します。
これがどのように異なる動作をしたいのかわかりませんでした。次に、モードに応じてcomment-start
、コメント文字を識別するために使用して、コメントを単純に削除するために 1 つのキーにバインドできます。