aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard M. Stallman1994-10-10 21:53:52 +0000
committerRichard M. Stallman1994-10-10 21:53:52 +0000
commitc0df1d6180ad43cd37867df5cbb6992cdf0f2c5f (patch)
treebbaa91be6cc1509381ce80fb9c643f9858a2c7f6
parentca1a9692de2d09a25792e6bb478db813131b5c7f (diff)
downloademacs-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.el51
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
304defvar 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.
306In usual case returns an integer: the column to indent to. 308In 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)