(defun my-ppp-comment-region (top bottom)
""
(interactive "r")
(setq macro [home ?\M-m ?\C-z ?/ ?\C-z ?/ ? ])
;; (apply-macro-to-region-lines top bottom macro
(save-excursion
(let ((end-marker (copy-marker bottom))
next-line-marker)
(goto-char top)
(if (not (bolp))
(forward-line 1))
(setq next-line-marker (point-marker))
(while (< next-line-marker end-marker)
(goto-char next-line-marker)
(save-excursion
(forward-line 1)
(set-marker next-line-marker (point)))
(unless (looking-at "[ \t]*$")
(save-excursion
(let ((mark-active nil))
(execute-kbd-macro (or macro last-kbd-macro)))))
);;while
(set-marker end-marker nil)
(set-marker next-line-marker nil))))
и затем добавил
(define-key c-mode-base-map (kbd "C-M-;") 'my-ppp-comment-region)
в
c-mode-common-hook
например так:
(defun my-c-mode-common-hook ()
;; включить режимы auto-newline и hungry-delete
(c-toggle-auto-hungry-state 1)
(flyspell-prog-mode);;включаем проверку правописания в комментариях и строках
(ispell-change-dictionary "american")
;; работает как C-j
(define-key c-mode-base-map "\C-m" 'c-context-line-break)
;;добавлеям комментарии для Проектирования с Помощью Псевдокода
(define-key c-mode-base-map (kbd "C-M-;") 'my-ppp-comment-region)
...
)
(add-hook 'c-mode-common-hook 'my-c-mode-common-hook)
в результате по C-M-; мое описание волшебным образом превращается в готовый комментарий к функции.
Комментариев нет:
Отправить комментарий