That's not the file. That's shadow.
Emacs Lisp
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


"Nobody knows the Java code you committed is originally written in Scheme."

Shadow.el is a Shadow.vim for Emacs which supports you code with a wrapper transparently in a pluggable way.


See Shadow.vim for basic concept.


Place shadow.el into your directory in `load-path', and put below lines in your Emacs configuration file.

(require 'shadow)

If you want to open shadow file transparently, put below lines too.

(add-hook 'find-file-hooks 'shadow-on-find-file)
(add-hook 'shadow-find-unshadow-hook
          (lambda () (auto-revert-mode 1)))

By Enabling this setting, shadow.el opens automatically when you attempt to open and enables auto-revert-mode in the


While supporting Shadow.vim style simple command specification, Shadow.el also supports Emacs's file local variable style command specification.

Here are basic syntax of both styles.

Shadow.vim style command specification

Shadow.vim style command specification takes command from the first line while skipping first 3 characters.

## tac
#!/usr/bin/env ruby
p :a
p :b
p :c

Actually, you can customize how many characters to skip and which line to use by setting values to shadow-command-skip-count and shadow-command-line-number.

Emacs's file local variable style command specification

Since Shadow.vim style sometimes conflicts with Emacs's file local variable notation, Shadow.el arranges another choice; read command from file local variable itself.

When buffer local variable shadow-command is specified, this style is enabled.

#!/usr/bin/env ruby
# -*- mode: ruby; shadow-command: "tac"; -*-
p :a
p :b
p :c


Commit JavaScript files which was written in CoffeeScript.


## coffee -csb
f = (x) -> x + 1
print f 10
# Local Variables:
# mode: coffee
# End:


# -*- mode: coffee; shadow-command: "coffee -csb"; -*-
f = (x) -> x + 1
print f 10


var f;
f = function(x) {
  return x + 1;