From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Jeremy Moore Newsgroups: gmane.emacs.bugs Subject: bug#11951: 24.1; Define alist saved incorrectly in hide-ifdef-mode Date: Mon, 16 Jul 2012 11:51:13 +0100 Message-ID: NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/alternative; boundary=14dae9340e8566109304c4f03537 X-Trace: dough.gmane.org 1342452029 22816 80.91.229.3 (16 Jul 2012 15:20:29 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Mon, 16 Jul 2012 15:20:29 +0000 (UTC) To: 11951@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Mon Jul 16 17:20:29 2012 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Sqn64-0006aX-6g for geb-bug-gnu-emacs@m.gmane.org; Mon, 16 Jul 2012 17:20:28 +0200 Original-Received: from localhost ([::1]:47371 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sqn63-0005YO-Cv for geb-bug-gnu-emacs@m.gmane.org; Mon, 16 Jul 2012 11:20:27 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:41555) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sqn5q-0005Om-8H for bug-gnu-emacs@gnu.org; Mon, 16 Jul 2012 11:20:24 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Sqn5k-0003s4-T0 for bug-gnu-emacs@gnu.org; Mon, 16 Jul 2012 11:20:14 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:34779) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sqn5k-0003s0-ON for bug-gnu-emacs@gnu.org; Mon, 16 Jul 2012 11:20:08 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1SqnBT-0006Vw-Ik for bug-gnu-emacs@gnu.org; Mon, 16 Jul 2012 11:26:03 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Jeremy Moore Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 16 Jul 2012 15:26:03 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 11951 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.134245232324962 (code B ref -1); Mon, 16 Jul 2012 15:26:03 +0000 Original-Received: (at submit) by debbugs.gnu.org; 16 Jul 2012 15:25:23 +0000 Original-Received: from localhost ([127.0.0.1]:44318 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1SqnAp-0006UT-30 for submit@debbugs.gnu.org; Mon, 16 Jul 2012 11:25:23 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:45355) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1SqizP-0007wR-1X for submit@debbugs.gnu.org; Mon, 16 Jul 2012 06:57:20 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Sqitf-0004d3-AW for submit@debbugs.gnu.org; Mon, 16 Jul 2012 06:51:24 -0400 Original-Received: from lists.gnu.org ([208.118.235.17]:41417) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sqitf-0004cz-71 for submit@debbugs.gnu.org; Mon, 16 Jul 2012 06:51:23 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:48417) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SqitZ-000614-1q for bug-gnu-emacs@gnu.org; Mon, 16 Jul 2012 06:51:23 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SqitX-0004bm-7v for bug-gnu-emacs@gnu.org; Mon, 16 Jul 2012 06:51:16 -0400 Original-Received: from mail-gh0-f169.google.com ([209.85.160.169]:53052) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SqitX-0004bh-14 for bug-gnu-emacs@gnu.org; Mon, 16 Jul 2012 06:51:15 -0400 Original-Received: by ghrr18 with SMTP id r18so5590971ghr.0 for ; Mon, 16 Jul 2012 03:51:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:date:x-google-sender-auth:message-id:subject :from:to:content-type; bh=M06FfxBJmanf/Gju5Cc4zED3sGq9XRYyS+hbVvzBSX8=; b=fdNCt8TVmPKk077gWY/gGk9RH7RBTiptrJMqfj4DAWWHKcjodFcMzWQHbCTJQYOvKP ZUhPVmhoSg4euvIX9yPkhCRSwwMIWgrrpf8tEk/jp7ftfTzJ+zHSdetIAH7ORJEMvUsW 51el3mZgTTBpt0elghRnMi0eHGlB79YIXg5llp/JItNfPvhH/svryFnIeJwsfECHQHwC cuq5jodtOkpU4dGS574OZbbUpQsVfOIR6D+uSX5U7N3vQdDbPH8NOhQyv/3wNijeutcb noteMfTLBBBoUX6EqWPoIpRjkESSrVN9UtGO9enk5ISZhmO65K58XgQIztPMV1KphZy/ AtyQ== Original-Received: by 10.50.217.137 with SMTP id oy9mr4832533igc.56.1342435873918; Mon, 16 Jul 2012 03:51:13 -0700 (PDT) Original-Received: by 10.50.7.38 with HTTP; Mon, 16 Jul 2012 03:51:13 -0700 (PDT) X-Google-Sender-Auth: cFhnGI7LN7aJGL-OLGqxpU1uLMs X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Mailman-Approved-At: Mon, 16 Jul 2012 11:25:19 -0400 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:61987 Archived-At: --14dae9340e8566109304c4f03537 Content-Type: text/plain; charset=ISO-8859-1 hide-ifdef-mode stores the list of current defines incorrectly when function hide-ifdef-set-define-alist is used. Steps to reproduce: 1. Start up with emacs -q. 2. Create a new buffer named test.c with the following contents: #include int main(void) { #ifdef DEFINE1 printf("Define 1"); #endif #ifdef DEFINE2 printf("Define 2"); #endif #ifdef DEFINE 3 printf("Define 3"); #endif return 0; } 3. Hide some ifdefs as follows: M-x c-mode M-x hide-ifdef-mode C-c @ d DEFINE2 C-c @ d DEFINE3 C-c @ h - Result: DEFINE1 block is hidden, DEFINE2 and DEFINE3 blocks are shown. 4. Store and reload the defines as follows: C-c @ D test-defines C-c @ U test-defines - Result: DEFINE1 and DEFINE2 blocks are hidden, DEFINE3 block is shown - Expected: DEFINE1 block is hidden, DEFINE2 and DEFINE3 blocks are shown as before. 5. Examine the stored alist: M-x eval-expression hide-ifdef-define-alist - Result: ((test-defines (DEFINE3 . 1) (DEFINE3 . 1))) - Expected: ((test-defines (DEFINE3 . 1) (DEFINE2 . 1))) Suggested fix: I believe there is a bug in function hif-compress-define-list. (defun hif-compress-define-list (env) "Compress the define list ENV into a list of defined symbols only." (let ((new-defs nil)) (dolist (def env new-defs) -> (if (hif-lookup (car def)) (push (car env) new-defs))))) Here, I think that (push (car env) new-defs) should have been (push (car def) new-defs) In GNU Emacs 24.1.1 (i386-mingw-nt6.1.7601) of 2012-06-10 on MARVIN Windowing system distributor `Microsoft Corp.', version 6.1.7601 Configured using: `configure --with-gcc (4.6) --cflags -ID:/devel/emacs/libs/libXpm-3.5.8/include -ID:/devel/emacs/libs/libXpm-3.5.8/src -ID:/devel/emacs/libs/libpng-dev_1.4.3-1/include -ID:/devel/emacs/libs/zlib-dev_1.2.5-2/include -ID:/devel/emacs/libs/giflib-4.1.4-1/include -ID:/devel/emacs/libs/jpeg-6b-4/include -ID:/devel/emacs/libs/tiff-3.8.2-1/include -ID:/devel/emacs/libs/gnutls-3.0.9/include' Important settings: value of $LC_ALL: nil value of $LC_COLLATE: nil value of $LC_CTYPE: nil value of $LC_MESSAGES: nil value of $LC_MONETARY: nil value of $LC_NUMERIC: nil value of $LC_TIME: nil value of $LANG: ENG value of $XMODIFIERS: nil locale-coding-system: cp1252 default enable-multibyte-characters: t Major mode: C/l Minor modes in effect: hide-ifdef-mode: t tooltip-mode: t mouse-wheel-mode: t tool-bar-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t line-number-mode: t transient-mark-mode: t abbrev-mode: t Load-path shadows: None found. Features: (shadow sort gnus-util mail-extr emacsbug message format-spec rfc822 mml mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils help-fns kmacro help-mode view hideif cc-mode cc-fonts easymenu cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs regexp-opt time-date tooltip ediff-hook vc-hooks lisp-float-type mwheel dos-w32 disp-table ls-lisp w32-win w32-vars tool-bar dnd fontset image fringe lisp-mode register page menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core frame cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese case-table epa-hook jka-cmpr-hook help simple abbrev minibuffer loaddefs button faces cus-face files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote make-network-process multi-tty emacs) --14dae9340e8566109304c4f03537 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable

