diff options
| author | Richard M. Stallman | 1994-10-10 21:53:52 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 1994-10-10 21:53:52 +0000 |
| commit | c0df1d6180ad43cd37867df5cbb6992cdf0f2c5f (patch) | |
| tree | bbaa91be6cc1509381ce80fb9c643f9858a2c7f6 | |
| parent | ca1a9692de2d09a25792e6bb478db813131b5c7f (diff) | |
| download | emacs-c0df1d6180ad43cd37867df5cbb6992cdf0f2c5f.tar.gz emacs-c0df1d6180ad43cd37867df5cbb6992cdf0f2c5f.zip | |
(calculate-lisp-indent): Local var
last-sexp renamed to calculate-lisp-indent-last-sexp.
(lisp-indent-function): Use new name of var.
(calculate-lisp-indent-last-sexp): Var defined.
| -rw-r--r-- | lisp/emacs-lisp/lisp-mode.el | 51 |
1 files changed, 30 insertions, 21 deletions
diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el index f6b900944ee..6b77bb61e69 100644 --- a/lisp/emacs-lisp/lisp-mode.el +++ b/lisp/emacs-lisp/lisp-mode.el | |||
| @@ -301,6 +301,8 @@ rigidly along with this one." | |||
| 301 | (> end beg)) | 301 | (> end beg)) |
| 302 | (indent-code-rigidly beg end shift-amt))))) | 302 | (indent-code-rigidly beg end shift-amt))))) |
| 303 | 303 | ||
| 304 | defvar calculate-lisp-indent-last-sexp) | ||
| 305 | |||
| 304 | (defun calculate-lisp-indent (&optional parse-start) | 306 | (defun calculate-lisp-indent (&optional parse-start) |
| 305 | "Return appropriate indentation for current line as Lisp code. | 307 | "Return appropriate indentation for current line as Lisp code. |
| 306 | In usual case returns an integer: the column to indent to. | 308 | In usual case returns an integer: the column to indent to. |
| @@ -316,7 +318,7 @@ of the start of the containing expression." | |||
| 316 | ;; setting this to a number inhibits calling hook | 318 | ;; setting this to a number inhibits calling hook |
| 317 | (desired-indent nil) | 319 | (desired-indent nil) |
| 318 | (retry t) | 320 | (retry t) |
| 319 | last-sexp containing-sexp) | 321 | calculate-lisp-indent-last-sexp containing-sexp) |
| 320 | (if parse-start | 322 | (if parse-start |
| 321 | (goto-char parse-start) | 323 | (goto-char parse-start) |
| 322 | (beginning-of-defun)) | 324 | (beginning-of-defun)) |
| @@ -328,48 +330,54 @@ of the start of the containing expression." | |||
| 328 | state | 330 | state |
| 329 | (> (setq paren-depth (elt state 0)) 0)) | 331 | (> (setq paren-depth (elt state 0)) 0)) |
| 330 | (setq retry nil) | 332 | (setq retry nil) |
| 331 | (setq last-sexp (elt state 2)) | 333 | (setq calculate-lisp-indent-last-sexp (elt state 2)) |
| 332 | (setq containing-sexp (elt state 1)) | 334 | (setq containing-sexp (elt state 1)) |
| 333 | ;; Position following last unclosed open. | 335 | ;; Position following last unclosed open. |
| 334 | (goto-char (1+ containing-sexp)) | 336 | (goto-char (1+ containing-sexp)) |
| 335 | ;; Is there a complete sexp since then? | 337 | ;; Is there a complete sexp since then? |
| 336 | (if (and last-sexp (> last-sexp (point))) | 338 | (if (and calculate-lisp-indent-last-sexp |
| 339 | (> calculate-lisp-indent-last-sexp (point))) | ||
| 337 | ;; Yes, but is there a containing sexp after that? | 340 | ;; Yes, but is there a containing sexp after that? |
| 338 | (let ((peek (parse-partial-sexp last-sexp indent-point 0))) | 341 | (let ((peek (parse-partial-sexp calculate-lisp-indent-last-sexp |
| 342 | indent-point 0))) | ||
| 339 | (if (setq retry (car (cdr peek))) (setq state peek))))) | 343 | (if (setq retry (car (cdr peek))) (setq state peek))))) |
| 340 | (if retry | 344 | (if retry |
| 341 | nil | 345 | nil |
| 342 | ;; Innermost containing sexp found | 346 | ;; Innermost containing sexp found |
| 343 | (goto-char (1+ containing-sexp)) | 347 | (goto-char (1+ containing-sexp)) |
| 344 | (if (not last-sexp) | 348 | (if (not calculate-lisp-indent-last-sexp) |
| 345 | ;; indent-point immediately follows open paren. | 349 | ;; indent-point immediately follows open paren. |
| 346 | ;; Don't call hook. | 350 | ;; Don't call hook. |
| 347 | (setq desired-indent (current-column)) | 351 | (setq desired-indent (current-column)) |
| 348 | ;; Find the start of first element of containing sexp. | 352 | ;; Find the start of first element of containing sexp. |
| 349 | (parse-partial-sexp (point) last-sexp 0 t) | 353 | (parse-partial-sexp (point) calculate-lisp-indent-last-sexp 0 t) |
| 350 | (cond ((looking-at "\\s(") | 354 | (cond ((looking-at "\\s(") |
| 351 | ;; First element of containing sexp is a list. | 355 | ;; First element of containing sexp is a list. |
| 352 | ;; Indent under that list. | 356 | ;; Indent under that list. |
| 353 | ) | 357 | ) |
| 354 | ((> (save-excursion (forward-line 1) (point)) | 358 | ((> (save-excursion (forward-line 1) (point)) |
| 355 | last-sexp) | 359 | calculate-lisp-indent-last-sexp) |
| 356 | ;; This is the first line to start within the containing sexp. | 360 | ;; This is the first line to start within the containing sexp. |
| 357 | ;; It's almost certainly a function call. | 361 | ;; It's almost certainly a function call. |
| 358 | (if (= (point) last-sexp) | 362 | (if (= (point) calculate-lisp-indent-last-sexp) |
| 359 | ;; Containing sexp has nothing before this line | 363 | ;; Containing sexp has nothing before this line |
| 360 | ;; except the first element. Indent under that element. | 364 | ;; except the first element. Indent under that element. |
| 361 | nil | 365 | nil |
| 362 | ;; Skip the first element, find start of second (the first | 366 | ;; Skip the first element, find start of second (the first |
| 363 | ;; argument of the function call) and indent under. | 367 | ;; argument of the function call) and indent under. |
| 364 | (progn (forward-sexp 1) | 368 | (progn (forward-sexp 1) |
| 365 | (parse-partial-sexp (point) last-sexp 0 t))) | 369 | (parse-partial-sexp (point) |
| 370 | calculate-lisp-indent-last-sexp | ||
| 371 | 0 t))) | ||
| 366 | (backward-prefix-chars)) | 372 | (backward-prefix-chars)) |
| 367 | (t | 373 | (t |
| 368 | ;; Indent beneath first sexp on same line as last-sexp. | 374 | ;; Indent beneath first sexp on same line as |
| 369 | ;; Again, it's almost certainly a function call. | 375 | ;; calculate-lisp-indent-last-sexp. Again, it's |
| 370 | (goto-char last-sexp) | 376 | ;; almost certainly a function call. |
| 377 | (goto-char calculate-lisp-indent-last-sexp) | ||
| 371 | (beginning-of-line) | 378 | (beginning-of-line) |
| 372 | (parse-partial-sexp (point) last-sexp 0 t) | 379 | (parse-partial-sexp (point) calculate-lisp-indent-last-sexp |
| 380 | 0 t) | ||
| 373 | (backward-prefix-chars))))) | 381 | (backward-prefix-chars))))) |
| 374 | ;; Point is at the point to indent under unless we are inside a string. | 382 | ;; Point is at the point to indent under unless we are inside a string. |
| 375 | ;; Call indentation hook except when overridden by lisp-indent-offset | 383 | ;; Call indentation hook except when overridden by lisp-indent-offset |
| @@ -396,20 +404,21 @@ of the start of the containing expression." | |||
| 396 | (defun lisp-indent-function (indent-point state) | 404 | (defun lisp-indent-function (indent-point state) |
| 397 | (let ((normal-indent (current-column))) | 405 | (let ((normal-indent (current-column))) |
| 398 | (goto-char (1+ (elt state 1))) | 406 | (goto-char (1+ (elt state 1))) |
| 399 | (parse-partial-sexp (point) last-sexp 0 t) | 407 | (parse-partial-sexp (point) calculate-lisp-indent-last-sexp 0 t) |
| 400 | (if (and (elt state 2) | 408 | (if (and (elt state 2) |
| 401 | (not (looking-at "\\sw\\|\\s_"))) | 409 | (not (looking-at "\\sw\\|\\s_"))) |
| 402 | ;; car of form doesn't seem to be a a symbol | 410 | ;; car of form doesn't seem to be a a symbol |
| 403 | (progn | 411 | (progn |
| 404 | (if (not (> (save-excursion (forward-line 1) (point)) | 412 | (if (not (> (save-excursion (forward-line 1) (point)) |
| 405 | last-sexp)) | 413 | calculate-lisp-indent-last-sexp)) |
| 406 | (progn (goto-char last-sexp) | 414 | (progn (goto-char calculate-lisp-indent-last-sexp) |
| 407 | (beginning-of-line) | 415 | (beginning-of-line) |
| 408 | (parse-partial-sexp (point) last-sexp 0 t))) | 416 | (parse-partial-sexp (point) |
| 409 | ;; Indent under the list or under the first sexp on the | 417 | calculate-lisp-indent-last-sexp 0 t))) |
| 410 | ;; same line as last-sexp. Note that first thing on that | 418 | ;; Indent under the list or under the first sexp on the same |
| 411 | ;; line has to be complete sexp since we are inside the | 419 | ;; line as calculate-lisp-indent-last-sexp. Note that first |
| 412 | ;; innermost containing sexp. | 420 | ;; thing on that line has to be complete sexp since we are |
| 421 | ;; inside the innermost containing sexp. | ||
| 413 | (backward-prefix-chars) | 422 | (backward-prefix-chars) |
| 414 | (current-column)) | 423 | (current-column)) |
| 415 | (let ((function (buffer-substring (point) | 424 | (let ((function (buffer-substring (point) |