xiki 0.5.0a

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (252) hide show
  1. data/Gemfile +11 -0
  2. data/LICENSE +22 -0
  3. data/README.markdown +83 -0
  4. data/Rakefile +8 -0
  5. data/bin/xiki +46 -0
  6. data/etc/command/xiki_command.rb +203 -0
  7. data/etc/command/xiki_process.rb +52 -0
  8. data/etc/command/xiki_wrapper +2 -0
  9. data/etc/js/menu1.js +55 -0
  10. data/etc/js/xiki.js +259 -0
  11. data/etc/logo.png +0 -0
  12. data/etc/presentations/bootstrap.deck +5 -0
  13. data/etc/presentations/databases.deck +41 -0
  14. data/etc/presentations/diffs.deck +23 -0
  15. data/etc/presentations/documentation.deck +14 -0
  16. data/etc/presentations/effects.deck +5 -0
  17. data/etc/presentations/face.deck +297 -0
  18. data/etc/presentations/files.deck +79 -0
  19. data/etc/presentations/icons.deck +22 -0
  20. data/etc/presentations/images.deck +24 -0
  21. data/etc/presentations/key_shortcuts.deck +16 -0
  22. data/etc/presentations/macros.deck +18 -0
  23. data/etc/presentations/menu_classes.deck +44 -0
  24. data/etc/presentations/menu_directories.deck +30 -0
  25. data/etc/presentations/notes.deck +19 -0
  26. data/etc/presentations/other_languages.deck +55 -0
  27. data/etc/presentations/other_wiki_syntaxes.deck +4 -0
  28. data/etc/presentations/piano.deck +5 -0
  29. data/etc/presentations/potential/diffs.deck +38 -0
  30. data/etc/presentations/potential/evolution.deck +18 -0
  31. data/etc/presentations/potential/intro.deck +711 -0
  32. data/etc/presentations/potential/intro1.deck +711 -0
  33. data/etc/presentations/potential/intro2.deck +97 -0
  34. data/etc/presentations/potential/make_mysql_menu.deck +36 -0
  35. data/etc/presentations/potential/ruby_development.deck +17 -0
  36. data/etc/presentations/potential/ui_prototyping.deck +50 -0
  37. data/etc/presentations/potential/web_dev.deck +4 -0
  38. data/etc/presentations/potential/web_development.deck +10 -0
  39. data/etc/presentations/potential/wiki.deck +45 -0
  40. data/etc/presentations/presentations.deck +24 -0
  41. data/etc/presentations/rails_development.deck +29 -0
  42. data/etc/presentations/search_key_shortcuts.deck +37 -0
  43. data/etc/presentations/simplest_possible_ui.deck +37 -0
  44. data/etc/presentations/svg.deck +5 -0
  45. data/etc/presentations/testing.deck +28 -0
  46. data/etc/presentations/the_end.deck +13 -0
  47. data/etc/presentations/type_something_and_double_click.deck +57 -0
  48. data/etc/presentations/type_the_acronym.deck +144 -0
  49. data/etc/presentations/web_browser.deck +56 -0
  50. data/etc/presentations/xiki_command.deck +20 -0
  51. data/etc/presentations/xiki_url.deck +14 -0
  52. data/etc/shark.icns +0 -0
  53. data/etc/shark_script.icns +0 -0
  54. data/etc/snippets/html.notes +7 -0
  55. data/etc/snippets/notes.notes +20 -0
  56. data/etc/snippets/rb.notes +38 -0
  57. data/etc/templates/menu_template.menu +2 -0
  58. data/etc/templates/menu_template.rb +8 -0
  59. data/etc/templates/template.rb +5 -0
  60. data/etc/themes/Dark_Metal.notes +28 -0
  61. data/etc/themes/Orange_Path.notes +15 -0
  62. data/etc/themes/Shiny_Blue.notes +27 -0
  63. data/etc/themes/Shiny_Green.notes +27 -0
  64. data/etc/wrappers/wrapper.js +17 -0
  65. data/etc/wrappers/wrapper.py +20 -0
  66. data/etc/wrappers/wrapper.rb +25 -0
  67. data/lib/block.rb +72 -0
  68. data/lib/bookmarks.rb +352 -0
  69. data/lib/buffers.rb +170 -0
  70. data/lib/clipboard.rb +333 -0
  71. data/lib/code.rb +860 -0
  72. data/lib/code_tree.rb +476 -0
  73. data/lib/color.rb +274 -0
  74. data/lib/console.rb +557 -0
  75. data/lib/control_lock.rb +9 -0
  76. data/lib/control_tab.rb +176 -0
  77. data/lib/core_ext.rb +31 -0
  78. data/lib/cursor.rb +111 -0
  79. data/lib/deletes.rb +65 -0
  80. data/lib/diff_log.rb +297 -0
  81. data/lib/effects.rb +145 -0
  82. data/lib/environment.rb +5 -0
  83. data/lib/file_tree.rb +1875 -0
  84. data/lib/files.rb +334 -0
  85. data/lib/hide.rb +259 -0
  86. data/lib/history.rb +286 -0
  87. data/lib/image.rb +51 -0
  88. data/lib/incrementer.rb +15 -0
  89. data/lib/insert.rb +7 -0
  90. data/lib/irc.rb +22 -0
  91. data/lib/key_bindings.rb +658 -0
  92. data/lib/keys.rb +754 -0
  93. data/lib/launcher.rb +1351 -0
  94. data/lib/line.rb +429 -0
  95. data/lib/links.rb +6 -0
  96. data/lib/location.rb +175 -0
  97. data/lib/macros.rb +48 -0
  98. data/lib/man.rb +19 -0
  99. data/lib/menu.rb +708 -0
  100. data/lib/merb.rb +259 -0
  101. data/lib/message.rb +5 -0
  102. data/lib/meths.rb +56 -0
  103. data/lib/mode.rb +34 -0
  104. data/lib/move.rb +248 -0
  105. data/lib/notes.rb +1000 -0
  106. data/lib/numbers.rb +45 -0
  107. data/lib/ol.rb +203 -0
  108. data/lib/ol_helper.rb +44 -0
  109. data/lib/overlay.rb +167 -0
  110. data/lib/pause_means_space.rb +68 -0
  111. data/lib/php.rb +22 -0
  112. data/lib/projects.rb +21 -0
  113. data/lib/relinquish_exception.rb +2 -0
  114. data/lib/remote.rb +206 -0
  115. data/lib/requirer.rb +46 -0
  116. data/lib/rest_tree.rb +108 -0
  117. data/lib/ruby.rb +57 -0
  118. data/lib/ruby_console.rb +165 -0
  119. data/lib/search.rb +1572 -0
  120. data/lib/search_term.rb +40 -0
  121. data/lib/snippet.rb +68 -0
  122. data/lib/specs.rb +229 -0
  123. data/lib/styles.rb +274 -0
  124. data/lib/svn.rb +682 -0
  125. data/lib/text_util.rb +110 -0
  126. data/lib/tree.rb +1871 -0
  127. data/lib/tree_cursor.rb +87 -0
  128. data/lib/trouble_shooting.rb +27 -0
  129. data/lib/url_tree.rb +11 -0
  130. data/lib/view.rb +1474 -0
  131. data/lib/window.rb +133 -0
  132. data/lib/xiki.rb +404 -0
  133. data/menus/accounts.rb +5 -0
  134. data/menus/address_book.rb +21 -0
  135. data/menus/agenda.rb +28 -0
  136. data/menus/all.rb +5 -0
  137. data/menus/amazon.rb +16 -0
  138. data/menus/app.rb +16 -0
  139. data/menus/applescript.rb +46 -0
  140. data/menus/as.rb +15 -0
  141. data/menus/bookmarklet.rb +63 -0
  142. data/menus/bootstrap.rb +568 -0
  143. data/menus/browse.rb +13 -0
  144. data/menus/browser.rb +78 -0
  145. data/menus/cassandra_db.rb +36 -0
  146. data/menus/chmod.rb +27 -0
  147. data/menus/classes.rb +5 -0
  148. data/menus/coffee_script.rb +35 -0
  149. data/menus/computer.rb +24 -0
  150. data/menus/contacts.rb +5 -0
  151. data/menus/cookies.rb +25 -0
  152. data/menus/couch.rb +184 -0
  153. data/menus/crop.rb +45 -0
  154. data/menus/css.rb +55 -0
  155. data/menus/current.rb +5 -0
  156. data/menus/db.rb +12 -0
  157. data/menus/deck.rb +219 -0
  158. data/menus/dictionary.rb +9 -0
  159. data/menus/dir.rb +8 -0
  160. data/menus/disk.rb +5 -0
  161. data/menus/do.rb +13 -0
  162. data/menus/docs.rb +58 -0
  163. data/menus/dotsies.rb +107 -0
  164. data/menus/edited.rb +18 -0
  165. data/menus/emacs.rb +17 -0
  166. data/menus/enter.rb +13 -0
  167. data/menus/eval.rb +17 -0
  168. data/menus/executable.rb +16 -0
  169. data/menus/filter.rb +46 -0
  170. data/menus/firefox.rb +607 -0
  171. data/menus/foo.rb +30 -0
  172. data/menus/french.rb +7 -0
  173. data/menus/git.rb +185 -0
  174. data/menus/gito.rb +785 -0
  175. data/menus/google.rb +35 -0
  176. data/menus/google_images.rb +11 -0
  177. data/menus/google_patents.rb +10 -0
  178. data/menus/gutenberg.rb +13 -0
  179. data/menus/head.rb +10 -0
  180. data/menus/headings.rb +39 -0
  181. data/menus/html.rb +61 -0
  182. data/menus/icon.rb +40 -0
  183. data/menus/images.menu +2 -0
  184. data/menus/img.rb +15 -0
  185. data/menus/info.rb +9 -0
  186. data/menus/ip.rb +10 -0
  187. data/menus/iterm.rb +36 -0
  188. data/menus/itunes.rb +78 -0
  189. data/menus/javascript.rb +74 -0
  190. data/menus/layout.rb +18 -0
  191. data/menus/local_storage.rb +67 -0
  192. data/menus/ls.rb +19 -0
  193. data/menus/mac.rb +87 -0
  194. data/menus/maps.rb +18 -0
  195. data/menus/matches.rb +18 -0
  196. data/menus/memcache.rb +117 -0
  197. data/menus/mkdir.rb +23 -0
  198. data/menus/mongo.rb +83 -0
  199. data/menus/mysql.rb +294 -0
  200. data/menus/node.rb +88 -0
  201. data/menus/open.rb +19 -0
  202. data/menus/outline.rb +24 -0
  203. data/menus/piano.rb +746 -0
  204. data/menus/postgres.rb +34 -0
  205. data/menus/pre.rb +5 -0
  206. data/menus/python.rb +39 -0
  207. data/menus/rails.rb +160 -0
  208. data/menus/rake.rb +12 -0
  209. data/menus/redmine.rb +168 -0
  210. data/menus/riak_tree.rb +204 -0
  211. data/menus/rss.rb +15 -0
  212. data/menus/safari.rb +11 -0
  213. data/menus/sass.rb +15 -0
  214. data/menus/say.rb +6 -0
  215. data/menus/scale.rb +49 -0
  216. data/menus/serve.rb +78 -0
  217. data/menus/shuffle.rb +24 -0
  218. data/menus/spanish.rb +7 -0
  219. data/menus/standalone.rb +57 -0
  220. data/menus/tail.rb +41 -0
  221. data/menus/technologies.rb +19 -0
  222. data/menus/themes.rb +32 -0
  223. data/menus/thesaurus.rb +13 -0
  224. data/menus/to.rb +24 -0
  225. data/menus/twitter.rb +57 -0
  226. data/menus/wikipedia.rb +34 -0
  227. data/menus/words.rb +11 -0
  228. data/spec/code_tree_spec.rb +59 -0
  229. data/spec/diff_log_spec.rb +40 -0
  230. data/spec/file_tree_spec.rb +102 -0
  231. data/spec/keys_spec.rb +24 -0
  232. data/spec/line_spec.rb +68 -0
  233. data/spec/menu_spec.rb +50 -0
  234. data/spec/ol_spec.rb +98 -0
  235. data/spec/remote_spec.rb +43 -0
  236. data/spec/search_spec.rb +162 -0
  237. data/spec/text_util_spec.rb +119 -0
  238. data/spec/tree_cursor_spec.rb +91 -0
  239. data/spec/tree_spec.rb +955 -0
  240. data/tests/console_test.rb +11 -0
  241. data/tests/couch_db_test.rb +12 -0
  242. data/tests/diff_log_test.rb +43 -0
  243. data/tests/el_mixin.rb +16 -0
  244. data/tests/git_test.rb +95 -0
  245. data/tests/keys_test.rb +19 -0
  246. data/tests/line_test.rb +38 -0
  247. data/tests/merb_test.rb +11 -0
  248. data/tests/redmine_test.rb +50 -0
  249. data/tests/remote_test.rb +31 -0
  250. data/tests/rest_tree_test.rb +70 -0
  251. data/xiki.gemspec +37 -0
  252. metadata +332 -0
