Please, add an ebuild for scala-mode to portage. This is an Emacs mode for Scala programs. Scala is a general purpose programming language designed to express common programming patterns in a concise, elegant, and type-safe way. It smoothly integrates features of object-oriented and functional languages. It is also fully interoperable with Java. The mode is currently very basic, and offers: *** Basic syntax highlighting. *** Primitive automatic indentation. *** Support for interaction with the Scala interpreter. *** Minor mode for inserting ([{" in pairs. (scala-mode-electric) *** Tags support in Scala mode for creating, loading and completion using tags files. The current implementation works with exuberant ctags (http://ctags.sf.net) Please see the contrib/ directory for more information. *** Simple interaction with speedbar with support for scala files. Using the speedbar it is possible to get an overview of the scala files and using the emacs tags support, to get an overview of the tags in a scala file. For this to work please install CEDET (http://cedet.sf.net) *** The Scala mode has been cleaned up to work better with yasnippet from (http://code.google.com/p/yasnippet/). This replaces the old template stuff and the work on scaladoc. Reproducible: Always Steps to Reproduce:
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.