unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#15778: 24.3; cperl-mode causes emacs to lock up
@ 2013-11-01 11:19 Nathan Trapuzzano
  2013-11-01 11:46 ` Eli Zaretskii
  0 siblings, 1 reply; 21+ messages in thread
From: Nathan Trapuzzano @ 2013-11-01 11:19 UTC (permalink / raw)
  To: 15778

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

cperl-mode causes emacs to lock up indefinitely.  I can't break the lock
except by killing the process.

Steps to reproduce:

1. Visit the attached file with cperl-mode.
2. Put the cursor at the beginning of line 44 ($$str =~ ...)
3. Type C-k (kill-line).  The line is not removed, and the cursor is
   stuck.  C-g doesn't help.

This is happening on 24.3 and on trunk.


[-- Attachment #2: Beta.pm --]
[-- Type: text/x-perl, Size: 2294 bytes --]

package Diogenes::Coding::Beta;

use strict;
use warnings;
use parent qw(Exporter);

our @EXPORT = qw(beta_to_unicode);
our %unicode;

use File::Spec::Functions;
use File::Basename;

{
    my ($name, $path, $suffix) = fileparse __FILE__, qr/\.[^.]*/;
    my $coding_file = catfile $path, $name, 'coding.pl';
    do $coding_file;
}

my $rx;
{
    my @tokens = sort { length($b) <=> length($a) } keys %unicode;
    @tokens = map { quotemeta $_ } @tokens;
    push @tokens, '.';
    $rx = join '|', @tokens;
    $rx = qr/$rx/;
}

# beta_to_unicode($lang, $$beta_text, $strict, $convert_final_sigma)
sub beta_to_unicode {
    my $lang = lc shift;

    if ($lang eq 'greek') {
        goto &greek_to_unicode;
    }
    else  {
        die "beta->unicode conversion not supported for language '$lang'";
    }
}

# greek_to_unicode($$beta_text, $strict, $convert_final_sigma)
sub greek_to_unicode {
    my ($str, $strict, $sigma) = @_;

    $$str =~ s/$rx/
        my $match = ${^MATCH};
        if (exists $unicode{$match}) {
            if ($match eq 'S' && $sigma) {
                if ($$str =~ m<\GS(?=[[:space:]\.,:;'\-_]|$)>) {
                    # Bare 'S' is followed by a space, punctuation mark, or end
                    # of string.
                    $unicode{S2};
                }
                else {
                    $unicode{$match};
                }
            }
            else {
                $unicode{$match};
            }
        }
        elsif ($strict) {
            die "no beta->unicode conversion for '$match'";
        }
        else {
            $match;
        }
    /gpex;
}

1;

__END__

=encoding utf8

=head1 NAME

Diogenes::Coding::Beta - Routines for converting to/from beta code.

=head1 INTERFACE

=over

=item beta_to_unicode( $lang, $$beta_code_string, $strict, $convert_final_sigma )

Convert $$beta_code_string in place from beta code to unicode.  $lang specifies
the language; currently, only C<greek> is supported.  $strict means throw an
exception if a token is encountered that doesn't have a conversion; otherwise,
such tokens convert to themselves.  $convert_final_sigma means convert word- and
string-terminal C<S> into C<ς>.

=back

=cut

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


In GNU Emacs 24.3.1 (x86_64-unknown-linux-gnu, GTK+ Version 2.24.22)
 of 2013-10-31 on Nathan-GNU
Windowing system distributor `The X.Org Foundation', version 11.0.11403000
Configured using:
 `configure '--prefix=/opt/emacs-24' '--infodir=/usr/share/info'
 '--mandir=/usr/share/man' '--with-x-toolkit=gtk2' '--with-xft'
 '--with-gif=no''

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix
  default enable-multibyte-characters: t

Major mode: Group

Minor modes in effect:
  diff-auto-refine-mode: t
  show-paren-mode: t
  gnus-undo-mode: t
  tooltip-mode: t
  mouse-wheel-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
  buffer-read-only: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent input:
k C-x r o C-p C-p C-p C-p C-x r o C-n C-f C-g C-g C-p 
C-p C-p C-p C-x C-g C-x b s c <tab> <return> s d f 
SPC j o s i f j SPC e s w o i <return> d f o s i j 
SPC s d o f j i s <return> C-j o s i d f j s d f C-p 
C-p C-p C-a C-SPC C-n C-n C-f C-f C-f C-f C-x r o C-/ 
<switch-frame> n n n n n n n n <switch-frame> C-h f 
m <backspace> c u a SPC m o d e <return> <switch-frame> 
<switch-frame> <switch-frame> n n n n n n n n n n C-g 
q p p <return> <return> n n n n n n n n n n n n n n 
n n n n n n n n <switch-frame> C-h k M-q C-x o <switch-frame> 
h <tab> <tab> <S-iso-lefttab> <return> h n h <tab> 
<return> <return> <tab> h n h <tab> C-c C-v h n <switch-frame> 
C-x o C-h i C-x 1 ^ ^ ^ ^ ^ ^ m e m <backspace> l i 
s p <return> C-s t r a n s i e n t C-s C-s C-s <switch-frame> 
<switch-frame> <switch-frame> <switch-frame> <switch-frame> 
<switch-frame> <switch-frame> <switch-frame> <switch-frame> 
<switch-frame> <switch-frame> n ! h <tab> <tab> <tab> 
C-v C-v C-v C-v C-v C-v C-v C-v C-v C-v h n n n P N 
n C-l q n n l g <return> <return> C-p d q p <return> 
q <return> q l p <return> T T <return> p N q <return> 
q l g n <return> <return> <tab> q l <switch-frame> 
C-x 5 0 M-x r e p o r t SPC e m a <tab> <return> b 
u <tab> <return>

Recent messages:
imap: Login successful...
imap: Authenticating to `mail.nbtrap.com' using `login'...done
Wrote /home/nathan/Mail/mail/emacs-devel/177
nnml: Reading incoming mail (1 new)...done
Reading active file via nnml...done
Checking new news...done
Auto-saving...
Follow the link
Auto-saving...done
Making completion list...

