Package: haskell-mode
Version: 2.3-1
Severity: minor
Tags: patch

  haskell-mode places characters that form Haskell symbols (e.g.: "+"
and "=") into the Emacs character class "_".  According to the Emacs
documentation, this class is meant to be used for symbols that may be
part of identifiers even though they are not reserved words.  This means
that in the code

f x = a<+>b

  the string "a<+>b" is considered to be a single lexical element.  A
consequence of this is that "forward-sexp" will move over the whole
thing instead of stopping at "<+>".

  After looking over the Emacs documentation, it seems to me that these
characters more properly belong in the character class ".", which seems
to be used for operator symbols in other languages.  Changing this in a
local copy of haskell-mode produces the expected results with the above
code (M-C-f stops at the operator and at "b").

  I'm a bit worried that there might be side effects I haven't noticed
yet; some of the other haskell-mode code seems to use the syntax table
in its processing.

  Daniel

-- System Information:
Debian Release: lenny/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'stable')
Architecture: i386 (i686)

Kernel: Linux 2.6.22-3-686 (SMP w/1 CPU core)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) (ignored: LC_ALL 
set to en_US.UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages haskell-mode depends on:
ii  emacs [emacsen]              22.1+1-2.3  The GNU Emacs editor (metapackage)
ii  emacs21 [emacsen]            21.4a+1-5.3 The GNU Emacs editor
ii  emacs22-gtk [emacsen]        22.1+1-2.3  The GNU Emacs editor (with GTK use

Versions of packages haskell-mode recommends:
ii  ghc6                      6.6.1-2        GHC - the Glasgow Haskell Compilat
ii  hugs                      98.200609.21-5 A Haskell 98 interpreter

-- no debconf information

--- haskell-mode.el.orig	2008-01-01 11:49:01.000000000 -0800
+++ haskell-mode.el	2008-01-01 12:40:39.000000000 -0800
@@ -351,13 +351,13 @@
     (modify-syntax-entry ?\` "$`" table)
     (modify-syntax-entry ?\\ "\\" table)
     (mapcar (lambda (x)
-	      (modify-syntax-entry x "_" table))
+	      (modify-syntax-entry x "." table))
 	    ;; Some of these are actually OK by default.
 	    "!#$%&*+./:<=>[EMAIL PROTECTED]|~")
     (unless (featurep 'mule)
       ;; Non-ASCII syntax should be OK, at least in Emacs.
       (mapcar (lambda (x)
-		(modify-syntax-entry x "_" table))
+		(modify-syntax-entry x "." table))
 	      (concat "¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿"
 		      "×÷"))
       (mapcar (lambda (x)

Reply via email to