Malabarba / names

A Namespace implementation for Emacs-Lisp
250 stars 19 forks source link

Faulty conversion of define-derived-mode produces unsable modes. #12

Closed mpontus closed 9 years ago

mpontus commented 9 years ago

Conversion of define-derived-mode form produces different result than same form outside of namespaces. This form throws Void Variable error because of its parent parameter being unintentionally interpreted as a variable.

Here's the fragment of expansion of original form:

(cl-prettyexpand
 '(define-derived-mode bar- special-mode "baz"))
     ....
       (set-syntax-table bar--syntax-table)
       (setq local-abbrev-table bar--abbrev-table)))
   (run-mode-hooks 'bar--hook)))))

And here's invalid one:

(cl-prettyexpand
 '(define-namespace foo-
(define-derived-mode bar- special-mode "baz")))
    ....
         (set-syntax-table foo-bar--syntax-table)
         (setq local-abbrev-table foo-bar--abbrev-table)
         special-mode
         "baz"))
     (run-mode-hooks 'foo-bar--hook))))))
Malabarba commented 9 years ago

Fixed. Thanks for reporting.