Load-path shadows:
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/password-cache hides /opt/emacs-24/share/emacs/24.3/lisp/password-cache
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/md4 hides /opt/emacs-24/share/emacs/24.3/lisp/md4
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/format-spec hides /opt/emacs-24/share/emacs/24.3/lisp/format-spec
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/hex-util hides /opt/emacs-24/share/emacs/24.3/lisp/hex-util
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/color hides /opt/emacs-24/share/emacs/24.3/lisp/color
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/dns-mode hides /opt/emacs-24/share/emacs/24.3/lisp/textmodes/dns-mode
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-inlinetask hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-inlinetask
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-ruby hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-ruby
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-w3m hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-w3m
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-js hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-js
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-timer hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-timer
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-src hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-src
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-screen hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-screen
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-footnote hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-footnote
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-mouse hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-mouse
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-gnuplot hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-gnuplot
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-docview hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-docview
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-shen hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-shen
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-sqlite hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-sqlite
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-version hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-version
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-crypt hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-crypt
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-table hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-table
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-entities hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-entities
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-ledger hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-ledger
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-rmail hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-rmail
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-fortran hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-fortran
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-calc hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-calc
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-lob hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-lob
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-sass hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-sass
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-scheme hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-scheme
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-agenda hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-agenda
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-install hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-install
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-bbdb hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-bbdb
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-asymptote hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-asymptote
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-plot hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-plot
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-info hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-info
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-emacs-lisp hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-emacs-lisp
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-bibtex hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-bibtex
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-ocaml hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-ocaml
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-exp hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-exp
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-maxima hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-maxima
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-habit hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-habit
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-R hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-R
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-list hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-list
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-org hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-org
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-sql hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-sql
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-irc hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-irc
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-feed hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-feed
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-lilypond hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-lilypond
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-tangle hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-tangle
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-capture hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-capture
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-datetree hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-datetree
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-scala hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-scala
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-lisp hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-lisp
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org hides /opt/emacs-24/share/emacs/24.3/lisp/org/org
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-table hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-table
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-gnus hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-gnus
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-mhe hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-mhe
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-comint hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-comint
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-picolisp hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-picolisp
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-ref hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-ref
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-plantuml hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-plantuml
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-awk hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-awk
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-id hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-id
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-matlab hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-matlab
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-keys hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-keys
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-python hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-python
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-C hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-C
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-indent hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-indent
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-eshell hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-eshell
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-loaddefs hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-loaddefs
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-latex hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-latex
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-clojure hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-clojure
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-css hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-css
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-archive hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-archive
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-pcomplete hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-pcomplete
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-faces hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-faces
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-eval hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-eval
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-sh hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-sh
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-compat hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-compat
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-perl hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-perl
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-ditaa hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-ditaa
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-element hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-element
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-ctags hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-ctags
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-attach hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-attach
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-dot hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-dot
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-io hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-io
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-mscgen hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-mscgen
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-mobile hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-mobile
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-haskell hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-haskell
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-macs hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-macs
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-java hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-java
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-colview hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-colview
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-clock hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-clock
/home/nathan/opt/elisp/org/emacs/site-lisp/org/ob-octave hides /opt/emacs-24/share/emacs/24.3/lisp/org/ob-octave
/home/nathan/opt/elisp/org/emacs/site-lisp/org/org-protocol hides /opt/emacs-24/share/emacs/24.3/lisp/org/org-protocol
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/sasl-digest hides /opt/emacs-24/share/emacs/24.3/lisp/net/sasl-digest
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/hmac-def hides /opt/emacs-24/share/emacs/24.3/lisp/net/hmac-def
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/sasl-cram hides /opt/emacs-24/share/emacs/24.3/lisp/net/sasl-cram
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/sasl hides /opt/emacs-24/share/emacs/24.3/lisp/net/sasl
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/dns hides /opt/emacs-24/share/emacs/24.3/lisp/net/dns
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/ntlm hides /opt/emacs-24/share/emacs/24.3/lisp/net/ntlm
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/hmac-md5 hides /opt/emacs-24/share/emacs/24.3/lisp/net/hmac-md5
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/sasl-ntlm hides /opt/emacs-24/share/emacs/24.3/lisp/net/sasl-ntlm
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/dig hides /opt/emacs-24/share/emacs/24.3/lisp/net/dig
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/netrc hides /opt/emacs-24/share/emacs/24.3/lisp/net/netrc
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/tls hides /opt/emacs-24/share/emacs/24.3/lisp/net/tls
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/hashcash hides /opt/emacs-24/share/emacs/24.3/lisp/mail/hashcash
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/binhex hides /opt/emacs-24/share/emacs/24.3/lisp/mail/binhex
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/uudecode hides /opt/emacs-24/share/emacs/24.3/lisp/mail/uudecode
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/nnmbox hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/nnmbox
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-picon hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-picon
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/mm-archive hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/mm-archive
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/nndir hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/nndir
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-srvr hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-srvr
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/plstore hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/plstore
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/mail-prsvr hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/mail-prsvr
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-cus hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-cus
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-spec hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-spec
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/auth-source hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/auth-source
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/pop3 hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/pop3
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/starttls hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/starttls
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/mm-extern hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/mm-extern
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/nnrss hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/nnrss
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/deuglify hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/deuglify
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-vm hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-vm
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/mail-parse hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/mail-parse
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/mm-bodies hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/mm-bodies
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-demon hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-demon
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-group hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-group
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-notifications hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-notifications
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-ml hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-ml
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/qp hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/qp
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/nngateway hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/nngateway
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-cache hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-cache
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/mm-encode hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/mm-encode
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-ems hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-ems
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/mm-decode hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/mm-decode
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/nndiary hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/nndiary
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-registry hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-registry
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-salt hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-salt
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-uu hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-uu
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/mailcap hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/mailcap
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gravatar hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gravatar
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/yenc hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/yenc
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/nnweb hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/nnweb
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-html hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-html
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/nnvirtual hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/nnvirtual
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/rtree hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/rtree
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/nnmaildir hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/nnmaildir
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/mm-url hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/mm-url
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/sieve hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/sieve
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/shr-color hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/shr-color
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/messcompat hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/messcompat
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/nnagent hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/nnagent
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/rfc2104 hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/rfc2104
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-delay hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-delay
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-eform hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-eform
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-sieve hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-sieve
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-range hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-range
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-art hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-art
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/mml-smime hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/mml-smime
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/spam-stat hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/spam-stat
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/mm-partial hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/mm-partial
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/nnmh hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/nnmh
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-bcklg hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-bcklg
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/mml2015 hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/mml2015
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-msg hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-msg
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/shr hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/shr
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/spam-wash hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/spam-wash
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/nnregistry hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/nnregistry
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-sum hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-sum
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/nnoo hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/nnoo
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-kill hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-kill
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-topic hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-topic
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/canlock hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/canlock
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-sync hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-sync
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/nnheader hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/nnheader
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-cite hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-cite
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/ietf-drums hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/ietf-drums
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-mlspl hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-mlspl
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/rfc2231 hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/rfc2231
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-agent hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-agent
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gssapi hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gssapi
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/nndoc hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/nndoc
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-score hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-score
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/nnfolder hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/nnfolder
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-logic hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-logic
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/nnspool hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/nnspool
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-diary hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-diary
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-start hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-start
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/rfc1843 hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/rfc1843
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/nneething hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/nneething
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/nnir hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/nnir
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/html2text hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/html2text
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/flow-fill hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/flow-fill
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/nntp hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/nntp
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-bookmark hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-bookmark
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/mml1991 hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/mml1991
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/rfc2045 hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/rfc2045
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-fun hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-fun
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gmm-utils hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gmm-utils
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/mml-sec hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/mml-sec
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/message hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/message
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/nnnil hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/nnnil
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/smiley hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/smiley
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-int hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-int
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-dup hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-dup
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/mm-uu hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/mm-uu
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/mm-view hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/mm-view
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/nndraft hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/nndraft
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-draft hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-draft
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-win hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-win
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/compface hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/compface
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/mail-source hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/mail-source
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-setup hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-setup
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/spam hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/spam
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/nnimap hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/nnimap
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/nnmairix hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/nnmairix
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-dired hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-dired
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/ecomplete hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/ecomplete
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/nnml hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/nnml
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/rfc2047 hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/rfc2047
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/smime hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/smime
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/sieve-manage hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/sieve-manage
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-util hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-util
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-mh hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-mh
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/legacy-gnus-agent hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/legacy-gnus-agent
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/score-mode hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/score-mode
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-gravatar hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-gravatar
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-async hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-async
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/sieve-mode hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/sieve-mode
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/gnus-undo hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/gnus-undo
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/nnbabyl hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/nnbabyl
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/registry hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/registry
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/utf7 hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/utf7
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/mm-util hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/mm-util
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/spam-report hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/spam-report
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/nnmail hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/nnmail
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/mml hides /opt/emacs-24/share/emacs/24.3/lisp/gnus/mml
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/time-date hides /opt/emacs-24/share/emacs/24.3/lisp/calendar/time-date
/home/nathan/opt/elisp/gnus/share/emacs/site-lisp/gnus/parse-time hides /opt/emacs-24/share/emacs/24.3/lisp/calendar/parse-time

