From 5f9d0ebb98e8a0e54e0f6acd0647d52b96c985c7 Mon Sep 17 00:00:00 2001 From: Chris Hanson Date: Tue, 7 Feb 1995 23:50:20 +0000 Subject: [PATCH] Fix minor bug in M-x indent-c-exp. Still needs a little work, but at least this one isn't as broken as the previous. --- v7/src/edwin/cinden.scm | 67 +++++++++++++++++++++-------------------- 1 file changed, 35 insertions(+), 32 deletions(-) diff --git a/v7/src/edwin/cinden.scm b/v7/src/edwin/cinden.scm index 963c99fb3..5582a767c 100644 --- a/v7/src/edwin/cinden.scm +++ b/v7/src/edwin/cinden.scm @@ -1,6 +1,6 @@ ;;; -*-Scheme-*- ;;; -;;; $Id: cinden.scm,v 1.11 1995/02/02 21:25:17 cph Exp $ +;;; $Id: cinden.scm,v 1.12 1995/02/07 23:50:20 cph Exp $ ;;; ;;; Copyright (c) 1986, 1989-95 Massachusetts Institute of Technology ;;; @@ -286,37 +286,40 @@ This is in addition to c-continued-statement-offset." (let ((end (mark-left-inserting-copy (line-start (forward-sexp expression-start 1 'ERROR) 0)))) - (let loop - ((start expression-start) - (state false) - (indent-stack (list false)) - (contain-stack (list expression-start)) - (last-depth 0)) - (with-values (lambda () (c-indent-expression:parse-line start end state)) - (lambda (start state) - (let* ((depth (parse-state-depth state)) - (depth-delta (- depth last-depth)) - (indent-stack (adjust-stack depth-delta indent-stack)) - (contain-stack (adjust-stack depth-delta contain-stack)) - (indent-line - (lambda () - (if (not (line-blank? start)) - (c-indent-expression:per-line - (skip-chars-forward " \t" start) - expression-start - indent-stack - contain-stack))))) - (if (not (car contain-stack)) - (set-car! contain-stack - (or (parse-state-containing-sexp state) - (backward-sexp start 1 'LIMIT)))) - (if (mark= start end) - (begin - (mark-temporary! end) - (indent-line)) - (begin - (indent-line) - (loop start state indent-stack contain-stack depth))))))))) + (if (mark< expression-start end) + (let loop + ((start expression-start) + (state false) + (indent-stack (list false)) + (contain-stack (list expression-start)) + (last-depth 0)) + (call-with-values + (lambda () (c-indent-expression:parse-line start end state)) + (lambda (start state) + (let* ((depth (parse-state-depth state)) + (depth-delta (- depth last-depth)) + (indent-stack (adjust-stack depth-delta indent-stack)) + (contain-stack (adjust-stack depth-delta contain-stack)) + (indent-line + (lambda () + (if (not (line-blank? start)) + (c-indent-expression:per-line + (skip-chars-forward " \t" start) + expression-start + indent-stack + contain-stack))))) + (if (not (car contain-stack)) + (set-car! contain-stack + (or (parse-state-containing-sexp state) + (backward-sexp start 1 'LIMIT)))) + (if (mark= start end) + (begin + (mark-temporary! end) + (indent-line)) + (begin + (indent-line) + (loop start state indent-stack contain-stack + depth)))))))))) (define (c-indent-expression:parse-line start end state) (let loop ((start start) (state state)) -- 2.25.1