Summary: | dev-lang/scala: add Emacs support | ||
---|---|---|---|
Product: | Gentoo Linux | Reporter: | José Romildo Malaquias <jrmalaq> |
Component: | New packages | Assignee: | Java team <java> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | abachn, emacs, vim |
Priority: | High | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
URL: | http://www.scala-lang.org/node/354 | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Bug Depends on: | 202988 | ||
Bug Blocks: | 184166, 258417 | ||
Attachments: |
scala-2.7.3.ebuild
scala-mode-2.7.3.ebuild scala-syntax-2.7.3.ebuild Scala License scala-mode-2.7.3-fix-bytecompile.patch Proposed changes for scala-2.7.3.ebuild scala-2.7.3.ebuild scala-mode-9999.ebuild |
Description
José Romildo Malaquias
2008-12-12 10:30:32 UTC
Is there a released version of this package? The scala emacs mode is supplied together with the scala distribution. While working with the people behind scala I created some ebuild here. http://dev.abachn.net/~abachn/cgi-bin/darcsweb.cgi?r=abachn-portage;a=tree;f=/app-emacs/scala-mode (In reply to comment #2) > The scala emacs mode is supplied together with the scala distribution. That is dev-lang/scala? Because I had looked into scala-2.6.1 and didn't find anything Emacs related. Downloading the latest release and browsing to /scala-2.7.3.RC2/misc/scala-tool-support/emacs/ will give you the latest version of the scala emacs mode. In this case I suggest that we don't add a new package, but that Emacs support files should be installed by dev-lang/scala with USE=emacs. Reassigning to Java team, what is your opinion on this? Agreed. Will attempt to look at this this weekend. This could be a possible solution, but I think that the java team would like a source release and the problem in that downloading the source tar-ball does not give you the support-tools that includes the emacs support. So an eventual source ebuild would have to download the source and binary tar-ball!! But again, having to download the compile compiler just to get the emacs support is not pretty either! I think the java team should be asked about this, they may have some policies about this? Well, the user has to download the "binary" tarball anyway, even if we would make a separate package for the Emacs mode. But I agree, 15 MB download for 100 kB of actually used files is a bad ratio. May upstream could be convinced to include the needed files (which are sources, as a matter of fact) in the "source" tarball? While not an great solution, we could always extract the needed files into its own tarball and throw it up on the mirrors manually. But obviously they best solution is talking to upstream like ulm suggested above. Ok, I will try to talk to the person at EPFL who is doing the packaging of a release and see if he is willing to do some changes. 1. Solution would be to include the support-tools (including emacs) into the source package 2. Creating a new package that only contains the support-tools and can be downloaded on its own! Created attachment 181418 [details]
scala-2.7.3.ebuild
Updated version compared to the one in the tree
Created attachment 181419 [details] scala-mode-2.7.3.ebuild Emacs mode for Scala - the Scala ebuild has a dependency on this ebuild. More info: http://dev.abachn.net/~abachn/cgi-bin/darcsweb.cgi?r=abachn-portage;a=tree;f=/app-emacs/scala-mode Created attachment 181420 [details] scala-syntax-2.7.3.ebuild Vim-syntax ebuild - The scala ebuild has a dependency on this ebuild now More info: http://dev.abachn.net/~abachn/cgi-bin/darcsweb.cgi?r=abachn-portage;a=tree;f=/app-vim/scala-syntax Created attachment 181422 [details]
Scala License
The Scala License file
(In reply to comment #14) > Created an attachment (id=181422) [edit] > Scala License > > The Scala License file No need for an extra license file, this is standard "BSD". Created attachment 181449 [details, diff]
scala-mode-2.7.3-fix-bytecompile.patch
With Emacs 23, I get several byte-compile errors and warnings:
Wrote /var/tmp/portage/app-emacs/scala-mode-2.7.3/work/misc/scala-tool-support/emacs/scala-mode-auto.elc
In scala-regexp-opt-charset:
scala-mode-constants.el:56:34:Warning: `93' is a malformed function
scala-mode-constants.el:56:34:Warning: `94' is a malformed function
scala-mode-constants.el:56:34:Warning: `45' is a malformed function
In end of data:
scala-mode-constants.el:205:1:Warning: the following functions are not known
to be defined: case, otherwise, incf
Wrote /var/tmp/portage/app-emacs/scala-mode-2.7.3/work/misc/scala-tool-support/emacs/scala-mode-constants.elc
Wrote /var/tmp/portage/app-emacs/scala-mode-2.7.3/work/misc/scala-tool-support/emacs/scala-mode.elc
Wrote /var/tmp/portage/app-emacs/scala-mode-2.7.3/work/misc/scala-tool-support/emacs/scala-mode-feature.elc
In scala-mode-feature-electric-is-last-command-char-expandable-punct-p:
scala-mode-feature-electric.el:138:13:Warning: `last-command-char' is an
obsolete variable (as of Emacs at least 19.34); use `last-command-event'
instead.
In scala-mode-feature-electric-matching-char:
scala-mode-feature-electric.el:163:30:Warning: `last-command-char' is an
obsolete variable (as of Emacs at least 19.34); use `last-command-event'
instead.
Wrote /var/tmp/portage/app-emacs/scala-mode-2.7.3/work/misc/scala-tool-support/emacs/scala-mode-feature-electric.elc
Wrote /var/tmp/portage/app-emacs/scala-mode-2.7.3/work/misc/scala-tool-support/emacs/scala-mode-feature-speedbar.elc
In scala-mode-feature-tags-create:
scala-mode-feature-tags.el:85:4:Warning: `(yes-or-no-p (p) (if
scala-mode-feature:tags-ask-when-reload (y-or-n-p p) t))' is a malformed
function
In end of data:
scala-mode-feature-tags.el:176:1:Warning: the function `flet' is not known to
be defined.
Wrote /var/tmp/portage/app-emacs/scala-mode-2.7.3/work/misc/scala-tool-support/emacs/scala-mode-feature-tags.elc
In toplevel form:
scala-mode-fontlock.el:54:28:Error: Wrong type argument: sequencep, flag
In scala-in-string-p:
scala-mode-indent.el:97:13:Warning: reference to free variable `while'
scala-mode-indent.el:98:13:Warning: reference to free variable `count'
scala-mode-indent.el:98:46:Warning: reference to free variable `into'
scala-mode-indent.el:98:51:Warning: reference to free variable `quotes'
scala-mode-indent.el:99:13:Warning: reference to free variable `finally'
scala-mode-indent.el:99:21:Warning: reference to free variable `return'
In scala-indentation-from-following:
scala-mode-indent.el:140:19:Warning: reference to free variable
`scala-expr-middle-re'
scala-mode-indent.el:143:38:Warning: reference to free variable
`scala-expr-starter'
scala-mode-indent.el:147:34:Warning: reference to free variable
`scala-compound-expr-re'
In scala-indentation-from-preceding:
scala-mode-indent.el:161:49:Warning: reference to free variable
`scala-expr-start-re'
In end of data:
scala-mode-indent.el:223:1:Warning: the following functions are not known to
be defined: loop, oddp, scala-point-after, scala-forward-spaces,
scala-move-if, scala-backward-spaces, scala-looking-at-backward
Wrote /var/tmp/portage/app-emacs/scala-mode-2.7.3/work/misc/scala-tool-support/emacs/scala-mode-indent.elc
In scala-eval-definition:
scala-mode-inf.el:157:18:Warning: `next-line' used from Lisp code
That command is designed for interactive use only
scala-mode-inf.el:164:55:Warning: `next-line' used from Lisp code
That command is designed for interactive use only
Wrote /var/tmp/portage/app-emacs/scala-mode-2.7.3/work/misc/scala-tool-support/emacs/scala-mode-inf.elc
In toplevel form:
scala-mode-lib.el:53:13:Error: Symbol's function definition is void: case
In scala-forward-ident:
scala-mode-navigation.el:98:19:Warning: reference to free variable
`scala-ident-re'
In scala-backward-ident:
scala-mode-navigation.el:106:34:Warning: reference to free variable
`scala-ident-re'
In scala-forward-qual-ident:
scala-mode-navigation.el:114:19:Warning: reference to free variable
`scala-qual-ident-re'
In scala-backward-qual-ident:
scala-mode-navigation.el:122:34:Warning: reference to free variable
`scala-qual-ident-re'
In scala-forward-literal:
scala-mode-navigation.el:191:26:Warning: reference to free variable
`scala-literal-re'
Wrote /var/tmp/portage/app-emacs/scala-mode-2.7.3/work/misc/scala-tool-support/emacs/scala-mode-navigation.elc
In toplevel form:
scala-mode-ui.el:78:1:Warning: `[scala]' is a malformed function
scala-mode-ui.el:78:1:Warning: `[scala version]' is a malformed function
scala-mode-ui.el:78:1:Warning: `[scala report-bug]' is a malformed function
scala-mode-ui.el:78:1:Warning: `[scala customize]' is a malformed function
scala-mode-ui.el:78:1:Warning: `[scala browse-api]' is a malformed function
scala-mode-ui.el:78:1:Warning: `[scala browse-website]' is a malformed
function
scala-mode-ui.el:78:1:Warning: `[scala sep0]' is a malformed function
scala-mode-ui.el:78:1:Warning: `[scala feature]' is a malformed function
scala-mode-ui.el:78:1:Warning: `[scala feature apropos]' is a malformed
function
scala-mode-ui.el:78:1:Warning: `[scala feature search]' is a malformed
function
scala-mode-ui.el:78:1:Warning: `[scala feature find]' is a malformed function
scala-mode-ui.el:78:1:Warning: `[scala feature comp]' is a malformed function
scala-mode-ui.el:78:1:Warning: `[scala feature load]' is a malformed function
scala-mode-ui.el:78:1:Warning: `[scala feature create]' is a malformed
function
scala-mode-ui.el:78:1:Warning: `[scala feature sep1]' is a malformed function
scala-mode-ui.el:78:1:Warning: `[scala feature speedbar]' is a malformed
function
scala-mode-ui.el:78:1:Warning: `[scala feature sep0]' is a malformed function
scala-mode-ui.el:78:1:Warning: `[scala feature electric]' is a malformed
function
scala-mode-ui.el:78:1:Warning: `[scala sep1]' is a malformed function
scala-mode-ui.el:78:1:Warning: `[scala eval-buf]' is a malformed function
scala-mode-ui.el:78:1:Warning: `[scala eval-reg]' is a malformed function
scala-mode-ui.el:78:1:Warning: `[scala switch-interp]' is a malformed function
scala-mode-ui.el:78:1:Warning: `[scala load-file]' is a malformed function
scala-mode-ui.el:78:1:Warning: `[scala quit-interp]' is a malformed function
scala-mode-ui.el:78:1:Warning: `[scala run-interp]' is a malformed function
scala-mode-ui.el:78:29:Warning: reference to free variable
`scala-mode-menu-bar-map'
scala-mode-ui.el:127:1:Warning: `[menu-bar]' is a malformed function
scala-mode-ui.el:127:1:Warning: `[(control tab)]' is a malformed function
scala-mode-ui.el:127:1:Warning: `[backspace]' is a malformed function
scala-mode-ui.el:127:1:Warning: `"
"' is a malformed function
scala-mode-ui.el:127:1:Warning: `[f1]' is a malformed function
scala-mode-ui.el:127:1:Warning: `[(control c) (control l)]' is a malformed
function
scala-mode-ui.el:127:1:Warning: `[(control c) (control r)]' is a malformed
function
scala-mode-ui.el:127:1:Warning: `[(control c) (control b)]' is a malformed
function
scala-mode-ui.el:127:1:Warning: `[(control c) (control c)]' is a malformed
function
scala-mode-ui.el:127:1:Warning: `"}"' is a malformed function
scala-mode-ui.el:127:1:Warning: `(scala-mode-ui:key "t n")' is a malformed
function
scala-mode-ui.el:127:1:Warning: `(scala-mode-ui:key "t l")' is a malformed
function
scala-mode-ui.el:127:1:Warning: `(scala-mode-ui:key "t c")' is a malformed
function
scala-mode-ui.el:127:1:Warning: `(scala-mode-ui:key "t s")' is a malformed
function
scala-mode-ui.el:127:1:Warning: `(scala-mode-ui:key "t a")' is a malformed
function
In end of data:
scala-mode-ui.el:159:1:Warning: the function `scala-mode-lib:define-keys' is
not known to be defined.
Wrote /var/tmp/portage/app-emacs/scala-mode-2.7.3/work/misc/scala-tool-support/emacs/scala-mode-ui.elc
Wrote /var/tmp/portage/app-emacs/scala-mode-2.7.3/work/misc/scala-tool-support/emacs/scala-mode-variables.elc
This is due to missing dependencies. Attached patch fixes most of them.
Committed app-emacs/scala-mode to Emacs overlay: <http://overlays.gentoo.org/proj/emacs/browser/emacs-overlay/app-emacs/scala-mode> Following changes: - Fixed byte-compilation, see previous comment - Use SRC_URI arrow (and EAPI 2) to change the file extension to .zip at download time - unzip is not needed in RDEPEND - Added site-init file for Emacs - Added AUTHORS and FUTURE files to DOCS (In reply to comment #17) > Committed app-emacs/scala-mode to Emacs overlay: > <http://overlays.gentoo.org/proj/emacs/browser/emacs-overlay/app-emacs/scala-mode> > > Following changes: > - Fixed byte-compilation, see previous comment > - Use SRC_URI arrow (and EAPI 2) to change the file extension to .zip > at download time > - unzip is not needed in RDEPEND > - Added site-init file for Emacs > - Added AUTHORS and FUTURE files to DOCS > Cool, thank you very much! Is there also a vim herd in gentoo, like there is a java and emacs herd? Then they could look at the vim-syntax for scala ebuild. Should the patch you provided be included in upstream ? Created attachment 181459 [details, diff] Proposed changes for scala-2.7.3.ebuild (In reply to comment #18) > Cool, thank you very much! Can you please test the version that is in the Emacs overlay? If it is O.K., then we can move it to the main Portage tree soon. > Is there also a vim herd in gentoo, like there is a java and emacs herd? > Then they could look at the vim-syntax for scala ebuild. Yes, there is a vim team, <vim@gentoo.org>. But I would suggest that you open a new bug for vim support, since bugs with multiple topics (and teams) have a tendency to get messy. > Should the patch you provided be included in upstream ? Yes, of course. @Java team: Would it be possible to have dev-lang/scala PDEPEND on scala-mode (with USE=emacs), as in attached patch? (In reply to comment #19) > > @Java team: Would it be possible to have dev-lang/scala PDEPEND on scala-mode > (with USE=emacs), as in attached patch? > Sure. I would like to put everything in at the same time. So what steps are there to get everything into the tree? So far I will have to qa the scala ebuild, scala-mode needs to be tested. anything else? > So what steps are there to get everything into the tree? Depends on your definition of "everything". ;-) As far as app-emacs/scala-mode is concerned, the Emacs team will take care of it. Once we have moved it to the tree, only the modifications of attachment 181459 [details, diff] have to be done to the scala ebuild. Naturally, I cannot comment on vim support or on the other changes in the ebuild attached by Anders. Created attachment 181521 [details]
scala-2.7.3.ebuild
This includes the PDEPEND surgested by ulm
(In reply to comment #19) > Can you please test the version that is in the Emacs overlay? If it is O.K., > then we can move it to the main Portage tree soon. I have just tested it with emacs 22.3 and it works very nicely. > Yes, there is a vim team, <vim@gentoo.org>. But I would suggest that you open a > new bug for vim support, since bugs with multiple topics (and teams) have a > tendency to get messy. Done, The bug is #258417 > > Should the patch you provided be included in upstream ? > Yes, of course. I have just commited the changes in the patch (emacs overlay) to the scala repos. This will be part of the next scala release, but the patch is needed for the 2.7.3 ebuild. I will also add a emacs scala-mode svn ebuild > @Java team: Would it be possible to have dev-lang/scala PDEPEND on scala-mode > (with USE=emacs), as in attached patch? I just added a new dev-lang/scala ebuild that does this. Created attachment 181523 [details]
scala-mode-9999.ebuild
svn ebuild for the scala mode
@ali_bush: To answer you question from irc I have no idea why it has to bee there, but if its not! Then the gentoo launcher script fails! I also removed it first, but I had to add it later to make it work... see below: The launcher script for scala #!/bin/bash gjl_package=scala gjl_main="scala.tools.nsc.MainGenericRunner" gjl_java_args="-Xmx256M -Xms32M -Dscala.home=\"/usr/share/scala\" -Denv.classpath=\"${CLASSPATH}\" -Denv.emacs=\"${EMACS}\"" source /usr/share/java-config-2/launcher/launcher.bash Running this script gives -(/usr/bin)- ./scala Welcome to Scala version 2.7.3.r0-b20090209081501 (Java HotSpot(TM) Server VM, Java 1.6.0_12). Type in expressions to have them evaluated. Type :help for more information. scala> Exception in thread "main" scala.tools.nsc.FatalError: object scala not found. at scala.tools.nsc.symtab.Definitions$definitions$.getModuleOrClass(Definitions.scala:355) at scala.tools.nsc.symtab.Definitions$definitions$.getModule(Definitions.scala:326) at scala.tools.nsc.symtab.Definitions$definitions$.ScalaPackage(Definitions.scala:34) at scala.tools.nsc.symtab.Definitions$definitions$.ScalaPackageClass(Definitions.scala:35) at scala.tools.nsc.symtab.Definitions$definitions$.init(Definitions.scala:663) at scala.tools.nsc.Global$Run.<init>(Global.scala:476) at scala.tools.nsc.Interpreter.compileSources(Interpreter.scala:428) at scala.tools.nsc.Interpreter.compileString(Interpreter.scala:438) at scala.tools.nsc.InterpreterLoop$$anonfun$bindSettings$1.apply(InterpreterLoop.scala:82) at scala.tools.nsc.InterpreterLoop$$anonfun$bindSettings$1.apply(InterpreterLoop.scala:81) at scala.tools.nsc.Interpreter.beQuietDuring(Interpreter.scala:110) at scala.tools.nsc.InterpreterLoop.bindSettings(InterpreterLoop.scala:81) at scala.tools.nsc.InterpreterLoop.repl(InterpreterLoop.scala:131) at scala.tools.nsc.InterpreterLoop.main(InterpreterLoop.scala:298) at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:141) at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala) Adding back the -Xbootclasspath #!/bin/bash gjl_package=scala gjl_main="scala.tools.nsc.MainGenericRunner" gjl_java_args="-Xmx256M -Xms32M -Xbootclasspath/a:/usr/share/scala/lib/scala-library.jar -Dscala.home=\"/usr/share/scala\" -Denv.classpath=\"${CLASSPATH}\" -Denv.emacs=\"${EMACS}\"" source /usr/share/java-config-2/launcher/launcher.bash Everything works -(/usr/bin)- ./scala Welcome to Scala version 2.7.3.r0-b20090209081501 (Java HotSpot(TM) Server VM, Java 1.6.0_12). Type in expressions to have them evaluated. Type :help for more information. scala> That was my reason for having it there!! But the really strange thing is that running GJL_DEBUG=1 scala on the first launcher (without the bootclasspath) and copying the run command and running it manually actually works -(/usr/bin)- java -classpath /usr/share/jline/lib/jline.jar:/usr/share/scala/lib/scala-partest.jar:/usr/share/scala/lib/scala-swing.jar:/usr/share/scala/lib/scala-dbc.jar:/usr/share/scala/lib/scala-library.jar:/usr/share/scala/lib/scala-compiler.jar -Djava.library.path=/lib:/usr/lib -Xmx256M -Xms32M -Dscala.home="/usr/share/scala" -Denv.classpath="" -Denv.emacs="" scala.tools.nsc.MainGenericRunner Welcome to Scala version 2.7.3.r0-b20090209081501 (Java HotSpot(TM) Server VM, Java 1.6.0_12). Type in expressions to have them evaluated. Type :help for more information. scala> The GJL launcher must do something, but I have tried to see what! But can not find out what should be wrong.... scala-2.7.3-r1 in tree. scala-mode can go in whenever you like. (In reply to comment #26) > scala-2.7.3-r1 in tree. > > scala-mode can go in whenever you like. Committed to Portage tree. emacs support wihin tree. Closing. Thanks for all the work guys. (In reply to comment #28) > emacs support wihin tree. Closing. Thanks for all the work guys. > What abuot adding a PDEPEND with emacs and vim-syntax use flags to pull in the emacs and vim scala support? Or should this be a new bug report ? (In reply to comment #29) > What abuot adding a PDEPEND with emacs and vim-syntax use flags to pull in the > emacs and vim scala support? Alistair has just added it for Emacs: <http://sources.gentoo.org/viewcvs.py/gentoo-x86/dev-lang/scala/scala-2.7.3-r1.ebuild?r1=1.2&r2=1.3> The vim flag has to wait for the respective package being committed to the tree. |