Ed L Cashin <[EMAIL PROTECTED]> writes:

...
> Here's some emacs lisp code that does all that (try it on
> non-essential files first -- I'm no lisp guru).  It's based on stuff
> in indent.el, and I haven't really optimized it for style.  ;)

When I added a context-specific feature to indent after the opening
square bracket on a preceding line, I noticed that the original was
overly complex and a bit wrong.  This is the last unsolicited version
I'll post to the list.  Any other changes will go on the web
somewhere. 

;;;; my indention function
(defun indent-tab-stop-or-relative (&optional unindented-ok)
"indent even under blank line.  indent to beginning of last line if
non-blank"
  (interactive "P")
  (if (and abbrev-mode
           (eq (char-syntax (preceding-char)) ?w))
      (expand-abbrev))
  (let ((indent nil))
    (save-excursion
      (beginning-of-line)
      ;; if we're not on the first line
      (if (save-excursion (re-search-backward "\n" nil t))
          (progn
            (forward-line -1)
            (if (looking-at "[[ \t]")
                (progn
                  (skip-chars-forward " \t[")
                  (setq indent (current-column)))))))
    (let ((opoint (point-marker)))
      (delete-horizontal-space)
      (if indent
          (indent-to indent)
        (tab-to-tab-stop))
      (if (> opoint (point))
          (goto-char opoint))
      (move-marker opoint nil))))

... this part was OK:

> ; (setq tex-mode-hook nil)
> (add-hook
>  'tex-mode-hook
>  '(lambda ()
>     "my own tex stuff.  enough misery!!!"
>     ; (let ((k (make-sparse-keymap))
>     (make-local-variable 'tab-stop-list)
>     (setq tab-stop-list                       ; four-space stops
>         '(4 8 12 16 20 24 28 32 36 40 44 48 52 56 60
>             64 68 72 76 80 84 88 92 96 100 104 108 112
>             116 120 124 128 132 136 140 144 148 152 156
>             160 164 168 172 176 180 184 188 192 196 200
>             204 208 212 216 220 224 228 232 236 240))
>     (make-local-variable 'indent-line-function)
>     (setq indent-line-function 'indent-tab-stop-or-relative)
>     (local-set-key "\C-j" 'newline-and-indent)
>     (local-set-key "\t" 'indent-tab-stop-or-relative)))

-- 
--Ed L Cashin            |   PGP public key:
  [EMAIL PROTECTED]        |   http://noserose.net/e/pgp/

Reply via email to