hide-ifdef-mode stores the list of current defines incorrectly when

function hide-ifdef-set-define-alist is used.

=A0

Steps to reproduce:

1. Start up with emacs -q.

=A0

2. Create a new buffer named test.c with the following contents:

#include <stdio.h>

=A0

int main(void)

{

#ifdef DEFINE1

=A0=A0=A0=A0=A0=A0 printf("Defin= e 1");

#endif

#ifdef DEFINE2

=A0=A0=A0=A0=A0=A0 printf("Defin= e 2");

#endif

#ifdef DEFINE 3

=A0=A0=A0=A0=A0=A0 printf("Defin= e 3");

#endif

=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ret= urn 0;

}

=A0

3. Hide some ifdefs as follows:

M-x c-mode

M-x hide-ifdef-mode

C-c @ d DEFINE2

C-c @ d DEFINE3

C-c @ h

- Result: DEFINE1 block is hidden, DEFINE2 and DEFINE3 blocks are shown.

=A0

4. Store and reload the defines as follows:

C-c @ D test-defines

C-c @ U test-defines

- Result: DEFINE1 and DEFINE2 blocks are hidden, DEFINE3 block is shown

- Expected: DEFINE1 block is hidden, DEFINE2 and DEFINE3 blocks are

shown as before.

=A0

