about summary refs log tree commit diff stats
path: root/html/immutable-error.mu.html
blob: 0a757e213cb6b603f73cd1f0a2aa7c4c5d8631b5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Mu - immutable-error.mu</title>
<meta name="Generator" content="Vim/7.4">
<meta name="plugin-version" content="vim7.4_v2">
<meta name="syntax" content="none">
<meta name="settings" content="use_css,pre_wrap,no_foldcolumn,expand_tabs,prevent_copy=">
<meta name="colorscheme" content="minimal">
<style type="text/css">
<!--
pre { white-space: pre-wrap; font-family: monospace; color: #eeeeee; background-color: #080808; }
body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color: #080808; }
* { font-size: 12pt; font-size: 1em; }
.muRecipe { color: #ff8700; }
.Comment { color: #9090ff; }
.Constant { color: #00a0a0; }
.Special { color: #c00000; }
-->
</style>

<script type='text/javascript'>
<!--

-->
</script>
</head>
<body>
<pre id='vimCodeElement'>
<span class="Comment"># compare mutable.mu</span>

<span class="muRecipe">def</span> main [
  <span class="Constant">local-scope</span>
  x:&amp;:num<span class="Special"> &lt;- </span>new <span class="Constant">number:type</span>
  foo x
]

<span class="muRecipe">def</span> foo x:&amp;:num [
  <span class="Constant">local-scope</span>
  <span class="Constant">load-ingredients</span>
  *x<span class="Special"> &lt;- </span>copy <span class="Constant">34</span>  <span class="Comment"># will cause an error because x is immutable in this function</span>
]
</pre>
</body>
</html>
<!-- vim: set foldmethod=manual : -->
"n">c, 'evince', 'zathura', 'apvlv') if f.extension in ('xml', ): return self.either(c, 'editor') if f.extension in ('html', 'htm', 'xhtml'): return self.either(c, 'firefox', 'opera', 'elinks') if f.extension in ('swf', ): return self.either(c, 'firefox', 'opera') if f.extension == 'nes': return self.either(c, 'fceux') if f.extension in ('swc', 'smc'): return self.either(c, 'zsnes') if f.mimetype is not None: if INTERPRETED_LANGUAGES.match(f.mimetype): return self.either(c, 'edit_or_run') if f.container: return self.either(c, 'aunpack', 'file_roller') if f.video or f.audio: if f.video: c.flags += 'd' return self.either(c, 'mplayer', 'totem') if f.image: return self.either(c, 'feh', 'eog', 'mirage') if f.document or f.filetype.startswith('text'): return self.either(c, 'editor') # ----------------------------------------- application definitions # Note: Trivial applications are defined at the bottom def app_pager(self, c): return tup('less', *c) def app_editor(self, c): try: default_editor = os.environ['EDITOR'] except KeyError: pass else: parts = default_editor.split() exe_name = os.path.basename(parts[0]) if exe_name in get_executables(): return tuple(parts) + tuple(c) return self.either(c, 'vim', 'emacs', 'nano') @depends_on(app_editor, Applications.app_self) def app_edit_or_run(self, c): if c.mode is 1: return self.app_self(c) return self.app_editor(c) @depends_on('mplayer') def app_mplayer(self, c): if c.mode is 1: return tup('mplayer', '-fs', *c) elif c.mode is 2: args = "mplayer -fs -sid 0 -vfm ffmpeg -lavdopts " \ "lowres=1:fast:skiploopfilter=all:threads=8".split() args.extend(c) return tup(*args) elif c.mode is 3: return tup('mplayer', '-mixer', 'software', *c) else: return tup('mplayer', *c) @depends_on('feh') def app_feh(self, c): arg = {1: '--bg-scale', 2: '--bg-tile', 3: '--bg-center'} c.flags += 'd' if c.mode in arg: return tup('feh', arg[c.mode], c.file.path) if c.mode is 11: if len(c.files) > 1: return tup('feh', *c) else: from collections import deque # Open all image files in feh directory = self.fm.env.get_directory(c.file.dirname) images = [f.path for f in directory.files if f.image] position = images.index(c.file.path) deq = deque(images) deq.rotate(-position) return tup('feh', *deq) return tup('feh', *c) @depends_on('aunpack') def app_aunpack(self, c): if c.mode is 0: c.flags += 'p' return tup('aunpack', '-l', c.file.path) return tup('aunpack', c.file.path) @depends_on('file-roller') def app_file_roller(self, c): c.flags += 'd' return tup('file-roller', c.file.path) @depends_on('make') def app_make(self, c): if c.mode is 0: return tup("make") if c.mode is 1: return tup("make", "install") if c.mode is 2: return tup("make", "clear") @depends_on('java') def app_java(self, c): def strip_extensions(file): if '.' in file.basename: return file.path[:file.path.index('.')] return file.path files_without_extensions = map(strip_extensions, c.files) return tup("java", files_without_extensions) @depends_on('totem') def app_totem(self, c): if c.mode is 0: return tup("totem", *c) if c.mode is 1: return tup("totem", "--fullscreen", *c) # Often a programs invocation is trivial. For example: # vim test.py readme.txt [...] # This could be implemented like: # @depends_on("vim") # def app_vim(self, c): # return tup("vim", *c.files) # Instead of creating such a generic function for each program, just add # its name here and it will be automatically done for you. CustomApplications.generic('vim', 'fceux', 'elinks', 'wine', 'zsnes', 'javac') # By setting flags='d', this programs will not block ranger's terminal: CustomApplications.generic('opera', 'firefox', 'apvlv', 'evince', 'zathura', 'gimp', 'mirage', 'eog', flags='d') # What filetypes are recognized as scripts for interpreted languages? # This regular expression is used in app_default() INTERPRETED_LANGUAGES = re.compile(r''' ^(text|application)/x-( haskell|perl|python|ruby|sh )$''', re.VERBOSE)