vimamsa 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: edba3dbb2734fa7d7c9993b0eabd14db7deaf479967adf8892cfa55b80d27581
4
- data.tar.gz: d9f9d082135e9379cbca81331f068b715a24c38c9e1afdbd41b491b21e3f58a0
3
+ metadata.gz: 06e99c11af9802815672e7b3cc220668fe9a0d6837760ff1cd5ca8b029ca04bc
4
+ data.tar.gz: b61f32cdaebc0cce856e832567787da9a9d041ed46000463d226959aee492373
5
5
  SHA512:
6
- metadata.gz: bbf0f4a8285e870acec56488904f63af46c14eabfbcb8ec93e61acf6822074613a35507824efc60f560bec128727f37045d8a208b1618adeb326258617e2e5eb
7
- data.tar.gz: 6891310332870fb8639dacda25d6fceb4adcfd292aea70dcd49bed96f2350aa5f41d6978f94bfea2a8e751b63b9f52ced790b34c14c4bd606d7037d3d99282e6
6
+ metadata.gz: d26574ac402e3f2de520d84db614c26a8760bbbae75fa422dd44d0af2145df2ffcfea8fd8c5f8d45735c0367f36ab85d895660822d7f471a6ba7db2bd5e3513a
7
+ data.tar.gz: 3e95a3a334284bf3143e67283354c064e23afe2b3332cb5c2f4fc98fe4f80adeee2c4ee39b3759f95b72ff543269e8705d54162e8b04acc5448e41e522360600
data/.vma_project ADDED
File without changes
data/README.md CHANGED
@@ -1,35 +1,129 @@
1
1
  # Vimamsa
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/vimamsa`. To experiment with that code, run `bin/console` for an interactive prompt.
3
+ Vi/Vim -inspired experimental GUI-oriented text editor written with Ruby and GTK.
4
4
 
5
- TODO: Delete this and the text above, and describe your gem
5
+
6
+ ## Requirements
7
+ - Ruby 2.0+
8
+ - GTK 3
6
9
 
7
10
  ## Installation
8
11
 
9
- Add this line to your application's Gemfile:
10
12
 
11
- ```ruby
12
- gem 'vimamsa'
13
+ On Ubuntu:
14
+ ```
15
+ sudo apt install ruby-dev
16
+ sudo gem install vimamsa
13
17
  ```
14
18
 
15
- And then execute:
19
+ Run:
20
+ ```
21
+ vimamsa
22
+ ```
16
23
 
17
- $ bundle
24
+ Packages for optional features:
25
+ ```
26
+ sudo apt install ack-grep clang-format
27
+ ```
18
28
 
19
- Or install it yourself as:
29
+ For customization, edit dot_vimamsarc.rb and copy to ~/.vimamsarc
20
30
 
21
- $ gem install vimamsa
31
+ ## Key bindings
22
32
 
23
- ## Usage
33
+ Key bindings are very much like in VIm. For details, see file lib/vimamsa/key_bindings.rb and lib/vimamsa/default_bindings.rb
24
34
 
25
- TODO: Write usage instructions here
35
+ Keys that work somewhat similarly as in Vim:
26
36
 
27
- ## Development
37
+ In Command mode:
38
+ ```
39
+ j k l h w b p P G f F ; 0 $ v i o J * / a A I u ctrl-r x
40
+ zz dd dw gg <linenum>G r<char>
41
+ ```
42
+
43
+ In Visual mode:
44
+ ```
45
+ d y gU gu
46
+ ```
28
47
 
