X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fpprint.lisp;h=5032ecb699b7033fa1e9870aec42534154fe0b64;hb=15d6e7c9a2c3234f95dfe278046fa2fee1b0c007;hp=57024e69e9dae44d56849ddbe70a912e85397fbc;hpb=dd2cc7dffe4e37177f5c8019f561130abd41d93e;p=sbcl.git diff --git a/src/code/pprint.lisp b/src/code/pprint.lisp index 57024e6..5032ecb 100644 --- a/src/code/pprint.lisp +++ b/src/code/pprint.lisp @@ -364,21 +364,23 @@ ;;;; tab support (defun compute-tab-size (tab section-start column) - (let ((origin (if (tab-sectionp tab) section-start 0)) - (colnum (tab-colnum tab)) - (colinc (tab-colinc tab))) + (let* ((origin (if (tab-sectionp tab) section-start 0)) + (colnum (tab-colnum tab)) + (colinc (tab-colinc tab)) + (position (- column origin))) (cond ((tab-relativep tab) (unless (<= colinc 1) - (let ((newposn (+ column colnum))) + (let ((newposn (+ position colnum))) (let ((rem (rem newposn colinc))) (unless (zerop rem) (incf colnum (- colinc rem)))))) colnum) - ((<= column (+ colnum origin)) - (- (+ colnum origin) column)) - (t + ((< position colnum) + (- colnum position)) + ((zerop colinc) 0) + (t (- colinc - (rem (- column origin) colinc)))))) + (rem (- position colnum) colinc)))))) (defun index-column (index stream) (let ((column (pretty-stream-buffer-start-column stream))