Subject: bug#5560: 23.1.92; parens matching in c-mode broken

From: Andrew Hyatt <[email-masked]>
Date: Tue, 16 Feb 2016 22:56:34 -0500

I can confirm this still doesn't work right in Emacs 25.  However, I get
a slightly different experience, with clicking on all 3 left parens
highlighting until the first right paren only.  Similarly, that right
paren seems to be the matching paren for all 3 left parens.

David Reitter <[email-masked]> writes:

> Parens matching in C mode is sometimes surprising. In the example
> below, double-clicking on either of the first two opening parentheses 
> will mark the text until the "     hyper_modifier : 0)", but that is correct
> only for the second paren, while the first one is unmatched due to a space
> following the backslash.
>
> #define EV_MODIFIERS(e)                               \
>     ((([e modifierFlags] & NSHelpKeyMask) ?           \ 
>            hyper_modifier : 0)                        \    
>     ...
>
>
> It would be more useful if an "unmatched parentheses" was shown, or if the region up to the end of the scan process (i.e. the space+newline) was marked.
>
>
>
>
> In GNU Emacs 23.1.92.86 (x86_64-apple-darwin10.2.0, NS apple-appkit-1038.25)
>  of 2010-02-08 on scarlett.local - Aquamacs Distribution 2.0dev
> Windowing system distributor `Apple', version 10.3.1038
> configured using `configure  '--with-ns' 'CFLAGS=-O0 -g''
>
> 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: nil
>   locale-coding-system: utf-8-unix
>   default enable-multibyte-characters: t
>
> Major mode: ObjC/l
>
> Minor modes in effect:
>   diff-auto-refine-mode: t
>   which-function-mode: t
>   savehist-mode: t
>   smart-frame-positioning-mode: t
>   aquamacs-autoface-mode: t
>   recentf-mode: t
>   osx-key-mode: t
>   tabbar-mwheel-mode: t
>   tabbar-mode: t
>   show-paren-mode: t
>   delete-selection-mode: t
>   pc-selection-mode: t
>   cua-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-encryption-mode: t
>   auto-compression-mode: t
>   column-number-mode: t
>   line-number-mode: t
>   transient-mark-mode: t
>   abbrev-mode: t
>
> Recent input:
> <double-wheel-down> <triple-wheel-down> <wheel-down> 
> <wheel-down> <double-wheel-down> <down-mouse-1> <mouse-1> 
> <down-mouse-1> <mouse-movement> <mouse-movement> <drag-mouse-1> 
> <kp-delete> <down> <down> <down> <S-down> <S-down> 
> <S-down> <S-down> <S-down> <S-left> <S-left> <S-left> 
> <S-left> <kp-delete> <kp-delete> <kp-delete> <kp-delete> 
> <kp-delete> <down> <down> <A-left> <S-down> <S-down> 
> <S-down> <S-down> <S-down> <kp-delete> <return> <up> 
> <up> <up> <up> <up> <up> <backspace> <down> <down> 
> <down> <up> <up> <up> <up> <up> <up> <up> <up> <up> 
> <up> <up> <up> <up> <up> <up> <up> <up> <up> <up> <up> 
> <up> <up> <up> <right> | <down> <down> <down> <down> 
> <down> <left> | <down> <down> <down> <down> <right> 
> <down> | <kp-delete> <up> <up> <up> <up> <up> <up> 
> <kp-delete> <up> <up> <up> <up> <up> <kp-delete> <up> 
> <right> <S-down> <S-down> <S-down> <S-down> <S-down> 
> <S-down> <S-down> <S-down> <S-down> <S-down> <S-down> 
> <S-down> <S-down> <S-down> <S-down> <S-down> <S-down> 
> <S-up> <S-up> ⌘X <down> <down> <down> <down> <down> 
> <down> <down> <down> <down> ⌘V <up> <up> <up> <up> 
> <up> <up> <up> <up> <up> <up> <up> <up> <up> <up> <up> 
> <tab> <down> <tab> <down> <tab> <down> <tab> <down> 
> <down> <up> <backspace> SPC \ <right> <tab> <down> 
> <tab> <down> <tab> <down> <tab> <A-right> SPC \ <down> 
> <A-backspace> <A-backspace> <tab> <down> <tab> <down> 
> <tab> <down> <tab> <A-right> ) <backspace> <down-mouse-1> 
> <mouse-1> <double-down-mouse-1> <double-mouse-1> <down-mouse-1> 
> <mouse-1> <down-mouse-1> <mouse-1> <double-down-mouse-1> 
> <double-mouse-1> <down-mouse-1> <mouse-1> <double-down-mouse-1> 
> <double-mouse-1> <down-mouse-1> <mouse-1> <double-down-mouse-1> 
> <double-mouse-1> <down-mouse-1> <mouse-1> <down-mouse-1> 
> <mouse-1> <double-down-mouse-1> <double-mouse-1> <down-mouse-1> 
> <mouse-1> <double-down-mouse-1> <double-mouse-1> <down-mouse-1> 
> <mouse-1> <double-down-mouse-1> <double-mouse-1> <down-mouse-1> 
> <mouse-1> <down-mouse-1> <mouse-movement> <mouse-movement> 
> <mouse-movement> <mouse-movement> <drag-mouse-1> <down-mouse-1> 
> <mouse-1> <down-mouse-1> <mouse-1> ) <backspace> <wheel-up> 
> <double-wheel-up> <down-mouse-1> <mouse-1> <double-down-mouse-1> 
> <double-mouse-1> <down-mouse-1> <mouse-1> <double-down-mouse-1> 
> <double-mouse-1> <down-mouse-1> <mouse-1> <double-down-mouse-1> 
> <double-mouse-1> <down-mouse-1> <mouse-1> <double-down-mouse-1> 
> <double-mouse-1> <down-mouse-1> <mouse-1> <double-down-mouse-1> 
> <double-mouse-1> <down-mouse-1> <mouse-1> <double-down-mouse-1> 
> <double-mouse-1> <down-mouse-1> <mouse-1> <double-down-mouse-1> 
> <double-mouse-1> <down-mouse-1> <mouse-1> <double-down-mouse-1> 
> <double-mouse-1> <down-mouse-1> <mouse-1> ⌘S <escape> 
> X C - M O D E <return> <down-mouse-1> <mouse-1> <double-down-mouse-1> 
> <double-mouse-1> <down-mouse-1> <mouse-1> <escape> 
> X <up> O B <return> ⌘S <down-mouse-1> <mouse-movement> 
> <mouse-movement> <drag-mouse-1> ⌘C <menu-bar> <help-menu> 
> <bug-diagnosis> <send-emacs-bug-report>
>
> Recent messages:
> Auto-saving...
> Mark set [4 times]
> Auto-saving...done
> Auto-saving...done
> Mark set
> Auto-saving...done
> Auto-saving...done
> Saving file /Users/dr/ae.git/src/nsterm.m...
> Wrote /Users/dr/ae.git/src/nsterm.m
> (No changes need to be saved)
>
> Load-path shadows:
> /Users/dr/Library/Preferences/Aquamacs Emacs/Recent Files hides /Users/dr/Library/Preferences/Aquamacs Emacs/Aquamacs Emacs2/Recent Files
> /Users/dr/Library/Preferences/Aquamacs Emacs/Preferences hides /Users/dr/Library/Preferences/Aquamacs Emacs/Aquamacs Emacs2/Preferences
> /Users/dr/Library/Preferences/Aquamacs Emacs/places hides /Users/dr/Library/Preferences/Aquamacs Emacs/Aquamacs Emacs2/places
> /Users/dr/Library/Preferences/Aquamacs Emacs/minibuffer-history hides /Users/dr/Library/Preferences/Aquamacs Emacs/Aquamacs Emacs2/minibuffer-history
> /Users/dr/Library/Preferences/Aquamacs Emacs/frame-positions hides /Users/dr/Library/Preferences/Aquamacs Emacs/Aquamacs Emacs2/frame-positions
> /Users/dr/Library/Preferences/Aquamacs Emacs/customizations hides /Users/dr/Library/Preferences/Aquamacs Emacs/Aquamacs Emacs2/customizations
> /Library/Application Support/Aquamacs Emacs/JDEE/site-start hides /Library/Application Support/Aquamacs Emacs/SLIME/site-start
> /Library/Application Support/Aquamacs Emacs/JDEE/cedet/speedbar/speedbar hides /Users/dr/ae.git/nextstep/Aquamacs.app/Contents/Resources/lisp/speedbar
> /Library/Application Support/Aquamacs Emacs/JDEE/cedet/speedbar/sb-image hides /Users/dr/ae.git/nextstep/Aquamacs.app/Contents/Resources/lisp/sb-image
> /Library/Application Support/Aquamacs Emacs/JDEE/cedet/common/ezimage hides /Users/dr/ae.git/nextstep/Aquamacs.app/Contents/Resources/lisp/ezimage
> /Library/Application Support/Aquamacs Emacs/JDEE/cedet/speedbar/dframe hides /Users/dr/ae.git/nextstep/Aquamacs.app/Contents/Resources/lisp/dframe
> /Library/Application Support/Aquamacs Emacs/JDEE/cedet/eieio/eieio hides /Users/dr/ae.git/nextstep/Aquamacs.app/Contents/Resources/lisp/emacs-lisp/eieio
> /Library/Application Support/Aquamacs Emacs/JDEE/cedet/eieio/eieio-speedbar hides /Users/dr/ae.git/nextstep/Aquamacs.app/Contents/Resources/lisp/emacs-lisp/eieio-speedbar
> /Library/Application Support/Aquamacs Emacs/JDEE/cedet/eieio/eieio-opt hides /Users/dr/ae.git/nextstep/Aquamacs.app/Contents/Resources/lisp/emacs-lisp/eieio-opt
> /Library/Application Support/Aquamacs Emacs/JDEE/cedet/eieio/eieio-custom hides /Users/dr/ae.git/nextstep/Aquamacs.app/Contents/Resources/lisp/emacs-lisp/eieio-custom
> /Library/Application Support/Aquamacs Emacs/JDEE/cedet/eieio/eieio-comp hides /Users/dr/ae.git/nextstep/Aquamacs.app/Contents/Resources/lisp/emacs-lisp/eieio-comp
> /Library/Application Support/Aquamacs Emacs/JDEE/cedet/eieio/eieio-base hides /Users/dr/ae.git/nextstep/Aquamacs.app/Contents/Resources/lisp/emacs-lisp/eieio-base
> /Library/Application Support/Aquamacs Emacs/JDEE/cedet/eieio/chart hides /Users/dr/ae.git/nextstep/Aquamacs.app/Contents/Resources/lisp/emacs-lisp/chart
> /Library/Application Support/Aquamacs Emacs/JDEE/cedet/semantic/semantic hides /Users/dr/ae.git/nextstep/Aquamacs.app/Contents/Resources/lisp/cedet/semantic
> /Library/Application Support/Aquamacs Emacs/JDEE/cedet/common/mode-local hides /Users/dr/ae.git/nextstep/Aquamacs.app/Contents/Resources/lisp/cedet/mode-local
> /Library/Application Support/Aquamacs Emacs/JDEE/cedet/common/inversion hides /Users/dr/ae.git/nextstep/Aquamacs.app/Contents/Resources/lisp/cedet/inversion
> /Library/Application Support/Aquamacs Emacs/JDEE/cedet/ede/ede hides /Users/dr/ae.git/nextstep/Aquamacs.app/Contents/Resources/lisp/cedet/ede
> /Library/Application Support/Aquamacs Emacs/JDEE/cedet/common/cedet hides /Users/dr/ae.git/nextstep/Aquamacs.app/Contents/Resources/lisp/cedet/cedet
> /Library/Application Support/Aquamacs Emacs/JDEE/cedet/common/cedet-files hides /Users/dr/ae.git/nextstep/Aquamacs.app/Contents/Resources/lisp/cedet/cedet-files
> /Library/Application Support/Aquamacs Emacs/JDEE/site-start hides /Users/dr/ae.git/nextstep/Aquamacs.app/Contents/Resources/lisp/aquamacs/site-start
>
> Features:
> (shadow sort mail-extr message ecomplete rfc822 mml mml-sec
> password-cache mm-decode mm-bodies mm-encode mailabbrev nnheader
> gnus-util netrc gmm-utils mailheader canlock sha1 hex-util hashcash
> emacsbug cc-mode cc-fonts cc-menus cc-cmds cc-styles cc-align cc-engine
> cc-vars cc-defs log-edit ring pcvs-util add-log diff-mode vc
> vc-dispatcher cl-specs edebug multi-isearch jka-compr find-func vc-git
> url-http tls url-auth mail-parse rfc2231 rfc2047 rfc2045 qp ietf-drums
> url-gw url-cache url url-proxy url-privacy url-expand url-methods
> url-history url-cookie url-util url-parse url-vars mm-util mail-prsvr
> mailcap mail-utils which-func imenu slime-autoloads load-emacs-plugins
> aquamacs-mode-defaults auctex-config server tex-site smart-dnd
> aquamacs-aux savehist mouse-sel one-buffer-one-frame
> smart-frame-positioning drews_init color-theme-autoloads saveplace
> visual-line aquamacs-bug aquamacs-autoface-mode aquamacs-editing
> sendmail recentf tree-widget cus-edit osxkeys emulate-mac-keyboard-mode
> frame-cmds strings misc-fns thingatpt+ thingatpt frame-fns avoid
> aquamacs-mac-fontsets fit-frame aquamacs-frame-setup aquamacs-tabbar
> tabbar-window cl cl-19 tabbar easy-mmode cus-start cus-load
> load-emacs-pre-plugins aquamacs-site-start cocoa-compatibility filladapt
> aquamacs-redo check-for-updates aquamacs-menu osx_defaults
> aquamacs-tool-bar aquamacs mac-extra-functions aquamacs-tools
> aquamacs-macros parse-time timezone time-date paren delsel pc-select
> cua-base wid-edit regexp-opt advice advice-preload byte-opt bytecomp
> byte-compile debug help-fns help-mode view image-file disp-table tooltip
> ediff-hook vc-hooks lisp-float-type mwheel ns-win easymenu tool-bar dnd
> fontset image fringe lisp-mode register page menu-bar rfn-eshadow timer
> select scroll-bar mldrag 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 loaddefs button minibuffer faces
> cus-face files text-properties overlay md5 base64 format env code-pages
> mule custom widget hashtable-print-readable backquote
> make-network-process ns multi-tty emacs)