unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Gemini Lasswell <gazally@runbox.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: 27653@debbugs.gnu.org, Miroslav Urbanek <mu@miroslavurbanek.com>
Subject: bug#27653: Patch for bug#27653: 25.2; ses.el text cell justification
Date: Sat, 30 Sep 2017 11:11:40 -0700	[thread overview]
Message-ID: <87tvzkf47p.fsf_-_@runbox.com> (raw)
In-Reply-To: <83y3pxxkff.fsf@gnu.org> (Eli Zaretskii's message of "Sat, 02 Sep 2017 17:08:20 +0300")

[-- Attachment #1: Type: text/plain, Size: 3153 bytes --]

Eli Zaretskii <eliz@gnu.org> writes:

> Could you please provide a minimal recipe, starting from "emacs -Q",
> that could be used to reproduce the problem?

From emacs -Q:

C-x C-f abc.ses RET
" abc RET

Result: The text is left justified.

Emacs 24 wouldn't build for me, but I found that I could run the
ses.el from Emacs 24 in Emacs 25, and that the bug was not present
when I did so. Some manual bisecting of commits affecting ses.el
produced these results:

[bad]7348668952 * * lisp/ses.el (ses--letref): Quote value before it gets re-evaluated.
[skip]0f2ed59206 * Spelling fixes.
[skip]da8b9ab0d8 * Correct ses-truncate-cell bug implied by setting ses.el in lexical binding: row and col had been erronously made unbound.
[skip]df5703a00d * * lisp/ses.el: Miscellaneous cleanups; use lexical-binding; avoid add-to-list. (ses-localvars): Remove ses--local-printer-list, unused. (ses--metaprogramming): New macro.  Use it to defvar variables. (ses-set-localvars): Simplify. (ses--locprn, ses-cell): Use defstruct.  Change ses-cell's property-list into an alist. (ses-locprn-get-compiled, ses-locprn-compiled-aset) (ses-locprn-get-def, ses-locprn-def-aset, ses-locprn-get-number): Remove; use defstruct accessors/setters instead. (ses-cell-formula-aset, ses-cell-printer-aset) (ses-cell-references-aset): Remove, use setf instead. (ses--alist-get): New function. (ses-cell-property): Rename from ses-cell-property-get and rewrite. Use an alist instead of a plist and don't do move-to-front since the list is always short. (ses-cell-property-get-fun, ses-cell-property-delq-fun) (ses-cell-property-set-fun, ses-cell-property-set) (ses-cell-property-pop-fun, ses-cell-property-get-handle) (ses-cell-property-handle-car, ses-cell-property-handle-setcar): Remove. (ses--letref): New macro. (ses-cell-property-pop): Rewrite. (ses--cell): Rename from ses-cell and make it into a function. Make `formula' fallback on `value' if nil. (ses--local-printer): Rename from ses-local-printer and make it into a function. (ses-set-cell): Turn it into a macro so finding the accessor from the field name is done at compile time. (ses-repair-cell-reference-all): Test presence of `sym' rather than `ref' before adding `sym' to :ses-repair-reference. (ses-calculate-cell): Use ses--letref rather than ses-cell-property-get-handle. (ses-write-cells): Use a single prin1-to-string. (ses-setter-with-undo): New function. (ses-aset-with-undo, ses-set-with-undo): Rewrite using it. (ses-unset-with-undo): Remove. (ses-load): Prefer apply' over `eval'. (ses-read-printer, ses-set-column-width): Use standard "(default foo)" format.
[good]4f11561b82 * Adding support for SES local printer functions

I looked through those and found a change in df5703a00d which looked
like a likely suspect. Reverting it fixes the bug. It looks to me like
the only thing the change affects is justification of text cells, but
someone who is familiar with ses.el should have a look at it.

Miroslav, once you have a version of Emacs with this bug fixed, using
C-c C-l (for ses-recalculate-all) on your saved spreadsheets will fix
the incorrect left alignment.


[-- Attachment #2: 0001-lisp-ses.el-ses-print-cell-Fix-alignment-of-text-cel.patch --]
[-- Type: text/plain, Size: 771 bytes --]

From da3b761e2e5fb10f1512befb7399a198e2419faa Mon Sep 17 00:00:00 2001
From: Gemini Lasswell <gazally@runbox.com>
Date: Sat, 30 Sep 2017 10:31:25 -0700
Subject: [PATCH] * lisp/ses.el (ses-print-cell): Fix alignment of text cells
 (bug#27653)

---
 lisp/ses.el | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/lisp/ses.el b/lisp/ses.el
index 9221476e7a..4c19c70c5d 100644
--- a/lisp/ses.el
+++ b/lisp/ses.el
@@ -1254,8 +1254,7 @@ ses-print-cell
 	 ((< len width)
 	  ;; Fill field to length with spaces.
 	  (setq len  (make-string (- width len) ?\s)
-		text (if (or (stringp value)
-			     (eq ses-call-printer-return t))
+		text (if (eq ses-call-printer-return t)
 			 (concat text len)
 		       (concat len text))))
 	 ((> len width)
-- 
2.14.1


  reply	other threads:[~2017-09-30 18:11 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-11 14:02 bug#27653: 25.2; ses.el text cell justification Miroslav Urbanek
2017-09-02 14:08 ` Eli Zaretskii
2017-09-30 18:11   ` Gemini Lasswell [this message]
2017-10-05 10:09     ` bug#27653: Patch for " Eli Zaretskii
2017-10-05 13:18       ` Stefan Monnier
2017-10-05 13:54         ` Eli Zaretskii
2017-10-11 10:28           ` Miroslav Urbanek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87tvzkf47p.fsf_-_@runbox.com \
    --to=gazally@runbox.com \
    --cc=27653@debbugs.gnu.org \
    --cc=eliz@gnu.org \
    --cc=mu@miroslavurbanek.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).