erp_app 3.0.7 → 3.0.8
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +23 -0
- data/app/controllers/erp_app/application_controller.rb +1 -0
- data/app/controllers/erp_app/desktop/file_manager/base_controller.rb +33 -23
- data/app/controllers/erp_app/public_controller.rb +2 -3
- data/app/controllers/erp_app/shared/configuration_controller.rb +1 -0
- data/app/controllers/erp_app/shared/notes_controller.rb +1 -0
- data/app/controllers/erp_app/shared/profile_management_controller.rb +22 -0
- data/app/controllers/erp_app/widget_proxy_controller.rb +2 -1
- data/app/models/configuration.rb +7 -0
- data/app/views/erp_app/desktop/base/index.erb +2 -3
- data/app/views/erp_app/login/index.erb +1 -1
- data/app/views/erp_app/mobile/base/index.erb +1 -0
- data/app/views/erp_app/organizer/base/index.erb +2 -3
- data/config/routes.rb +1 -1
- data/lib/active_ext/ext_helpers/column_builder.rb +118 -118
- data/lib/erp_app/config.rb +8 -4
- data/lib/erp_app/extensions/railties/action_view/base.rb +0 -1
- data/lib/erp_app/extensions/railties/action_view/helpers/include_helper.rb +18 -3
- data/lib/erp_app/version.rb +1 -1
- data/lib/erp_app/widgets/base.rb +5 -4
- data/lib/erp_app/widgets/loader.rb +2 -2
- data/public/images/btn/left_panel/left_panel_16x16.png +0 -0
- data/public/images/btn/left_right_panel/left_right_panel_16x16.png +0 -0
- data/public/images/btn/right_panel/right_panel_16x16.png +0 -0
- data/public/images/btn/save/save_16x16.png +0 -0
- data/public/images/btn/save_all/save_all_16x16.png +0 -0
- data/public/javascripts/erp_app/ckeditor/ckeditor.js +138 -135
- data/public/javascripts/erp_app/ckeditor/config.js +1 -1
- data/public/javascripts/erp_app/ckeditor/contents.css +1 -1
- data/public/javascripts/erp_app/ckeditor/lang/_languages.js +1 -1
- data/public/javascripts/erp_app/ckeditor/lang/_translationstatus.txt +62 -59
- data/public/javascripts/erp_app/ckeditor/lang/af.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/ar.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/bg.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/bn.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/bs.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/ca.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/cs.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/cy.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/da.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/de.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/el.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/en-au.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/en-ca.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/en-gb.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/en.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/eo.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/es.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/et.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/eu.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/fa.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/fi.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/fo.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/fr-ca.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/fr.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/gl.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/gu.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/he.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/hi.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/hr.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/hu.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/id.js +6 -0
- data/public/javascripts/erp_app/ckeditor/lang/is.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/it.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/ja.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/ka.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/km.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/ko.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/lt.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/lv.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/mk.js +6 -0
- data/public/javascripts/erp_app/ckeditor/lang/mn.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/ms.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/nb.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/nl.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/no.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/pl.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/pt-br.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/pt.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/ro.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/ru.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/sk.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/sl.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/sr-latn.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/sr.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/sv.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/th.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/tr.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/ug.js +6 -0
- data/public/javascripts/erp_app/ckeditor/lang/uk.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/vi.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/zh-cn.js +2 -2
- data/public/javascripts/erp_app/ckeditor/lang/zh.js +2 -2
- data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/_translationstatus.txt +25 -0
- data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/cs.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/cy.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/da.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/de.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/el.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/en.js +2 -2
- data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/eo.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/fa.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/fi.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/fr.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/gu.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/he.js +2 -2
- data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/it.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/mk.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/nb.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/nl.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/no.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/pt-br.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/ro.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/tr.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/ug.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/vi.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/a11yhelp/lang/zh-cn.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/about/dialogs/about.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/adobeair/plugin.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/ajax/plugin.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/autogrow/plugin.js +2 -2
- data/public/javascripts/erp_app/ckeditor/plugins/bbcode/plugin.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/clipboard/dialogs/paste.js +2 -2
- data/public/javascripts/erp_app/ckeditor/plugins/colordialog/dialogs/colordialog.js +3 -3
- data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/_translationstatus.txt +28 -0
- data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/bg.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/cs.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/cy.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/da.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/de.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/el.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/en.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/eo.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/et.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/fa.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/fi.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/fr.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/gu.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/he.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/hr.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/it.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/nb.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/nl.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/no.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/pl.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/pt-br.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/tr.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/ug.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/uk.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/vi.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/devtools/lang/zh-cn.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/devtools/plugin.js +2 -2
- data/public/javascripts/erp_app/ckeditor/plugins/dialog/dialogDefinition.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/div/dialogs/div.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/docprops/dialogs/docprops.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/docprops/plugin.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/find/dialogs/find.js +3 -3
- data/public/javascripts/erp_app/ckeditor/plugins/flash/dialogs/flash.js +4 -4
- data/public/javascripts/erp_app/ckeditor/plugins/forms/dialogs/button.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/forms/dialogs/checkbox.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/forms/dialogs/form.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/forms/dialogs/hiddenfield.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/forms/dialogs/radio.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/forms/dialogs/select.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/forms/dialogs/textarea.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/forms/dialogs/textfield.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/iframe/dialogs/iframe.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/iframedialog/plugin.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/image/dialogs/image.js +9 -9
- data/public/javascripts/erp_app/ckeditor/plugins/inlineeditsave/plugin.js +40 -0
- data/public/javascripts/erp_app/ckeditor/plugins/link/dialogs/anchor.js +2 -2
- data/public/javascripts/erp_app/ckeditor/plugins/link/dialogs/link.js +5 -5
- data/public/javascripts/erp_app/ckeditor/plugins/liststyle/dialogs/liststyle.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/pastefromword/filter/default.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/pastetext/dialogs/pastetext.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/placeholder/dialogs/placeholder.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/_translationstatus.txt +27 -0
- data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/bg.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/cs.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/cy.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/da.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/de.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/el.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/en.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/eo.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/et.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/fa.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/fi.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/fr.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/he.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/hr.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/it.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/nb.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/nl.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/no.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/pl.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/pt-br.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/tr.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/ug.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/uk.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/vi.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/placeholder/lang/zh-cn.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/placeholder/plugin.js +2 -2
- data/public/javascripts/erp_app/ckeditor/plugins/preview/preview.html +10 -0
- data/public/javascripts/erp_app/ckeditor/plugins/scayt/dialogs/options.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/scayt/dialogs/toolbar.css +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/smiley/dialogs/smiley.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/specialchar/dialogs/specialchar.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/_translationstatus.txt +22 -0
- data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/cs.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/cy.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/de.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/el.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/en.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/eo.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/et.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/fa.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/fi.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/fr.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/he.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/hr.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/it.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/nb.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/nl.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/no.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/pt-br.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/tr.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/ug.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/specialchar/lang/zh-cn.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/styles/styles/default.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/stylesheetparser/plugin.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/table/dialogs/table.js +5 -5
- data/public/javascripts/erp_app/ckeditor/plugins/tableresize/plugin.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/tabletools/dialogs/tableCell.js +3 -3
- data/public/javascripts/erp_app/ckeditor/plugins/templates/dialogs/templates.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/templates/templates/default.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/uicolor/dialogs/uicolor.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/_translationstatus.txt +28 -0
- data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/bg.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/cs.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/cy.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/da.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/de.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/el.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/en.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/eo.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/et.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/fa.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/fi.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/fr.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/he.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/hr.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/it.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/mk.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/nb.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/nl.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/no.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/pl.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/pt-br.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/tr.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/ug.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/uk.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/vi.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/uicolor/lang/zh-cn.js +6 -0
- data/public/javascripts/erp_app/ckeditor/plugins/uicolor/plugin.js +2 -2
- data/public/javascripts/erp_app/ckeditor/plugins/uicolor/yui/assets/yui.css +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/uicolor/yui/yui.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/wsc/dialogs/ciframe.html +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/wsc/dialogs/tmpFrameset.html +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/wsc/dialogs/wsc.css +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/wsc/dialogs/wsc.js +1 -1
- data/public/javascripts/erp_app/ckeditor/plugins/xml/plugin.js +1 -1
- data/public/javascripts/erp_app/ckeditor/skins/kama/dialog.css +6 -6
- data/public/javascripts/erp_app/ckeditor/skins/kama/editor.css +1 -1
- data/public/javascripts/erp_app/ckeditor/skins/kama/skin.js +1 -1
- data/public/javascripts/erp_app/ckeditor/skins/kama/templates.css +1 -1
- data/public/javascripts/erp_app/ckeditor/skins/office2003/dialog.css +6 -5
- data/public/javascripts/erp_app/ckeditor/skins/office2003/editor.css +1 -1
- data/public/javascripts/erp_app/ckeditor/skins/office2003/skin.js +1 -1
- data/public/javascripts/erp_app/ckeditor/skins/office2003/templates.css +1 -1
- data/public/javascripts/erp_app/ckeditor/skins/v2/dialog.css +5 -5
- data/public/javascripts/erp_app/ckeditor/skins/v2/editor.css +1 -1
- data/public/javascripts/erp_app/ckeditor/skins/v2/skin.js +1 -1
- data/public/javascripts/erp_app/ckeditor/skins/v2/templates.css +1 -1
- data/public/javascripts/erp_app/ckeditor/themes/default/theme.js +1 -1
- data/public/javascripts/erp_app/ckeditor_example_config_override.js +2 -1
- data/public/javascripts/erp_app/codemirror/LICENSE +5 -1
- data/public/javascripts/erp_app/codemirror/README.md +6 -4
- data/public/javascripts/erp_app/codemirror/{css → doc}/baboon.png +0 -0
- data/public/javascripts/erp_app/codemirror/{css → doc}/baboon_vector.svg +0 -0
- data/public/javascripts/erp_app/codemirror/doc/compress.html +155 -0
- data/public/javascripts/erp_app/codemirror/{css → doc}/docs.css +0 -0
- data/public/javascripts/erp_app/codemirror/doc/internals.html +494 -0
- data/public/javascripts/erp_app/codemirror/{manual.html → doc/manual.html} +465 -167
- data/public/javascripts/erp_app/codemirror/doc/oldrelease.html +267 -0
- data/public/javascripts/erp_app/codemirror/doc/reporting.html +57 -0
- data/public/javascripts/erp_app/codemirror/doc/upgrade_v2.2.html +95 -0
- data/public/javascripts/erp_app/codemirror/keymap/emacs.js +29 -0
- data/public/javascripts/erp_app/codemirror/keymap/vim.js +785 -0
- data/public/javascripts/erp_app/codemirror/lib/codemirror.css +116 -14
- data/public/javascripts/erp_app/codemirror/lib/codemirror.js +2128 -1054
- data/public/javascripts/erp_app/codemirror/lib/util/closetag.js +164 -0
- data/public/javascripts/erp_app/codemirror/lib/util/dialog.css +27 -0
- data/public/javascripts/erp_app/codemirror/lib/util/dialog.js +67 -0
- data/public/javascripts/erp_app/codemirror/lib/util/foldcode.js +196 -0
- data/public/javascripts/erp_app/codemirror/lib/util/formatting.js +299 -0
- data/public/javascripts/erp_app/codemirror/lib/util/javascript-hint.js +134 -0
- data/public/javascripts/erp_app/codemirror/lib/util/loadmode.js +51 -0
- data/public/javascripts/erp_app/codemirror/lib/util/match-highlighter.js +44 -0
- data/public/javascripts/erp_app/codemirror/lib/util/multiplex.js +81 -0
- data/public/javascripts/erp_app/codemirror/lib/{overlay.js → util/overlay.js} +3 -2
- data/public/javascripts/erp_app/codemirror/lib/util/pig-hint.js +123 -0
- data/public/javascripts/erp_app/codemirror/lib/util/runmode.js +49 -0
- data/public/javascripts/erp_app/codemirror/lib/util/search.js +118 -0
- data/public/javascripts/erp_app/codemirror/lib/util/searchcursor.js +117 -0
- data/public/javascripts/erp_app/codemirror/lib/util/simple-hint.css +16 -0
- data/public/javascripts/erp_app/codemirror/lib/util/simple-hint.js +76 -0
- data/public/javascripts/erp_app/codemirror/lib/util/xml-hint.js +137 -0
- data/public/javascripts/erp_app/codemirror/mode/clike/clike.js +50 -17
- data/public/javascripts/erp_app/codemirror/mode/clike/index.html +4 -5
- data/public/javascripts/erp_app/codemirror/mode/clike/scala.html +765 -0
- data/public/javascripts/erp_app/codemirror/mode/clojure/clojure.js +207 -0
- data/public/javascripts/erp_app/codemirror/mode/clojure/index.html +66 -0
- data/public/javascripts/erp_app/codemirror/mode/coffeescript/coffeescript.js +101 -63
- data/public/javascripts/erp_app/codemirror/mode/coffeescript/index.html +9 -4
- data/public/javascripts/erp_app/codemirror/mode/css/css.js +4 -4
- data/public/javascripts/erp_app/codemirror/mode/css/index.html +3 -4
- data/public/javascripts/erp_app/codemirror/mode/diff/diff.js +24 -5
- data/public/javascripts/erp_app/codemirror/mode/diff/index.html +12 -7
- data/public/javascripts/erp_app/codemirror/mode/ecl/ecl.js +203 -0
- data/public/javascripts/erp_app/codemirror/mode/ecl/index.html +42 -0
- data/public/javascripts/erp_app/codemirror/mode/erlang/erlang.js +463 -0
- data/public/javascripts/erp_app/codemirror/mode/erlang/index.html +62 -0
- data/public/javascripts/erp_app/codemirror/mode/gfm/gfm.js +144 -0
- data/public/javascripts/erp_app/codemirror/mode/gfm/index.html +47 -0
- data/public/javascripts/erp_app/codemirror/mode/go/go.js +170 -0
- data/public/javascripts/erp_app/codemirror/mode/go/index.html +72 -0
- data/public/javascripts/erp_app/codemirror/mode/groovy/groovy.js +210 -0
- data/public/javascripts/erp_app/codemirror/mode/groovy/index.html +71 -0
- data/public/javascripts/erp_app/codemirror/mode/haskell/index.html +3 -3
- data/public/javascripts/erp_app/codemirror/mode/haxe/haxe.js +432 -0
- data/public/javascripts/erp_app/codemirror/mode/haxe/index.html +90 -0
- data/public/javascripts/erp_app/codemirror/mode/htmlembedded/htmlembedded.js +68 -0
- data/public/javascripts/erp_app/codemirror/mode/htmlembedded/index.html +49 -0
- data/public/javascripts/erp_app/codemirror/mode/htmlmixed/htmlmixed.js +8 -2
- data/public/javascripts/erp_app/codemirror/mode/htmlmixed/index.html +3 -4
- data/public/javascripts/erp_app/codemirror/mode/javascript/index.html +3 -4
- data/public/javascripts/erp_app/codemirror/mode/javascript/javascript.js +26 -13
- data/public/javascripts/erp_app/codemirror/mode/jinja2/index.html +37 -0
- data/public/javascripts/erp_app/codemirror/mode/jinja2/jinja2.js +42 -0
- data/public/javascripts/erp_app/codemirror/mode/less/index.html +618 -0
- data/public/javascripts/erp_app/codemirror/mode/less/less.js +232 -0
- data/public/javascripts/erp_app/codemirror/mode/lua/index.html +3 -3
- data/public/javascripts/erp_app/codemirror/mode/lua/lua.js +5 -3
- data/public/javascripts/erp_app/codemirror/mode/markdown/index.html +340 -0
- data/public/javascripts/erp_app/codemirror/mode/markdown/markdown.js +268 -0
- data/public/javascripts/erp_app/codemirror/mode/mysql/index.html +41 -0
- data/public/javascripts/erp_app/codemirror/mode/mysql/mysql.js +186 -0
- data/public/javascripts/erp_app/codemirror/mode/ntriples/index.html +32 -0
- data/public/javascripts/erp_app/codemirror/mode/ntriples/ntriples.js +172 -0
- data/public/javascripts/erp_app/codemirror/mode/ocaml/index.html +130 -0
- data/public/javascripts/erp_app/codemirror/mode/ocaml/ocaml.js +114 -0
- data/public/javascripts/erp_app/codemirror/mode/pascal/LICENSE +7 -0
- data/public/javascripts/erp_app/codemirror/mode/pascal/index.html +48 -0
- data/public/javascripts/erp_app/codemirror/mode/pascal/pascal.js +94 -0
- data/public/javascripts/erp_app/codemirror/mode/perl/LICENSE +19 -0
- data/public/javascripts/erp_app/codemirror/mode/perl/index.html +62 -0
- data/public/javascripts/erp_app/codemirror/mode/perl/perl.js +816 -0
- data/public/javascripts/erp_app/codemirror/mode/php/index.html +4 -5
- data/public/javascripts/erp_app/codemirror/mode/php/php.js +62 -27
- data/public/javascripts/erp_app/codemirror/mode/pig/index.html +42 -0
- data/public/javascripts/erp_app/codemirror/mode/pig/pig.js +172 -0
- data/public/javascripts/erp_app/codemirror/mode/plsql/index.html +3 -4
- data/public/javascripts/erp_app/codemirror/mode/plsql/plsql.js +2 -2
- data/public/javascripts/erp_app/codemirror/mode/properties/index.html +40 -0
- data/public/javascripts/erp_app/codemirror/mode/properties/properties.js +63 -0
- data/public/javascripts/erp_app/codemirror/mode/python/index.html +3 -4
- data/public/javascripts/erp_app/codemirror/mode/python/python.js +59 -42
- data/public/javascripts/erp_app/codemirror/mode/r/index.html +5 -5
- data/public/javascripts/erp_app/codemirror/mode/r/r.js +9 -2
- data/public/javascripts/erp_app/codemirror/mode/rpm/changes/changes.js +19 -0
- data/public/javascripts/erp_app/codemirror/mode/rpm/changes/index.html +53 -0
- data/public/javascripts/erp_app/codemirror/mode/rpm/spec/index.html +99 -0
- data/public/javascripts/erp_app/codemirror/mode/rpm/spec/spec.css +5 -0
- data/public/javascripts/erp_app/codemirror/mode/rpm/spec/spec.js +66 -0
- data/public/javascripts/erp_app/codemirror/mode/rst/index.html +4 -5
- data/public/javascripts/erp_app/codemirror/mode/rst/rst.js +15 -22
- data/public/javascripts/erp_app/codemirror/mode/ruby/index.html +3 -4
- data/public/javascripts/erp_app/codemirror/mode/ruby/ruby.js +49 -36
- data/public/javascripts/erp_app/codemirror/mode/rust/index.html +48 -0
- data/public/javascripts/erp_app/codemirror/mode/rust/rust.js +432 -0
- data/public/javascripts/erp_app/codemirror/mode/scheme/index.html +3 -4
- data/public/javascripts/erp_app/codemirror/mode/scheme/scheme.js +71 -23
- data/public/javascripts/erp_app/codemirror/mode/shell/index.html +50 -0
- data/public/javascripts/erp_app/codemirror/mode/shell/shell.js +118 -0
- data/public/javascripts/erp_app/codemirror/mode/smalltalk/index.html +3 -4
- data/public/javascripts/erp_app/codemirror/mode/smalltalk/smalltalk.js +137 -120
- data/public/javascripts/erp_app/codemirror/mode/smarty/index.html +82 -0
- data/public/javascripts/erp_app/codemirror/mode/smarty/smarty.js +148 -0
- data/public/javascripts/erp_app/codemirror/mode/sparql/index.html +3 -4
- data/public/javascripts/erp_app/codemirror/mode/stex/index.html +4 -5
- data/public/javascripts/erp_app/codemirror/mode/stex/stex.js +22 -7
- data/public/javascripts/erp_app/codemirror/mode/stex/test.html +263 -0
- data/public/javascripts/erp_app/codemirror/mode/tiddlywiki/index.html +140 -0
- data/public/javascripts/erp_app/codemirror/mode/tiddlywiki/tiddlywiki.css +14 -0
- data/public/javascripts/erp_app/codemirror/mode/tiddlywiki/tiddlywiki.js +384 -0
- data/public/javascripts/erp_app/codemirror/mode/tiki/index.html +82 -0
- data/public/javascripts/erp_app/codemirror/mode/tiki/tiki.css +26 -0
- data/public/javascripts/erp_app/codemirror/mode/tiki/tiki.js +316 -0
- data/public/javascripts/erp_app/codemirror/mode/vb/LICENSE.txt +21 -0
- data/public/javascripts/erp_app/codemirror/mode/vb/index.html +88 -0
- data/public/javascripts/erp_app/codemirror/mode/vb/vb.js +260 -0
- data/public/javascripts/erp_app/codemirror/mode/vbscript/index.html +42 -0
- data/public/javascripts/erp_app/codemirror/mode/vbscript/vbscript.js +26 -0
- data/public/javascripts/erp_app/codemirror/mode/velocity/index.html +3 -3
- data/public/javascripts/erp_app/codemirror/mode/verilog/index.html +210 -0
- data/public/javascripts/erp_app/codemirror/mode/verilog/verilog.js +194 -0
- data/public/javascripts/erp_app/codemirror/mode/xml/index.html +7 -5
- data/public/javascripts/erp_app/codemirror/mode/xml/xml.js +127 -32
- data/public/javascripts/erp_app/codemirror/mode/xquery/LICENSE +20 -0
- data/public/javascripts/erp_app/codemirror/mode/xquery/index.html +222 -0
- data/public/javascripts/erp_app/codemirror/mode/xquery/test/index.html +27 -0
- data/public/javascripts/erp_app/codemirror/mode/xquery/test/testBase.js +42 -0
- data/public/javascripts/erp_app/codemirror/mode/xquery/test/testEmptySequenceKeyword.js +16 -0
- data/public/javascripts/erp_app/codemirror/mode/xquery/test/testMultiAttr.js +16 -0
- data/public/javascripts/erp_app/codemirror/mode/xquery/test/testNamespaces.js +91 -0
- data/public/javascripts/erp_app/codemirror/mode/xquery/test/testProcessingInstructions.js +16 -0
- data/public/javascripts/erp_app/codemirror/mode/xquery/test/testQuotes.js +19 -0
- data/public/javascripts/erp_app/codemirror/mode/xquery/xquery.js +448 -0
- data/public/javascripts/erp_app/codemirror/mode/yaml/index.html +3 -4
- data/public/javascripts/erp_app/codemirror/package.json +29 -0
- data/public/javascripts/erp_app/codemirror/test/driver.js +42 -0
- data/public/javascripts/erp_app/codemirror/test/index.html +55 -0
- data/public/javascripts/erp_app/codemirror/test/mode_test.css +22 -0
- data/public/javascripts/erp_app/codemirror/test/mode_test.js +164 -0
- data/public/javascripts/erp_app/codemirror/test/test.js +467 -0
- data/public/javascripts/erp_app/codemirror/theme/ambiance.css +81 -0
- data/public/javascripts/erp_app/codemirror/theme/blackboard.css +25 -0
- data/public/javascripts/erp_app/codemirror/theme/cobalt.css +18 -0
- data/public/javascripts/erp_app/codemirror/theme/eclipse.css +25 -0
- data/public/javascripts/erp_app/codemirror/theme/elegant.css +3 -2
- data/public/javascripts/erp_app/codemirror/theme/erlang-dark.css +21 -0
- data/public/javascripts/erp_app/codemirror/theme/lesser-dark.css +44 -0
- data/public/javascripts/erp_app/codemirror/theme/monokai.css +28 -0
- data/public/javascripts/erp_app/codemirror/theme/neat.css +4 -3
- data/public/javascripts/erp_app/codemirror/theme/night.css +2 -1
- data/public/javascripts/erp_app/codemirror/theme/rubyblue.css +21 -0
- data/public/javascripts/erp_app/codemirror/theme/vibrant-ink.css +27 -0
- data/public/javascripts/erp_app/codemirror/theme/xq-dark.css +46 -0
- data/public/javascripts/erp_app/codemirror_highlight.js +17 -0
- data/public/javascripts/erp_app/desktop/applications/audit_log_viewer/module.js +1 -57
- data/public/javascripts/erp_app/desktop/applications/control_panel/application_management_panel.js +1 -2
- data/public/javascripts/erp_app/desktop/applications/control_panel/module.js +1 -1
- data/public/javascripts/erp_app/desktop/applications/file_manager/module.js +12 -1
- data/public/javascripts/erp_app/desktop/ext_ux_desktop_module.js +9 -1
- data/public/javascripts/erp_app/jquery_support.js +6 -1
- data/public/javascripts/erp_app/login/window.js +1 -1
- data/public/javascripts/erp_app/organizer/default_menu_tree_panel.js +3 -1
- data/public/javascripts/erp_app/organizer/layout.js +92 -79
- data/public/javascripts/erp_app/organizer/preference_window.js +1 -1
- data/public/javascripts/erp_app/{desktop/applications/audit_log_viewer → shared/audit_log}/audit_log_grid_panel.js +1 -0
- data/public/javascripts/erp_app/{desktop/applications/audit_log_viewer → shared/audit_log}/audit_log_item_grid_panel.js +0 -0
- data/public/javascripts/erp_app/shared/audit_log/audit_log_tab_panel.js +52 -0
- data/public/javascripts/erp_app/shared/compass_ckeditor.js +51 -1
- data/public/javascripts/erp_app/shared/compass_codemirror.js +2 -8
- data/public/javascripts/erp_app/shared/configuration/configuration_panel.js +24 -22
- data/public/javascripts/erp_app/shared/dynamic_editable_grid.js +1 -0
- data/public/javascripts/erp_app/shared/dynamic_editable_grid_loader_panel.js +5 -1
- data/public/javascripts/erp_app/shared/file_manager_tree.js +358 -270
- data/public/javascripts/erp_app/shared/file_upload/Ext.ux.panel.UploadPanel.js +580 -0
- data/public/javascripts/erp_app/shared/file_upload/plupload.flash.swf +0 -0
- data/public/javascripts/erp_app/shared/file_upload/plupload.full.js +2 -0
- data/public/javascripts/erp_app/shared/file_upload/plupload.silverlight.xap +0 -0
- data/public/javascripts/erp_app/shared/file_upload/upload_window.js +19 -212
- data/public/javascripts/erp_app/{desktop/applications/control_panel → shared}/profile_management_panel.js +14 -23
- data/public/javascripts/erp_app/utility.js +340 -272
- data/public/javascripts/erp_app/widgets.js +2 -2
- data/public/javascripts/extjs/MultiCellSelectionModel.js +490 -0
- data/public/javascripts/jquery_plugins/jquery.address.min.js +21 -24
- data/public/stylesheets/erp_app/desktop/base.css +3 -1
- data/public/stylesheets/erp_app/shared/compass-ext-all.css +29 -0
- data/public/stylesheets/erp_app/shared/hover_finger.css +4 -0
- metadata +267 -71
- data/app/controllers/erp_app/desktop/control_panel/profile_management_controller.rb +0 -23
- data/app/models/extensions/party.rb +0 -39
- data/public/images/icons/add/Thumbs.db +0 -0
- data/public/images/icons/calendar/Thumbs.db +0 -0
- data/public/images/icons/copy/Thumbs.db +0 -0
- data/public/images/icons/cut/Thumbs.db +0 -0
- data/public/images/icons/delete/Thumbs.db +0 -0
- data/public/images/icons/edit/Thumbs.db +0 -0
- data/public/images/icons/folder/Thumbs.db +0 -0
- data/public/images/icons/gear/Thumbs.db +0 -0
- data/public/images/icons/globe/Thumbs.db +0 -0
- data/public/images/icons/grid/Thumbs.db +0 -0
- data/public/images/icons/help/Thumbs.db +0 -0
- data/public/images/icons/information/Thumbs.db +0 -0
- data/public/images/icons/key/Thumbs.db +0 -0
- data/public/images/icons/log_out/Thumbs.db +0 -0
- data/public/images/icons/mail/Thumbs.db +0 -0
- data/public/images/icons/new/Thumbs.db +0 -0
- data/public/images/icons/next/Thumbs.db +0 -0
- data/public/images/icons/open/Thumbs.db +0 -0
- data/public/images/icons/paste/Thumbs.db +0 -0
- data/public/images/icons/picture/Thumbs.db +0 -0
- data/public/images/icons/presentation/Thumbs.db +0 -0
- data/public/images/icons/preview/Thumbs.db +0 -0
- data/public/images/icons/previous/Thumbs.db +0 -0
- data/public/images/icons/print/Thumbs.db +0 -0
- data/public/images/icons/properties/Thumbs.db +0 -0
- data/public/images/icons/redo/Thumbs.db +0 -0
- data/public/images/icons/refresh/Thumbs.db +0 -0
- data/public/images/icons/remove/Thumbs.db +0 -0
- data/public/images/icons/rename/Thumbs.db +0 -0
- data/public/images/icons/save/Thumbs.db +0 -0
- data/public/images/icons/search/Thumbs.db +0 -0
- data/public/images/icons/send/Thumbs.db +0 -0
- data/public/images/icons/settings/Thumbs.db +0 -0
- data/public/images/icons/synchronize/Thumbs.db +0 -0
- data/public/images/icons/undo/Thumbs.db +0 -0
- data/public/images/icons/upload/Thumbs.db +0 -0
- data/public/images/icons/user/Thumbs.db +0 -0
- data/public/images/icons/zoom_in/Thumbs.db +0 -0
- data/public/images/icons/zoom_out/Thumbs.db +0 -0
- data/public/javascripts/erp_app/ckeditor/plugins/jwplayer/jwplayer/Thumbs.db +0 -0
- data/public/javascripts/erp_app/codemirror/lib/runmode.js +0 -27
- data/public/javascripts/erp_app/codemirror/mode/diff/diff.css +0 -3
- data/public/javascripts/erp_app/codemirror/mode/rst/rst.css +0 -75
- data/public/javascripts/erp_app/codemirror/mode/xmlpure/index.html +0 -60
- data/public/javascripts/erp_app/codemirror/mode/xmlpure/xmlpure.js +0 -481
- data/public/javascripts/erp_app/codemirror/theme/default.css +0 -19
- data/public/javascripts/erp_app/shared/file_upload/Ext.ux.AwesomeUploader.js +0 -511
- data/public/javascripts/erp_app/shared/file_upload/Ext.ux.AwesomeUploaderLocalization.js +0 -45
- data/public/javascripts/erp_app/shared/file_upload/Ext.ux.XHRUpload.js +0 -138
- data/public/javascripts/erp_app/tinymce/Ext.ux.TinyMCE.js +0 -689
- data/public/javascripts/erp_app/tinymce/center_region.js +0 -611
@@ -0,0 +1,785 @@
|
|
1
|
+
// Supported keybindings:
|
2
|
+
//
|
3
|
+
// Cursor movement:
|
4
|
+
// h, j, k, l
|
5
|
+
// e, E, w, W, b, B
|
6
|
+
// Ctrl-f, Ctrl-b
|
7
|
+
// Ctrl-n, Ctrl-p
|
8
|
+
// $, ^, 0
|
9
|
+
// G
|
10
|
+
// ge, gE
|
11
|
+
// gg
|
12
|
+
// f<char>, F<char>, t<char>, T<char>
|
13
|
+
// Ctrl-o, Ctrl-i TODO (FIXME - Ctrl-O wont work in Chrome)
|
14
|
+
// /, ?, n, N TODO (does not work)
|
15
|
+
// #, * TODO
|
16
|
+
//
|
17
|
+
// Entering insert mode:
|
18
|
+
// i, I, a, A, o, O
|
19
|
+
// s
|
20
|
+
// ce, cb (without support for number of actions like c3e - TODO)
|
21
|
+
// cc
|
22
|
+
// S, C TODO
|
23
|
+
// cf<char>, cF<char>, ct<char>, cT<char>
|
24
|
+
//
|
25
|
+
// Deleting text:
|
26
|
+
// x, X
|
27
|
+
// J
|
28
|
+
// dd, D
|
29
|
+
// de, db (without support for number of actions like d3e - TODO)
|
30
|
+
// df<char>, dF<char>, dt<char>, dT<char>
|
31
|
+
//
|
32
|
+
// Yanking and pasting:
|
33
|
+
// yy, Y
|
34
|
+
// p, P
|
35
|
+
// p'<char> TODO - test
|
36
|
+
// y'<char> TODO - test
|
37
|
+
// m<char> TODO - test
|
38
|
+
//
|
39
|
+
// Changing text in place:
|
40
|
+
// ~
|
41
|
+
// r<char>
|
42
|
+
//
|
43
|
+
// Visual mode:
|
44
|
+
// v, V TODO
|
45
|
+
//
|
46
|
+
// Misc:
|
47
|
+
// . TODO
|
48
|
+
//
|
49
|
+
|
50
|
+
(function() {
|
51
|
+
var count = "";
|
52
|
+
var sdir = "f";
|
53
|
+
var buf = "";
|
54
|
+
var yank = 0;
|
55
|
+
var mark = [];
|
56
|
+
var reptTimes = 0;
|
57
|
+
function emptyBuffer() { buf = ""; }
|
58
|
+
function pushInBuffer(str) { buf += str; }
|
59
|
+
function pushCountDigit(digit) { return function(cm) {count += digit;}; }
|
60
|
+
function popCount() { var i = parseInt(count, 10); count = ""; return i || 1; }
|
61
|
+
function iterTimes(func) {
|
62
|
+
for (var i = 0, c = popCount(); i < c; ++i) func(i, i == c - 1);
|
63
|
+
}
|
64
|
+
function countTimes(func) {
|
65
|
+
if (typeof func == "string") func = CodeMirror.commands[func];
|
66
|
+
return function(cm) { iterTimes(function () { func(cm); }); };
|
67
|
+
}
|
68
|
+
|
69
|
+
function iterObj(o, f) {
|
70
|
+
for (var prop in o) if (o.hasOwnProperty(prop)) f(prop, o[prop]);
|
71
|
+
}
|
72
|
+
function iterList(l, f) {
|
73
|
+
for (var i in l) f(l[i]);
|
74
|
+
}
|
75
|
+
function toLetter(ch) {
|
76
|
+
// T -> t, Shift-T -> T, '*' -> *, "Space" -> " "
|
77
|
+
if (ch.slice(0, 6) == "Shift-") {
|
78
|
+
return ch.slice(0, 1);
|
79
|
+
} else {
|
80
|
+
if (ch == "Space") return " ";
|
81
|
+
if (ch.length == 3 && ch[0] == "'" && ch[2] == "'") return ch[1];
|
82
|
+
return ch.toLowerCase();
|
83
|
+
}
|
84
|
+
}
|
85
|
+
var SPECIAL_SYMBOLS = "~`!@#$%^&*()_-+=[{}]\\|/?.,<>:;\"\'1234567890";
|
86
|
+
function toCombo(ch) {
|
87
|
+
// t -> T, T -> Shift-T, * -> '*', " " -> "Space"
|
88
|
+
if (ch == " ") return "Space";
|
89
|
+
var specialIdx = SPECIAL_SYMBOLS.indexOf(ch);
|
90
|
+
if (specialIdx != -1) return "'" + ch + "'";
|
91
|
+
if (ch.toLowerCase() == ch) return ch.toUpperCase();
|
92
|
+
return "Shift-" + ch.toUpperCase();
|
93
|
+
}
|
94
|
+
|
95
|
+
var word = [/\w/, /[^\w\s]/], bigWord = [/\S/];
|
96
|
+
function findWord(line, pos, dir, regexps) {
|
97
|
+
var stop = 0, next = -1;
|
98
|
+
if (dir > 0) { stop = line.length; next = 0; }
|
99
|
+
var start = stop, end = stop;
|
100
|
+
// Find bounds of next one.
|
101
|
+
outer: for (; pos != stop; pos += dir) {
|
102
|
+
for (var i = 0; i < regexps.length; ++i) {
|
103
|
+
if (regexps[i].test(line.charAt(pos + next))) {
|
104
|
+
start = pos;
|
105
|
+
for (; pos != stop; pos += dir) {
|
106
|
+
if (!regexps[i].test(line.charAt(pos + next))) break;
|
107
|
+
}
|
108
|
+
end = pos;
|
109
|
+
break outer;
|
110
|
+
}
|
111
|
+
}
|
112
|
+
}
|
113
|
+
return {from: Math.min(start, end), to: Math.max(start, end)};
|
114
|
+
}
|
115
|
+
function moveToWord(cm, regexps, dir, times, where) {
|
116
|
+
var cur = cm.getCursor();
|
117
|
+
|
118
|
+
for (var i = 0; i < times; i++) {
|
119
|
+
var line = cm.getLine(cur.line), startCh = cur.ch, word;
|
120
|
+
while (true) {
|
121
|
+
// If we're at start/end of line, start on prev/next respectivly
|
122
|
+
if (cur.ch == line.length && dir > 0) {
|
123
|
+
cur.line++;
|
124
|
+
cur.ch = 0;
|
125
|
+
line = cm.getLine(cur.line);
|
126
|
+
} else if (cur.ch == 0 && dir < 0) {
|
127
|
+
cur.line--;
|
128
|
+
cur.ch = line.length;
|
129
|
+
line = cm.getLine(cur.line);
|
130
|
+
}
|
131
|
+
if (!line) break;
|
132
|
+
|
133
|
+
// On to the actual searching
|
134
|
+
word = findWord(line, cur.ch, dir, regexps);
|
135
|
+
cur.ch = word[where == "end" ? "to" : "from"];
|
136
|
+
if (startCh == cur.ch && word.from != word.to) cur.ch = word[dir < 0 ? "from" : "to"];
|
137
|
+
else break;
|
138
|
+
}
|
139
|
+
}
|
140
|
+
return cur;
|
141
|
+
}
|
142
|
+
function joinLineNext(cm) {
|
143
|
+
var cur = cm.getCursor(), ch = cur.ch, line = cm.getLine(cur.line);
|
144
|
+
CodeMirror.commands.goLineEnd(cm);
|
145
|
+
if (cur.line != cm.lineCount()) {
|
146
|
+
CodeMirror.commands.goLineEnd(cm);
|
147
|
+
cm.replaceSelection(" ", "end");
|
148
|
+
CodeMirror.commands.delCharRight(cm);
|
149
|
+
}
|
150
|
+
}
|
151
|
+
function delTillMark(cm, cHar) {
|
152
|
+
var i = mark[cHar];
|
153
|
+
if (i === undefined) {
|
154
|
+
// console.log("Mark not set"); // TODO - show in status bar
|
155
|
+
return;
|
156
|
+
}
|
157
|
+
var l = cm.getCursor().line, start = i > l ? l : i, end = i > l ? i : l;
|
158
|
+
cm.setCursor(start);
|
159
|
+
for (var c = start; c <= end; c++) {
|
160
|
+
pushInBuffer("\n"+cm.getLine(start));
|
161
|
+
cm.removeLine(start);
|
162
|
+
}
|
163
|
+
}
|
164
|
+
function yankTillMark(cm, cHar) {
|
165
|
+
var i = mark[cHar];
|
166
|
+
if (i === undefined) {
|
167
|
+
// console.log("Mark not set"); // TODO - show in status bar
|
168
|
+
return;
|
169
|
+
}
|
170
|
+
var l = cm.getCursor().line, start = i > l ? l : i, end = i > l ? i : l;
|
171
|
+
for (var c = start; c <= end; c++) {
|
172
|
+
pushInBuffer("\n"+cm.getLine(c));
|
173
|
+
}
|
174
|
+
cm.setCursor(start);
|
175
|
+
}
|
176
|
+
function goLineStartText(cm) {
|
177
|
+
// Go to the start of the line where the text begins, or the end for whitespace-only lines
|
178
|
+
var cur = cm.getCursor(), firstNonWS = cm.getLine(cur.line).search(/\S/);
|
179
|
+
cm.setCursor(cur.line, firstNonWS == -1 ? line.length : firstNonWS, true);
|
180
|
+
}
|
181
|
+
|
182
|
+
function charIdxInLine(cm, cHar, motion_options) {
|
183
|
+
// Search for cHar in line.
|
184
|
+
// motion_options: {forward, inclusive}
|
185
|
+
// If inclusive = true, include it too.
|
186
|
+
// If forward = true, search forward, else search backwards.
|
187
|
+
// If char is not found on this line, do nothing
|
188
|
+
var cur = cm.getCursor(), line = cm.getLine(cur.line), idx;
|
189
|
+
var ch = toLetter(cHar), mo = motion_options;
|
190
|
+
if (mo.forward) {
|
191
|
+
idx = line.indexOf(ch, cur.ch + 1);
|
192
|
+
if (idx != -1 && mo.inclusive) idx += 1;
|
193
|
+
} else {
|
194
|
+
idx = line.lastIndexOf(ch, cur.ch);
|
195
|
+
if (idx != -1 && !mo.inclusive) idx += 1;
|
196
|
+
}
|
197
|
+
return idx;
|
198
|
+
}
|
199
|
+
|
200
|
+
function moveTillChar(cm, cHar, motion_options) {
|
201
|
+
// Move to cHar in line, as found by charIdxInLine.
|
202
|
+
var idx = charIdxInLine(cm, cHar, motion_options), cur = cm.getCursor();
|
203
|
+
if (idx != -1) cm.setCursor({line: cur.line, ch: idx});
|
204
|
+
}
|
205
|
+
|
206
|
+
function delTillChar(cm, cHar, motion_options) {
|
207
|
+
// delete text in this line, untill cHar is met,
|
208
|
+
// as found by charIdxInLine.
|
209
|
+
// If char is not found on this line, do nothing
|
210
|
+
var idx = charIdxInLine(cm, cHar, motion_options);
|
211
|
+
var cur = cm.getCursor();
|
212
|
+
if (idx !== -1) {
|
213
|
+
if (motion_options.forward) {
|
214
|
+
cm.replaceRange("", {line: cur.line, ch: cur.ch}, {line: cur.line, ch: idx});
|
215
|
+
} else {
|
216
|
+
cm.replaceRange("", {line: cur.line, ch: idx}, {line: cur.line, ch: cur.ch});
|
217
|
+
}
|
218
|
+
}
|
219
|
+
}
|
220
|
+
|
221
|
+
function enterInsertMode(cm) {
|
222
|
+
// enter insert mode: switch mode and cursor
|
223
|
+
popCount();
|
224
|
+
cm.setOption("keyMap", "vim-insert");
|
225
|
+
}
|
226
|
+
|
227
|
+
function dialog(cm, text, shortText, f) {
|
228
|
+
if (cm.openDialog) cm.openDialog(text, f);
|
229
|
+
else f(prompt(shortText, ""));
|
230
|
+
}
|
231
|
+
function showAlert(cm, text) {
|
232
|
+
if (cm.openDialog) cm.openDialog(CodeMirror.htmlEscape(text) + " <button type=button>OK</button>");
|
233
|
+
else alert(text);
|
234
|
+
}
|
235
|
+
|
236
|
+
// main keymap
|
237
|
+
var map = CodeMirror.keyMap.vim = {
|
238
|
+
// Pipe (|); TODO: should be *screen* chars, so need a util function to turn tabs into spaces?
|
239
|
+
"'|'": function(cm) {
|
240
|
+
cm.setCursor(cm.getCursor().line, popCount() - 1, true);
|
241
|
+
},
|
242
|
+
"A": function(cm) {
|
243
|
+
cm.setCursor(cm.getCursor().line, cm.getCursor().ch+1, true);
|
244
|
+
enterInsertMode(cm);
|
245
|
+
},
|
246
|
+
"Shift-A": function(cm) { CodeMirror.commands.goLineEnd(cm); enterInsertMode(cm);},
|
247
|
+
"I": function(cm) { enterInsertMode(cm);},
|
248
|
+
"Shift-I": function(cm) { goLineStartText(cm); enterInsertMode(cm);},
|
249
|
+
"O": function(cm) {
|
250
|
+
CodeMirror.commands.goLineEnd(cm);
|
251
|
+
CodeMirror.commands.newlineAndIndent(cm);
|
252
|
+
enterInsertMode(cm);
|
253
|
+
},
|
254
|
+
"Shift-O": function(cm) {
|
255
|
+
CodeMirror.commands.goLineStart(cm);
|
256
|
+
cm.replaceSelection("\n", "start");
|
257
|
+
cm.indentLine(cm.getCursor().line);
|
258
|
+
enterInsertMode(cm);
|
259
|
+
},
|
260
|
+
"G": function(cm) { cm.setOption("keyMap", "vim-prefix-g");},
|
261
|
+
"Shift-D": function(cm) {
|
262
|
+
// commented out verions works, but I left original, cause maybe
|
263
|
+
// I don't know vim enouth to see what it does
|
264
|
+
/* var cur = cm.getCursor();
|
265
|
+
var f = {line: cur.line, ch: cur.ch}, t = {line: cur.line};
|
266
|
+
pushInBuffer(cm.getRange(f, t));
|
267
|
+
*/
|
268
|
+
emptyBuffer();
|
269
|
+
mark["Shift-D"] = cm.getCursor(false).line;
|
270
|
+
cm.setCursor(cm.getCursor(true).line);
|
271
|
+
delTillMark(cm,"Shift-D"); mark = [];
|
272
|
+
},
|
273
|
+
|
274
|
+
"S": function (cm) {
|
275
|
+
countTimes(function (_cm) {
|
276
|
+
CodeMirror.commands.delCharRight(_cm);
|
277
|
+
})(cm);
|
278
|
+
enterInsertMode(cm);
|
279
|
+
},
|
280
|
+
"M": function(cm) {cm.setOption("keyMap", "vim-prefix-m"); mark = [];},
|
281
|
+
"Y": function(cm) {cm.setOption("keyMap", "vim-prefix-y"); emptyBuffer(); yank = 0;},
|
282
|
+
"Shift-Y": function(cm) {
|
283
|
+
emptyBuffer();
|
284
|
+
mark["Shift-D"] = cm.getCursor(false).line;
|
285
|
+
cm.setCursor(cm.getCursor(true).line);
|
286
|
+
yankTillMark(cm,"Shift-D"); mark = [];
|
287
|
+
},
|
288
|
+
"/": function(cm) {var f = CodeMirror.commands.find; f && f(cm); sdir = "f";},
|
289
|
+
"'?'": function(cm) {
|
290
|
+
var f = CodeMirror.commands.find;
|
291
|
+
if (f) { f(cm); CodeMirror.commands.findPrev(cm); sdir = "r"; }
|
292
|
+
},
|
293
|
+
"N": function(cm) {
|
294
|
+
var fn = CodeMirror.commands.findNext;
|
295
|
+
if (fn) sdir != "r" ? fn(cm) : CodeMirror.commands.findPrev(cm);
|
296
|
+
},
|
297
|
+
"Shift-N": function(cm) {
|
298
|
+
var fn = CodeMirror.commands.findNext;
|
299
|
+
if (fn) sdir != "r" ? CodeMirror.commands.findPrev(cm) : fn.findNext(cm);
|
300
|
+
},
|
301
|
+
"Shift-G": function(cm) {
|
302
|
+
count == "" ? cm.setCursor(cm.lineCount()) : cm.setCursor(parseInt(count, 10)-1);
|
303
|
+
popCount();
|
304
|
+
CodeMirror.commands.goLineStart(cm);
|
305
|
+
},
|
306
|
+
"':'": function(cm) {
|
307
|
+
var exModeDialog = ': <input type="text" style="width: 90%"/>';
|
308
|
+
dialog(cm, exModeDialog, ':', function(command) {
|
309
|
+
if (command.match(/^\d+$/)) {
|
310
|
+
cm.setCursor(command - 1, cm.getCursor().ch);
|
311
|
+
} else {
|
312
|
+
showAlert(cm, "Bad command: " + command);
|
313
|
+
}
|
314
|
+
});
|
315
|
+
},
|
316
|
+
nofallthrough: true, style: "fat-cursor"
|
317
|
+
};
|
318
|
+
|
319
|
+
// standard mode switching
|
320
|
+
iterList(["d", "t", "T", "f", "F", "c", "r"],
|
321
|
+
function (ch) {
|
322
|
+
CodeMirror.keyMap.vim[toCombo(ch)] = function (cm) {
|
323
|
+
cm.setOption("keyMap", "vim-prefix-" + ch);
|
324
|
+
emptyBuffer();
|
325
|
+
};
|
326
|
+
});
|
327
|
+
|
328
|
+
function addCountBindings(keyMap) {
|
329
|
+
// Add bindings for number keys
|
330
|
+
keyMap["0"] = function(cm) {
|
331
|
+
count.length > 0 ? pushCountDigit("0")(cm) : CodeMirror.commands.goLineStart(cm);
|
332
|
+
};
|
333
|
+
for (var i = 1; i < 10; ++i) keyMap[i] = pushCountDigit(i);
|
334
|
+
}
|
335
|
+
addCountBindings(CodeMirror.keyMap.vim);
|
336
|
+
|
337
|
+
// main num keymap
|
338
|
+
// Add bindings that are influenced by number keys
|
339
|
+
iterObj({
|
340
|
+
"Left": "goColumnLeft", "Right": "goColumnRight",
|
341
|
+
"Down": "goLineDown", "Up": "goLineUp", "Backspace": "goCharLeft",
|
342
|
+
"Space": "goCharRight",
|
343
|
+
"X": function(cm) {CodeMirror.commands.delCharRight(cm);},
|
344
|
+
"P": function(cm) {
|
345
|
+
var cur = cm.getCursor().line;
|
346
|
+
if (buf!= "") {
|
347
|
+
if (buf[0] == "\n") CodeMirror.commands.goLineEnd(cm);
|
348
|
+
cm.replaceRange(buf, cm.getCursor());
|
349
|
+
}
|
350
|
+
},
|
351
|
+
"Shift-X": function(cm) {CodeMirror.commands.delCharLeft(cm);},
|
352
|
+
"Shift-J": function(cm) {joinLineNext(cm);},
|
353
|
+
"Shift-P": function(cm) {
|
354
|
+
var cur = cm.getCursor().line;
|
355
|
+
if (buf!= "") {
|
356
|
+
CodeMirror.commands.goLineUp(cm);
|
357
|
+
CodeMirror.commands.goLineEnd(cm);
|
358
|
+
cm.replaceSelection(buf, "end");
|
359
|
+
}
|
360
|
+
cm.setCursor(cur+1);
|
361
|
+
},
|
362
|
+
"'~'": function(cm) {
|
363
|
+
var cur = cm.getCursor(), cHar = cm.getRange({line: cur.line, ch: cur.ch}, {line: cur.line, ch: cur.ch+1});
|
364
|
+
cHar = cHar != cHar.toLowerCase() ? cHar.toLowerCase() : cHar.toUpperCase();
|
365
|
+
cm.replaceRange(cHar, {line: cur.line, ch: cur.ch}, {line: cur.line, ch: cur.ch+1});
|
366
|
+
cm.setCursor(cur.line, cur.ch+1);
|
367
|
+
},
|
368
|
+
"Ctrl-B": function(cm) {CodeMirror.commands.goPageUp(cm);},
|
369
|
+
"Ctrl-F": function(cm) {CodeMirror.commands.goPageDown(cm);},
|
370
|
+
"Ctrl-P": "goLineUp", "Ctrl-N": "goLineDown",
|
371
|
+
"U": "undo", "Ctrl-R": "redo"
|
372
|
+
}, function(key, cmd) { map[key] = countTimes(cmd); });
|
373
|
+
|
374
|
+
// empty key maps
|
375
|
+
iterList([
|
376
|
+
"vim-prefix-d'",
|
377
|
+
"vim-prefix-y'",
|
378
|
+
"vim-prefix-df",
|
379
|
+
"vim-prefix-dF",
|
380
|
+
"vim-prefix-dt",
|
381
|
+
"vim-prefix-dT",
|
382
|
+
"vim-prefix-c",
|
383
|
+
"vim-prefix-cf",
|
384
|
+
"vim-prefix-cF",
|
385
|
+
"vim-prefix-ct",
|
386
|
+
"vim-prefix-cT",
|
387
|
+
"vim-prefix-",
|
388
|
+
"vim-prefix-f",
|
389
|
+
"vim-prefix-F",
|
390
|
+
"vim-prefix-t",
|
391
|
+
"vim-prefix-T",
|
392
|
+
"vim-prefix-r",
|
393
|
+
"vim-prefix-m"
|
394
|
+
],
|
395
|
+
function (prefix) {
|
396
|
+
CodeMirror.keyMap[prefix] = {
|
397
|
+
auto: "vim",
|
398
|
+
nofallthrough: true,
|
399
|
+
style: "fat-cursor"
|
400
|
+
};
|
401
|
+
});
|
402
|
+
|
403
|
+
CodeMirror.keyMap["vim-prefix-g"] = {
|
404
|
+
"E": countTimes(function(cm) { cm.setCursor(moveToWord(cm, word, -1, 1, "start"));}),
|
405
|
+
"Shift-E": countTimes(function(cm) { cm.setCursor(moveToWord(cm, bigWord, -1, 1, "start"));}),
|
406
|
+
"G": function (cm) { cm.setCursor({line: 0, ch: cm.getCursor().ch});},
|
407
|
+
auto: "vim", nofallthrough: true, style: "fat-cursor"
|
408
|
+
};
|
409
|
+
|
410
|
+
CodeMirror.keyMap["vim-prefix-d"] = {
|
411
|
+
"D": countTimes(function(cm) {
|
412
|
+
pushInBuffer("\n"+cm.getLine(cm.getCursor().line));
|
413
|
+
cm.removeLine(cm.getCursor().line);
|
414
|
+
cm.setOption("keyMap", "vim");
|
415
|
+
}),
|
416
|
+
"'": function(cm) {
|
417
|
+
cm.setOption("keyMap", "vim-prefix-d'");
|
418
|
+
emptyBuffer();
|
419
|
+
},
|
420
|
+
"B": function(cm) {
|
421
|
+
var cur = cm.getCursor();
|
422
|
+
var line = cm.getLine(cur.line);
|
423
|
+
var index = line.lastIndexOf(" ", cur.ch);
|
424
|
+
|
425
|
+
pushInBuffer(line.substring(index, cur.ch));
|
426
|
+
cm.replaceRange("", {line: cur.line, ch: index}, cur);
|
427
|
+
cm.setOption("keyMap", "vim");
|
428
|
+
},
|
429
|
+
nofallthrough: true, style: "fat-cursor"
|
430
|
+
};
|
431
|
+
// FIXME - does not work for bindings like "d3e"
|
432
|
+
addCountBindings(CodeMirror.keyMap["vim-prefix-d"]);
|
433
|
+
|
434
|
+
CodeMirror.keyMap["vim-prefix-c"] = {
|
435
|
+
"B": function (cm) {
|
436
|
+
countTimes("delWordLeft")(cm);
|
437
|
+
enterInsertMode(cm);
|
438
|
+
},
|
439
|
+
"C": function (cm) {
|
440
|
+
iterTimes(function (i, last) {
|
441
|
+
CodeMirror.commands.deleteLine(cm);
|
442
|
+
if (i) {
|
443
|
+
CodeMirror.commands.delCharRight(cm);
|
444
|
+
if (last) CodeMirror.commands.deleteLine(cm);
|
445
|
+
}
|
446
|
+
});
|
447
|
+
enterInsertMode(cm);
|
448
|
+
},
|
449
|
+
nofallthrough: true, style: "fat-cursor"
|
450
|
+
};
|
451
|
+
|
452
|
+
iterList(["vim-prefix-d", "vim-prefix-c", "vim-prefix-"], function (prefix) {
|
453
|
+
iterList(["f", "F", "T", "t"],
|
454
|
+
function (ch) {
|
455
|
+
CodeMirror.keyMap[prefix][toCombo(ch)] = function (cm) {
|
456
|
+
cm.setOption("keyMap", prefix + ch);
|
457
|
+
emptyBuffer();
|
458
|
+
};
|
459
|
+
});
|
460
|
+
});
|
461
|
+
|
462
|
+
var MOTION_OPTIONS = {
|
463
|
+
"t": {inclusive: false, forward: true},
|
464
|
+
"f": {inclusive: true, forward: true},
|
465
|
+
"T": {inclusive: false, forward: false},
|
466
|
+
"F": {inclusive: true, forward: false}
|
467
|
+
};
|
468
|
+
|
469
|
+
function setupPrefixBindingForKey(m) {
|
470
|
+
CodeMirror.keyMap["vim-prefix-m"][m] = function(cm) {
|
471
|
+
mark[m] = cm.getCursor().line;
|
472
|
+
};
|
473
|
+
CodeMirror.keyMap["vim-prefix-d'"][m] = function(cm) {
|
474
|
+
delTillMark(cm,m);
|
475
|
+
};
|
476
|
+
CodeMirror.keyMap["vim-prefix-y'"][m] = function(cm) {
|
477
|
+
yankTillMark(cm,m);
|
478
|
+
};
|
479
|
+
CodeMirror.keyMap["vim-prefix-r"][m] = function (cm) {
|
480
|
+
var cur = cm.getCursor();
|
481
|
+
cm.replaceRange(toLetter(m),
|
482
|
+
{line: cur.line, ch: cur.ch},
|
483
|
+
{line: cur.line, ch: cur.ch + 1});
|
484
|
+
CodeMirror.commands.goColumnLeft(cm);
|
485
|
+
};
|
486
|
+
// all commands, related to motions till char in line
|
487
|
+
iterObj(MOTION_OPTIONS, function (ch, options) {
|
488
|
+
CodeMirror.keyMap["vim-prefix-" + ch][m] = function(cm) {
|
489
|
+
moveTillChar(cm, m, options);
|
490
|
+
};
|
491
|
+
CodeMirror.keyMap["vim-prefix-d" + ch][m] = function(cm) {
|
492
|
+
delTillChar(cm, m, options);
|
493
|
+
};
|
494
|
+
CodeMirror.keyMap["vim-prefix-c" + ch][m] = function(cm) {
|
495
|
+
delTillChar(cm, m, options);
|
496
|
+
enterInsertMode(cm);
|
497
|
+
};
|
498
|
+
});
|
499
|
+
}
|
500
|
+
for (var i = 65; i < 65 + 26; i++) { // uppercase alphabet char codes
|
501
|
+
var ch = String.fromCharCode(i);
|
502
|
+
setupPrefixBindingForKey(toCombo(ch));
|
503
|
+
setupPrefixBindingForKey(toCombo(ch.toLowerCase()));
|
504
|
+
}
|
505
|
+
iterList(SPECIAL_SYMBOLS, function (ch) {
|
506
|
+
setupPrefixBindingForKey(toCombo(ch));
|
507
|
+
});
|
508
|
+
setupPrefixBindingForKey("Space");
|
509
|
+
|
510
|
+
CodeMirror.keyMap["vim-prefix-y"] = {
|
511
|
+
"Y": countTimes(function(cm) { pushInBuffer("\n"+cm.getLine(cm.getCursor().line+yank)); yank++; }),
|
512
|
+
"'": function(cm) {cm.setOption("keyMap", "vim-prefix-y'"); emptyBuffer();},
|
513
|
+
nofallthrough: true, style: "fat-cursor"
|
514
|
+
};
|
515
|
+
|
516
|
+
CodeMirror.keyMap["vim-insert"] = {
|
517
|
+
// TODO: override navigation keys so that Esc will cancel automatic indentation from o, O, i_<CR>
|
518
|
+
"Esc": function(cm) {
|
519
|
+
cm.setCursor(cm.getCursor().line, cm.getCursor().ch-1, true);
|
520
|
+
cm.setOption("keyMap", "vim");
|
521
|
+
},
|
522
|
+
"Ctrl-N": "autocomplete",
|
523
|
+
"Ctrl-P": "autocomplete",
|
524
|
+
fallthrough: ["default"]
|
525
|
+
};
|
526
|
+
|
527
|
+
function findMatchedSymbol(cm, cur, symb) {
|
528
|
+
var line = cur.line;
|
529
|
+
var symb = symb ? symb : cm.getLine(line)[cur.ch];
|
530
|
+
|
531
|
+
// Are we at the opening or closing char
|
532
|
+
var forwards = ['(', '[', '{'].indexOf(symb) != -1;
|
533
|
+
|
534
|
+
var reverseSymb = (function(sym) {
|
535
|
+
switch (sym) {
|
536
|
+
case '(' : return ')';
|
537
|
+
case '[' : return ']';
|
538
|
+
case '{' : return '}';
|
539
|
+
case ')' : return '(';
|
540
|
+
case ']' : return '[';
|
541
|
+
case '}' : return '{';
|
542
|
+
default : return null;
|
543
|
+
}
|
544
|
+
})(symb);
|
545
|
+
|
546
|
+
// Couldn't find a matching symbol, abort
|
547
|
+
if (reverseSymb == null) return cur;
|
548
|
+
|
549
|
+
// Tracking our imbalance in open/closing symbols. An opening symbol wii be
|
550
|
+
// the first thing we pick up if moving forward, this isn't true moving backwards
|
551
|
+
var disBal = forwards ? 0 : 1;
|
552
|
+
|
553
|
+
while (true) {
|
554
|
+
if (line == cur.line) {
|
555
|
+
// First pass, do some special stuff
|
556
|
+
var currLine = forwards ? cm.getLine(line).substr(cur.ch).split('') : cm.getLine(line).substr(0,cur.ch).split('').reverse();
|
557
|
+
} else {
|
558
|
+
var currLine = forwards ? cm.getLine(line).split('') : cm.getLine(line).split('').reverse();
|
559
|
+
}
|
560
|
+
|
561
|
+
for (var index = 0; index < currLine.length; index++) {
|
562
|
+
if (currLine[index] == symb) disBal++;
|
563
|
+
else if (currLine[index] == reverseSymb) disBal--;
|
564
|
+
|
565
|
+
if (disBal == 0) {
|
566
|
+
if (forwards && cur.line == line) return {line: line, ch: index + cur.ch};
|
567
|
+
else if (forwards) return {line: line, ch: index};
|
568
|
+
else return {line: line, ch: currLine.length - index - 1 };
|
569
|
+
}
|
570
|
+
}
|
571
|
+
|
572
|
+
if (forwards) line++;
|
573
|
+
else line--;
|
574
|
+
}
|
575
|
+
}
|
576
|
+
|
577
|
+
function selectCompanionObject(cm, revSymb, inclusive) {
|
578
|
+
var cur = cm.getCursor();
|
579
|
+
|
580
|
+
var end = findMatchedSymbol(cm, cur, revSymb);
|
581
|
+
var start = findMatchedSymbol(cm, end);
|
582
|
+
start.ch += inclusive ? 1 : 0;
|
583
|
+
end.ch += inclusive ? 0 : 1;
|
584
|
+
|
585
|
+
return {start: start, end: end};
|
586
|
+
}
|
587
|
+
|
588
|
+
// These are our motion commands to be used for navigation and selection with
|
589
|
+
// certian other commands. All should return a cursor object.
|
590
|
+
var motionList = ['B', 'E', 'J', 'K', 'H', 'L', 'W', 'Shift-W', "'^'", "'$'", "'%'", 'Esc'];
|
591
|
+
|
592
|
+
motions = {
|
593
|
+
'B': function(cm, times) { return moveToWord(cm, word, -1, times); },
|
594
|
+
'Shift-B': function(cm, times) { return moveToWord(cm, bigWord, -1, times); },
|
595
|
+
'E': function(cm, times) { return moveToWord(cm, word, 1, times, 'end'); },
|
596
|
+
'Shift-E': function(cm, times) { return moveToWord(cm, bigWord, 1, times, 'end'); },
|
597
|
+
'J': function(cm, times) {
|
598
|
+
var cur = cm.getCursor();
|
599
|
+
return {line: cur.line+times, ch : cur.ch};
|
600
|
+
},
|
601
|
+
|
602
|
+
'K': function(cm, times) {
|
603
|
+
var cur = cm.getCursor();
|
604
|
+
return {line: cur.line-times, ch: cur.ch};
|
605
|
+
},
|
606
|
+
|
607
|
+
'H': function(cm, times) {
|
608
|
+
var cur = cm.getCursor();
|
609
|
+
return {line: cur.line, ch: cur.ch-times};
|
610
|
+
},
|
611
|
+
|
612
|
+
'L': function(cm, times) {
|
613
|
+
var cur = cm.getCursor();
|
614
|
+
return {line: cur.line, ch: cur.ch+times};
|
615
|
+
},
|
616
|
+
'W': function(cm, times) { return moveToWord(cm, word, 1, times); },
|
617
|
+
'Shift-W': function(cm, times) { return moveToWord(cm, bigWord, 1, times); },
|
618
|
+
"'^'": function(cm, times) {
|
619
|
+
var cur = cm.getCursor();
|
620
|
+
var line = cm.getLine(cur.line).split('');
|
621
|
+
|
622
|
+
// Empty line :o
|
623
|
+
if (line.length == 0) return cur;
|
624
|
+
|
625
|
+
for (var index = 0; index < line.length; index++) {
|
626
|
+
if (line[index].match(/[^\s]/)) return {line: cur.line, ch: index};
|
627
|
+
}
|
628
|
+
},
|
629
|
+
"'$'": function(cm) {
|
630
|
+
var cur = cm.getCursor();
|
631
|
+
var line = cm.getLine(cur.line);
|
632
|
+
return {line: cur.line, ch: line.length};
|
633
|
+
},
|
634
|
+
"'%'": function(cm) { return findMatchedSymbol(cm, cm.getCursor()); },
|
635
|
+
"Esc" : function(cm) {
|
636
|
+
cm.setOption('vim');
|
637
|
+
reptTimes = 0;
|
638
|
+
|
639
|
+
return cm.getCursor();
|
640
|
+
}
|
641
|
+
};
|
642
|
+
|
643
|
+
// Map our movement actions each operator and non-operational movement
|
644
|
+
motionList.forEach(function(key, index, array) {
|
645
|
+
CodeMirror.keyMap['vim-prefix-d'][key] = function(cm) {
|
646
|
+
// Get our selected range
|
647
|
+
var start = cm.getCursor();
|
648
|
+
var end = motions[key](cm, reptTimes ? reptTimes : 1);
|
649
|
+
|
650
|
+
// Set swap var if range is of negative length
|
651
|
+
if ((start.line > end.line) || (start.line == end.line && start.ch > end.ch)) var swap = true;
|
652
|
+
|
653
|
+
// Take action, switching start and end if swap var is set
|
654
|
+
pushInBuffer(cm.getRange(swap ? end : start, swap ? start : end));
|
655
|
+
cm.replaceRange("", swap ? end : start, swap ? start : end);
|
656
|
+
|
657
|
+
// And clean up
|
658
|
+
reptTimes = 0;
|
659
|
+
cm.setOption("keyMap", "vim");
|
660
|
+
};
|
661
|
+
|
662
|
+
CodeMirror.keyMap['vim-prefix-c'][key] = function(cm) {
|
663
|
+
var start = cm.getCursor();
|
664
|
+
var end = motions[key](cm, reptTimes ? reptTimes : 1);
|
665
|
+
|
666
|
+
if ((start.line > end.line) || (start.line == end.line && start.ch > end.ch)) var swap = true;
|
667
|
+
pushInBuffer(cm.getRange(swap ? end : start, swap ? start : end));
|
668
|
+
cm.replaceRange("", swap ? end : start, swap ? start : end);
|
669
|
+
|
670
|
+
reptTimes = 0;
|
671
|
+
cm.setOption('keyMap', 'vim-insert');
|
672
|
+
};
|
673
|
+
|
674
|
+
CodeMirror.keyMap['vim-prefix-y'][key] = function(cm) {
|
675
|
+
var start = cm.getCursor();
|
676
|
+
var end = motions[key](cm, reptTimes ? reptTimes : 1);
|
677
|
+
|
678
|
+
if ((start.line > end.line) || (start.line == end.line && start.ch > end.ch)) var swap = true;
|
679
|
+
pushInBuffer(cm.getRange(swap ? end : start, swap ? start : end));
|
680
|
+
|
681
|
+
reptTimes = 0;
|
682
|
+
cm.setOption("keyMap", "vim");
|
683
|
+
};
|
684
|
+
|
685
|
+
CodeMirror.keyMap['vim'][key] = function(cm) {
|
686
|
+
var cur = motions[key](cm, reptTimes ? reptTimes : 1);
|
687
|
+
cm.setCursor(cur.line, cur.ch);
|
688
|
+
|
689
|
+
reptTimes = 0;
|
690
|
+
};
|
691
|
+
});
|
692
|
+
|
693
|
+
var nums = [1,2,3,4,5,6,7,8,9];
|
694
|
+
nums.forEach(function(key, index, array) {
|
695
|
+
CodeMirror.keyMap['vim'][key] = function (cm) {
|
696
|
+
reptTimes = (reptTimes * 10) + key;
|
697
|
+
};
|
698
|
+
CodeMirror.keyMap['vim-prefix-d'][key] = function (cm) {
|
699
|
+
reptTimes = (reptTimes * 10) + key;
|
700
|
+
};
|
701
|
+
CodeMirror.keyMap['vim-prefix-y'][key] = function (cm) {
|
702
|
+
reptTimes = (reptTimes * 10) + key;
|
703
|
+
};
|
704
|
+
CodeMirror.keyMap['vim-prefix-c'][key] = function (cm) {
|
705
|
+
reptTimes = (reptTimes * 10) + key;
|
706
|
+
};
|
707
|
+
});
|
708
|
+
|
709
|
+
// Create our keymaps for each operator and make xa and xi where x is an operator
|
710
|
+
// change to the corrosponding keymap
|
711
|
+
var operators = ['d', 'y', 'c'];
|
712
|
+
operators.forEach(function(key, index, array) {
|
713
|
+
CodeMirror.keyMap['vim-prefix-'+key+'a'] = {
|
714
|
+
auto: 'vim', nofallthrough: true, style: "fat-cursor"
|
715
|
+
};
|
716
|
+
CodeMirror.keyMap['vim-prefix-'+key+'i'] = {
|
717
|
+
auto: 'vim', nofallthrough: true, style: "fat-cursor"
|
718
|
+
};
|
719
|
+
|
720
|
+
CodeMirror.keyMap['vim-prefix-'+key]['A'] = function(cm) {
|
721
|
+
reptTimes = 0;
|
722
|
+
cm.setOption('keyMap', 'vim-prefix-' + key + 'a');
|
723
|
+
};
|
724
|
+
|
725
|
+
CodeMirror.keyMap['vim-prefix-'+key]['I'] = function(cm) {
|
726
|
+
reptTimes = 0;
|
727
|
+
cm.setOption('keyMap', 'vim-prefix-' + key + 'i');
|
728
|
+
};
|
729
|
+
});
|
730
|
+
|
731
|
+
function regexLastIndexOf(string, pattern, startIndex) {
|
732
|
+
for (var i = startIndex == null ? string.length : startIndex; i >= 0; --i)
|
733
|
+
if (pattern.test(string.charAt(i))) return i;
|
734
|
+
return -1;
|
735
|
+
}
|
736
|
+
|
737
|
+
// Create our text object functions. They work similar to motions but they
|
738
|
+
// return a start cursor as well
|
739
|
+
var textObjectList = ['W', 'Shift-[', 'Shift-9', '['];
|
740
|
+
var textObjects = {
|
741
|
+
'W': function(cm, inclusive) {
|
742
|
+
var cur = cm.getCursor();
|
743
|
+
var line = cm.getLine(cur.line);
|
744
|
+
|
745
|
+
var line_to_char = new String(line.substring(0, cur.ch));
|
746
|
+
var start = regexLastIndexOf(line_to_char, /[^a-zA-Z0-9]/) + 1;
|
747
|
+
var end = motions["E"](cm, 1) ;
|
748
|
+
|
749
|
+
end.ch += inclusive ? 1 : 0 ;
|
750
|
+
return {start: {line: cur.line, ch: start}, end: end };
|
751
|
+
},
|
752
|
+
'Shift-[': function(cm, inclusive) { return selectCompanionObject(cm, '}', inclusive); },
|
753
|
+
'Shift-9': function(cm, inclusive) { return selectCompanionObject(cm, ')', inclusive); },
|
754
|
+
'[': function(cm, inclusive) { return selectCompanionObject(cm, ']', inclusive); }
|
755
|
+
};
|
756
|
+
|
757
|
+
// One function to handle all operation upon text objects. Kinda funky but it works
|
758
|
+
// better than rewriting this code six times
|
759
|
+
function textObjectManipulation(cm, object, remove, insert, inclusive) {
|
760
|
+
// Object is the text object, delete object if remove is true, enter insert
|
761
|
+
// mode if insert is true, inclusive is the difference between a and i
|
762
|
+
var tmp = textObjects[object](cm, inclusive);
|
763
|
+
var start = tmp.start;
|
764
|
+
var end = tmp.end;
|
765
|
+
|
766
|
+
if ((start.line > end.line) || (start.line == end.line && start.ch > end.ch)) var swap = true ;
|
767
|
+
|
768
|
+
pushInBuffer(cm.getRange(swap ? end : start, swap ? start : end));
|
769
|
+
if (remove) cm.replaceRange("", swap ? end : start, swap ? start : end);
|
770
|
+
if (insert) cm.setOption('keyMap', 'vim-insert');
|
771
|
+
}
|
772
|
+
|
773
|
+
// And finally build the keymaps up from the text objects
|
774
|
+
for (var i = 0; i < textObjectList.length; ++i) {
|
775
|
+
var object = textObjectList[i];
|
776
|
+
(function(object) {
|
777
|
+
CodeMirror.keyMap['vim-prefix-di'][object] = function(cm) { textObjectManipulation(cm, object, true, false, false); };
|
778
|
+
CodeMirror.keyMap['vim-prefix-da'][object] = function(cm) { textObjectManipulation(cm, object, true, false, true); };
|
779
|
+
CodeMirror.keyMap['vim-prefix-yi'][object] = function(cm) { textObjectManipulation(cm, object, false, false, false); };
|
780
|
+
CodeMirror.keyMap['vim-prefix-ya'][object] = function(cm) { textObjectManipulation(cm, object, false, false, true); };
|
781
|
+
CodeMirror.keyMap['vim-prefix-ci'][object] = function(cm) { textObjectManipulation(cm, object, true, true, false); };
|
782
|
+
CodeMirror.keyMap['vim-prefix-ca'][object] = function(cm) { textObjectManipulation(cm, object, true, true, true); };
|
783
|
+
})(object)
|
784
|
+
}
|
785
|
+
})();
|