diakonos 0.9.12 → 0.10.0
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.
- checksums.yaml +4 -4
- data/CHANGELOG +10 -0
- data/diakonos.conf +161 -3
- data/help/ruby.dhf +5 -1
- data/lib/diakonos/bookmark.rb +10 -10
- data/lib/diakonos/buffer/bookmarking.rb +7 -7
- data/lib/diakonos/buffer/cursor.rb +32 -35
- data/lib/diakonos/buffer/delete.rb +24 -24
- data/lib/diakonos/buffer/display.rb +100 -73
- data/lib/diakonos/buffer/file.rb +29 -9
- data/lib/diakonos/buffer/indentation.rb +32 -21
- data/lib/diakonos/buffer/searching.rb +36 -34
- data/lib/diakonos/buffer/selection.rb +65 -46
- data/lib/diakonos/buffer/undo.rb +12 -7
- data/lib/diakonos/buffer-management.rb +2 -3
- data/lib/diakonos/buffer.rb +163 -65
- data/lib/diakonos/clipboard-klipper-dbus.rb +15 -2
- data/lib/diakonos/clipboard-klipper.rb +1 -0
- data/lib/diakonos/clipboard-xclip.rb +2 -0
- data/lib/diakonos/clipboard.rb +4 -2
- data/lib/diakonos/config.rb +72 -53
- data/lib/diakonos/core-ext/enumerable.rb +7 -6
- data/lib/diakonos/core-ext/hash.rb +4 -5
- data/lib/diakonos/core-ext/object.rb +1 -2
- data/lib/diakonos/core-ext/regexp.rb +0 -1
- data/lib/diakonos/core-ext/string.rb +95 -98
- data/lib/diakonos/ctag.rb +13 -17
- data/lib/diakonos/cursor.rb +4 -4
- data/lib/diakonos/display/format.rb +36 -34
- data/lib/diakonos/display.rb +151 -79
- data/lib/diakonos/extension-set.rb +2 -2
- data/lib/diakonos/extension.rb +1 -1
- data/lib/diakonos/finding.rb +1 -1
- data/lib/diakonos/functions/basics.rb +2 -2
- data/lib/diakonos/functions/bookmarking.rb +9 -4
- data/lib/diakonos/functions/buffers.rb +31 -30
- data/lib/diakonos/functions/cursor.rb +21 -6
- data/lib/diakonos/functions/grepping.rb +3 -3
- data/lib/diakonos/functions/indentation.rb +3 -3
- data/lib/diakonos/functions/lsp.rb +116 -0
- data/lib/diakonos/functions/readline.rb +1 -1
- data/lib/diakonos/functions/search.rb +15 -15
- data/lib/diakonos/functions/selection.rb +3 -3
- data/lib/diakonos/functions/sessions.rb +3 -3
- data/lib/diakonos/functions/shell.rb +38 -35
- data/lib/diakonos/functions/tags.rb +7 -5
- data/lib/diakonos/functions/text-manipulation.rb +7 -8
- data/lib/diakonos/functions-deprecated.rb +72 -70
- data/lib/diakonos/functions.rb +20 -13
- data/lib/diakonos/grep.rb +17 -16
- data/lib/diakonos/help.rb +4 -3
- data/lib/diakonos/hooks.rb +2 -2
- data/lib/diakonos/installation.rb +9 -9
- data/lib/diakonos/interaction-handler.rb +6 -6
- data/lib/diakonos/interaction.rb +2 -2
- data/lib/diakonos/key-map.rb +5 -5
- data/lib/diakonos/keying.rb +150 -145
- data/lib/diakonos/line-mover.rb +4 -2
- data/lib/diakonos/list.rb +2 -4
- data/lib/diakonos/logging.rb +5 -7
- data/lib/diakonos/lsp/diagnostic.rb +42 -0
- data/lib/diakonos/lsp/server.rb +184 -0
- data/lib/diakonos/lsp/session.rb +194 -0
- data/lib/diakonos/lsp/transport.rb +48 -0
- data/lib/diakonos/lsp.rb +5 -0
- data/lib/diakonos/mouse.rb +1 -1
- data/lib/diakonos/number-fitter.rb +2 -2
- data/lib/diakonos/range.rb +6 -6
- data/lib/diakonos/readline/functions.rb +8 -3
- data/lib/diakonos/readline.rb +8 -7
- data/lib/diakonos/search.rb +21 -23
- data/lib/diakonos/sessions.rb +9 -10
- data/lib/diakonos/sized-array.rb +38 -39
- data/lib/diakonos/text-mark.rb +1 -0
- data/lib/diakonos/vendor/fuzzy_file_finder.rb +11 -11
- data/lib/diakonos/version.rb +18 -10
- data/lib/diakonos/window.rb +4 -4
- data/lib/diakonos.rb +148 -65
- metadata +26 -10
- data/lib/diakonos/buffer-hash.rb +0 -60
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ec473dc61826cd6bbf05d8dac8dada0301027e08d3157f3974e2f26b252d64bc
|
|
4
|
+
data.tar.gz: 43884c5a26d6d365afd03dbd35a2c2f2f532db8c14098a64228a8a5a82ac95e4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 55ade0e7d34bf4aa080908f79c9bafb45c582872b51eb6ab7d89caae28a7ed997320699d1ac2e4a3f0b7fd68dd7972bb9ea50ad3229094c6a9c5d10e70c6f4e2
|
|
7
|
+
data.tar.gz: b8d29f7a53609b9ad63a0b3a096c7255343e81192e1ecb6d213a45294b42411378a4731879269f061a81c015f13197e4fd5603c967d4cfd81d9b8996a950ad3c
|
data/CHANGELOG
CHANGED
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
Diakonos Changelog
|
|
2
2
|
------------------
|
|
3
3
|
|
|
4
|
+
0.10.0
|
|
5
|
+
|
|
6
|
+
- Fix syntax highlighting of multi-line things (e.g. strings, comments)
|
|
7
|
+
- Add preliminary Language Server Protocol support
|
|
8
|
+
- diagnostics (errors, info) per line
|
|
9
|
+
- go to definition
|
|
10
|
+
- hover info
|
|
11
|
+
- Automatically close forgotten buffers
|
|
12
|
+
- Fix automatic indentation
|
|
13
|
+
|
|
4
14
|
0.9.12
|
|
5
15
|
|
|
6
16
|
- Fix opening of already-open file
|
data/diakonos.conf
CHANGED
|
@@ -6,6 +6,9 @@ logfile ~/.diakonos/diakonos.log
|
|
|
6
6
|
|
|
7
7
|
# mouse false
|
|
8
8
|
|
|
9
|
+
# Interval (in ms) at which the main loop polls for async events (e.g. LSP).
|
|
10
|
+
async_update_interval 100
|
|
11
|
+
|
|
9
12
|
# ---------------------------------------------------------------------
|
|
10
13
|
# Colour Definitions
|
|
11
14
|
#
|
|
@@ -52,10 +55,11 @@ view.wrap.visual true
|
|
|
52
55
|
view.pairs.highlight true
|
|
53
56
|
|
|
54
57
|
view.line_numbers false
|
|
55
|
-
view.line_numbers.
|
|
58
|
+
view.line_numbers.diagnostic_marker ●
|
|
59
|
+
view.line_numbers.format white
|
|
56
60
|
# view.line_numbers.number_format is a "printf" style format string
|
|
57
61
|
view.line_numbers.number_format "%3s "
|
|
58
|
-
view.line_numbers.
|
|
62
|
+
view.line_numbers.width 4
|
|
59
63
|
|
|
60
64
|
#view.column_markers.margin.column 80
|
|
61
65
|
view.column_markers.margin.format 9
|
|
@@ -175,6 +179,12 @@ context.separator |
|
|
|
175
179
|
context.separator.format red inverse
|
|
176
180
|
#context.max_segment_width 10
|
|
177
181
|
|
|
182
|
+
# ---------------------------------------------------------------------
|
|
183
|
+
# Dock Pane
|
|
184
|
+
|
|
185
|
+
# Maximum height (in lines) of the dock pane, including its separator line.
|
|
186
|
+
dock.max_height 10
|
|
187
|
+
|
|
178
188
|
# ---------------------------------------------------------------------
|
|
179
189
|
# Interaction Line
|
|
180
190
|
|
|
@@ -321,6 +331,9 @@ key alt+b alt+5;goToNamedBookmark 5
|
|
|
321
331
|
key alt+t;goToTag
|
|
322
332
|
key alt+);goToTagUnderCursor
|
|
323
333
|
key alt+(;popTag
|
|
334
|
+
# Ctrl-]
|
|
335
|
+
key keycode29;go_to_definition
|
|
336
|
+
key alt+/;hover
|
|
324
337
|
|
|
325
338
|
key backspace backspace
|
|
326
339
|
key ctrl+h backspace
|
|
@@ -772,6 +785,7 @@ lang.xml.surround.pair "<!--" "<!-- " " -->"
|
|
|
772
785
|
lang.xml.surround.pair "/^<(.+?)>$/" "<\1>" "</\1>"
|
|
773
786
|
|
|
774
787
|
lang.html.filemask \.([rx]?html?|php|asp|erb|handlebars|mustache)$
|
|
788
|
+
# lang.html.lsp.command vscode-html-language-server --stdio
|
|
775
789
|
lang.html.format.default white
|
|
776
790
|
lang.html.format.selection inverse
|
|
777
791
|
lang.html.format.found yellow inverse
|
|
@@ -846,6 +860,7 @@ lang.html.surround.pair "/^<(.+?)>$/" "<\1>" "</\1>"
|
|
|
846
860
|
# CSS
|
|
847
861
|
|
|
848
862
|
lang.css.filemask \.(?:s?css|less)$
|
|
863
|
+
# lang.css.lsp.command vscode-css-language-server --stdio
|
|
849
864
|
lang.css.format.default white
|
|
850
865
|
lang.css.format.selection inverse
|
|
851
866
|
lang.css.format.found yellow inverse
|
|
@@ -880,7 +895,8 @@ lang.css.tokens.variables.format cyan bold
|
|
|
880
895
|
|
|
881
896
|
# Javascript, ES6
|
|
882
897
|
|
|
883
|
-
lang.javascript.filemask \.(?:[cm]?jsx?|es6|tsx
|
|
898
|
+
lang.javascript.filemask \.(?:[cm]?jsx?|es6|tsx?)$
|
|
899
|
+
# lang.javascript.lsp.command typescript-language-server --stdio
|
|
884
900
|
lang.javascript.format.default white bold
|
|
885
901
|
lang.javascript.format.selection inverse
|
|
886
902
|
lang.javascript.format.found yellow inverse
|
|
@@ -928,10 +944,44 @@ lang.javascript.closers.for.regexp for$
|
|
|
928
944
|
lang.javascript.closers.for.closer { |m| "( $i = 0; $i < limit; $i++ ) {\n%_\n}" }
|
|
929
945
|
lang.javascript.column_delimiters =|:|,
|
|
930
946
|
|
|
947
|
+
lang.json.filemask \.json$
|
|
948
|
+
# lang.json.lsp.command vscode-json-language-server --stdio
|
|
949
|
+
lang.json.format.default white bold
|
|
950
|
+
lang.json.format.selection inverse
|
|
951
|
+
lang.json.format.found yellow inverse
|
|
952
|
+
lang.json.tokens.doublequoted_strings (\".*?[^\\]?\")
|
|
953
|
+
lang.json.tokens.doublequoted_strings.format green bold
|
|
954
|
+
lang.json.tokens.singlequoted_strings ('.*?[^\\]')
|
|
955
|
+
lang.json.tokens.singlequoted_strings.format green bold
|
|
956
|
+
lang.json.tokens.comments (\/\/.*)
|
|
957
|
+
# Comments not allowed in JSON
|
|
958
|
+
lang.json.tokens.comments.format = red inverse
|
|
959
|
+
lang.json.comment_string "/* "
|
|
960
|
+
lang.json.comment_close_string " */"
|
|
961
|
+
lang.json.tokens.long_comments.open \/\*
|
|
962
|
+
lang.json.tokens.long_comments.close \*\/
|
|
963
|
+
# Comments not allowed in JSON
|
|
964
|
+
lang.json.tokens.long_comments.format = red inverse
|
|
965
|
+
lang.json.tokens.non_alphanum ([!@#$%\^&*()\[\]{}/?=+\-\\|,<.>;:])
|
|
966
|
+
lang.json.tokens.non_alphanum.format white
|
|
967
|
+
lang.json.indent.size 2
|
|
968
|
+
lang.json.indent.auto true
|
|
969
|
+
lang.json.indent.roundup false
|
|
970
|
+
#lang.json.indent.using_tabs true
|
|
971
|
+
lang.json.indent.indenters ([{(])
|
|
972
|
+
lang.json.indent.unindenters ([})])
|
|
973
|
+
lang.json.indent.preventers (\".+?[^\\]\")|('.+?[^\\]')|(\/\/.*)
|
|
974
|
+
lang.json.indent.ignore ^(.+:|\s*?)$
|
|
975
|
+
lang.json.indent.closers true
|
|
976
|
+
lang.json.context.ignore ^(.+:|\s*\{?)$
|
|
977
|
+
|
|
978
|
+
|
|
931
979
|
# Ruby
|
|
932
980
|
|
|
933
981
|
lang.ruby.filemask (?:[Rr]akefile)|Gemfile|(?:\.(?:r[bu]|gem(?:spec)?|rake)$)
|
|
934
982
|
lang.ruby.bangmask #!.*ruby
|
|
983
|
+
# lang.ruby.lsp.command solargraph stdio
|
|
984
|
+
# lang.ruby.lsp.command rvm use 3.4.8 && solargraph stdio
|
|
935
985
|
lang.ruby.format.default = lang.shared.format.default
|
|
936
986
|
lang.ruby.format.selection = lang.shared.format.selection
|
|
937
987
|
lang.ruby.format.pair = lang.shared.format.pair
|
|
@@ -1602,6 +1652,7 @@ lang.bind.indent.roundup true
|
|
|
1602
1652
|
lang.bind.indent.using_tabs false
|
|
1603
1653
|
|
|
1604
1654
|
lang.markdown.filemask \.(?:md|markdown)
|
|
1655
|
+
# lang.markdown.lsp.command vscode-markdown-language-server --stdio
|
|
1605
1656
|
lang.markdown.format.default white
|
|
1606
1657
|
lang.markdown.format.selection inverse
|
|
1607
1658
|
lang.markdown.format.found yellow inverse
|
|
@@ -1855,6 +1906,113 @@ lang.go.closers.for.regexp for$
|
|
|
1855
1906
|
lang.go.closers.for.closer { |m| "( $i = 0; $i < limit; $i++ ) {\n%_\n}" }
|
|
1856
1907
|
lang.go.column_delimiters =|:|,
|
|
1857
1908
|
|
|
1909
|
+
lang.scheme.filemask \.scm$
|
|
1910
|
+
lang.scheme.format.default white bold
|
|
1911
|
+
lang.scheme.format.selection inverse
|
|
1912
|
+
lang.scheme.format.found yellow inverse
|
|
1913
|
+
lang.scheme.tokens.comments (;.*)
|
|
1914
|
+
lang.scheme.tokens.comments.format = lang.shared.tokens.comments.format
|
|
1915
|
+
lang.scheme.comment_string "; "
|
|
1916
|
+
lang.scheme.tokens.number \s(\d+)(?:[^0-9.mhdw]|$)
|
|
1917
|
+
lang.scheme.tokens.number.format blue bold
|
|
1918
|
+
lang.scheme.tokens.doublequoted_strings (\".*?[^\\]?\")
|
|
1919
|
+
lang.scheme.tokens.doublequoted_strings.format green bold
|
|
1920
|
+
lang.scheme.indent.size 2
|
|
1921
|
+
lang.scheme.indent.auto true
|
|
1922
|
+
lang.scheme.indent.roundup true
|
|
1923
|
+
lang.scheme.indent.using_tabs false
|
|
1924
|
+
|
|
1925
|
+
# Zig
|
|
1926
|
+
|
|
1927
|
+
lang.zig.filemask \.(?:zig)$
|
|
1928
|
+
lang.zig.format.default white bold
|
|
1929
|
+
lang.zig.format.selection inverse
|
|
1930
|
+
lang.zig.format.found yellow inverse
|
|
1931
|
+
lang.zig.tokens.doublequoted_strings (\".*?[^\\]?\")
|
|
1932
|
+
lang.zig.tokens.doublequoted_strings.format green bold
|
|
1933
|
+
lang.zig.tokens.singlequoted_strings ('.*?[^\\]')
|
|
1934
|
+
lang.zig.tokens.singlequoted_strings.format green bold
|
|
1935
|
+
# lang.zig.tokens.backquoted_strings (`.*?[^\\]`)
|
|
1936
|
+
# lang.zig.tokens.backquoted_strings.format green bold
|
|
1937
|
+
lang.zig.tokens.interpolated_string.open (`)
|
|
1938
|
+
lang.zig.tokens.interpolated_string.close (`)
|
|
1939
|
+
lang.zig.tokens.interpolated_string.format green bold
|
|
1940
|
+
lang.zig.tokens.interpolated_string.change_to javascript_template_literal
|
|
1941
|
+
lang.zig_template_literal.format.default green bold
|
|
1942
|
+
lang.zig_template_literal.tokens.interpolation.open (\$\{)
|
|
1943
|
+
lang.zig_template_literal.tokens.interpolation.close (\})
|
|
1944
|
+
lang.zig_template_literal.tokens.interpolation.format 12 bold
|
|
1945
|
+
lang.zig_template_literal.tokens.interpolation.change_to javascript
|
|
1946
|
+
lang.zig.tokens.reserved_words \b(addrspace|align|allowzero|and|anyframe|anytype|asm|async|await|break|callconv|catch|comptime|const|continue|defer|else|enum|errdefer|error|export|extern|fn|for|if|inline|noalias|nosuspend|noinline|opaque|or|orelse|packed|pub|resume|return|linksection|struct|suspend|switch|test|threadlocal|try|union|unreachable|usingnamespace|var|volatile|while)\b
|
|
1947
|
+
lang.zig.tokens.reserved_words.format white
|
|
1948
|
+
lang.zig.tokens.constants \b([A-Z_]+|[A-Z_][A-Z0-9_]+)\b
|
|
1949
|
+
lang.zig.tokens.constants.format yellow bold
|
|
1950
|
+
lang.zig.tokens.comments (\/\/.*)
|
|
1951
|
+
lang.zig.tokens.comments.format = lang.shared.tokens.comments.format
|
|
1952
|
+
lang.zig.comment_string "// "
|
|
1953
|
+
lang.zig.comment_close_string ""
|
|
1954
|
+
lang.zig.tokens.long_comments.open \/\*
|
|
1955
|
+
lang.zig.tokens.long_comments.close \*\/
|
|
1956
|
+
lang.zig.tokens.long_comments.format = lang.shared.tokens.comments.format
|
|
1957
|
+
lang.zig.tokens.regular_expressions (\/.+?[^\\]\/)
|
|
1958
|
+
lang.zig.tokens.regular_expressions.format red bold
|
|
1959
|
+
lang.zig.tokens.non_alphanum ([!@#$%\^&*()\[\]{}/?=+\-\\|,<.>;:])
|
|
1960
|
+
lang.zig.tokens.non_alphanum.format white
|
|
1961
|
+
lang.zig.indent.size 4
|
|
1962
|
+
lang.zig.indent.auto true
|
|
1963
|
+
lang.zig.indent.roundup false
|
|
1964
|
+
#lang.zig.indent.using_tabs true
|
|
1965
|
+
lang.zig.indent.indenters (\{)
|
|
1966
|
+
lang.zig.indent.unindenters (\})
|
|
1967
|
+
lang.zig.indent.preventers (\".+?[^\\]\")|('.+?[^\\]')|(\/\/.*)
|
|
1968
|
+
lang.zig.indent.ignore ^(.+:|\s*?)$
|
|
1969
|
+
lang.zig.indent.closers true
|
|
1970
|
+
lang.zig.context.ignore ^(.+:|\s*\{?)$
|
|
1971
|
+
lang.zig.closers.for.regexp for$
|
|
1972
|
+
lang.zig.closers.for.closer { |m| "( $i = 0; $i < limit; $i++ ) {\n%_\n}" }
|
|
1973
|
+
lang.zig.column_delimiters =|:|,
|
|
1974
|
+
|
|
1975
|
+
# Clojure
|
|
1976
|
+
|
|
1977
|
+
lang.clojure.filemask \.clj[csx]?$|\.edn$
|
|
1978
|
+
lang.clojure.bangmask #!.*clojure
|
|
1979
|
+
|
|
1980
|
+
lang.clojure.format.default = lang.shared.format.default
|
|
1981
|
+
lang.clojure.format.selection = lang.shared.format.selection
|
|
1982
|
+
lang.clojure.format.pair = lang.shared.format.pair
|
|
1983
|
+
lang.clojure.format.found = lang.shared.format.found
|
|
1984
|
+
|
|
1985
|
+
lang.clojure.tokens.reserved_words \b(case|catch|cond|condp|def|defmacro|defmethod|defmulti|defn|defn-|defonce|defprotocol|defrecord|deftype|do|doseq|dosync|dotimes|doto|finally|fn|for|if|if-let|if-not|import|in-ns|let|letfn|loop|monitor-enter|monitor-exit|new|ns|quote|recur|refer|require|set!|throw|try|use|var|when|when-let|when-not|while)\b
|
|
1986
|
+
lang.clojure.tokens.reserved_words.format = lang.shared.tokens.reserved_words.format
|
|
1987
|
+
lang.clojure.tokens.constants \b(false|nil|true)\b
|
|
1988
|
+
lang.clojure.tokens.constants.format = lang.shared.tokens.constants.format
|
|
1989
|
+
lang.clojure.tokens.keywords (:[a-zA-Z_!?*+\-][a-zA-Z0-9_!?*+\-/.]*)
|
|
1990
|
+
lang.clojure.tokens.keywords.format white bold
|
|
1991
|
+
lang.clojure.tokens.comments (;.*)
|
|
1992
|
+
lang.clojure.tokens.comments.format = lang.shared.tokens.comments.format
|
|
1993
|
+
lang.clojure.comment_string "; "
|
|
1994
|
+
lang.clojure.tokens.doublequoted_strings (\".*?[^\\]?\")
|
|
1995
|
+
lang.clojure.tokens.doublequoted_strings.format green bold
|
|
1996
|
+
lang.clojure.tokens.regular_expressions (#\".*?[^\\]\")
|
|
1997
|
+
lang.clojure.tokens.regular_expressions.format red bold
|
|
1998
|
+
lang.clojure.tokens.characters (\\(?:newline|space|tab|backspace|formfeed|return|\S))
|
|
1999
|
+
lang.clojure.tokens.characters.format magenta bold
|
|
2000
|
+
lang.clojure.tokens.metadata (\^[:{]\S*)
|
|
2001
|
+
lang.clojure.tokens.metadata.format cyan bold
|
|
2002
|
+
lang.clojure.tokens.reader_macros (#['_^])
|
|
2003
|
+
lang.clojure.tokens.reader_macros.format 9 bold
|
|
2004
|
+
lang.clojure.tokens.non_alphanum ([!@#$%^&*()\[\]{}/?=+\-\\|,<.>;~])
|
|
2005
|
+
lang.clojure.tokens.non_alphanum.format white
|
|
2006
|
+
|
|
2007
|
+
lang.clojure.indent.size 2
|
|
2008
|
+
lang.clojure.indent.auto true
|
|
2009
|
+
lang.clojure.indent.roundup false
|
|
2010
|
+
lang.clojure.tabsize 2
|
|
2011
|
+
lang.clojure.indent.indenters ([\[{(])
|
|
2012
|
+
lang.clojure.indent.unindenters ([\]})])
|
|
2013
|
+
lang.clojure.indent.preventers (\".+?[^\\]\")|(\;.*)
|
|
2014
|
+
lang.clojure.indent.ignore ^\s*$
|
|
2015
|
+
lang.clojure.column_delimiters \s
|
|
1858
2016
|
|
|
1859
2017
|
# Other configuration files can be included.
|
|
1860
2018
|
# If a setting is specified again, it overrides the previous setting given
|
data/help/ruby.dhf
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# Ruby Compatibility
|
|
2
2
|
|
|
3
|
+
## Ruby 3.1
|
|
4
|
+
|
|
5
|
+
Ruby 0.10.0 and later require at least Ruby 3.1.
|
|
6
|
+
|
|
3
7
|
## Ruby 1.9
|
|
4
8
|
|
|
5
9
|
Usage to date has shown that Diakonos is fully compatible with Ruby 1.9.
|
|
@@ -14,4 +18,4 @@ Support for Ruby 1.8 was dropped as of Diakonos version 0.8.8.
|
|
|
14
18
|
|
|
15
19
|
|
|
16
20
|
|
|
17
|
-
Tags: ruby 1.9 1.8 19 18 compatible compatibility problems issues version
|
|
21
|
+
Tags: ruby 1.9 1.8 19 18 compatible compatibility problems issues version
|
data/lib/diakonos/bookmark.rb
CHANGED
|
@@ -11,30 +11,30 @@ module Diakonos
|
|
|
11
11
|
@name = name
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
-
def ==
|
|
14
|
+
def ==(other)
|
|
15
15
|
return false if other.nil?
|
|
16
|
+
|
|
16
17
|
( @buffer == other.buffer && @row == other.row && @col == other.col )
|
|
17
18
|
end
|
|
18
19
|
|
|
19
|
-
def <=>
|
|
20
|
+
def <=>(other)
|
|
20
21
|
return nil if other.nil?
|
|
22
|
+
|
|
21
23
|
comparison = ( $diakonos.buffer_to_number( @buffer ) <=> $diakonos.buffer_to_number( other.buffer ) )
|
|
22
24
|
return comparison if comparison != 0
|
|
25
|
+
|
|
23
26
|
comparison = ( @row <=> other.row )
|
|
24
27
|
return comparison if comparison != 0
|
|
28
|
+
|
|
25
29
|
@col <=> other.col
|
|
26
30
|
end
|
|
27
31
|
|
|
28
|
-
def <
|
|
32
|
+
def <(other)
|
|
29
33
|
( ( self <=> other ) < 0 )
|
|
30
34
|
end
|
|
31
|
-
def > (other)
|
|
32
|
-
( ( self <=> other ) > 0 )
|
|
33
|
-
end
|
|
34
35
|
|
|
35
|
-
def
|
|
36
|
-
|
|
37
|
-
col += col_inc
|
|
36
|
+
def >(other)
|
|
37
|
+
( ( self <=> other ) > 0 )
|
|
38
38
|
end
|
|
39
39
|
|
|
40
40
|
def to_s
|
|
@@ -43,4 +43,4 @@ module Diakonos
|
|
|
43
43
|
|
|
44
44
|
end
|
|
45
45
|
|
|
46
|
-
end
|
|
46
|
+
end
|
|
@@ -4,9 +4,9 @@ module Diakonos
|
|
|
4
4
|
|
|
5
5
|
def go_to_next_bookmark
|
|
6
6
|
cur_pos = Bookmark.new( self, @last_row, @last_col )
|
|
7
|
-
next_bm = @bookmarks.find
|
|
7
|
+
next_bm = @bookmarks.find { |bm|
|
|
8
8
|
bm > cur_pos
|
|
9
|
-
|
|
9
|
+
}
|
|
10
10
|
if next_bm
|
|
11
11
|
cursor_to( next_bm.row, next_bm.col, DO_DISPLAY )
|
|
12
12
|
end
|
|
@@ -29,19 +29,19 @@ module Diakonos
|
|
|
29
29
|
|
|
30
30
|
def toggle_bookmark
|
|
31
31
|
bookmark = Bookmark.new( self, @last_row, @last_col )
|
|
32
|
-
existing = @bookmarks.find
|
|
32
|
+
existing = @bookmarks.find { |bm|
|
|
33
33
|
bm == bookmark
|
|
34
|
-
|
|
34
|
+
}
|
|
35
35
|
if existing
|
|
36
36
|
@bookmarks.delete existing
|
|
37
|
-
$diakonos.set_iline "Bookmark #{existing
|
|
37
|
+
$diakonos.set_iline "Bookmark #{existing} deleted."
|
|
38
38
|
else
|
|
39
39
|
@bookmarks.push bookmark
|
|
40
40
|
@bookmarks.sort
|
|
41
|
-
$diakonos.set_iline "Bookmark #{bookmark
|
|
41
|
+
$diakonos.set_iline "Bookmark #{bookmark} set."
|
|
42
42
|
end
|
|
43
43
|
end
|
|
44
44
|
|
|
45
45
|
end
|
|
46
46
|
|
|
47
|
-
end
|
|
47
|
+
end
|
|
@@ -105,7 +105,7 @@ module Diakonos
|
|
|
105
105
|
else
|
|
106
106
|
col = 0
|
|
107
107
|
end
|
|
108
|
-
|
|
108
|
+
# when BOL_ALT_FIRST_CHAR
|
|
109
109
|
else
|
|
110
110
|
first_char_col = ( ( @lines[ row ] =~ /\S/ ) || 0 )
|
|
111
111
|
if @last_col == first_char_col
|
|
@@ -146,6 +146,7 @@ module Diakonos
|
|
|
146
146
|
def cursor_to_tov
|
|
147
147
|
cursor_to( row_of( 0 ), @last_col, DO_DISPLAY )
|
|
148
148
|
end
|
|
149
|
+
|
|
149
150
|
# Bottom of view
|
|
150
151
|
def cursor_to_bov
|
|
151
152
|
cursor_to( row_of( 0 + $diakonos.main_window_height - 1 ), @last_col, DO_DISPLAY )
|
|
@@ -159,20 +160,20 @@ module Diakonos
|
|
|
159
160
|
|
|
160
161
|
while row < @top_line + @settings[ "view.margin.y" ]
|
|
161
162
|
amount = (-1) * @settings[ "view.jump.y" ]
|
|
162
|
-
break
|
|
163
|
+
break if ( pitch_view( amount, DONT_PITCH_CURSOR, DONT_DISPLAY ) != amount )
|
|
163
164
|
end
|
|
164
165
|
while row > @top_line + $diakonos.main_window_height - 1 - @settings[ "view.margin.y" ]
|
|
165
166
|
amount = @settings[ "view.jump.y" ]
|
|
166
|
-
break
|
|
167
|
+
break if ( pitch_view( amount, DONT_PITCH_CURSOR, DONT_DISPLAY ) != amount )
|
|
167
168
|
end
|
|
168
169
|
|
|
169
170
|
while col < @left_column + @settings[ "view.margin.x" ]
|
|
170
171
|
amount = (-1) * @settings[ "view.jump.x" ]
|
|
171
|
-
break
|
|
172
|
+
break if ( pan_view( amount, DONT_DISPLAY ) != amount )
|
|
172
173
|
end
|
|
173
174
|
while col > @left_column + $diakonos.main_window_width - @settings[ "view.margin.x" ] - 2
|
|
174
175
|
amount = @settings[ "view.jump.x" ]
|
|
175
|
-
break
|
|
176
|
+
break if ( pan_view( amount, DONT_DISPLAY ) != amount )
|
|
176
177
|
end
|
|
177
178
|
|
|
178
179
|
@top_line != old_top_line || @left_column != old_left_column
|
|
@@ -189,17 +190,16 @@ module Diakonos
|
|
|
189
190
|
new_level = initial_level
|
|
190
191
|
( 0...@last_row ).reverse_each do |row|
|
|
191
192
|
next if @lines[ row ].strip.empty?
|
|
193
|
+
|
|
192
194
|
level = indentation_level( row )
|
|
193
195
|
if ! passed
|
|
194
196
|
passed = ( level < initial_level )
|
|
195
197
|
new_level = level
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
break
|
|
202
|
-
end
|
|
198
|
+
elsif level < new_level
|
|
199
|
+
new_row = ( row+1..@last_row ).find { |r|
|
|
200
|
+
! @lines[ r ].strip.empty?
|
|
201
|
+
}
|
|
202
|
+
break
|
|
203
203
|
end
|
|
204
204
|
end
|
|
205
205
|
go_to_line( new_row, @lines[ new_row ].index( /\S/ ) )
|
|
@@ -210,6 +210,7 @@ module Diakonos
|
|
|
210
210
|
new_row = @lines.length
|
|
211
211
|
( @last_row...@lines.length ).each do |row|
|
|
212
212
|
next if @lines[ row ].strip.empty?
|
|
213
|
+
|
|
213
214
|
level = indentation_level( row )
|
|
214
215
|
if level > initial_level
|
|
215
216
|
new_row = row
|
|
@@ -228,18 +229,17 @@ module Diakonos
|
|
|
228
229
|
passed = false
|
|
229
230
|
( @last_row+1...@lines.length ).each do |row|
|
|
230
231
|
next if @lines[ row ].strip.empty?
|
|
232
|
+
|
|
231
233
|
level = indentation_level( row )
|
|
232
234
|
if ! passed
|
|
233
235
|
if level < initial_level
|
|
234
236
|
passed = true
|
|
235
237
|
end
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
break
|
|
242
|
-
end
|
|
238
|
+
elsif level == initial_level
|
|
239
|
+
new_row = row
|
|
240
|
+
break
|
|
241
|
+
elsif level < initial_level - 1
|
|
242
|
+
break
|
|
243
243
|
end
|
|
244
244
|
end
|
|
245
245
|
go_to_line( new_row, @lines[ new_row ].index( /\S/ ) )
|
|
@@ -252,28 +252,25 @@ module Diakonos
|
|
|
252
252
|
passed2 = false # search for reindent
|
|
253
253
|
( 0...@last_row ).reverse_each do |row|
|
|
254
254
|
next if @lines[ row ].strip.empty?
|
|
255
|
+
|
|
255
256
|
level = indentation_level( row )
|
|
256
257
|
if ! passed
|
|
257
258
|
if level < initial_level
|
|
258
259
|
passed = true
|
|
259
260
|
end
|
|
260
|
-
|
|
261
|
-
if
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
break
|
|
268
|
-
end
|
|
269
|
-
else
|
|
270
|
-
if level < initial_level
|
|
271
|
-
new_row = ( row+1..@last_row ).find { |r|
|
|
272
|
-
! @lines[ r ].strip.empty?
|
|
273
|
-
}
|
|
274
|
-
break
|
|
275
|
-
end
|
|
261
|
+
elsif ! passed2
|
|
262
|
+
if level >= initial_level
|
|
263
|
+
new_row = row
|
|
264
|
+
passed2 = true
|
|
265
|
+
elsif level <= initial_level - 2
|
|
266
|
+
# No previous block
|
|
267
|
+
break
|
|
276
268
|
end
|
|
269
|
+
elsif level < initial_level
|
|
270
|
+
new_row = (row+1..@last_row).find { |r|
|
|
271
|
+
! @lines[ r ].strip.empty?
|
|
272
|
+
}
|
|
273
|
+
break
|
|
277
274
|
end
|
|
278
275
|
end
|
|
279
276
|
go_to_line( new_row, @lines[ new_row ].index( /\S/ ) )
|
|
@@ -18,9 +18,9 @@ module Diakonos
|
|
|
18
18
|
cursor_to( @last_row, @last_col )
|
|
19
19
|
end
|
|
20
20
|
else
|
|
21
|
-
take_snapshot(
|
|
22
|
-
@lines[ row ] = line[ 0...col ] + line[ (col + 1)
|
|
23
|
-
set_modified
|
|
21
|
+
take_snapshot(typing: true)
|
|
22
|
+
@lines[ row ] = line[ 0...col ] + line[ (col + 1).. ]
|
|
23
|
+
set_modified modified_from_line: row
|
|
24
24
|
end
|
|
25
25
|
end
|
|
26
26
|
end
|
|
@@ -40,7 +40,7 @@ module Diakonos
|
|
|
40
40
|
@lines.delete_at row
|
|
41
41
|
end
|
|
42
42
|
cursor_to( row, 0 )
|
|
43
|
-
set_modified
|
|
43
|
+
set_modified modified_from_line: row
|
|
44
44
|
|
|
45
45
|
retval
|
|
46
46
|
end
|
|
@@ -57,10 +57,10 @@ module Diakonos
|
|
|
57
57
|
@lines[ row ] << next_line
|
|
58
58
|
retval = [ "\n" ]
|
|
59
59
|
else
|
|
60
|
-
retval = [ @lines[ row ][ col
|
|
60
|
+
retval = [ @lines[ row ][ col.. ] ]
|
|
61
61
|
@lines[ row ] = @lines[ row ][ 0...col ]
|
|
62
62
|
end
|
|
63
|
-
set_modified
|
|
63
|
+
set_modified modified_from_line: row
|
|
64
64
|
|
|
65
65
|
retval
|
|
66
66
|
end
|
|
@@ -71,13 +71,13 @@ module Diakonos
|
|
|
71
71
|
retval = [ @lines[ row_to ].slice!( col_from, col_to - col_from ) ]
|
|
72
72
|
else
|
|
73
73
|
pre_head = @lines[ row_from ][ 0...col_from ]
|
|
74
|
-
post_tail = @lines[ row_to ][ col_to
|
|
74
|
+
post_tail = @lines[ row_to ][ col_to.. ]
|
|
75
75
|
head = @lines[ row_from ].slice!( col_from..-1 )
|
|
76
76
|
tail = @lines[ row_to ].slice!( 0...col_to )
|
|
77
77
|
retval = [ head ] + @lines.slice!( row_from + 1, row_to - row_from ) + [ tail ]
|
|
78
78
|
@lines[ row_from ] = pre_head + post_tail
|
|
79
79
|
end
|
|
80
|
-
set_modified
|
|
80
|
+
set_modified modified_from_line: row_from
|
|
81
81
|
retval
|
|
82
82
|
end
|
|
83
83
|
|
|
@@ -120,22 +120,22 @@ module Diakonos
|
|
|
120
120
|
|
|
121
121
|
start_char = end_char = char
|
|
122
122
|
case char
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
123
|
+
when '('
|
|
124
|
+
end_char = ')'
|
|
125
|
+
when '{'
|
|
126
|
+
end_char = '}'
|
|
127
|
+
when '['
|
|
128
|
+
end_char = ']'
|
|
129
|
+
when '<'
|
|
130
|
+
end_char = '>'
|
|
131
|
+
when ')'
|
|
132
|
+
end_char = '('
|
|
133
|
+
when '}'
|
|
134
|
+
end_char = '{'
|
|
135
|
+
when ']'
|
|
136
|
+
end_char = '['
|
|
137
|
+
when '>'
|
|
138
|
+
end_char = '<'
|
|
139
139
|
end
|
|
140
140
|
|
|
141
141
|
row = @last_row
|