Features:
(shadow emacsbug bbdb-gui ffap rect help-mode gnus-fun mailalias
smtpmail sendmail nnir mule-util info diff-mode easy-mmode flow-fill
misearch multi-isearch sort gnus-cite smiley ansi-color w3m-form qp w3m
browse-url doc-view jka-compr dired-x dired image-mode w3m-hist w3m-fb
bookmark-w3m w3m-ems w3m-ccl ccl w3m-favicon w3m-image w3m-proc w3m-util
mm-archive gnus-async gnus-bcklg gnus-ml disp-table nndraft nnmh imap
utf-7 gnutls network-stream starttls nnimap parse-time tls utf7 netrc
nnml gnus-agent gnus-srvr gnus-score score-mode nnvirtual gnus-msg nntp
gnus-cache gnus-load eldoc nlinum linum nlinum-autoloads slime-autoloads
paren bbdb-gnus gnus-art mm-uu mml2015 epg-config mm-view mml-smime
smime dig gnus-sum nnoo gnus-group gnus-undo nnmail mail-source
gnus-start gnus-spec gnus-int gnus-range message cl-macs gv format-spec
mml easymenu mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231
rfc2047 rfc2045 ietf-drums gmm-utils mailheader gnus-win gnus gnus-ems
gnus-compat url url-proxy url-privacy url-expand url-methods url-history
url-cookie url-domsuf url-util url-parse auth-source eieio byte-opt
bytecomp byte-compile cconv password-cache url-vars mailcap nnheader
gnus-util mail-utils mm-util mail-prsvr wid-edit bbdb-snarf mail-extr
rfc822 bbdb-com advice help-fns advice-preload mailabbrev bbdb-autoloads
bbdb timezone haskell-mode-autoloads edmacro kmacro imenu w3m-load cl
cl-lib package windmove time-date 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 macroexp 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)

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

* bug#15778: 24.3; cperl-mode causes emacs to lock up
  2013-11-01 11:19 bug#15778: 24.3; cperl-mode causes emacs to lock up Nathan Trapuzzano
@ 2013-11-01 11:46 ` Eli Zaretskii
  2013-11-01 12:16   ` Nathan Trapuzzano
  0 siblings, 1 reply; 21+ messages in thread
From: Eli Zaretskii @ 2013-11-01 11:46 UTC (permalink / raw)
  To: Nathan Trapuzzano; +Cc: 15778

> From: Nathan Trapuzzano <nbtrap@nbtrap.com>
> Date: Fri, 01 Nov 2013 07:19:13 -0400
> 
> cperl-mode causes emacs to lock up indefinitely.  I can't break the lock
> except by killing the process.
> 
> Steps to reproduce:
> 
> 1. Visit the attached file with cperl-mode.
> 2. Put the cursor at the beginning of line 44 ($$str =~ ...)
> 3. Type C-k (kill-line).  The line is not removed, and the cursor is
>    stuck.  C-g doesn't help.

Please attach a debugger and show the backtrace.  The file etc/DEBUG
explains how to look for a place that infloops, perhaps you could
follow that and provide a more detailed information.

Thanks.





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

