unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* path: cperl-mode.el support for Perl 5.10
@ 2008-01-22 22:46 Jonathan Rockway
  2008-01-23  6:00 ` Stephen J. Turnbull
  2008-01-23 21:40 ` Richard Stallman
  0 siblings, 2 replies; 3+ messages in thread
From: Jonathan Rockway @ 2008-01-22 22:46 UTC (permalink / raw)
  To: emacs-devel


[-- Attachment #1.1.1: Type: text/plain, Size: 793 bytes --]

Hi all,

I recently patched cperl-mode.el so that it supports new Perl 5.10
keywords, namely "given/when/default/break", "say", "UNITCHECK", and
"state".  I have a few other patches brewing, which I rambled about on
my website (http://blog.jrock.us/articles/Emacs%20and%20Perl%
205.10.pod); basically some refactoring to make the regexes more
readable, support for adding your syntax via customize (now that it's
easy to add syntax to Perl with Devel::Declare), and perhaps splitting
the mode into separate files (cperl-syntax, cperl-refactor, etc.) for
ease of maintainability (opening a 10000 line file can be scary :).

Also, I haven't heard from Ilya recently... if he's no longer
maintaining cperl-mode, I don't have any problem taking over.

Regards,
Jonathan Rockway


[-- Attachment #1.1.2: cperl-patch --]
[-- Type: text/x-patch, Size: 16153 bytes --]

*** /home/jon/tmp/emacs/lisp/progmodes/cperl-mode.el	2008-01-22 14:46:32.000000000 -0600
--- /home/jon/cperl-mode-latest.el	2008-01-22 16:36:09.000000000 -0600
***************
*** 3914,3920 ****
  						(progn
  						  (forward-sexp -2)
  						  (not
! 						   (looking-at "\\(printf?\\|system\\|exec\\|sort\\)\\>")))
  						(error t)))))))
  				   (error nil))) ; func(<<EOF)
  			       (and (not (match-beginning 6)) ; Empty
--- 3914,3920 ----
  						(progn
  						  (forward-sexp -2)
  						  (not
! 						   (looking-at "\\(printf?\\|say\\|system\\|exec\\|sort\\)\\>")))
  						(error t)))))))
  				   (error nil))) ; func(<<EOF)
  			       (and (not (match-beginning 6)) ; Empty
***************
*** 4101,4107 ****
  					      (not (memq (preceding-char)
  							 '(?$ ?@ ?& ?%)))
  					      (looking-at
! 					       "\\(while\\|if\\|unless\\|until\\|and\\|or\\|not\\|xor\\|split\\|grep\\|map\\|print\\)\\>")))))
  				    (and (eq (preceding-char) ?.)
  					 (eq (char-after (- (point) 2)) ?.))
  				    (bobp))
--- 4101,4107 ----
  					      (not (memq (preceding-char)
  							 '(?$ ?@ ?& ?%)))
  					      (looking-at
! 					       "\\(while\\|if\\|unless\\|until\\|and\\|or\\|not\\|xor\\|split\\|grep\\|map\\|print\\|say\\)\\>")))))
  				    (and (eq (preceding-char) ?.)
  					 (eq (char-after (- (point) 2)) ?.))
  				    (bobp))