29
- After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
48
+ Keys that work differently to Vim are documented in the tables below
49
+
50
+ Syntax:
51
+ ctrl! means press and immediate release of ctrl key. Triggered by key up event.
52
+ ctrl-x means press and hold ctrl key, press x
53
+
54
+ <table>
55
+ <colgroup>
56
+ <col style="text-align:center;"/>
57
+ <col style="text-align:left;"/>
58
+ </colgroup>
59
+
60
+ <thead> <tr> <th style="text-align:center;" colspan="4">Command mode keys</th> </tr> </thead>
61
+
62
+ <tbody>
63
+ <tr><th>Key</th><th>Action</th></tr>
64
+ <tr><td style="text-align:center;">ctrl!</td> <td style="text-align:left;">switch between command and insert modes</td> </tr>
65
+ <tr> <td style="text-align:center;">z</td> <td style="text-align:left;"> enter into BROWSE mode</td></tr>
66
+ <tr> <td style="text-align:center;">shift!</td> <td style="text-align:left;">save file</td> </tr>
67
+ <tr> <td style="text-align:center;">s</td> <td style="text-align:left;">Easy jump (Similar to Vim EasyMotion https://github.com/easymotion/vim-easymotion ) </td> </tr>
68
+ <tr> <td style="text-align:center;">tab</td> <td style="text-align:left;">switch betwen current and previous buffer/file</td></tr>
69
+ <tr> <td style="text-align:center;">enter</td> <td style="text-align:left;"> (when cursor on link) open url in browser </td></tr>
70
+ <tr> <td style="text-align:center;">enter</td> <td style="text-align:left;">(when cursor on /path/to/file.txt:linenum ) open file in editor, jump to linenum </td></tr>
71
+ <tr> <td style="text-align:center;">,a</td> <td style="text-align:left;">Search for string using ack
72
+ </td></tr>
73
+ <tr> <td style="text-align:center;">,b</td> <td style="text-align:left;"> Switch buffer (jump to other open file)</td></tr>
74
+ <tr> <td style="text-align:center;">,g</td> <td style="text-align:left;">search for input string inside current buffer</td></tr>
75
+ <tr> <td style="text-align:center;">,f</td> <td style="text-align:left;">Fuzzy filename search</td></tr>
76
+ <tr> <td style="text-align:center;">space c</td> <td style="text-align:left;">insert character "c"</td></tr>
77
+ </tbody>
78
+ </table>
79
+
80
+ <table>
81
+ <colgroup>
82
+ <col style="text-align:center;"/>
83
+ <col style="text-align:left;"/>
84
+ </colgroup>
85
+
86
+ <thead> <tr> <th style="text-align:center;" colspan="4">Insert mode keys (similar to bash or emacs)</th> </tr> </thead>
87
+
88
+ <tbody>
89
+ <tr> <td style="text-align:center;">ctrl! OR esc</td> <td style="text-align:left;">Switch to command mode</td></tr>
90
+ <tr> <td style="text-align:center;">ctrl-n</td> <td style="text-align:left;">Move to next line</td></tr>
91
+ <tr> <td style="text-align:center;">ctrl-p</td> <td style="text-align:left;">Move to previous line</td></tr>
92
+ <tr> <td style="text-align:center;">ctrl-a</td> <td style="text-align:left;">Move beginning of line</td></tr>
93
+ <tr> <td style="text-align:center;">ctrl-e</td> <td style="text-align:left;">Move to end of line</td></tr>
94
+ <tr> <td style="text-align:center;">ctrl-b</td> <td style="text-align:left;">Move backward one char</td></tr>
95
+ <tr> <td style="text-align:center;">ctrl-f</td> <td style="text-align:left;">Move forward one char</td></tr>
96
+ <tr> <td style="text-align:center;">alt-f</td> <td style="text-align:left;">Move forward one word</td></tr>
97
+ <tr> <td style="text-align:center;">alt-b</td> <td style="text-align:left;">Move backward one word</td></tr>
98
+ </tbody>
99
+ </table>
100
+
101
+
102
+ <table>
103
+ <colgroup>
104
+ <col style="text-align:center;"/>
105
+ <col style="text-align:left;"/>
106
+ </colgroup>
107
+
108
+ <thead> <tr> <th style="text-align:center;" colspan="4">Browse mode keys</th> </tr> </thead>
109
+
110
+ <tbody>
111
+ <tr> <td style="text-align:center;">h</td> <td style="text-align:left;">jump to previous buffer in history</td></tr>
112
+ <tr> <td style="text-align:center;">l</td> <td style="text-align:left;">jump to next buffer in history</td></tr>
113
+ <tr> <td style="text-align:center;">q</td> <td style="text-align:left;">jump to previous edited position</td></tr>
114
+ <tr> <td style="text-align:center;">w</td> <td style="text-align:left;">jump to next edited position</td></tr>
115
+ <tr> <td style="text-align:center;">j OR esc</td> <td style="text-align:left;">switch from browse to command mode</td></tr>
116
+ </tbody>
117
+ </table>
118
+
119
+ Bindings can be customized in ~/.vimamsarc
120
+ For example, to bind ctrl-n to action "create new file":
121
+ ```
122
+ bindkey 'C ctrl-n', 'create_new_file()'
123
+ ```
30
124
 
31
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
125
+ ## Current limitations
126
+ - UTF8 only
127
+ - Line endings with "\n"
32
128
 
33
- ## Contributing
34
129
 
35
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/vimamsa.
@@ -1,3 +1,3 @@
1
1
  module Vimamsa
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
data/vimamsa.gemspec CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.email = ["sami.sieranoja@gmail.com"]
11
11
 
12
12
  spec.summary = %q{Vimamsa}
13
- spec.description = %q{Vimamsa.}
13
+ spec.description = %q{Vi/Vim -inspired experimental GUI-oriented text editor written with Ruby and GTK.}
14
14
  spec.homepage = "https://github.com/SamiSieranoja/vimamsa"
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
21
21
  spec.require_paths = ["lib","ext"]
22
22
 
23
23
  spec.add_development_dependency "bundler", "~> 1.16"
24
- spec.add_development_dependency "rake", "~> 10.0"
24
+ spec.add_development_dependency "rake", "~> 13.0"
25
25
 
26
26
  spec.add_runtime_dependency 'rufo', '~> 0.5'
27
27
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vimamsa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sami Sieranoja
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '13.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: '13.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rufo
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -150,7 +150,8 @@ dependencies:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
152
  version: '1.14'
153
- description: Vimamsa.
153
+ description: Vi/Vim -inspired experimental GUI-oriented text editor written with Ruby
154
+ and GTK.
154
155
  email:
155
156
  - sami.sieranoja@gmail.com
156
157
  executables:
@@ -160,14 +161,13 @@ extensions:
160
161
  extra_rdoc_files: []
161
162
  files:
162
163
  - ".gitignore"
164
+ - ".vma_project"
163
165
  - Gemfile
164
166
  - README.md
165
167
  - Rakefile
166
168
  - bin/console
167
169
  - bin/setup
168
170
  - exe/vimamsa
169
- - ext/vimamsa/extconf.rb
170
- - ext/vimamsa/vimamsa.c
171
171
  - ext/vmaext/extconf.rb
172
172
  - ext/vmaext/vmaext.c
173
173
  - lang/hyperplaintext.lang
@@ -220,8 +220,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
220
220
  - !ruby/object:Gem::Version
221
221
  version: '0'
222
222
  requirements: []
223
- rubyforge_project:
224
- rubygems_version: 2.7.6
223
+ rubygems_version: 3.1.2
225
224
  signing_key:
226
225
  specification_version: 4
227
226
  summary: Vimamsa
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env ruby
2
- #
3
-
4
- require 'mkmf'
5
-
6
- module_name = "vimamsa"
7
- extension_name = 'vimamsa'
8
-
9
- dir_config(extension_name) # The destination
10
- create_makefile(extension_name) # Create Makefile
11
-
@@ -1,174 +0,0 @@
1
- #include <ruby.h>
2
- // #include <gtk/gtk.h>
3
- #include "ruby/ruby.h"
4
-
5
- #include <stdio.h>
6
- #include <string.h>
7
- #include <stdlib.h>
8
-
9
- #warning "C Preprocessor got here!"
10
-
11
- typedef struct node {
12
- int i;
13
- void * next;
14
- } node;
15
-
16
-
17
- void add_to_list(unsigned char c, int i, struct node ** t) {
18
- struct node * n;
19
- struct node * np;
20
-
21
- n =(struct node*) calloc(1,sizeof(struct node)); //TODO: free
22
- n->i = i;
23
- if(!t[c]) {
24
- t[c] = n;
25
- }
26
- else {
27
- np = t[c];
28
- while (np->next) {
29
- np = np->next;
30
- }
31
- np->next = n;
32
- }
33
- }
34
-
35
- void dump_list(struct node**t) {
36
- for(int i=0;i < 256; i++) {
37
- if(t[i]) {
38
- printf ("\n%c: ", (char) i);
39
- struct node * n = t[i];
40
- do {
41
- printf ("%d ", n->i);
42
- }
43
- while (n = n->next);
44
- }
45
- }
46
- }
47
-
48
- float calc_sub_score(unsigned char* s1, unsigned char* s2, int i1, int i2) {
49
-
50
- int s1_len = strlen(s1);
51
- int s2_len = strlen(s2);
52
- float sub_score = 1;
53
- float score_inc = 1;
54
- float score_inc_multip = 0.63212;
55
- //float score_inc_multip = 0.23212;
56
-
57
-
58
- // From i2 to zero
59
- int i_s1 = i1-1;
60
- //printf("{");
61
- for (int i_s2=i2-1; i_s2 >= 0 && i_s1 >= 0;) {
62
- if(s1[i_s1] == s2[i_s2]) {
63
- //printf("%c",s1[i_s1]);
64
- i_s1--; i_s2--;
65
- sub_score += score_inc;
66
- score_inc = 1;
67
- }
68
- else {i_s2--; score_inc = score_inc*score_inc_multip;}
69
- }
70
-
71
-
72
- // From i2 to end
73
- score_inc = 1;
74
- i_s1 = i1+1;
75
- //printf("%c",s1[i1]);
76
- for (int i_s2=i2+1; i_s2 < s2_len && i_s1 < s1_len;) {
77
- if(s1[i_s1] == s2[i_s2]) {
78
- //printf("%c",s1[i_s1]);
79
- i_s1++; i_s2++;
80
- sub_score += score_inc;
81
- score_inc = 1;
82
- }
83
- else {i_s2++;score_inc = score_inc*score_inc_multip;}
84
- }
85
-
86
-
87
- //printf("}");
88
- return sub_score;
89
-
90
- }
91
-
92
- float srn_dst(char * s1_sgn, char * s2_sgn) {
93
- unsigned char* s1;
94
- unsigned char* s2;
95
- s1 = (unsigned char *) s1_sgn;
96
- s2 = (unsigned char *) s2_sgn;
97
- struct node** t;
98
- int len_s1 = strlen(s1);
99
- int len_s2 = strlen(s2);
100
- t = (struct node**) calloc(256,sizeof(struct node*));
101
- float score=0;
102
- node * nA;
103
- node * nB;
104
- //printf("l1,2: %d %d\n",len_s1,len_s2);
105
-
106
- for(int i_s2=0;i_s2 < strlen(s2); i_s2++) {
107
- add_to_list(s2[i_s2],i_s2,t);
108
- }
109
-
110
- for(int i_s1=0;i_s1 < strlen(s1); i_s1++) {
111
- struct node * n = t[s1[i_s1]];
112
- if (n) {
113
- float max_score = 0;
114
- unsigned char c = s1[i_s1];
115
- do {
116
- float sub_score = calc_sub_score(s1,s2,i_s1,n->i);
117
- if(sub_score > max_score) {max_score = sub_score;}
118
- //printf(" i=%d %c %d [%f] \n",i_s1,c,n->i,sub_score);
119
- } while(n = n->next);
120
- score += max_score;
121
- }
122
- }
123
-
124
- //dump_list(t);
125
- float p =0.01;
126
- score = (1-p)*score/(len_s1*len_s1) +p*score/(len_s1*len_s2);
127
-
128
- // Free memory
129
- for(int i=0;i<256;i++) {
130
- if(t[i]) {
131
- // node * nA = t[i];
132
- // node * nB;
133
- nA = t[i];
134
- do {
135
- nB = nA->next;
136
- free(nA);
137
- nA = nB;
138
- } while (nA);
139
- }
140
- }
141
- free(t);
142
-
143
- return score;
144
- }
145
-
146
- void srn_dst_wrap(void *y) {
147
- void **x = (void **)y;
148
- char *a = (char *)x[0];
149
- char *b = (char *)x[1];
150
- float *d = (float *)x[2];
151
- *d = srn_dst(a, b);
152
- // printf("00000 A:%s B:%s %f\n",a,b,*d);
153
- }
154
-
155
- VALUE _srn_dst(VALUE self, VALUE s1, VALUE s2) {
156
- VALUE ret;
157
- float d;
158
- void **ptr = malloc(sizeof(void *) * 3);
159
- ptr[0] = (void *)StringValueCStr(s1);
160
- ptr[1] = (void *)StringValueCStr(s2);
161
- ptr[2] = (void *)&d;
162
- rb_thread_call_without_gvl(srn_dst_wrap, ptr, NULL, NULL);
163
- // d = srn_dst(StringValueCStr(s1), StringValueCStr(s2));
164
- ret = rb_float_new(d);
165
- free(ptr);
166
- return ret;
167
- }
168
-
169
- void Init_vimamsa(void) {
170
- printf("Init_vimamsa\n");
171
- rb_define_global_function("srn_dst", _srn_dst, 2);
172
- }
173
-
174
-