* bug#15778: 24.3; cperl-mode causes emacs to lock up
  2013-11-01 11:46 ` Eli Zaretskii
@ 2013-11-01 12:16   ` Nathan Trapuzzano
  2013-11-01 14:41     ` Eli Zaretskii
  0 siblings, 1 reply; 21+ messages in thread
From: Nathan Trapuzzano @ 2013-11-01 12:16 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 15778

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

Eli Zaretskii <eliz@gnu.org> writes:

> Please attach a debugger and show the backtrace.  The file etc/DEBUG
> explains how to look for a place that infloops, perhaps you could
> follow that and provide a more detailed information.

There's an infinite loop somewhere in exec_byte_code.  I've attached the
backtrace at the point.  Moreover, sending emacs a SIGUSR2 does invoke
the lisp debugger with the following message:

Debugger entered--entering a function:
* #[0 "\301\300\302\"\207" [(0 1) set-match-data evaporate] 3 "\n\n(fn)"]()
* funcall(#[0 "\301\300\302\"\207" [(0 1) set-match-data evaporate] 3 "\n\n(fn)"])
  jit-lock-fontify-now(1111 1611)
  jit-lock-function(1111)
  redisplay_internal\ \(C\ function\)()

If this is not enough, I can try to look into it more later.


[-- Attachment #2: gdb.txt --]
[-- Type: text/plain, Size: 5809 bytes --]

#0  0x00000000005555e1 in exec_byte_code (bytestr=<optimized out>, vector=<optimized out>, maxdepth=<optimized out>, 
    args_template=11780242, nargs=nargs@entry=0, args=<optimized out>, args@entry=0x0) at bytecode.c:919
#1  0x0000000000526532 in funcall_lambda (fun=9582789, nargs=nargs@entry=2, 
    arg_vector=arg_vector@entry=0x7fff22a126a8) at eval.c:3023
#2  0x00000000005268d9 in Ffuncall (nargs=<optimized out>, args=<optimized out>) at eval.c:2838
#3  0x00000000005269ce in funcall_nil (nargs=<optimized out>, args=<optimized out>) at eval.c:2340
#4  0x00000000005255a9 in run_hook_with_args (nargs=3, args=0x7fff22a126a0, 
    funcall=funcall@entry=0x5269c5 <funcall_nil>) at eval.c:2525
#5  0x000000000052563e in Frun_hook_with_args (nargs=<optimized out>, args=<optimized out>) at eval.c:2386
#6  0x000000000052670a in Ffuncall (nargs=nargs@entry=4, args=args@entry=0x7fff22a12698) at eval.c:2770
#7  0x00000000005555e1 in exec_byte_code (bytestr=<optimized out>, vector=<optimized out>, maxdepth=<optimized out>, 
    args_template=args_template@entry=0, nargs=nargs@entry=0, args=<optimized out>, args@entry=0x7fff22a12878)
    at bytecode.c:919
#8  0x0000000000526328 in funcall_lambda (fun=52111949, nargs=nargs@entry=0, 
    arg_vector=arg_vector@entry=0x7fff22a12878) at eval.c:2957
#9  0x00000000005268d9 in Ffuncall (nargs=<optimized out>, args=<optimized out>) at eval.c:2838
#10 0x0000000000525e43 in eval_sub (form=form@entry=51776198) at eval.c:2131
#11 0x0000000000528a29 in internal_lisp_condition_case (var=<optimized out>, bodyform=51776198, 
    handlers=<optimized out>) at eval.c:1300
#12 0x000000000055626b in exec_byte_code (bytestr=<optimized out>, vector=<optimized out>, maxdepth=<optimized out>, 
    args_template=args_template@entry=2048, nargs=nargs@entry=2, args=<optimized out>, args@entry=0x7fff22a12c28)
    at bytecode.c:1169
#13 0x0000000000526328 in funcall_lambda (fun=9604621, nargs=nargs@entry=2, 
    arg_vector=arg_vector@entry=0x7fff22a12c28) at eval.c:2957
#14 0x00000000005268d9 in Ffuncall (nargs=nargs@entry=3, args=args@entry=0x7fff22a12c20) at eval.c:2838
#15 0x00000000005555e1 in exec_byte_code (bytestr=<optimized out>, vector=<optimized out>, maxdepth=<optimized out>, 
    args_template=args_template@entry=1028, nargs=nargs@entry=1, args=<optimized out>, args@entry=0x7fff22a12e58)
    at bytecode.c:919
#16 0x0000000000526328 in funcall_lambda (fun=9604205, nargs=nargs@entry=1, 
    arg_vector=arg_vector@entry=0x7fff22a12e58) at eval.c:2957
#17 0x00000000005268d9 in Ffuncall (nargs=nargs@entry=2, args=args@entry=0x7fff22a12e50) at eval.c:2838
#18 0x0000000000525367 in internal_condition_case_n (bfun=0x52654e <Ffuncall>, nargs=nargs@entry=2, 
    args=args@entry=0x7fff22a12e50, handlers=11780290, hfun=hfun@entry=0x4302f0 <safe_eval_handler>) at eval.c:1413
#19 0x000000000042db6a in safe_call (nargs=nargs@entry=2, func=<optimized out>) at xdisp.c:2498
#20 0x000000000042db99 in safe_call1 (fn=<optimized out>, arg=<optimized out>) at xdisp.c:2514
#21 0x000000000042dd26 in handle_fontified_prop (it=0x7fff22a13e90) at xdisp.c:3701
#22 0x00000000004319df in handle_stop (it=it@entry=0x7fff22a13e90) at xdisp.c:3265
#23 0x0000000000438b1a in next_element_from_buffer (it=0x7fff22a13e90) at xdisp.c:8021
#24 0x000000000043528a in get_next_display_element (it=it@entry=0x7fff22a13e90) at xdisp.c:6676
#25 0x00000000004395f4 in display_line (it=it@entry=0x7fff22a13e90) at xdisp.c:19296
#26 0x000000000043bb30 in try_window (window=window@entry=11869221, pos=..., flags=flags@entry=1) at xdisp.c:16208
#27 0x000000000044bc68 in redisplay_window (window=window@entry=11869221, just_this_one_p=just_this_one_p@entry=1)
    at xdisp.c:15734
#28 0x000000000044d024 in redisplay_window_1 (window=window@entry=11869221) at xdisp.c:13756
#29 0x0000000000525114 in internal_condition_case_1 (bfun=bfun@entry=0x44cffb <redisplay_window_1>, arg=11869221, 
    handlers=11995558, hfun=hfun@entry=0x41f157 <redisplay_window_error>) at eval.c:1355
#30 0x0000000000440bfb in redisplay_internal () at xdisp.c:13412
#31 0x00000000004418e3 in redisplay () at xdisp.c:12647
#32 0x00000000004ca1fa in read_char (commandflag=1, map=map@entry=53179974, prev_event=11780242, 
    used_mouse_menu=used_mouse_menu@entry=0x7fff22a177fb, end_time=end_time@entry=0x0) at keyboard.c:2557
#33 0x00000000004cb810 in read_key_sequence (keybuf=keybuf@entry=0x7fff22a178c0, bufsize=bufsize@entry=30, 
    prompt=<optimized out>, dont_downcase_last=dont_downcase_last@entry=false, 
    can_return_switch_frame=can_return_switch_frame@entry=true, fix_current_buffer=fix_current_buffer@entry=true, 
    prevent_redisplay=prevent_redisplay@entry=false) at keyboard.c:9057
#34 0x00000000004cce4b in command_loop_1 () at keyboard.c:1431
#35 0x0000000000524ff7 in internal_condition_case (bfun=bfun@entry=0x4ccb53 <command_loop_1>, handlers=11839970, 
    hfun=hfun@entry=0x4c51b1 <cmd_error>) at eval.c:1331
#36 0x00000000004c0a1f in command_loop_2 (ignore=ignore@entry=11780242) at keyboard.c:1158
#37 0x0000000000524ece in internal_catch (tag=11835698, func=func@entry=0x4c0a05 <command_loop_2>, arg=11780242)
    at eval.c:1097
#38 0x00000000004c09b7 in command_loop () at keyboard.c:1137
#39 0x00000000004c4d3d in recursive_edit_1 () at keyboard.c:776
#40 0x00000000004c5017 in Frecursive_edit () at keyboard.c:840
#41 0x00000000004c0464 in main (argc=<optimized out>, argv=0x7fff22a17be8) at emacs.c:1590

Lisp Backtrace:
"font-lock-fontify-region" (0x22a126a8)
"run-hook-with-args" (0x22a126a0)
0x31b2a48 PVEC_COMPILED
"funcall" (0x22a12870)
"jit-lock-fontify-now" (0x22a12c28)
"jit-lock-function" (0x22a12e58)
"redisplay_internal (C function)" (0xb22638)
A debugging session is active.

	Inferior 1 [process 9463] will be detached.

Quit anyway? (y or n) Not confirmed.

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

* bug#15778: 24.3; cperl-mode causes emacs to lock up
  2013-11-01 12:16   ` Nathan Trapuzzano
