[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#2205: My fix does not quite work

From: Keith Ponting
Subject: bug#2205: My fix does not quite work
Date: Thu, 5 Feb 2009 08:12:29 -0500

A small postscript - the save-excursion  fix I suggested does not quite work as it leaves point _before_ the inserted terminator not after it.

The following rearrangement works around that:


(defun perl-electric-terminator (arg)

  "Insert character and adjust indentation.

If at end-of-line, and not in a comment or a quote, correct the's indentation."

  (interactive "P")

  (let ((insertpos (point)))

    (and (not arg)                                                ; decide whether to indent




                   (and (not                                          ; eliminate comments quickly

                                 (and comment-start-skip

                                      (re-search-forward comment-start-skip insertpos t)) )

                                (or (/= last-command-char ?:)

                                    ;; Colon is special only after a label ....

                                    (looking-at "\\s-*\\(\\w\\|\\s_\\)+$"))

                                (let ((pps (parse-partial-sexp

                                                    (perl-beginning-of-function) insertpos)))

                                  (not (or (nth 3 pps) (nth 4 pps) (nth 5 pps))))))

                 (progn                                 ; must insert, indent, delete

                   (insert-char last-command-char 1)

                   (save-excursion (perl-indent-line))

                   (delete-char -1))))

  (self-insert-command (prefix-numeric-value arg)))




Keith Ponting

Aurix Ltd, Malvern WR14 3SZ  UK


reply via email to

[Prev in Thread] Current Thread [Next in Thread]