Git Product home page Git Product logo

psl-mode's Introduction

ParselTongue mode (psl-mode)

It looks like this,

Automatic indentation is supported by a full language parser. If psl-program-name is set up then the current buffer can be executed by the interpreter with psl-run-buffer (C-c C-r).

Installation

Add this Git repository to your load path.

(add-to-list 'load-path "/path/to/repo")
(require 'psl-mode)

Automatic indentation benefits greatly from byte-compilation so it's a good idea to byte-compile the package using the provided Makefile. This will also generate an autoloads file, which would be required instead of psl-mode.

(require 'psl-mode-autoloads)

ParselTongue Compiler

Also included with psl-mode is a ParselTongue compiler which compiles a ParselTongue program into Elisp. To compile and evaluate a ParselTongue program inside of Emacs (no spawning other processes), use psl-eval-buffer (C-c C-e). This compiler can be accessed standalone with the provided psl script.

Compiled ParselTongue is about four orders of magnitude faster than the reference implementation interpreter. It can also parse much closer to the spec, giving more freedom to the programmer. However, there are a handful of semantic issues and one or two parser issues that remain in the compiler.

References

psl-mode's People

Contributors

skeeto avatar haxney avatar

Stargazers

Bill D. Strong avatar Christopher Malone avatar  avatar Claudia Doppioslash avatar  avatar

Watchers

 avatar Christopher Malone avatar James Cloos avatar  avatar

psl-mode's Issues

Depends on archived rdp

This package depends on rdp, one of the repositories that you recently archived. Should this be archived too?

Also, psl-mode, rdp, fakespace and mouse-slider-mode are all being distributed on Melpa. Should we stop doing that?

Please stop bundling third-party libraries

psl-mode is mirrored on the Emacsmirror, which is a large up-to-date collection of Emacs packages.

As the maintainer of the mirror I am trying to resolve feature conflicts that result from one package bundling libraries from another package. I suspect in most cases these libraries were included so that users would not have to find, download and install each dependency manually.

Unfortunately bundling also has negative side-effects: if the bundled libraries are also installed separately, then it is undefined which version actually gets loaded when the respective feature is required.

Initially that isn't a big problem but in many cases upstream changes are not included or only after a long delay. This can be very confusing for users who are not aware that some of the installed packages bundle libraries which are also installed separately. In other cases bugs are fixed in the bundled versions but the fixes are never submitted to upstream.

Also now that Emacs contains the package.el package manager there is a better way to not require users to manually deal with dependencies: add the package (and when that hasn't been done yet the dependencies) to the Melpa package repository. If make is required to install your make you might want to add it to the el-get (another popular package manager) package repository instead.

Alternatively if you want to keep bundling these libraries please move them to a directory only containing bundled libraries and add the file ".nosearch" to that directory. You can then load the library using something like this:

(or (require 'bundled nil t)
    (let ((load-path
           (cons (expand-file-name "fallback-libs"
                                   (or load-file-name buffer-file-name)
                                   load-path))))
      (require 'bundled)))

Of course if your version differs from the upstream version this might not be enough in which case you should make an effort to get your changes merged upstream.

psl-mode bundles at least the following libraries:

  • rdp

Best regards,
Jonas

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.