@ 2013-11-01 14:41     ` Eli Zaretskii
  2013-11-01 14:59       ` Nathan Trapuzzano
  0 siblings, 1 reply; 21+ messages in thread
From: Eli Zaretskii @ 2013-11-01 14:41 UTC (permalink / raw)
  To: Nathan Trapuzzano; +Cc: 15778

> From: Nathan Trapuzzano <nbtrap@nbtrap.com>
> Cc: 15778@debbugs.gnu.org
> Date: Fri, 01 Nov 2013 08:16:24 -0400
> 
> > Please attach a debugger and show the backtrace.  The file etc/DEBUG
> > explains how to look for a place that infloops, perhaps you could
> > follow that and provide a more detailed information.
> 
> There's an infinite loop somewhere in exec_byte_code.  I've attached the
> backtrace at the point.  Moreover, sending emacs a SIGUSR2 does invoke
> the lisp debugger with the following message:
> 
> Debugger entered--entering a function:
> * #[0 "\301\300\302\"\207" [(0 1) set-match-data evaporate] 3 "\n\n(fn)"]()
> * funcall(#[0 "\301\300\302\"\207" [(0 1) set-match-data evaporate] 3 "\n\n(fn)"])
>   jit-lock-fontify-now(1111 1611)
>   jit-lock-function(1111)
>   redisplay_internal\ \(C\ function\)()
> 
> If this is not enough, I can try to look into it more later.

I cannot reproduce this.  Does it happen in "emacs -Q"?





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

* bug#15778: 24.3; cperl-mode causes emacs to lock up
  2013-11-01 14:41     ` Eli Zaretskii
@ 2013-11-01 14:59       ` Nathan Trapuzzano
  2013-11-01 16:26         ` Eli Zaretskii
  0 siblings, 1 reply; 21+ messages in thread
From: Nathan Trapuzzano @ 2013-11-01 14:59 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 15778

Eli Zaretskii <eliz@gnu.org> writes:

> I cannot reproduce this.  Does it happen in "emacs -Q"?

No.  Specifically, the offending line in my .emacs is, whaddya know,
(defalias 'perl-mode 'cperl-mode).

Try this:

emacs -Q
M-: (defalias 'perl-mode 'cperl-mode)
C-x C-f Beta.pm
M-x goto-line 44
C-k





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

* bug#15778: 24.3; cperl-mode causes emacs to lock up
  2013-11-01 14:59       ` Nathan Trapuzzano
@ 2013-11-01 16:26         ` Eli Zaretskii
  2013-11-01 17:21           ` Nathan Trapuzzano
  0 siblings, 1 reply; 21+ messages in thread
From: Eli Zaretskii @ 2013-11-01 16:26 UTC (permalink / raw)
  To: Nathan Trapuzzano; +Cc: 15778

> From: Nathan Trapuzzano <nbtrap@nbtrap.com>
> Cc: 15778@debbugs.gnu.org
> Date: Fri, 01 Nov 2013 10:59:12 -0400
> 
> emacs -Q
> M-: (defalias 'perl-mode 'cperl-mode)
> C-x C-f Beta.pm
> M-x goto-line 44
> C-k

It loops here:

    (while (and beg
		(progn
		  (beginning-of-line)
		  (eq (get-text-property (setq beg (point)) 'syntax-type)
		      'multiline)))
      (if (setq beg (cperl-beginning-of-property beg 'syntax-type))
	  (goto-char beg)))

This happens because cperl-beginning-of-property does this:

  (or (previous-single-property-change (cperl-1+ p) prop lim)
      (point-min))

So it starts its search backwards for the beginning of the property
from the position 1 _after_ BEG.  In this case,
previous-single-property-change returns BEG, so the code stays at BEG,
and thus loops indefinitely.

Looks like a bug in cperl-mode, as I don't see any protection in this
loop against such a calamity.  Is it safe to assume that a
'syntax-type' property will never cover exactly one buffer position?

(I have no idea why the defalias is needed to trigger the bug.)






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

* bug#15778: 24.3; cperl-mode causes emacs to lock up
  2013-11-01 16:26         ` Eli Zaretskii
@ 2013-11-01 17:21           ` Nathan Trapuzzano
  2013-11-01 20:23             ` Stephen Berman
  0 siblings, 1 reply; 21+ messages in thread
From: Nathan Trapuzzano @ 2013-11-01 17:21 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 15778

Eli Zaretskii <eliz@gnu.org> writes:

> Is it safe to assume that a 'syntax-type' property will never cover
> exactly one buffer position?

I think the question is actually whether it's safe to assume that
font-lock-mode will never pass cperl's font-lock function a point (BEG)
on a line whose first position is the beginning of a `multiline'
`syntax-type' property.  (That's a mouth full.)

I can see why such an assumption might be made.  So far as I can tell,
the multiline property always begins at the position immediately
following certain operators.  Obviously, this can't ever be a position
satisfying (bolp), since newline is no such operator.

However, in this case, we're killing the line where the multiline
property begins, and so as cperl goes about refontifying, it appears
that the multiline property does in fact begin a line.

So in the end, no, I don't think it's a safe assumption, at least not
until _after_ fontification.

> (I have no idea why the defalias is needed to trigger the bug.)

Indeed.





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

* bug#15778: 24.3; cperl-mode causes emacs to lock up
  2013-11-01 17:21           ` Nathan Trapuzzano
@ 2013-11-01 20:23             ` Stephen Berman
  2013-11-03  0:00               ` Stephen Berman
  0 siblings, 1 reply; 21+ messages in thread
From: Stephen Berman @ 2013-11-01 20:23 UTC (permalink / raw)
  To: Nathan Trapuzzano; +Cc: 15778

On Fri, 01 Nov 2013 13:21:33 -0400 Nathan Trapuzzano <nbtrap@nbtrap.com> wrote:

> Eli Zaretskii <eliz@gnu.org> writes:
>
>> (I have no idea why the defalias is needed to trigger the bug.)
>
> Indeed.

FWIW, I can reproduce the infloop and get the same backtrace starting
Emacs with -Q in my most recent build, which is GNU Emacs 24.3.50.1
(x86_64-suse-linux-gnu, GTK+ Version 3.6.4) of 2013-09-29 on
rosalinde.fritz.box (bzr 114480
jan.h.d@swipnet.se-20130929102158-3lobyyf4aobag57s), so if it doesn't
happen with -Q in the current trunk, it must be due to some change in
the last month.

Steve Berman





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

* bug#15778: 24.3; cperl-mode causes emacs to lock up
  2013-11-01 20:23             ` Stephen Berman
@ 2013-11-03  0:00               ` Stephen Berman
  2013-11-03 12:00                 ` Nathan Trapuzzano
  0 siblings, 1 reply; 21+ messages in thread
From: Stephen Berman @ 2013-11-03  0:00 UTC (permalink / raw)
  To: Nathan Trapuzzano; +Cc: 15778

On Fri, 01 Nov 2013 21:23:30 +0100 Stephen Berman <stephen.berman@gmx.net> wrote:

> On Fri, 01 Nov 2013 13:21:33 -0400 Nathan Trapuzzano <nbtrap@nbtrap.com> wrote:
>
>> Eli Zaretskii <eliz@gnu.org> writes:
>>
>>> (I have no idea why the defalias is needed to trigger the bug.)
>>
>> Indeed.
>
> FWIW, I can reproduce the infloop and get the same backtrace starting
> Emacs with -Q in my most recent build, which is GNU Emacs 24.3.50.1
> (x86_64-suse-linux-gnu, GTK+ Version 3.6.4) of 2013-09-29 on
> rosalinde.fritz.box (bzr 114480
> jan.h.d@swipnet.se-20130929102158-3lobyyf4aobag57s), so if it doesn't
> happen with -Q in the current trunk, it must be due to some change in
> the last month.

Well, I rebuilt (with make bootstrap) from the current truck (bzr
114907), and still get the infloop from -Q with the OP's recipe minus
the defalias.

Steve Berman





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

* bug#15778: 24.3; cperl-mode causes emacs to lock up
  2013-11-03  0:00               ` Stephen Berman
@ 2013-11-03 12:00                 ` Nathan Trapuzzano
  2013-11-03 13:41                   ` Stephen Berman
  2013-11-03 14:15                   ` Stefan Monnier
  0 siblings, 2 replies; 21+ messages in thread
From: Nathan Trapuzzano @ 2013-11-03 12:00 UTC (permalink / raw)
  To: Stephen Berman; +Cc: 15778

Stephen Berman <stephen.berman@gmx.net> writes:

> Well, I rebuilt (with make bootstrap) from the current truck (bzr
> 114907), and still get the infloop from -Q with the OP's recipe minus
> the defalias.

Same here.  The defalias should not be making a difference.

I'm having a really hard time debugging this with Edebug.  After I
instrument the function (cperl-font-lock-fontify-region-function), the
debugger is still not invoked when the function is entered.  If I add an
explicit call to (edebug), it breaks correctly, but when I try to step
past it, the debugger just exits, and the function resumes.

Anyone have a suggestion?





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

* bug#15778: 24.3; cperl-mode causes emacs to lock up
  2013-11-03 12:00                 ` Nathan Trapuzzano
@ 2013-11-03 13:41                   ` Stephen Berman
  2013-11-03 13:59                     ` Nathan Trapuzzano
  2013-11-03 14:15                   ` Stefan Monnier
  1 sibling, 1 reply; 21+ messages in thread
From: Stephen Berman @ 2013-11-03 13:41 UTC (permalink / raw)
  To: Nathan Trapuzzano; +Cc: 15778

On Sun, 03 Nov 2013 07:00:51 -0500 Nathan Trapuzzano <nbtrap@nbtrap.com> wrote:

> Stephen Berman <stephen.berman@gmx.net> writes:
>
>> Well, I rebuilt (with make bootstrap) from the current truck (bzr
>> 114907), and still get the infloop from -Q with the OP's recipe minus
>> the defalias.
>
> Same here.  The defalias should not be making a difference.
>
> I'm having a really hard time debugging this with Edebug.  After I
> instrument the function (cperl-font-lock-fontify-region-function), the
> debugger is still not invoked when the function is entered.  If I add an
> explicit call to (edebug), it breaks correctly, but when I try to step
> past it, the debugger just exits, and the function resumes.
>
> Anyone have a suggestion?

I also tried and failed to get Edebug to kick in here, but I did make an
observation that surprised me but I assume is somehow relevant: if I
start Emacs with -Q, insert your sample perl code in a new buffer,
invoke cperl-mode, go to line 44 and type C-k, Emacs hangs, as you
discovered -- but if, after starting with -Q and inserting the sample
code I first invoke perl-mode and after the buffer fontifies invoke
cperl-mode, now when I go to line 44, C-k kills the line as it should
and there is no other problem, even if I then change the buffer to some
other mode and then back to cperl-mode again.

Steve Berman





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

* bug#15778: 24.3; cperl-mode causes emacs to lock up
  2013-11-03 13:41                   ` Stephen Berman
@ 2013-11-03 13:59                     ` Nathan Trapuzzano
  2013-11-03 19:39                       ` Stephen Berman
  0 siblings, 1 reply; 21+ messages in thread
From: Nathan Trapuzzano @ 2013-11-03 13:59 UTC (permalink / raw)
  To: Stephen Berman; +Cc: 15778

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

Stephen Berman <stephen.berman@gmx.net> writes:

> I also tried and failed to get Edebug to kick in here, but I did make an
> observation that surprised me but I assume is somehow relevant: if I
> start Emacs with -Q, insert your sample perl code in a new buffer,
> invoke cperl-mode, go to line 44 and type C-k, Emacs hangs, as you
> discovered -- but if, after starting with -Q and inserting the sample
> code I first invoke perl-mode and after the buffer fontifies invoke
> cperl-mode, now when I go to line 44, C-k kills the line as it should
> and there is no other problem, even if I then change the buffer to some
> other mode and then back to cperl-mode again.

Since there seems to be inconsistend behavior, would you mind trying my
patch and making sure none of the scenarios you've tried so far causes
Emacs to hang?


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: cperl-mode.patch --]
[-- Type: text/x-diff, Size: 1593 bytes --]

From 0b73932e90496e0477eddce6ba7e87d2137cb730 Mon Sep 17 00:00:00 2001
From: Nathan Trapuzzano <nbtrap@nbtrap.com>
Date: Sun, 3 Nov 2013 08:44:36 -0500
Subject: [PATCH] * progmodes/cperl-mode.el
 (cperl-font-lock-fontify-region-function): Don't infloop when expanding
 region over `multiline' syntax-type that begins a line. (Bug#15778)

---
 lisp/ChangeLog               | 7 +++++++
 lisp/progmodes/cperl-mode.el | 5 +++--
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 6a91465..b047b57 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,10 @@
+2013-11-03  Nathan Trapuzzano  <nbtrap@nbtrap.com>
+
+	* progmodes/cperl-mode.el
+	(cperl-font-lock-fontify-region-function): Don't infloop when
+	expanding region over `multiline' syntax-type that begins a line.
+	(Bug#15778)
+
 2013-11-02  Glenn Morris  <rgm@gnu.org>
 
 	* Makefile.in (EMACS): Use a relative filename.
diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el
index 8a7d1e7..36b05c8 100644
--- a/lisp/progmodes/cperl-mode.el
+++ b/lisp/progmodes/cperl-mode.el
@@ -8900,8 +8900,9 @@ do extra unwind via `cperl-unwind-to-safe'."
 		  (beginning-of-line)
 		  (eq (get-text-property (setq beg (point)) 'syntax-type)
 		      'multiline)))
-      (if (setq beg (cperl-beginning-of-property beg 'syntax-type))
-	  (goto-char beg)))
+      (let ((new-beg (cperl-beginning-of-property beg 'syntax-type)))
+	(setq beg (if (= new-beg beg) nil new-beg))
+	(goto-char new-beg)))
     (setq beg (point))
     (goto-char end)
     (while (and end
-- 
1.8.4.2


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

* bug#15778: 24.3; cperl-mode causes emacs to lock up
  2013-11-03 12:00                 ` Nathan Trapuzzano
  2013-11-03 13:41                   ` Stephen Berman
@ 2013-11-03 14:15                   ` Stefan Monnier
  2013-11-03 14:23                     ` Nathan Trapuzzano
  1 sibling, 1 reply; 21+ messages in thread
From: Stefan Monnier @ 2013-11-03 14:15 UTC (permalink / raw)
  To: Nathan Trapuzzano; +Cc: Stephen Berman, 15778

> I'm having a really hard time debugging this with Edebug.  After I
> instrument the function (cperl-font-lock-fontify-region-function), the
> debugger is still not invoked when the function is entered.  If I add an
> explicit call to (edebug), it breaks correctly, but when I try to step
> past it, the debugger just exits, and the function resumes.

> Anyone have a suggestion?

You'll want to (setq font-lock-support-mode nil) before visiting the buffer.
If you can't reproduce the problem in that case, an alternative is to
use M-x jit-lock-debug-mode, which should help as well.


        Stefan





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

* bug#15778: 24.3; cperl-mode causes emacs to lock up
  2013-11-03 14:15                   ` Stefan Monnier
@ 2013-11-03 14:23                     ` Nathan Trapuzzano
  0 siblings, 0 replies; 21+ messages in thread
From: Nathan Trapuzzano @ 2013-11-03 14:23 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Stephen Berman, 15778

Stefan Monnier <monnier@iro.umontreal.ca> writes:

> You'll want to (setq font-lock-support-mode nil) before visiting the buffer.
> If you can't reproduce the problem in that case, an alternative is to
> use M-x jit-lock-debug-mode, which should help as well.

That worked, thanks.  This doesn't seem to be documented anywhere.





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

* bug#15778: 24.3; cperl-mode causes emacs to lock up
  2013-11-03 13:59                     ` Nathan Trapuzzano
@ 2013-11-03 19:39                       ` Stephen Berman
  2013-11-03 19:48                         ` Nathan Trapuzzano
  0 siblings, 1 reply; 21+ messages in thread
From: Stephen Berman @ 2013-11-03 19:39 UTC (permalink / raw)
  To: Nathan Trapuzzano; +Cc: 15778

On Sun, 03 Nov 2013 08:59:02 -0500 Nathan Trapuzzano <nbtrap@nbtrap.com> wrote:

> Stephen Berman <stephen.berman@gmx.net> writes:
>
>> I also tried and failed to get Edebug to kick in here, but I did make an
>> observation that surprised me but I assume is somehow relevant: if I
>> start Emacs with -Q, insert your sample perl code in a new buffer,
>> invoke cperl-mode, go to line 44 and type C-k, Emacs hangs, as you
>> discovered -- but if, after starting with -Q and inserting the sample
>> code I first invoke perl-mode and after the buffer fontifies invoke
>> cperl-mode, now when I go to line 44, C-k kills the line as it should
>> and there is no other problem, even if I then change the buffer to some
>> other mode and then back to cperl-mode again.
>
> Since there seems to be inconsistend behavior, would you mind trying my
> patch and making sure none of the scenarios you've tried so far causes
> Emacs to hang?

After applying your patch and byte-compiling the patched cperl-mode.el,
the above recipe no longer makes Emacs infloop.  (It still infloops when
I just apply the patch and evaluate the patched
cperl-font-lock-fontify-region-function without compiling the library).

Steve Berman





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

* bug#15778: 24.3; cperl-mode causes emacs to lock up
  2013-11-03 19:39                       ` Stephen Berman
@ 2013-11-03 19:48                         ` Nathan Trapuzzano
  2013-11-03 22:22                           ` Stephen Berman
  0 siblings, 1 reply; 21+ messages in thread
From: Nathan Trapuzzano @ 2013-11-03 19:48 UTC (permalink / raw)
  To: Stephen Berman; +Cc: 15778

Stephen Berman <stephen.berman@gmx.net> writes:

> (It still infloops when I just apply the patch and evaluate the
> patched cperl-font-lock-fontify-region-function without compiling the
> library)

What if you eval the patched function _before_ visiting the file?





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

* bug#15778: 24.3; cperl-mode causes emacs to lock up
  2013-11-03 19:48                         ` Nathan Trapuzzano
@ 2013-11-03 22:22                           ` Stephen Berman
  2013-11-03 22:50                             ` Nathan Trapuzzano
  0 siblings, 1 reply; 21+ messages in thread
From: Stephen Berman @ 2013-11-03 22:22 UTC (permalink / raw)
  To: Nathan Trapuzzano; +Cc: 15778

On Sun, 03 Nov 2013 14:48:42 -0500 Nathan Trapuzzano <nbtrap@nbtrap.com> wrote:

> Stephen Berman <stephen.berman@gmx.net> writes:
>
>> (It still infloops when I just apply the patch and evaluate the
>> patched cperl-font-lock-fontify-region-function without compiling the
>> library)
>
> What if you eval the patched function _before_ visiting the file?

Ah, then it works, i.e. C-k kills the line and Emacs doesn't infloop.

Steve Berman





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

* bug#15778: 24.3; cperl-mode causes emacs to lock up
  2013-11-03 22:22                           ` Stephen Berman
@ 2013-11-03 22:50                             ` Nathan Trapuzzano
  2013-11-04  1:48                               ` Stefan Monnier
  0 siblings, 1 reply; 21+ messages in thread
From: Nathan Trapuzzano @ 2013-11-03 22:50 UTC (permalink / raw)
  To: Stephen Berman; +Cc: 15778

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

Stephen Berman <stephen.berman@gmx.net> writes:

> Ah, then it works, i.e. C-k kills the line and Emacs doesn't infloop.

I thought so.

Can someone apply the patch to trunk?  It's attached here again.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: cperl-mode.patch --]
[-- Type: text/x-diff, Size: 1593 bytes --]

From 0b73932e90496e0477eddce6ba7e87d2137cb730 Mon Sep 17 00:00:00 2001
From: Nathan Trapuzzano <nbtrap@nbtrap.com>
Date: Sun, 3 Nov 2013 08:44:36 -0500
Subject: [PATCH] * progmodes/cperl-mode.el
 (cperl-font-lock-fontify-region-function): Don't infloop when expanding
 region over `multiline' syntax-type that begins a line. (Bug#15778)

---
 lisp/ChangeLog               | 7 +++++++
 lisp/progmodes/cperl-mode.el | 5 +++--
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 6a91465..b047b57 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,10 @@
+2013-11-03  Nathan Trapuzzano  <nbtrap@nbtrap.com>
+
+	* progmodes/cperl-mode.el
+	(cperl-font-lock-fontify-region-function): Don't infloop when
+	expanding region over `multiline' syntax-type that begins a line.
+	(Bug#15778)
+
 2013-11-02  Glenn Morris  <rgm@gnu.org>
 
 	* Makefile.in (EMACS): Use a relative filename.
diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el
index 8a7d1e7..36b05c8 100644
--- a/lisp/progmodes/cperl-mode.el
+++ b/lisp/progmodes/cperl-mode.el
@@ -8900,8 +8900,9 @@ do extra unwind via `cperl-unwind-to-safe'."
 		  (beginning-of-line)
 		  (eq (get-text-property (setq beg (point)) 'syntax-type)
 		      'multiline)))
-      (if (setq beg (cperl-beginning-of-property beg 'syntax-type))
-	  (goto-char beg)))
+      (let ((new-beg (cperl-beginning-of-property beg 'syntax-type)))
+	(setq beg (if (= new-beg beg) nil new-beg))
+	(goto-char new-beg)))
     (setq beg (point))
     (goto-char end)
     (while (and end
-- 
1.8.4.2


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

* bug#15778: 24.3; cperl-mode causes emacs to lock up
  2013-11-03 22:50                             ` Nathan Trapuzzano
@ 2013-11-04  1:48                               ` Stefan Monnier
  2013-11-04  2:29                                 ` Nathan Trapuzzano
  0 siblings, 1 reply; 21+ messages in thread
From: Stefan Monnier @ 2013-11-04  1:48 UTC (permalink / raw)
  To: Nathan Trapuzzano; +Cc: Stephen Berman, 15778

> -      (if (setq beg (cperl-beginning-of-property beg 'syntax-type))
> -	  (goto-char beg)))
> +      (let ((new-beg (cperl-beginning-of-property beg 'syntax-type)))
> +	(setq beg (if (= new-beg beg) nil new-beg))
> +	(goto-char new-beg)))

Hmm... what if new-beg is nil?
The current code explicitly tests this case to avoid calling
`goto-char', whereas your code calls goto-char unconditionally.
Why?


        Stefan





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

* bug#15778: 24.3; cperl-mode causes emacs to lock up
  2013-11-04  1:48                               ` Stefan Monnier
@ 2013-11-04  2:29                                 ` Nathan Trapuzzano
  2013-11-04  3:52                                   ` Stefan Monnier
  0 siblings, 1 reply; 21+ messages in thread
From: Nathan Trapuzzano @ 2013-11-04  2:29 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Stephen Berman, 15778

Stefan Monnier <monnier@iro.umontreal.ca> writes:

> Hmm... what if new-beg is nil?
> The current code explicitly tests this case to avoid calling
> `goto-char', whereas your code calls goto-char unconditionally.
> Why?
>
>
>         Stefan

Because `cperl-beginning-of-property' explicitly never returns nil.  In
the extreme case, it returns (point-min).





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

* bug#15778: 24.3; cperl-mode causes emacs to lock up
  2013-11-04  2:29                                 ` Nathan Trapuzzano
@ 2013-11-04  3:52                                   ` Stefan Monnier
  0 siblings, 0 replies; 21+ messages in thread
From: Stefan Monnier @ 2013-11-04  3:52 UTC (permalink / raw)
  To: Nathan Trapuzzano; +Cc: 15778-done, Stephen Berman, Jonathan Rockway

> Because `cperl-beginning-of-property' explicitly never returns nil.  In
> the extreme case, it returns (point-min).

Thanks, installed (as a "tiny change"),


        Stefan


PS: If you intend to contribute more code to Emacs, we'll soon need you
to sign some copyright paperwork.  If you want to start this process
right away, then fill the form below and email it to the FSF as
instructed, so they can send you the proper paperwork to sign.


Please email the following information to assign@gnu.org, and we
will send you the assignment form for your past and future changes.

Please use your full legal name (in ASCII characters) as the subject
line of the message.
----------------------------------------------------------------------
REQUEST: SEND FORM FOR PAST AND FUTURE CHANGES

[What is the name of the program or package you're contributing to?]
Emacs

[Did you copy any files or text written by someone else in these changes?
Even if that material is free software, we need to know about it.]


[Do you have an employer who might have a basis to claim to own
your changes?  Do you attend a school which might make such a claim?]


[For the copyright registration, what country are you a citizen of?]


[What year were you born?]


[Please write your email address here.]


[Please write your postal address here.]





[Which files have you changed so far, and which new files have you written
so far?]





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

end of thread, other threads:[~2013-11-04  3:52 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-11-01 11:19 bug#15778: 24.3; cperl-mode causes emacs to lock up Nathan Trapuzzano
2013-11-01 11:46 ` Eli Zaretskii
2013-11-01 12:16   ` Nathan Trapuzzano
2013-11-01 14:41     ` Eli Zaretskii
2013-11-01 14:59       ` Nathan Trapuzzano
2013-11-01 16:26         ` Eli Zaretskii
2013-11-01 17:21           ` Nathan Trapuzzano
2013-11-01 20:23             ` Stephen Berman
2013-11-03  0:00               ` Stephen Berman
2013-11-03 12:00                 ` Nathan Trapuzzano
2013-11-03 13:41                   ` Stephen Berman
2013-11-03 13:59                     ` Nathan Trapuzzano
2013-11-03 19:39                       ` Stephen Berman
2013-11-03 19:48                         ` Nathan Trapuzzano
2013-11-03 22:22                           ` Stephen Berman
2013-11-03 22:50                             ` Nathan Trapuzzano
2013-11-04  1:48                               ` Stefan Monnier
2013-11-04  2:29                                 ` Nathan Trapuzzano
2013-11-04  3:52                                   ` Stefan Monnier
2013-11-03 14:15                   ` Stefan Monnier
2013-11-03 14:23                     ` Nathan Trapuzzano

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