***************
*** 4793,4799 ****
  		  (save-excursion
  		    (forward-sexp -1)
  		    ;; else {}     but not    else::func {}
! 		    (or (and (looking-at "\\(else\\|continue\\|grep\\|map\\|BEGIN\\|END\\|CHECK\\|INIT\\)\\>")
  			     (not (looking-at "\\(\\sw\\|_\\)+::")))
  			;; sub f {}
  			(progn
--- 4793,4799 ----
  		  (save-excursion
  		    (forward-sexp -1)
  		    ;; else {}     but not    else::func {}
! 		    (or (and (looking-at "\\(else\\|continue\\|grep\\|map\\|BEGIN\\|END\\|UNITCHECK\\|CHECK\\|INIT\\)\\>")
  			     (not (looking-at "\\(\\sw\\|_\\)+::")))
  			;; sub f {}
  			(progn
***************
*** 4917,4923 ****
  	   (forward-sexp -1)
  	   (not
  	    (looking-at
! 	     "\\(map\\|grep\\|printf?\\|system\\|exec\\|tr\\|s\\)\\>")))))))
  
  \f
  (defun cperl-indent-exp ()
--- 4917,4923 ----
  	   (forward-sexp -1)
  	   (not
  	    (looking-at
! 	     "\\(map\\|grep\\|say\\|printf?\\|system\\|exec\\|tr\\|s\\)\\>")))))))
  
  \f
  (defun cperl-indent-exp ()
***************
*** 4953,4965 ****
  			(if (eq (following-char) ?$ ) ; for my $var (list)
  			    (progn
  			      (forward-sexp -1)
! 			      (if (looking-at "\\(my\\|local\\|our\\)\\>")
  				  (forward-sexp -1))))
  			(if (looking-at
  			     (concat "\\(\\elsif\\|if\\|unless\\|while\\|until"
  				     "\\|for\\(each\\)?\\>\\(\\("
  				     cperl-maybe-white-and-comment-rex
! 				     "\\(my\\|local\\|our\\)\\)?"
  				     cperl-maybe-white-and-comment-rex
  				     "\\$[_a-zA-Z0-9]+\\)?\\)\\>"))
  			    (progn
--- 4953,4965 ----
  			(if (eq (following-char) ?$ ) ; for my $var (list)
  			    (progn
  			      (forward-sexp -1)
! 			      (if (looking-at "\\(state\\|my\\|local\\|our\\)\\>")
  				  (forward-sexp -1))))
  			(if (looking-at
  			     (concat "\\(\\elsif\\|if\\|unless\\|while\\|until"
  				     "\\|for\\(each\\)?\\>\\(\\("
  				     cperl-maybe-white-and-comment-rex
! 				     "\\(state\\|my\\|local\\|our\\)\\)?"
  				     cperl-maybe-white-and-comment-rex
  				     "\\$[_a-zA-Z0-9]+\\)?\\)\\>"))
  			    (progn
***************
*** 5048,5054 ****
  	;; Looking at:
  	;; foreach my    $var
  	(if (looking-at
! 	     "[ \t]*\\<for\\(each\\)?[ \t]+\\(my\\|local\\|our\\)\\(\t*\\|[ \t][ \t]+\\)[^ \t\n]")
  	    (progn
  	      (forward-word 2)
  	      (delete-horizontal-space)
--- 5048,5054 ----
  	;; Looking at:
  	;; foreach my    $var
  	(if (looking-at
! 	     "[ \t]*\\<for\\(each\\)?[ \t]+\\(state\\|my\\|local\\|our\\)\\(\t*\\|[ \t][ \t]+\\)[^ \t\n]")
  	    (progn
  	      (forward-word 2)
  	      (delete-horizontal-space)
***************
*** 5057,5063 ****
  	;; Looking at:
  	;; foreach my $var     (
  	(if (looking-at
! 	     "[ \t]*\\<for\\(each\\)?[ \t]+\\(my\\|local\\|our\\)[ \t]*\\$[_a-zA-Z0-9]+\\(\t*\\|[ \t][ \t]+\\)[^ \t\n#]")
  	    (progn
  	      (forward-sexp 3)
  	      (delete-horizontal-space)
--- 5057,5063 ----
  	;; Looking at:
  	;; foreach my $var     (
  	(if (looking-at
! 	     "[ \t]*\\<for\\(each\\)?[ \t]+\\(state\\|my\\|local\\|our\\)[ \t]*\\$[_a-zA-Z0-9]+\\(\t*\\|[ \t][ \t]+\\)[^ \t\n#]")
  	    (progn
  	      (forward-sexp 3)
  	      (delete-horizontal-space)
***************
*** 5067,5073 ****
  	;; Looking at (with or without "}" at start, ending after "({"):
  	;; } foreach my $var ()         OR   {
  	(if (looking-at
! 	     "[ \t]*\\(}[ \t]*\\)?\\<\\(\\els\\(e\\|if\\)\\|continue\\|if\\|unless\\|while\\|for\\(each\\)?\\(\\([ \t]+\\(my\\|local\\|our\\)\\)?[ \t]*\\$[_a-zA-Z0-9]+\\)?\\|until\\)\\>\\([ \t]*(\\|[ \t\n]*{\\)\\|[ \t]*{")
  	    (progn
  	      (setq ml (match-beginning 8)) ; "(" or "{" after control word
  	      (re-search-forward "[({]")
--- 5067,5073 ----
  	;; Looking at (with or without "}" at start, ending after "({"):
  	;; } foreach my $var ()         OR   {
  	(if (looking-at
! 	     "[ \t]*\\(}[ \t]*\\)?\\<\\(\\els\\(e\\|if\\)\\|continue\\|if\\|unless\\|while\\|for\\(each\\)?\\(\\([ \t]+\\(state\\|my\\|local\\|our\\)\\)?[ \t]*\\$[_a-zA-Z0-9]+\\)?\\|until\\)\\>\\([ \t]*(\\|[ \t\n]*{\\)\\|[ \t]*{")
  	    (progn
  	      (setq ml (match-beginning 8)) ; "(" or "{" after control word
  	      (re-search-forward "[({]")
***************
*** 5632,5641 ****
  	      "\\(^\\|[^$@%&\\]\\)\\<\\("
  	      (mapconcat
  	       'identity
! 	       '("if" "until" "while" "elsif" "else" "unless" "for"
  		 "foreach" "continue" "exit" "die" "last" "goto" "next"
! 		 "redo" "return" "local" "exec" "sub" "do" "dump" "use" "our"
! 		 "require" "package" "eval" "my" "BEGIN" "END" "CHECK" "INIT")
  	       "\\|")			; Flow control
  	      "\\)\\>") 2)		; was "\\)[ \n\t;():,\|&]"
  					; In what follows we use `type' style
--- 5632,5645 ----
  	      "\\(^\\|[^$@%&\\]\\)\\<\\("
  	      (mapconcat
  	       'identity
! 	       '("if" "until" "while" "elsif" "else" 
!                  "given" "when" "default" "break"
!                  "unless" "for"
  		 "foreach" "continue" "exit" "die" "last" "goto" "next"
! 		 "redo" "return" "local" "exec" "sub" "do" "dump"
!                  "use" "our"
! 		 "require" "package" "eval" "my" "state" 
!                  "BEGIN" "END" "CHECK" "INIT" "UNITCHECK")
  	       "\\|")			; Flow control
  	      "\\)\\>") 2)		; was "\\)[ \n\t;():,\|&]"
  					; In what follows we use `type' style
***************
*** 5714,5737 ****
  	    (list
  	     (concat
  	      "\\(^\\|[^$@%&\\]\\)\\<\\("
! 	      ;; "AUTOLOAD" "BEGIN" "CHECK" "DESTROY" "END" "INIT" "__END__" "chomp"
! 	      ;; "chop" "defined" "delete" "do" "each" "else" "elsif"
! 	      ;; "eval" "exists" "for" "foreach" "format" "goto"
  	      ;; "grep" "if" "keys" "last" "local" "map" "my" "next"
  	      ;; "no" "our" "package" "pop" "pos" "print" "printf" "push"
! 	      ;; "q" "qq" "qw" "qx" "redo" "return" "scalar" "shift"
! 	      ;; "sort" "splice" "split" "study" "sub" "tie" "tr"
  	      ;; "undef" "unless" "unshift" "untie" "until" "use"
! 	      ;; "while" "y"
! 	      "AUTOLOAD\\|BEGIN\\|CHECK\\|cho\\(p\\|mp\\)\\|d\\(e\\(fined\\|lete\\)\\|"
  	      "o\\)\\|DESTROY\\|e\\(ach\\|val\\|xists\\|ls\\(e\\|if\\)\\)\\|"
! 	      "END\\|for\\(\\|each\\|mat\\)\\|g\\(rep\\|oto\\)\\|INIT\\|if\\|keys\\|"
  	      "l\\(ast\\|ocal\\)\\|m\\(ap\\|y\\)\\|n\\(ext\\|o\\)\\|our\\|"
  	      "p\\(ackage\\|rint\\(\\|f\\)\\|ush\\|o\\(p\\|s\\)\\)\\|"
! 	      "q\\(\\|q\\|w\\|x\\|r\\)\\|re\\(turn\\|do\\)\\|s\\(pli\\(ce\\|t\\)\\|"
! 	      "calar\\|tudy\\|ub\\|hift\\|ort\\)\\|t\\(r\\|ie\\)\\|"
  	      "u\\(se\\|n\\(shift\\|ti\\(l\\|e\\)\\|def\\|less\\)\\)\\|"
! 	      "while\\|y\\|__\\(END\\|DATA\\)__" ;__DATA__ added manually
  	      "\\|[sm]"			; Added manually
  	      "\\)\\>") 2 'cperl-nonoverridable-face)
  	    ;;		(mapconcat 'identity
--- 5718,5741 ----
  	    (list
  	     (concat
  	      "\\(^\\|[^$@%&\\]\\)\\<\\("
! 	      ;; "AUTOLOAD" "BEGIN" "CHECK" "DESTROY" "END" "INIT" "UNITCHECK" "__END__" "chomp"
! 	      ;; "break" "chop" "default" "defined" "delete" "do" "each" "else" "elsif"
! 	      ;; "eval" "exists" "for" "foreach" "format" "given" "goto"
  	      ;; "grep" "if" "keys" "last" "local" "map" "my" "next"
  	      ;; "no" "our" "package" "pop" "pos" "print" "printf" "push"
! 	      ;; "q" "qq" "qw" "qx" "redo" "return" "say" "scalar" "shift"
! 	      ;; "sort" "splice" "split" "state" "study" "sub" "tie" "tr"
  	      ;; "undef" "unless" "unshift" "untie" "until" "use"
! 	      ;; "when" "while" "y"
! 	      "AUTOLOAD\\|BEGIN\\|\\(UNIT\\)?CHECK\\|break\\|cho\\(p\\|mp\\)\\|d\\(e\\(f\\(ault|ined\\)\\|lete\\)\\|"
  	      "o\\)\\|DESTROY\\|e\\(ach\\|val\\|xists\\|ls\\(e\\|if\\)\\)\\|"
! 	      "END\\|for\\(\\|each\\|mat\\)\\|g\\(iven\\|rep\\|oto\\)\\|INIT\\|if\\|keys\\|"
  	      "l\\(ast\\|ocal\\)\\|m\\(ap\\|y\\)\\|n\\(ext\\|o\\)\\|our\\|"
  	      "p\\(ackage\\|rint\\(\\|f\\)\\|ush\\|o\\(p\\|s\\)\\)\\|"
! 	      "q\\(\\|q\\|w\\|x\\|r\\)\\|re\\(turn\\|do\\)\\|s\\(ay\\|pli\\(ce\\|t\\)\\|"
! 	      "calar\\|t\\(ate\\|udy\\)\\|ub\\|hift\\|ort\\)\\|t\\(r\\|ie\\)\\|"
  	      "u\\(se\\|n\\(shift\\|ti\\(l\\|e\\)\\|def\\|less\\)\\)\\|"
! 	      "wh\\(en\\|ile\\)\\|y\\|__\\(END\\|DATA\\)__" ;__DATA__ added manually
  	      "\\|[sm]"			; Added manually
  	      "\\)\\>") 2 'cperl-nonoverridable-face)
  	    ;;		(mapconcat 'identity
***************
*** 5785,5798 ****
  	      font-lock-string-face t)
  	    '("^[ \t]*\\([a-zA-Z0-9_]+[ \t]*:\\)[ \t]*\\($\\|{\\|\\<\\(until\\|while\\|for\\(each\\)?\\|do\\)\\>\\)" 1
  	      font-lock-constant-face)	; labels
! 	    '("\\<\\(continue\\|next\\|last\\|redo\\|goto\\)\\>[ \t]+\\([a-zA-Z0-9_:]+\\)" ; labels as targets
  	      2 font-lock-constant-face)
  	    ;; Uncomment to get perl-mode-like vars
              ;;; '("[$*]{?\\(\\sw+\\)" 1 font-lock-variable-name-face)
              ;;; '("\\([@%]\\|\\$#\\)\\(\\sw+\\)"
              ;;;  (2 (cons font-lock-variable-name-face '(underline))))
  	    (cond ((featurep 'font-lock-extra)
! 		   '("^[ \t]*\\(my\\|local\\|our\\)[ \t]*\\(([ \t]*\\)?\\([$@%*][a-zA-Z0-9_:]+\\)\\([ \t]*,\\)?"
  		     (3 font-lock-variable-name-face)
  		     (4 '(another 4 nil
  				  ("\\=[ \t]*,[ \t]*\\([$@%*][a-zA-Z0-9_:]+\\)\\([ \t]*,\\)?"
--- 5789,5802 ----
  	      font-lock-string-face t)
  	    '("^[ \t]*\\([a-zA-Z0-9_]+[ \t]*:\\)[ \t]*\\($\\|{\\|\\<\\(until\\|while\\|for\\(each\\)?\\|do\\)\\>\\)" 1
  	      font-lock-constant-face)	; labels
! 	    '("\\<\\(continue\\|next\\|last\\|redo\\|break\\|goto\\)\\>[ \t]+\\([a-zA-Z0-9_:]+\\)" ; labels as targets
  	      2 font-lock-constant-face)
  	    ;; Uncomment to get perl-mode-like vars
              ;;; '("[$*]{?\\(\\sw+\\)" 1 font-lock-variable-name-face)
              ;;; '("\\([@%]\\|\\$#\\)\\(\\sw+\\)"
              ;;;  (2 (cons font-lock-variable-name-face '(underline))))
  	    (cond ((featurep 'font-lock-extra)
! 		   '("^[ \t]*\\(state\\|my\\|local\\|our\\)[ \t]*\\(([ \t]*\\)?\\([$@%*][a-zA-Z0-9_:]+\\)\\([ \t]*,\\)?"
  		     (3 font-lock-variable-name-face)
  		     (4 '(another 4 nil
  				  ("\\=[ \t]*,[ \t]*\\([$@%*][a-zA-Z0-9_:]+\\)\\([ \t]*,\\)?"
***************
*** 5801,5807 ****
  			nil t)))	; local variables, multiple
  		  (font-lock-anchored
  		   ;; 1=my_etc, 2=white? 3=(+white? 4=white? 5=var
! 		   `(,(concat "\\<\\(my\\|local\\|our\\)"
  				  cperl-maybe-white-and-comment-rex
  				  "\\(("
  				     cperl-maybe-white-and-comment-rex
--- 5805,5811 ----
  			nil t)))	; local variables, multiple
  		  (font-lock-anchored
  		   ;; 1=my_etc, 2=white? 3=(+white? 4=white? 5=var
! 		   `(,(concat "\\<\\(state\\|my\\|local\\|our\\)"
  				  cperl-maybe-white-and-comment-rex
  				  "\\(("
  				     cperl-maybe-white-and-comment-rex
***************
*** 5849,5857 ****
  				   'syntax-type 'multiline))
  				(setq cperl-font-lock-multiline-start nil)))
  			(3 font-lock-variable-name-face))))
! 		  (t '("^[ \t{}]*\\(my\\|local\\|our\\)[ \t]*\\(([ \t]*\\)?\\([$@%*][a-zA-Z0-9_:]+\\)"
  		       3 font-lock-variable-name-face)))
! 	    '("\\<for\\(each\\)?\\([ \t]+\\(my\\|local\\|our\\)\\)?[ \t]*\\(\\$[a-zA-Z_][a-zA-Z_0-9]*\\)[ \t]*("
  	      4 font-lock-variable-name-face)
  	    ;; Avoid $!, and s!!, qq!! etc. when not fontifying syntaxically
  	    '("\\(?:^\\|[^smywqrx$]\\)\\(!\\)" 1 font-lock-negation-char-face)
--- 5853,5861 ----
  				   'syntax-type 'multiline))
  				(setq cperl-font-lock-multiline-start nil)))
  			(3 font-lock-variable-name-face))))
! 		  (t '("^[ \t{}]*\\(state\\|my\\|local\\|our\\)[ \t]*\\(([ \t]*\\)?\\([$@%*][a-zA-Z0-9_:]+\\)"
  		       3 font-lock-variable-name-face)))
! 	    '("\\<for\\(each\\)?\\([ \t]+\\(state\\|my\\|local\\|our\\)\\)?[ \t]*\\(\\$[a-zA-Z_][a-zA-Z_0-9]*\\)[ \t]*("
  	      4 font-lock-variable-name-face)
  	    ;; Avoid $!, and s!!, qq!! etc. when not fontifying syntaxically
  	    '("\\(?:^\\|[^smywqrx$]\\)\\(!\\)" 1 font-lock-negation-char-face)
***************
*** 7294,7299 ****
--- 7298,7304 ----
       "\\$."				; $|
       "<<[a-zA-Z_'\"`]"			; <<FOO, <<'FOO'
       "||"
+      "//"
       "&&"
       "[CBIXSLFZ]<\\(\\sw\\|\\s \\|\\s_\\|[\n]\\)*>" ; C<code like text>
       "-[a-zA-Z_0-9]+[ \t]*=>"		; -option => value
***************
*** 7634,7639 ****
--- 7639,7645 ----
  ... = ...	Assignment.
  ... == ...	Numeric equality.
  ... =~ ...	Search pattern, substitution, or translation
+ ... ~~ ..       Smart match
  ... > ...	Numeric greater than.
  ... >= ...	Numeric greater than or equal to.
  ... >> ...	Bitwise shift right.
***************
*** 7671,7676 ****
--- 7677,7683 ----
  BEGIN { ... }	Immediately executed (during compilation) piece of code.
  END { ... }	Pseudo-subroutine executed after the script finishes.
  CHECK { ... }	Pseudo-subroutine executed after the script is compiled.
+ UNITCHECK { ... } 
  INIT { ... }	Pseudo-subroutine executed before the script starts running.
  DATA	Input filehandle for what follows after __END__	or __DATA__.
  accept(NEWSOCKET,GENERICSOCKET)
***************
*** 7678,7683 ****
--- 7685,7691 ----
  atan2(X,Y)
  bind(SOCKET,NAME)
  binmode(FILEHANDLE)
+ break	Break out of a given/when statement
  caller[(LEVEL)]
  chdir(EXPR)
  chmod(LIST)
***************
*** 7693,7698 ****
--- 7701,7707 ----
  crypt(PLAINTEXT,SALT)
  dbmclose(%HASH)
  dbmopen(%HASH,DBNAME,MODE)
+ default { ... } default case for given/when block
  defined(EXPR)
  delete($HASH{KEY})
  die(LIST)
***************
*** 7745,7750 ****
--- 7754,7760 ----
  getservent
  getsockname(SOCKET)
  getsockopt(SOCKET,LEVEL,OPTNAME)
+ given (EXPR) { [ when (EXPR) { ... } ]+ [ default { ... } ]? } 
  gmtime(EXPR)
  goto LABEL
  ... gt ...	String greater than.
***************
*** 7805,7810 ****
--- 7815,7821 ----
  rindex(STR,SUBSTR[,OFFSET])
  rmdir(FILENAME)
  s/PATTERN/REPLACEMENT/gieoxsm
+ say [FILEHANDLE] [(LIST)]
  scalar(EXPR)
  seek(FILEHANDLE,POSITION,WHENCE)
  seekdir(DIRHANDLE,POS)
***************
*** 7839,7844 ****
--- 7850,7856 ----
  sqrt(EXPR)
  srand(EXPR)
  stat(EXPR|FILEHANDLE|VAR)
+ state VAR or state (VAR1,...)	Introduces a static lexical variable
  study[(SCALAR)]
  sub [NAME [(format)]] { BODY }	sub NAME [(format)];	sub [(format)] {...}
  substr(EXPR,OFFSET[,LEN])
***************
*** 7874,7879 ****
--- 7886,7892 ----
  y/SEARCHLIST/REPLACEMENTLIST/
  ... | ...	Bitwise or.
  ... || ...	Logical or.
+ ... // ...      Defined-or.
  ~ ...		Unary bitwise complement.
  #!	OS interpreter indicator.  If contains `perl', used for options, and -x.
  AUTOLOAD {...}	Shorthand for `sub AUTOLOAD {...}'.

[-- Attachment #1.2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

[-- Attachment #2: Type: text/plain, Size: 142 bytes --]

_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-devel

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

* path: cperl-mode.el support for Perl 5.10
  2008-01-22 22:46 path: cperl-mode.el support for Perl 5.10 Jonathan Rockway
@ 2008-01-23  6:00 ` Stephen J. Turnbull
  2008-01-23 21:40 ` Richard Stallman
  1 sibling, 0 replies; 3+ messages in thread
From: Stephen J. Turnbull @ 2008-01-23  6:00 UTC (permalink / raw)
  To: Jonathan Rockway; +Cc: emacs-devel

Jonathan Rockway writes:

 > Also, I haven't heard from Ilya recently... if he's no longer
 > maintaining cperl-mode, I don't have any problem taking over.

Ilya is known to be active, he just posted to xemacs-beta.

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

* Re: path: cperl-mode.el support for Perl 5.10
  2008-01-22 22:46 path: cperl-mode.el support for Perl 5.10 Jonathan Rockway
  2008-01-23  6:00 ` Stephen J. Turnbull
@ 2008-01-23 21:40 ` Richard Stallman
  1 sibling, 0 replies; 3+ messages in thread
From: Richard Stallman @ 2008-01-23 21:40 UTC (permalink / raw)
  To: Jonathan Rockway; +Cc: emacs-devel

    Also, I haven't heard from Ilya recently... if he's no longer
    maintaining cperl-mode, I don't have any problem taking over.

He has not maintained it for us for a long time,
but we wish he would.  How about if you talk with him
and see if he will start?  If he says no, we would be glad
if you do so.

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

end of thread, other threads:[~2008-01-23 21:40 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-01-22 22:46 path: cperl-mode.el support for Perl 5.10 Jonathan Rockway
2008-01-23  6:00 ` Stephen J. Turnbull
2008-01-23 21:40 ` Richard Stallman

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