5. Examine the stored alist:

M-x eval-expression hide-ifdef-define-alist

- Result: ((test-defines (DEFINE3 . 1) (DEFINE3 . 1)))

- Expected: ((test-defines (DEFINE3 . 1) (DEFINE2 . 1)))

=A0

Suggested fix:

I believe there is a bug in function hif-compress-define-list.

(defun hif-compress-define-list (env)

=A0 "Compress the define list EN= V into a list of defined symbols only."

=A0 (let ((new-defs nil))

=A0=A0=A0 (dolist (def env new-defs)<= /span>

->=A0=A0=A0 (if (hif-lookup (car d= ef)) (push (car env) new-defs)))))

=A0

Here, I think that (push (car env) new-defs) should have been (push (car def) new-d= efs)

=A0

In GNU Emacs 24.1.1 (i386-mingw-nt6.1.7601)

=A0of 2012-06-10 on MARVIN

Windowing system distributor `Microsoft Corp.', version 6.1.7601

Configured using:

=A0`configure --with-gcc (4.6) --cfla= gs

=A0-ID:/devel/emacs/libs/libXpm-3.5.8= /include

=A0-ID:/devel/emacs/libs/libXpm-3.5.8= /src

=A0-ID:/devel/emacs/libs/libpng-dev_1= .4.3-1/include

=A0-ID:/devel/emacs/libs/zlib-dev_1.2= .5-2/include

=A0-ID:/devel/emacs/libs/giflib-4.1.4= -1/include

=A0-ID:/devel/emacs/libs/jpeg-6b-4/in= clude

=A0-ID:/devel/emacs/libs/tiff-3.8.2-1= /include

=A0-ID:/devel/emacs/libs/gnutls-3.0.9= /include'

=A0

Important settings:

=A0 value of $LC_ALL: nil

=A0 value of $LC_COLLATE: nil<= /p>

=A0 value of $LC_CTYPE: nil

=A0 value of $LC_MESSAGES: nil=

=A0 value of $LC_MONETARY: nil=

=A0 value of $LC_NUMERIC: nil<= /p>

=A0 value of $LC_TIME: nil

=A0 value of $LANG: ENG

=A0 value of $XMODIFIERS: nil<= /p>

=A0 locale-coding-system: cp1252

=A0 default enable-multibyte-characte= rs: t

=A0

Major mode: C/l

=A0

Minor modes in effect:

=A0 hide-ifdef-mode: t

=A0 tooltip-mode: t

=A0 mouse-wheel-mode: t

=A0 tool-bar-mode: t

=A0=A0menu-bar-mod= e: t

=A0 file-name-shadow-mode: t

=A0 global-font-lock-mode: t

=A0 font-lock-mode: t

=A0 blink-cursor-mode: t

=A0 auto-composition-mode: t

=A0 auto-encryption-mode: t

=A0 auto-compression-mode: t

=A0 line-number-mode: t

=A0 transient-mark-mode: t

=A0 abbrev-mode: t

=A0

Load-path shadows:

None found.

=A0

Features:

(shadow sort gnus-util mail-extr emacsbug message format-spec rfc822 mml

mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev

gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util

mail-prsvr mail-utils help-fns kmacro help-mode view hideif cc-mode

cc-fonts easymenu cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine

cc-vars cc-defs regexp-opt time-date tooltip ediff-hook vc-hooks

lisp-float-type mwheel dos-w32 disp-table ls-lisp w32-win w32-vars

tool-bar dnd fontset image fringe lisp-mode register page menu-bar

rfn-eshadow timer select scroll-bar mouse jit-lock font-lock syntax

facemenu font-core frame cham georgian utf-8-lang misc-lang vietnamese

tibetan thai tai-viet lao korean japanese hebrew greek romanian slovak

czech european ethiopic indian cyrillic chinese case-table epa-hook

jka-cmpr-hook help simple abbrev minibuffer loaddefs button faces

cus-face files text-properties overlay sha1 md5 base64 format env

code-pages mule custom widget hashtable-print-readable backquote

make-network-process multi-tty emacs)

--14dae9340e8566109304c4f03537--