@@ -0,0 +1,55 @@
1
+ class Css
2
+ def self.menu_before *args
3
+ return if args[0] != "list"
4
+
5
+ args.shift
6
+
7
+ # If just "css/list/", list all
8
+
9
+ if args.blank?
10
+ js = %`
11
+ var result="";
12
+ $('*[class]').each(function(i, e){
13
+ var id = $(e).attr('class');
14
+ result += "+ "+id+"/\\n";
15
+ })
16
+ result;
17
+ `.unindent
18
+
19
+ result = Firefox.run js
20
+ return "> No class attributes found!" if result == '""'
21
+ return result
22
+ end
23
+
24
+ # Add "." to beginning of first (it was removed due to it meaning a method call)
25
+ args.first.sub! /^/, '.'
26
+
27
+ Dom.dom args
28
+ end
29
+
30
+ def self.menu *args
31
+
32
+ if args.empty?
33
+ return "
34
+ + list/
35
+ | /* Or type some css here (to run in the browser) */
36
+ | h1 { color: red; }
37
+ | body {
38
+ | font-family: arial;
39
+ | font-size: 12px;
40
+ | color: #000;
41
+ | background-color: #fff;
42
+ | }
43
+ "
44
+ end
45
+
46
+ txt = ENV['txt'].dup
47
+
48
+ txt.gsub!("\n", '\n')
49
+ txt.gsub!('"', '\"')
50
+ code = "$('head').append(\"<style>#{txt}</style>\")"
51
+ Firefox.run code #, :jquery=>1
52
+
53
+ nil
54
+ end
55
+ end
@@ -0,0 +1,5 @@
1
+ class Current
2
+ def self.menu *name
3
+ Buffers.current *name
4
+ end
5
+ end
@@ -0,0 +1,12 @@
1
+ class Db
2
+ def self.create db
3
+ Couch.create db
4
+ end
5
+
6
+ def self.menu db=nil, *args
7
+ # If no args, output list
8
+ return Couch.databases if db.nil?
9
+
10
+ return Couch.docs db, *args
11
+ end
12
+ end
@@ -0,0 +1,219 @@
1
+ require "mode"
2
+
3
+ # Makes text in .deck files huge, and makes left and right arrow keys treat
4
+ # headings as slides.
5
+ class Deck
6
+
7
+ def self.menu
8
+ %`
9
+ - .enable arrow keys/
10
+ - docs/
11
+ > Summary
12
+ | Create a file with a ".deck" extension to create a lightweight
13
+ | presentation. The left and right arrow keys will go back and forth
14
+ | between the "slides".
15
+ |
16
+ | Make .deck files just like you make .notes files, with sections divided
17
+ | by headings ("> foo" lines). The sections behave like slides. Only one
18
+ | section is shown at a time.
19
+ |
20
+ > Keys
21
+ | Use these keys to go back and forth between slides:
22
+ | - right+arrow+key: show next slide (hiding everything else)
23
+ | - left+arrow+key: show next slide
24
+ | - custom+reminder: jump to corresponding heading at end
25
+ |
26
+ > Hints
27
+ | To create and show hints that correspond to a section, create a section
28
+ | near the bottom of the file with the same heading but starting with
29
+ | ">>" instead of ">"
30
+ |
31
+ | Then, type open+related+heading to jump back and forth.
32
+ |
33
+ > To enable the deck keys in a .notes file
34
+ - type: do+keys+deck
35
+ - or use) @deck/enable arrow keys/
36
+ |
37
+ `
38
+ end
39
+
40
+ @@size = 10
41
+
42
+ def self.enable_arrow_keys options={}
43
+
44
+ # If in an actual file, just enable for it
45
+ if View.file
46
+ $el.use_local_map $el.elvar.deck_mode_map
47
+ return View.flash "- Enabling arrow keys"
48
+ end
49
+
50
+ last = View.files.find{|o| o =~ /\.notes$/}
51
+ basename = File.basename(last)
52
+ View.open last
53
+
54
+ View.flash "- Enabling arrow keys!", :times=>4 unless options[:silent]
55
+ $el.use_local_map $el.elvar.deck_mode_map
56
+ end
57
+
58
+ def self.keys # mode=:deck_mode_map
59
+ return if ! $el
60
+
61
+ $el.elvar.deck_mode_map = $el.make_sparse_keymap unless $el.boundp :deck_mode_map
62
+ $el.set_keymap_parent $el.elvar.deck_mode_map, $el.elvar.notes_mode_map
63
+
64
+ Keys.custom_reminder(:deck_mode_map) { Deck.open_related_heading }
65
+ Keys.layout_uncover(:deck_mode_map) {
66
+ View.status nil, :nth=>3
67
+ Hide.reveal
68
+ }
69
+
70
+ $el.define_key(:deck_mode_map, $el.kbd("<right>")) { Deck.right_arrow }
71
+ $el.define_key(:deck_mode_map, $el.kbd("<left>")) { Deck.left_arrow }
72
+
73
+ # TODO Get this to not add item at top of "Keys > Do" menu bar menu - how?!
74
+ Keys.do_keys_deck { Deck.enable_arrow_keys }
75
+ end
76
+
77
+ def self.open_related_heading
78
+
79
+ orig = Location.new
80
+
81
+ was_hidden = View.hidden?
82
+
83
+ Hide.reveal if was_hidden
84
+
85
+ left, after_header, right = View.block_positions "^>"
86
+ heading = View.txt left, after_header-1
87
+
88
+ delimeter = heading[/^>+/]
89
+
90
+ delimeter.size > 1 ?
91
+ heading.sub!(/./, '') :
92
+ heading.sub!(/^/, '>')
93
+
94
+ View.to_highest
95
+ found = Search.forward "^#{$el.regexp_quote heading}$"
96
+
97
+ if ! found
98
+ orig.go
99
+ return View.flash "- No related heading found"
100
+ end
101
+
102
+ Move.to_axis
103
+ View.recenter_top
104
+ Notes.narrow_block(:delimiter=>delimeter == ">" ? ">>" : ">") if was_hidden
105
+
106
+ end
107
+
108
+ def self.left_arrow
109
+
110
+ Notes.narrow_block if ! View.hidden? # If not hidden, hide first, for simplicity
111
+
112
+ column = View.column
113
+ number = View.visible_line_number
114
+
115
+ View.visible_line_number = 1
116
+
117
+ self.show_all
118
+
119
+ Notes.to_block(:up)
120
+
121
+ result = self.set_bars
122
+
123
+ left, ignore, right = View.block_positions
124
+ lines_in_block = Line.number(right) - Line.number(left)
125
+ line = Line.number
126
+
127
+ number = lines_in_block if number > lines_in_block
128
+
129
+ View.line = line + number - 1
130
+ View.column = column
131
+
132
+ Notes.narrow_block
133
+
134
+ Effects.glow :fade_in=>1, :what=>:block if result[0] == 0
135
+ end
136
+
137
+ def self.right_arrow
138
+
139
+ Notes.narrow_block if ! View.hidden? # If not hidden, hide first, for simplicity
140
+
141
+ column = View.column
142
+
143
+ number = View.visible_line_number
144
+ Move.backward if View.bottom == View.cursor # If at bottom of visible, back up one
145
+
146
+ self.show_all
147
+
148
+ Notes.to_block
149
+
150
+ result = self.set_bars
151
+
152
+ Notes.narrow_block
153
+
154
+ View.visible_line_number = number
155
+
156
+ View.column = column
157
+
158
+ Effects.glow :fade_in=>1, :what=>:block if result[2]
159
+ end
160
+
161
+ # Sets little bars at bottom of window (mode line)
162
+ def self.set_bars
163
+
164
+ first_in_block = false
165
+
166
+ my_line_number = View.line
167
+
168
+ top_bar, bottom_bar = 0, 0 # remaining in group, remaining total
169
+
170
+ header, header_match_count, my_header = nil, 0, nil
171
+ View.txt.split("\n").each_with_index do |line, i|
172
+ i = i + 1
173
+ is_header = line =~ /^> /
174
+ if is_header
175
+
176
+ if header == line # If same header as last
177
+ header_match_count += 1
178
+ else
179
+ header_match_count = 1
180
+ header = line
181
+ end
182
+
183
+ if my_header # If we found it, start accumulating
184
+ top_bar += 1 if header == my_header
185
+ bottom_bar += 1
186
+ end
187
+ end
188
+
189
+ # If line matched, remember it's this header
190
+ if i == my_line_number # && ! my_line_number
191
+ my_header = header
192
+ first_in_block = true if header_match_count == 1
193
+ top_bar, bottom_bar = 0, 0 # remaining in group, remaining total
194
+ end
195
+
196
+ end
197
+
198
+ View.status :bars=>[top_bar, bottom_bar]
199
+
200
+ [top_bar, bottom_bar, first_in_block]
201
+ end
202
+
203
+
204
+ def self.init
205
+ self.keys
206
+ # Make deck mode happen for .deck files
207
+ Mode.define(:deck, ".deck") do
208
+ Notes.mode
209
+ $el.use_local_map $el.elvar.deck_mode_map # Adds arrow keys onto notes map
210
+ end
211
+ end
212
+
213
+ def self.show_all
214
+ $el.widen
215
+ Hide.show
216
+ end
217
+
218
+ end
219
+ Deck.init # Define mode
@@ -0,0 +1,9 @@
1
+ class Dictionary
2
+ def self.menu word=nil
3
+ return View.prompt('Type a word to look up') if word.nil?
4
+
5
+ word = word.sub(/^\s+/, '').gsub('"', '%22').gsub(':', '%3A').gsub(' ', '%20')
6
+ $el.browse_url "http://dictionary.reference.com/browse/#{word}"
7
+ nil
8
+ end
9
+ end
@@ -0,0 +1,8 @@
1
+ class Dir
2
+ def self.menu
3
+ "
4
+ > See
5
+ - @mkdir/
6
+ "
7
+ end
8
+ end
@@ -0,0 +1,5 @@
1
+ class Disk
2
+ def self.menu
3
+ Tree.quote `df -h`
4
+ end
5
+ end
@@ -0,0 +1,13 @@
1
+ class Do
2
+ def self.menu
3
+ %`
4
+ > Summary
5
+ | Keys shortcuts that start with "to+" (ctrl-t) such as to+end.
6
+ |
7
+ - frequent/
8
+ | do+tree: view an expanded tree of a directory
9
+ - others/
10
+ | TODO
11
+ `
12
+ end
13
+ end
@@ -0,0 +1,58 @@
1
+ class Docs
2
+ def self.menu
3
+ %`
4
+ - Introduction/
5
+ | Most of the Xiki documentation is spread out among other menus, under
6
+ | their respective 'docs' menus.
7
+ |
8
+ > Here are some to check out first
9
+ @keys/docs/
10
+ @menu/docs/
11
+ @files/docs/
12
+ @view/docs/
13
+ |
14
+ - Try typing stuff/
15
+ > Try just typing a menu
16
+ | Think of a menu name that might exist and sounds likely to solve your
17
+ | problem. For example, if you want to do something with images, try the
18
+ | 'images' menu. Type it on a blank line and double-click, or use
19
+ | open+menu (type Ctrl-O, Ctrl-M).
20
+ |
21
+ | Help us improve the docs, and contribute back to the Xiki project. If
22
+ | the menu doesn't exist, create it! If it exists, but could be improved,
23
+ | edit it! Many menus exist just to direct you to other menus. It takes
24
+ | only seconds to create them.
25
+ |
26
+ @menu/docs/how_to_create/
27
+ |
28
+ - Other places to look/
29
+ - You may want to check out__
30
+ __
31
+ - for developers
32
+ - code dirs/__
33
+ > All Commands
34
+ @all/
35
+ |
36
+ - FAQ/
37
+ > What is Xiki?
38
+ | Xiki is an environment that can be used in several ways:
39
+ | - Shell terminal on steroids
40
+ | - Development environment for coding rails or node.js apps, etc.
41
+ | - Framework for making lightweight user interfaces
42
+ |
43
+ > What does Xiki stand for?
44
+ | XIKI is short for eXecutable wIKI
45
+ |
46
+ > What are Xiki's main dependencies?
47
+ | - Xiki runs inside of Emacs
48
+ | - and takes advantage of many powerful Emacs features
49
+ | - but you don't need to know Emacs to use Xiki
50
+ | - Xiki is implemented mostly in ruby
51
+ | - but can use other languages like python, javascript, and coffeescript
52
+ |
53
+ > What's the best way to figure out how to do something?
54
+ - @docs/Try typing stuff/
55
+ |
56
+ `
57
+ end
58
+ end
@@ -0,0 +1,107 @@
1
+ class Dotsies
2
+ def self.menu
3
+ %`
4
+ |~this is an example
5
+ - .apply/
6
+ - .one view/
7
+ - .all views/
8
+ - .web browser/
9
+ - .browse/
10
+ - api/
11
+ > HTML to include in web page
12
+ | <link href='http://xiki.org/dotsies.css' rel='stylesheet' type='text/css'>
13
+ | <style> .dotsies {font-family:Dotsies} </style>
14
+ - docs/
15
+ > Summary
16
+ | Has to do with the "dotsies" font.
17
+ |
18
+ > Show dotsies text inline
19
+ |~Show dotsies text inline
20
+ |
21
+ > To show something in the browser
22
+ | Use the "browse" menu.
23
+
24
+ > See
25
+ << dotsies tweets/
26
+ `
27
+ end
28
+
29
+ def self.all_views
30
+
31
+ View.kill if View.name == "menu" || View.name =~ /^@/
32
+
33
+ faces = {
34
+ :default=>"monaco",
35
+ :ls_dir=>"verdana",
36
+ :notes_exclamation=>"arial black",
37
+ :notes_h1=>"arial",
38
+ }
39
+
40
+ if Styles.attribute(:default, :family) =~ /dotsies/
41
+ faces.each{|k,v| Styles.define k, :face=>v}
42
+ else
43
+ faces.each{|k,v| Styles.define k, :face=>"dotsies"}
44
+ end
45
+
46
+ nil
47
+ end
48
+
49
+ def self.one_view
50
+ View.kill if View.name == "menu" || View.name =~ /^@/
51
+
52
+ $el.make_local_variable :dotsies_enabled
53
+ dotsies_enabled = $el.boundp(:dotsies_enabled) && $el.elvar.dotsies_enabled
54
+
55
+ font =
56
+ if dotsies_enabled
57
+ :default
58
+ elsif Keys.prefix_u
59
+ :dotsies_experimental
60
+ else
61
+ :dotsies
62
+ end
63
+
64
+ Styles.apply(".+", font)
65
+
66
+ $el.elvar.dotsies_enabled = ! dotsies_enabled
67
+ nil
68
+ end
69
+
70
+ def self.web_browser
71
+ Firefox.js "$('head').append('<style>body{font-family: dotsies}</style>')"
72
+ end
73
+
74
+ def self.browse txt=nil
75
+ return ".flash - Type some text" if txt.nil?
76
+ "do"
77
+ end
78
+
79
+ def self.define_styles
80
+ Styles.define :dotsies, :size => '+2', :face => "Dotsies"
81
+ Styles.define :dotsies_white, :size => '+2', :face => "Dotsies", :fg=>"fff"
82
+ Styles.define :dotsies_experimental, :size => '+2', :face => "Dotsies Experimental"
83
+ Styles.define :dotsies_roman, :size => '+2', :face => "Dotsies Roman"
84
+ Styles.define :dotsies_mono, :size => '+2', :face => "Dotsies Mono"
85
+ end
86
+
87
+ def self.apply_styles
88
+ Styles.apply ".+", :dotsies
89
+ end
90
+
91
+ def self.init
92
+
93
+ return if ! $el
94
+
95
+ $el.defun(:dotsies_mode, :interactive => "", :docstring => "Apply dotsies styles, etc") {
96
+ $el.el4r_lisp_eval "(setq font-lock-defaults '(nil t))"
97
+ Dotsies.apply_styles
98
+ }
99
+
100
+ self.define_styles
101
+
102
+ $el.el4r_lisp_eval %q<
103
+ (add-to-list 'auto-mode-alist '("\\\\.dotsies\\\\'" . dotsies-mode))
104
+ >
105
+ end
106
+ end
107
+ Dotsies.init