unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#11448: 24.1.50; Strange indentation level in C macro
@ 2012-05-10 21:47 Michael Welsh Duggan
  2013-05-31  2:46 ` Michael Welsh Duggan
  2013-06-04 16:34 ` Alan Mackenzie
  0 siblings, 2 replies; 5+ messages in thread
From: Michael Welsh Duggan @ 2012-05-10 21:47 UTC (permalink / raw)
  To: 11448

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

Using the included file:

emacs -Q foo.c
C-x h
C-M-\

Please note that after (and before) this the define
_connector_write_block_next_rec is indented at level 8 instead of 4
unlike all the other defines.  Removing and/or shortening the previous
defines in many cases seems to remove this strangeness, so it's likely
that there's a corner case involving a limit.


[-- Attachment #2: foo.c --]
[-- Type: text/plain, Size: 4007 bytes --]

#define _connector_iter_init(iter, xconn, xsize, xread) \
    do {                                                \
        (iter)->conn = xconn;                           \
        (iter)->req_size = xsize;                       \
        (iter)->size = xsize;                           \
        (iter)->loc = xsize;                            \
        (iter)->block = NULL;                           \
        (iter)->read = xread;                           \
    } while (0)

#define connector_iter_write_init(iter, conn, size)     \
    _connector_iter_init(iter, conn, size, 0)

#define _connector_read_next_loc(iter, rec)                     \
    (*((uint8_t **)rec) = ((iter)->block + (iter)->loc),        \
     (iter)->loc += sizeof(**(rec)),                            \
     0)

#define _connector_read_block_next_rec(iter, rec, err)          \
    ((iter)->size = (iter)->req_size,                           \
     (sk_connector_get_read_block((iter)->conn, &(iter)->block, \
                                  &(iter)->size, err)           \
      ? -1                                                      \
      : _connector_read_next_loc(iter, rec)))

#define _connector_read_reset_block(iter, rec, err)     \
    ((iter)->block = NULL,                              \
     (iter)->loc = 0,                                   \
     _connector_read_block_next_rec(iter, rec, err))

#define connector_iter_read_rec(iter, rec, err)                         \
    (((iter)->loc >= (iter)->size)                                      \
     ? ((iter)->block                                                   \
        ? (sk_connector_return_read_block((iter)->conn, (iter)->block, err) \
           ? -1                                                         \
           : _connector_read_reset_block(iter, rec, err))               \
        : _connector_read_reset_block(iter, rec, err))                  \
     : _connector_read_next_loc(iter, rec))

#define _connector_write_next_loc(iter, rec)                    \
    (memcpy((iter)->block + (iter)->loc, (rec), sizeof(*rec)),  \
     (iter)->loc += sizeof(*(rec)),                             \
     0)

#define _connector_write_block_next_rec(iter, rec, err)                 \
        ((iter)->size = (iter)->req_size,                               \
         (sk_connector_get_write_block((iter)->conn, &(iter)->block,    \
                                       &(iter)->size, err)              \
          ? -1                                                          \
          : _connector_write_next_loc(iter, rec)))

#define _connector_write_reset_block(iter, rec, err)    \
    ((iter)->block = NULL,                              \
     (iter)->loc = 0,                                   \
     _connector_write_block_next_rec(iter, rec, err))

#define connector_iter_write_rec(iter, rec, err)                        \
    (((iter)->loc + sizeof(*(rec)) > (iter)->size)                      \
     ? ((iter)->block                                                   \
        ? (sk_connector_return_write_block((iter)->conn, (iter)->block, \
                                           (iter)->loc, err)            \
           ? -1                                                         \
           : _connector_write_reset_block(iter, rec, err))              \
        : _connector_write_reset_block(iter, rec, err))                 \
     : _connector_write_next_loc(iter, rec))

#define connector_iter_finalize(iter, err)                              \
    ((iter)->block                                                      \
     ? ((iter)->read                                                    \
        ? sk_connector_return_read_block((iter)->conn, (iter)->block, err) \
        : sk_connector_return_write_block((iter)->conn, (iter)->block,  \
                                          (iter)->loc, err))            \
     : 0)

/*
** Local Variables:
** mode:c
** indent-tabs-mode:nil
** c-basic-offset:4
** End:
*/

[-- Attachment #3: Type: text/plain, Size: 20571 bytes --]



In GNU Emacs 24.1.50.2 (i686-pc-linux-gnu, GTK+ Version 2.10.4)
 of 2012-05-10 on waterbuck.yellow.cert.org
Bzr revision: 108189 rgm@gnu.org-20120510101725-26acz9tvs0vgth2k
Windowing system distributor `The X.Org Foundation', version 11.0.70101000
Configured using:
 `configure '--prefix=/home/mwd' '--without-toolkit-scroll-bars'
 '--with-gif=no''

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: en_US.UTF-8
  value of $XMODIFIERS: @im=none
  locale-coding-system: utf-8-unix
  default enable-multibyte-characters: t

Major mode: Group

Minor modes in effect:
  gnus-topic-mode: t
  gnus-undo-mode: t
  shell-dirtrack-mode: t
  display-time-mode: t
  diff-auto-refine-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
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t

Recent input:
<return> M-x r e p o r t - e m a <tab> <return>

Recent messages:
Checking new news...
Opening connection to imap-server.cert.org via tls...
Opening connection to localhost...
nnimap exchange splitting mail...done
nnimap read 0k from owa.sei.cmu.edu
nnimap read 12k from owa.sei.cmu.edu
nnimap read 22k from owa.sei.cmu.edu [2 times]
nnimap read 44k from owa.sei.cmu.edu
Reading active file via nndraft...done
Checking new news...done

Load-path shadows:
/afs/cert.org/usr/mwd/src/elisp/emacs-svn/psvn hides /afs/cert.org/usr/mwd/src/elisp/psvn
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/nnir hides /afs/cert.org/usr/mwd/src/elisp/nnir
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/password-cache hides /home/mwd/share/emacs/24.1.50/lisp/password-cache
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/format-spec hides /home/mwd/share/emacs/24.1.50/lisp/format-spec
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/md4 hides /home/mwd/share/emacs/24.1.50/lisp/md4
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/hex-util hides /home/mwd/share/emacs/24.1.50/lisp/hex-util
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/color hides /home/mwd/share/emacs/24.1.50/lisp/color
/afs/cert.org/usr/mwd/src/elisp/emacs-svn/vc-svn hides /home/mwd/share/emacs/24.1.50/lisp/vc/vc-svn
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/dns-mode hides /home/mwd/share/emacs/24.1.50/lisp/textmodes/dns-mode
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/hmac-md5 hides /home/mwd/share/emacs/24.1.50/lisp/net/hmac-md5
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/dns hides /home/mwd/share/emacs/24.1.50/lisp/net/dns
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/ntlm hides /home/mwd/share/emacs/24.1.50/lisp/net/ntlm
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/tls hides /home/mwd/share/emacs/24.1.50/lisp/net/tls
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/hmac-def hides /home/mwd/share/emacs/24.1.50/lisp/net/hmac-def
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/sasl hides /home/mwd/share/emacs/24.1.50/lisp/net/sasl
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/dig hides /home/mwd/share/emacs/24.1.50/lisp/net/dig
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/sasl-cram hides /home/mwd/share/emacs/24.1.50/lisp/net/sasl-cram
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/sasl-digest hides /home/mwd/share/emacs/24.1.50/lisp/net/sasl-digest
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/sasl-ntlm hides /home/mwd/share/emacs/24.1.50/lisp/net/sasl-ntlm
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/imap hides /home/mwd/share/emacs/24.1.50/lisp/net/imap
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/netrc hides /home/mwd/share/emacs/24.1.50/lisp/net/netrc
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/binhex hides /home/mwd/share/emacs/24.1.50/lisp/mail/binhex
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/uudecode hides /home/mwd/share/emacs/24.1.50/lisp/mail/uudecode
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/hashcash hides /home/mwd/share/emacs/24.1.50/lisp/mail/hashcash
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-mlspl hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-mlspl
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/qp hides /home/mwd/share/emacs/24.1.50/lisp/gnus/qp
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-range hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-range
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/html2text hides /home/mwd/share/emacs/24.1.50/lisp/gnus/html2text
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-util hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-util
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-picon hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-picon
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-mh hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-mh
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/nnimap hides /home/mwd/share/emacs/24.1.50/lisp/gnus/nnimap
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/nnoo hides /home/mwd/share/emacs/24.1.50/lisp/gnus/nnoo
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/mail-prsvr hides /home/mwd/share/emacs/24.1.50/lisp/gnus/mail-prsvr
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/mml-sec hides /home/mwd/share/emacs/24.1.50/lisp/gnus/mml-sec
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-registry hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-registry
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/nnmbox hides /home/mwd/share/emacs/24.1.50/lisp/gnus/nnmbox
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-topic hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-topic
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-group hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-group
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-score hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-score
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-cite hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-cite
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-cus hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-cus
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/nndir hides /home/mwd/share/emacs/24.1.50/lisp/gnus/nndir
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/spam-stat hides /home/mwd/share/emacs/24.1.50/lisp/gnus/spam-stat
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/deuglify hides /home/mwd/share/emacs/24.1.50/lisp/gnus/deuglify
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/mml2015 hides /home/mwd/share/emacs/24.1.50/lisp/gnus/mml2015
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/pop3 hides /home/mwd/share/emacs/24.1.50/lisp/gnus/pop3
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-ml hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-ml
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/mm-partial hides /home/mwd/share/emacs/24.1.50/lisp/gnus/mm-partial
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/rtree hides /home/mwd/share/emacs/24.1.50/lisp/gnus/rtree
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/nnregistry hides /home/mwd/share/emacs/24.1.50/lisp/gnus/nnregistry
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/mm-extern hides /home/mwd/share/emacs/24.1.50/lisp/gnus/mm-extern
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/nnvirtual hides /home/mwd/share/emacs/24.1.50/lisp/gnus/nnvirtual
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/nnbabyl hides /home/mwd/share/emacs/24.1.50/lisp/gnus/nnbabyl
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-start hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-start
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/registry hides /home/mwd/share/emacs/24.1.50/lisp/gnus/registry
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/nnrss hides /home/mwd/share/emacs/24.1.50/lisp/gnus/nnrss
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-dired hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-dired
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/mm-uu hides /home/mwd/share/emacs/24.1.50/lisp/gnus/mm-uu
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/mm-url hides /home/mwd/share/emacs/24.1.50/lisp/gnus/mm-url
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-cache hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-cache
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-draft hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-draft
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-async hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-async
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-setup hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-setup
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-srvr hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-srvr
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/nndiary hides /home/mwd/share/emacs/24.1.50/lisp/gnus/nndiary
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/sieve hides /home/mwd/share/emacs/24.1.50/lisp/gnus/sieve
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/nnmairix hides /home/mwd/share/emacs/24.1.50/lisp/gnus/nnmairix
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/messcompat hides /home/mwd/share/emacs/24.1.50/lisp/gnus/messcompat
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-bookmark hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-bookmark
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-bcklg hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-bcklg
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/nnml hides /home/mwd/share/emacs/24.1.50/lisp/gnus/nnml
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/nnir hides /home/mwd/share/emacs/24.1.50/lisp/gnus/nnir
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/ietf-drums hides /home/mwd/share/emacs/24.1.50/lisp/gnus/ietf-drums
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/yenc hides /home/mwd/share/emacs/24.1.50/lisp/gnus/yenc
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/nngateway hides /home/mwd/share/emacs/24.1.50/lisp/gnus/nngateway
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/mml1991 hides /home/mwd/share/emacs/24.1.50/lisp/gnus/mml1991
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-win hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-win
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-eform hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-eform
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/shr-color hides /home/mwd/share/emacs/24.1.50/lisp/gnus/shr-color
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-html hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-html
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-fun hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-fun
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-delay hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-delay
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gravatar hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gravatar
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-demon hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-demon
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/nndraft hides /home/mwd/share/emacs/24.1.50/lisp/gnus/nndraft
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/nnmh hides /home/mwd/share/emacs/24.1.50/lisp/gnus/nnmh
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/nnweb hides /home/mwd/share/emacs/24.1.50/lisp/gnus/nnweb
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/nntp hides /home/mwd/share/emacs/24.1.50/lisp/gnus/nntp
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/score-mode hides /home/mwd/share/emacs/24.1.50/lisp/gnus/score-mode
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/rfc2231 hides /home/mwd/share/emacs/24.1.50/lisp/gnus/rfc2231
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-dup hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-dup
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/smiley hides /home/mwd/share/emacs/24.1.50/lisp/gnus/smiley
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/nnagent hides /home/mwd/share/emacs/24.1.50/lisp/gnus/nnagent
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/rfc2047 hides /home/mwd/share/emacs/24.1.50/lisp/gnus/rfc2047
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-int hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-int
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/rfc2045 hides /home/mwd/share/emacs/24.1.50/lisp/gnus/rfc2045
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/nnfolder hides /home/mwd/share/emacs/24.1.50/lisp/gnus/nnfolder
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/compface hides /home/mwd/share/emacs/24.1.50/lisp/gnus/compface
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/mm-encode hides /home/mwd/share/emacs/24.1.50/lisp/gnus/mm-encode
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-art hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-art
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/sieve-manage hides /home/mwd/share/emacs/24.1.50/lisp/gnus/sieve-manage
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/rfc2104 hides /home/mwd/share/emacs/24.1.50/lisp/gnus/rfc2104
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/spam hides /home/mwd/share/emacs/24.1.50/lisp/gnus/spam
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/nnspool hides /home/mwd/share/emacs/24.1.50/lisp/gnus/nnspool
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/ecomplete hides /home/mwd/share/emacs/24.1.50/lisp/gnus/ecomplete
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-vm hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-vm
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-undo hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-undo
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/spam-report hides /home/mwd/share/emacs/24.1.50/lisp/gnus/spam-report
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/mml-smime hides /home/mwd/share/emacs/24.1.50/lisp/gnus/mml-smime
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/mm-util hides /home/mwd/share/emacs/24.1.50/lisp/gnus/mm-util
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/nndoc hides /home/mwd/share/emacs/24.1.50/lisp/gnus/nndoc
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/starttls hides /home/mwd/share/emacs/24.1.50/lisp/gnus/starttls
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/mm-bodies hides /home/mwd/share/emacs/24.1.50/lisp/gnus/mm-bodies
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/nnmaildir hides /home/mwd/share/emacs/24.1.50/lisp/gnus/nnmaildir
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/message hides /home/mwd/share/emacs/24.1.50/lisp/gnus/message
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-kill hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-kill
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-sync hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-sync
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/mm-decode hides /home/mwd/share/emacs/24.1.50/lisp/gnus/mm-decode
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/mail-parse hides /home/mwd/share/emacs/24.1.50/lisp/gnus/mail-parse
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/legacy-gnus-agent hides /home/mwd/share/emacs/24.1.50/lisp/gnus/legacy-gnus-agent
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/smime hides /home/mwd/share/emacs/24.1.50/lisp/gnus/smime
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-salt hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-salt
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-gravatar hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-gravatar
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/utf7 hides /home/mwd/share/emacs/24.1.50/lisp/gnus/utf7
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/mailcap hides /home/mwd/share/emacs/24.1.50/lisp/gnus/mailcap
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-msg hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-msg
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/mail-source hides /home/mwd/share/emacs/24.1.50/lisp/gnus/mail-source
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/mml hides /home/mwd/share/emacs/24.1.50/lisp/gnus/mml
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/canlock hides /home/mwd/share/emacs/24.1.50/lisp/gnus/canlock
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-ems hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-ems
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-sum hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-sum
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/nneething hides /home/mwd/share/emacs/24.1.50/lisp/gnus/nneething
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/rfc1843 hides /home/mwd/share/emacs/24.1.50/lisp/gnus/rfc1843
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-sieve hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-sieve
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-diary hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-diary
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/sieve-mode hides /home/mwd/share/emacs/24.1.50/lisp/gnus/sieve-mode
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/nnmail hides /home/mwd/share/emacs/24.1.50/lisp/gnus/nnmail
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gssapi hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gssapi
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/shr hides /home/mwd/share/emacs/24.1.50/lisp/gnus/shr
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/spam-wash hides /home/mwd/share/emacs/24.1.50/lisp/gnus/spam-wash
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/auth-source hides /home/mwd/share/emacs/24.1.50/lisp/gnus/auth-source
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-agent hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-agent
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-logic hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-logic
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/nnheader hides /home/mwd/share/emacs/24.1.50/lisp/gnus/nnheader
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gmm-utils hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gmm-utils
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/.dir-locals hides /home/mwd/share/emacs/24.1.50/lisp/gnus/.dir-locals
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/flow-fill hides /home/mwd/share/emacs/24.1.50/lisp/gnus/flow-fill
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/mm-view hides /home/mwd/share/emacs/24.1.50/lisp/gnus/mm-view
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-uu hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-uu
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/plstore hides /home/mwd/share/emacs/24.1.50/lisp/gnus/plstore
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/gnus-spec hides /home/mwd/share/emacs/24.1.50/lisp/gnus/gnus-spec
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/nnnil hides /home/mwd/share/emacs/24.1.50/lisp/gnus/nnnil
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/time-date hides /home/mwd/share/emacs/24.1.50/lisp/calendar/time-date
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/parse-time hides /home/mwd/share/emacs/24.1.50/lisp/calendar/parse-time
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/pgg-def hides /home/mwd/share/emacs/24.1.50/lisp/obsolete/pgg-def
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/pgg hides /home/mwd/share/emacs/24.1.50/lisp/obsolete/pgg
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/pgg-pgp5 hides /home/mwd/share/emacs/24.1.50/lisp/obsolete/pgg-pgp5
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/pgg-parse hides /home/mwd/share/emacs/24.1.50/lisp/obsolete/pgg-parse
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/pgg-pgp hides /home/mwd/share/emacs/24.1.50/lisp/obsolete/pgg-pgp
/afs/cert.org/usr/mwd/src/elisp/gnus/lisp/pgg-gpg hides /home/mwd/share/emacs/24.1.50/lisp/obsolete/pgg-gpg

Features:
(shadow sort gnus-cite flyspell ispell mail-extr emacsbug gnus-topic
utf-7 nndraft nnmh epa-file epa derived epg network-stream starttls
nnimap parse-time tls utf7 netrc gnus-agent gnus-srvr gnus-score
score-mode nnvirtual gnus-msg gnus-art mm-uu mml2015 epg-config mm-view
mml-smime mailcap gnus-cache nnir edmacro kmacro gnus-sum gnus-demon
nntp gnus-group gnus-undo nnmail mail-source nnoo gnutls gnus-start
gnus-spec gnus-int gnus-range gnus-win gnus-load debbugs-autoloads
package woman man uniquify warnings tramp tramp-compat auth-source eieio
byte-opt bytecomp byte-compile cconv macroexp assoc shell pcomplete
tramp-loaddefs time smime password-cache dig comint ansi-color server
psvn advice help-fns advice-preload cl log-edit ring pcvs-util add-log
diff-mode easy-mmode pgg pgg-parse pgg-def message sendmail format-spec
rfc822 mml mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231
rfc2047 rfc2045 ietf-drums mailabbrev gmm-utils mailheader gnus gnus-ems
nnheader gnus-util time-date mail-utils mm-util mail-prsvr wid-edit
generic-x dired-x dired bm info easymenu tooltip ediff-hook vc-hooks
lisp-float-type mwheel x-win x-dnd tool-bar dnd fontset image regexp-opt
fringe tabulated-list newcomment 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 dbusbind dynamic-setting system-font-setting
font-render-setting move-toolbar gtk x-toolkit x multi-tty emacs)

-- 
Michael Welsh Duggan
(mwd@cert.org)

^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#11448: 24.1.50; Strange indentation level in C macro
  2012-05-10 21:47 bug#11448: 24.1.50; Strange indentation level in C macro Michael Welsh Duggan
@ 2013-05-31  2:46 ` Michael Welsh Duggan
  2013-06-01 13:56   ` Alan Mackenzie
       [not found]   ` <20130601135609.GA4102@acm.acm>
  2013-06-04 16:34 ` Alan Mackenzie
  1 sibling, 2 replies; 5+ messages in thread
From: Michael Welsh Duggan @ 2013-05-31  2:46 UTC (permalink / raw)
  To: 11448

I'd like to bump this issue.  I looked into it a little, and it looks
like several of the macros before the point in question are being marked
as c-in-sws, which doesn't seem right to me.  The code ends up
evaluating `c-beginning-of-macro' in a buffer that is narrowed such that
the beginning of the macro that it is trying to find the beginning of is
cut off.

The resulting indentation problem isn't horrible, but the bug that leads
to this problem is subtle enough that it could be causing other problems
in similar situations.

-- 
Michael Duggan





^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#11448: 24.1.50; Strange indentation level in C macro
  2013-05-31  2:46 ` Michael Welsh Duggan
@ 2013-06-01 13:56   ` Alan Mackenzie
       [not found]   ` <20130601135609.GA4102@acm.acm>
  1 sibling, 0 replies; 5+ messages in thread
From: Alan Mackenzie @ 2013-06-01 13:56 UTC (permalink / raw)
  To: Michael Welsh Duggan; +Cc: 11448

Hi, Michael!

On Thu, May 30, 2013 at 10:46:20PM -0400, Michael Welsh Duggan wrote:
> I'd like to bump this issue.

Sorry, I missed this one last year.

> I looked into it a little, and it looks like several of the macros
> before the point in question are being marked as c-in-sws, which
> doesn't seem right to me.  The code ends up evaluating
> `c-beginning-of-macro' in a buffer that is narrowed such that the
> beginning of the macro that it is trying to find the beginning of is
> cut off.

Yes, sort of.  I think the c-in-sws properties are right.

What I think is throwing it off is the calculation of a search limit
(effectively a buffer narrowing) in `c-guess-basic-syntax'.  That limit
was erroneously at a random position, but it actually needs to be at a
"syntactically neutral" position.

I put that limit calculation in as part of a large optimisation for a
~3,500 line macro which was causing scrolling to go very slowly.  Taking
it out again doesn't seem to slow it down all that badly.  So, out it
comes!

> The resulting indentation problem isn't horrible, but the bug that leads
> to this problem is subtle enough that it could be causing other problems
> in similar situations.

Yes.  Thanks for the bug report.  Could you try out this patch please.
I think it fixes the bug:



diff -r ce17d1595c2f cc-engine.el
--- a/cc-engine.el	Tue May 28 15:00:49 2013 +0000
+++ b/cc-engine.el	Sat Jun 01 13:52:38 2013 +0000
@@ -9396,10 +9396,6 @@
 			  containing-sexp nil)))
 	      (setq lim (1+ containing-sexp))))
 	(setq lim (point-min)))
