all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Richard Stallman <rms@gnu.org>
Cc: emacs-devel@gnu.org
Subject: [jdsmith@as.arizona.edu: HideShow Click to show/hide]
Date: Tue, 21 Nov 2006 02:48:18 -0500	[thread overview]
Message-ID: <E1GmQMc-000645-KR@fencepost.gnu.org> (raw)

Would you please tell us what to do here?

------- Start of forwarded message -------
To: emacs-devel@gnu.org
From: JD Smith <jdsmith@as.arizona.edu>
Date: Mon, 20 Nov 2006 14:30:27 -0700
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Subject: HideShow Click to show/hide
X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=failed 
	version=3.0.4

HideShow seems to have an issue when collapsing blocks, in C or
elsewhere, with Shift-mouse-2.  Consider this:

int main(int argc, char argv[]) {
  int i=0;
  for (i=0;i<5;i++) {
    printf("Got %d\n",i);
  }
}

Shift-Middle clicking anywhere after the first brace at the end of main
properly produces:

int main(int argc, char argv[]) {...

S-mouse-2 on that line anywhere again unfolds it.  But now in the for
statement:

int main(int argc, char argv[]) {
  int i=0;
  for (i=0;i<5;i++) {...
}

There is nowhere you can Shift-click to recover the for block.  It
always collapses the main block instead.  The only reason it worked in
the main case is because it was the outermost block, so it can't find
a prior block to collapse.

I believe a simple change to first move to the end of the line should
fix this:

*** hideshow.el 10 Feb 2006 02:00:30 -0700      1.58
- --- hideshow.el 26 Oct 2006 12:49:10 -0700      
***************
*** 706,711 ****
- --- 706,712 ----
        (if (and c-reg (nth 0 c-reg))
            ;; point is inside a comment, and that comment is hidable
            (goto-char (nth 0 c-reg))
+       (end-of-line)
          (when (and (not c-reg)
                     (hs-find-block-beginning)
                     (looking-at hs-block-start-regexp))


This isn't really perfect, because it doesn't work naturally for continued
lines before the block, e.g.

int main(int argc, char argv[]) {
  int i=0;
  for (i=0;i<5;i++) 
    {
    printf("Got %d\n",i);
  }
}

Really you'd want uncollapse the block below point if point is on a
continued line (like the for... above) which begins the block.  Not
sure of an easy way to do this, but this simple fix at least gives you
*somewhere* to click (on the line with the ellipsis).

JD




_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-devel
------- End of forwarded message -------

             reply	other threads:[~2006-11-21  7:48 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-11-21  7:48 Richard Stallman [this message]
2006-11-22  2:11 ` [jdsmith@as.arizona.edu: HideShow Click to show/hide] JD Smith
2006-11-23  2:51   ` Richard Stallman
2006-11-27 17:53 ` Dan Nicolaescu
2006-11-27 20:29   ` JD Smith
2006-11-28 17:49   ` Richard Stallman
2006-11-28 18:28     ` JD Smith

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

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

  git send-email \
    --in-reply-to=E1GmQMc-000645-KR@fencepost.gnu.org \
    --to=rms@gnu.org \
    --cc=emacs-devel@gnu.org \
    /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 external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.