[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debbugs-tracker] bug#10095: closed (24.0.50; cperl-mode highlight bug)

From: GNU bug Tracking System
Subject: [debbugs-tracker] bug#10095: closed (24.0.50; cperl-mode highlight bug)
Date: Mon, 06 Aug 2012 17:50:02 +0000

Your message dated Mon, 06 Aug 2012 13:41:52 -0400
with message-id <address@hidden>
and subject line Re: bug#10095: 24.0.50; cperl-mode highlight bug
has caused the debbugs.gnu.org bug report #10095,
regarding 24.0.50; cperl-mode highlight bug
to be marked as done.

(If you believe you have received this mail in error, please contact

10095: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=10095
GNU Bug Tracking System
Contact address@hidden with problems
--- Begin Message --- Subject: 24.0.50; cperl-mode highlight bug Date: Mon, 21 Nov 2011 18:10:00 +0800
This bug report will be sent to the Bug-GNU-Emacs mailing list
and the GNU bug tracker at debbugs.gnu.org.  Please check that
the From: line contains a valid email address.  After a delay of up
to one day, you should receive an acknowledgement at that address.

Please write in English if possible, as the Emacs maintainers
usually do not have translators for other languages.

Please describe exactly what actions triggered the bug, and
the precise symptoms of the bug.  If you can, give a recipe
starting from `emacs -Q':

1. Write a perl file named as 'a.pl', and past the following code

use strict;
use warnings;
use Data::Dumper;
use POSIX qw/strftime mktime/;
use Getopt::Long;
use DBI;

use JSON;

sub main {

sub log {
    my $msg = shift;
    print localtime() . " $msg\n" if $v;

sub get_all_teams {
    # we only can process temas that begin_time greater than
2011-09-07, since refund_log only start at that time
    my $sql = qq/
            to_timestamp(begin_time)::date as begin_time,
            to_timestamp(end_time)::date as end_time,
            to_timestamp(begin_time)::date >= '2011-09-07'
            and to_timestamp(end_time)::date <= '$dt'
            and payment_method > 0
            and id not in ( select team_id from
report.tuan_balance_history where finish = 1 )

    my $r = $dbh->selectall_arrayref($sql);
    for(@$r) {
        my ( $team_id, $begin_time, $end_time, $cost_price,
$payment_method, $zhgt_date, $N, $xfqqblr_date, $shqxfdq_date,
$kdqblr_date ) = @$_;
        $teams_hash{ $team_id } = {
            begin_time => $begin_time,
            end_time => $end_time,
            cost_price => $cost_price,
            payment_method => $payment_method,
            balanced_count => 0,
            balanced_money => 0,
            other_tuan_quantity => 0,
            other_tuan_refund_quantity => 0,
            other_tuan_coupon_consumed_count => 0,
            quantity => 0,
            refund_quantity => 0,
            real_quantity => 0,
            vendor_fee => 0,
            coupon_consumed_count => 0,
            coupon_consumed_percent => 0,
            coupon_is_expire => 0,
            vendor_fee => 0,
            zhgt_date => $zhgt_date,
            xfqqblr_date => $xfqqblr_date,
            N => $N,
            kdqblr_date => $kdqblr_date,
            shqxfdq_date => $shqxfdq_date,
            balanced_dates => [],
            expressed_count => 0,
            through_coupon_consumed_count => 0

2. Open 'a.pl' use 'emacs -Q a.pl', emacs will use perl-mode open this
file, type 'M-x cperl-mode', type C-v to page down, you will see 'my $r' and
the following lines will not highlight as expect.

If Emacs crashed, and you have the Emacs process in the gdb debugger,
please include the output from the following gdb commands:
    `bt full' and `xbacktrace'.
For information about debugging Emacs, please read the file

In GNU Emacs (i686-pc-linux-gnu, GTK+ Version 2.24.5)
 of 2011-08-02 on tux
Windowing system distributor `The X.Org Foundation', version 11.0.11102000
configured using `configure  '--prefix=/usr'
'--build=i686-pc-linux-gnu' '--host=i686-pc-linux-gnu'
'--mandir=/usr/share/man' '--infodir=/usr/share/info'
'--datadir=/usr/share' '--sysconfdir=/etc' '--localstatedir=/var/lib'
'--disable-dependency-tracking' '--program-suffix=-emacs-24'
'--with-gameuser=games' '--without-compress-info' '--without-hesiod'
'--without-kerberos' '--without-kerberos5' '--with-gpm' '--with-dbus'
'--without-gnutls' '--without-selinux' '--with-sound' '--with-x'
'--without-xml2' '--without-toolkit-scroll-bars' '--without-wide-int'
'--with-gif' '--with-jpeg' '--with-png' '--with-rsvg' '--with-tiff'
'--with-xpm' '--without-imagemagick' '--without-gsettings'
'--without-gconf' '--with-xft' '--without-libotf' '--without-m17n-flt'
'--with-x-toolkit=gtk' 'build_alias=i686-pc-linux-gnu'
'host_alias=i686-pc-linux-gnu' 'CFLAGS=-O2 -march=prescott -pipe'
'LDFLAGS=-Wl,-O1 -Wl,--as-needed''

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: zh_CN.UTF-8
  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=ibus
  locale-coding-system: utf-8-unix
  default enable-multibyte-characters: t

Major mode: CPerl

Minor modes in effect:
  tooltip-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent input:
M-x c p e r l - m o d e <return> C-v C-x C-f C-g M-x
r e p o r t - b u <tab> <return>

Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.

Load-path shadows:
/usr/share/emacs/site-lisp/flim/hex-util hides
/usr/share/emacs/site-lisp/flim/md4 hides /usr/share/emacs/24.0.50/lisp/md4
/usr/share/emacs/site-lisp/flim/sasl-cram hides
/usr/share/emacs/site-lisp/flim/sasl-digest hides
/usr/share/emacs/site-lisp/flim/sasl hides
/usr/share/emacs/site-lisp/flim/ntlm hides
/usr/share/emacs/site-lisp/flim/sasl-ntlm hides
/usr/share/emacs/site-lisp/flim/hmac-md5 hides
/usr/share/emacs/site-lisp/flim/hmac-def hides
/usr/share/emacs/site-lisp/semi/smime hides
/usr/share/emacs/site-lisp/emms/tq hides
/usr/share/emacs/site-lisp/semi/pgg hides
/usr/share/emacs/site-lisp/semi/pgg-def hides
/usr/share/emacs/site-lisp/semi/pgg-gpg hides
/usr/share/emacs/site-lisp/semi/pgg-pgp hides
/usr/share/emacs/site-lisp/semi/pgg-parse hides
/usr/share/emacs/site-lisp/semi/pgg-pgp5 hides

(shadow sort gnus-util mail-extr message format-spec rfc822 mml mml-sec
mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045
ietf-drums mm-util mail-prsvr mailabbrev mail-utils gmm-utils mailheader
emacsbug cperl-mode easymenu perl-mode time-date china-util tooltip
ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd tool-bar dnd
fontset image fringe lisp-mode register page menu-bar rfn-eshadow timer
select scroll-bar mouse jit-lock font-lock syntax facemenu font-core
frame cham georgian utf-8-lang misc-lang vietnamese tibetan thai
tai-viet lao korean japanese hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese case-table epa-hook jka-cmpr-hook help
simple abbrev minibuffer loaddefs button faces cus-face files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote make-network-process
dbusbind dynamic-setting font-render-setting move-toolbar gtk x-toolkit
x multi-tty emacs)

--- End Message ---
--- Begin Message --- Subject: Re: bug#10095: 24.0.50; cperl-mode highlight bug Date: Mon, 06 Aug 2012 13:41:52 -0400 User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.1.50 (gnu/linux)
Version: 24.2

>> It still exists in GNU Emacs 24.1.1. I actually noticed the problem
>> on the following code, and I believe it's the same bug. It seems
>> that CPerl doesn't detect the end of a long qq or qw.
> Thanks for the test case, I can reproduce it here with the trunk, so
> it's not yet fixed.

I've just installed the patch below in the `emacs-24' branch.  I believe
it fixes your problem.  Thanks for the good test case,


=== modified file 'lisp/progmodes/cperl-mode.el'
--- lisp/progmodes/cperl-mode.el        2012-07-18 09:33:09 +0000
+++ lisp/progmodes/cperl-mode.el        2012-08-06 17:20:25 +0000
@@ -1838,7 +1838,13 @@
             (set (make-local-variable 'cperl-syntax-done-to) nil)
             (set (make-local-variable 'syntax-propertize-function)
                  (lambda (start end)
-                   (goto-char start) (cperl-fontify-syntaxically end))))
+                   (goto-char start)
+                   ;; Even if cperl-fontify-syntaxically has already gone
+                   ;; beyond `start', syntax-propertize has just removed
+                   ;; syntax-table properties between start and end, so we have
+                   ;; to re-apply them.
+                   (setq cperl-syntax-done-to start)
+                   (cperl-fontify-syntaxically end))))
        (make-local-variable 'parse-sexp-lookup-properties)
        ;; Do not introduce variable if not needed, we check it!
        (set 'parse-sexp-lookup-properties t)

--- End Message ---

reply via email to

[Prev in Thread] Current Thread [Next in Thread]