-      (when (c-beginning-of-macro)
-	(goto-char indent-point)
-	(let ((lim1 (c-determine-limit 2000)))
-	  (setq lim (max lim lim1))))
 
       ;; If we're in a parenthesis list then ',' delimits the
       ;; "statements" rather than being an operator (with the


> -- 
> Michael Duggan

-- 
Alan Mackenzie (Nuremberg, Germany).





^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#11448: 24.1.50; Strange indentation level in C macro
       [not found]   ` <20130601135609.GA4102@acm.acm>
@ 2013-06-02  2:51     ` Michael Welsh Duggan
  0 siblings, 0 replies; 5+ messages in thread
From: Michael Welsh Duggan @ 2013-06-02  2:51 UTC (permalink / raw)
  To: Alan Mackenzie; +Cc: 11448

Alan Mackenzie <acm@muc.de> writes:

> Hi, Michael!
>
> On Thu, May 30, 2013 at 10:46:20PM -0400, Michael Welsh Duggan wrote:
>> I'd like to bump this issue.
>
> Sorry, I missed this one last year.
>
>> I looked into it a little, and it looks like several of the macros
>> before the point in question are being marked as c-in-sws, which
>> doesn't seem right to me.  The code ends up evaluating
>> `c-beginning-of-macro' in a buffer that is narrowed such that the
>> beginning of the macro that it is trying to find the beginning of is
>> cut off.
>
> Yes, sort of.  I think the c-in-sws properties are right.
>
> What I think is throwing it off is the calculation of a search limit
> (effectively a buffer narrowing) in `c-guess-basic-syntax'.  That limit
> was erroneously at a random position, but it actually needs to be at a
> "syntactically neutral" position.
>
> I put that limit calculation in as part of a large optimisation for a
> ~3,500 line macro which was causing scrolling to go very slowly.  Taking
> it out again doesn't seem to slow it down all that badly.  So, out it
> comes!
>
>> The resulting indentation problem isn't horrible, but the bug that leads
>> to this problem is subtle enough that it could be causing other problems
>> in similar situations.
>
> Yes.  Thanks for the bug report.  Could you try out this patch please.
> I think it fixes the bug:

Seems to work for me.  Thanks!

-- 
Michael Duggan





^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#11448: 24.1.50; Strange indentation level in C macro
  2012-05-10 21:47 bug#11448: 24.1.50; Strange indentation level in C macro Michael Welsh Duggan
  2013-05-31  2:46 ` Michael Welsh Duggan
@ 2013-06-04 16:34 ` Alan Mackenzie
  1 sibling, 0 replies; 5+ messages in thread
From: Alan Mackenzie @ 2013-06-04 16:34 UTC (permalink / raw)
  To: 11448-done

Bug fixed.

-- 
Alan Mackenzie (Nuremberg, Germany).





^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2013-06-04 16:34 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-05-10 21:47 bug#11448: 24.1.50; Strange indentation level in C macro Michael Welsh Duggan
2013-05-31  2:46 ` Michael Welsh Duggan
2013-06-01 13:56   ` Alan Mackenzie
     [not found]   ` <20130601135609.GA4102@acm.acm>
2013-06-02  2:51     ` Michael Welsh Duggan
2013-06-04 16:34 ` Alan Mackenzie

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).