Rewrite enhanced editing logic - sexp-track.el.
[bpt/guile.git] / emacs / guile-c.el
index 8d1b9f5..fe05159 100644 (file)
@@ -22,8 +22,9 @@
 ;; (add-hook 'c-mode-hook
 ;;   (lambda ()
 ;;     (require 'guile-c)
-;;     (define-key c-mode-map "\C-c\C-g\C-e" 'guile-c-edit-docstring)
 ;;     (define-key c-mode-map "\C-c\C-g\C-p" 'guile-c-insert-define)
+;;     (define-key c-mode-map "\C-c\C-g\C-e" 'guile-c-edit-docstring)
+;;     (define-key c-mode-map "\C-c\C-g\C-d" 'guile-c-deprecate-region)
 ;;     ))
 
 ;;; Code:
@@ -32,6 +33,7 @@
 
 (defvar guile-c-prefix "scm_")
 
+\f
 ;;;
 ;;; Insert templates
 ;;;
   (while (string-match "[-:]" name) (setq name (replace-match "_" t t name)))
   (concat guile-c-prefix name))
 
+\f
 ;;;
 ;;; Edit docstrings
 ;;;
 
+(defvar guile-c-window-configuration nil)
+
 (defun guile-c-edit-docstring ()
   (interactive)
   (let* ((region (guile-c-find-docstring))
         (doc (if region (buffer-substring (car region) (cdr region)))))
     (if (not doc)
        (error "No docstring!")
+      (setq guile-c-window-configuration (current-window-configuration))
       (with-current-buffer (get-buffer-create "*Guile Docstring*")
        (erase-buffer)
        (insert doc)
        (if global-font-lock-mode
            (font-lock-fontify-buffer))
        (local-set-key "\C-c\C-c" 'guile-c-edit-finish)
+       (setq fill-column 63)
        (switch-to-buffer-other-window (current-buffer))
         (message "Type `C-c C-c' to finish")))))
 
       (forward-line 1)))
   (let ((doc (buffer-string)))
     (kill-buffer (current-buffer))
-    (delete-window (selected-window))
+    (set-window-configuration guile-c-window-configuration)
     (let ((region (guile-c-find-docstring)))
       (goto-char (car region))
       (delete-region (car region) (cdr region)))
            (forward-line 1))
          (cons start (- (point) 2))))))
 
+\f
+;;;
+;;; Others
+;;;
+
+(defun guile-c-deprecate-region (start end)
+  (interactive "r")
+  (save-excursion
+    (let ((marker (make-marker)))
+      (set-marker marker end)
+      (goto-char start)
+      (insert "#if (SCM_DEBUG_DEPRECATED == 0)\n\n")
+      (goto-char marker)
+      (insert "\n#endif /* (SCM_DEBUG_DEPRECATED == 0) */\n"))))
+
 (provide 'guile-c)
 
 ;; guile-c.el ends here