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.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +10 -0
  3. data/diakonos.conf +161 -3
  4. data/help/ruby.dhf +5 -1
  5. data/lib/diakonos/bookmark.rb +10 -10
  6. data/lib/diakonos/buffer/bookmarking.rb +7 -7
  7. data/lib/diakonos/buffer/cursor.rb +32 -35
  8. data/lib/diakonos/buffer/delete.rb +24 -24
  9. data/lib/diakonos/buffer/display.rb +100 -73
  10. data/lib/diakonos/buffer/file.rb +29 -9
  11. data/lib/diakonos/buffer/indentation.rb +32 -21
  12. data/lib/diakonos/buffer/searching.rb +36 -34
  13. data/lib/diakonos/buffer/selection.rb +65 -46
  14. data/lib/diakonos/buffer/undo.rb +12 -7
  15. data/lib/diakonos/buffer-management.rb +2 -3
  16. data/lib/diakonos/buffer.rb +163 -65
  17. data/lib/diakonos/clipboard-klipper-dbus.rb +15 -2
  18. data/lib/diakonos/clipboard-klipper.rb +1 -0
  19. data/lib/diakonos/clipboard-xclip.rb +2 -0
  20. data/lib/diakonos/clipboard.rb +4 -2
  21. data/lib/diakonos/config.rb +72 -53
  22. data/lib/diakonos/core-ext/enumerable.rb +7 -6
  23. data/lib/diakonos/core-ext/hash.rb +4 -5
  24. data/lib/diakonos/core-ext/object.rb +1 -2
  25. data/lib/diakonos/core-ext/regexp.rb +0 -1
  26. data/lib/diakonos/core-ext/string.rb +95 -98
  27. data/lib/diakonos/ctag.rb +13 -17
  28. data/lib/diakonos/cursor.rb +4 -4
  29. data/lib/diakonos/display/format.rb +36 -34
  30. data/lib/diakonos/display.rb +151 -79
  31. data/lib/diakonos/extension-set.rb +2 -2
  32. data/lib/diakonos/extension.rb +1 -1
  33. data/lib/diakonos/finding.rb +1 -1
  34. data/lib/diakonos/functions/basics.rb +2 -2
  35. data/lib/diakonos/functions/bookmarking.rb +9 -4
  36. data/lib/diakonos/functions/buffers.rb +31 -30
  37. data/lib/diakonos/functions/cursor.rb +21 -6
  38. data/lib/diakonos/functions/grepping.rb +3 -3
  39. data/lib/diakonos/functions/indentation.rb +3 -3
  40. data/lib/diakonos/functions/lsp.rb +116 -0
  41. data/lib/diakonos/functions/readline.rb +1 -1
  42. data/lib/diakonos/functions/search.rb +15 -15
  43. data/lib/diakonos/functions/selection.rb +3 -3
  44. data/lib/diakonos/functions/sessions.rb +3 -3
  45. data/lib/diakonos/functions/shell.rb +38 -35
  46. data/lib/diakonos/functions/tags.rb +7 -5
  47. data/lib/diakonos/functions/text-manipulation.rb +7 -8
  48. data/lib/diakonos/functions-deprecated.rb +72 -70
  49. data/lib/diakonos/functions.rb +20 -13
  50. data/lib/diakonos/grep.rb +17 -16
  51. data/lib/diakonos/help.rb +4 -3
  52. data/lib/diakonos/hooks.rb +2 -2
  53. data/lib/diakonos/installation.rb +9 -9
  54. data/lib/diakonos/interaction-handler.rb +6 -6
  55. data/lib/diakonos/interaction.rb +2 -2
  56. data/lib/diakonos/key-map.rb +5 -5
  57. data/lib/diakonos/keying.rb +150 -145
  58. data/lib/diakonos/line-mover.rb +4 -2
  59. data/lib/diakonos/list.rb +2 -4
  60. data/lib/diakonos/logging.rb +5 -7
  61. data/lib/diakonos/lsp/diagnostic.rb +42 -0
  62. data/lib/diakonos/lsp/server.rb +184 -0
  63. data/lib/diakonos/lsp/session.rb +194 -0
  64. data/lib/diakonos/lsp/transport.rb +48 -0
  65. data/lib/diakonos/lsp.rb +5 -0
  66. data/lib/diakonos/mouse.rb +1 -1
  67. data/lib/diakonos/number-fitter.rb +2 -2
  68. data/lib/diakonos/range.rb +6 -6
  69. data/lib/diakonos/readline/functions.rb +8 -3
  70. data/lib/diakonos/readline.rb +8 -7
  71. data/lib/diakonos/search.rb +21 -23
  72. data/lib/diakonos/sessions.rb +9 -10
  73. data/lib/diakonos/sized-array.rb +38 -39
  74. data/lib/diakonos/text-mark.rb +1 -0
  75. data/lib/diakonos/vendor/fuzzy_file_finder.rb +11 -11
  76. data/lib/diakonos/version.rb +18 -10
  77. data/lib/diakonos/window.rb +4 -4
  78. data/lib/diakonos.rb +148 -65
  79. metadata +26 -10
  80. data/lib/diakonos/buffer-hash.rb +0 -60
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 785260a5c3a705a4bc2a441d3968b79307396fc559e471593dff06ebe5ff6fc9
4
- data.tar.gz: a7b5686d70facc10e5902fe2ed29d27880676cb745ddf19d74abc2712c568cf0
3
+ metadata.gz: ec473dc61826cd6bbf05d8dac8dada0301027e08d3157f3974e2f26b252d64bc
4
+ data.tar.gz: 43884c5a26d6d365afd03dbd35a2c2f2f532db8c14098a64228a8a5a82ac95e4
5
5
  SHA512:
6
- metadata.gz: 9b87711d7f9422dd2f200a644cfd9b573178a4269c3016b4cbacd6cde0b49a618c5d3004548655c54c3e5d34063f3a4d93dbb8e8ff2f82ad5c4285100cc7f51d
7
- data.tar.gz: b284dc8cab1fcbeae25ea08e417ffa70e643d4b48dd45c0b8660fd31f247e363e8cfa906bdf7ed0df63cd1e439d09107cc05d79e0a9f82ac7d9b67a5b64771bd
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.width 4
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.format white
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?|json)$
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
@@ -11,30 +11,30 @@ module Diakonos
11
11
  @name = name
12
12
  end
13
13
 
14
- def == (other)
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 <=> (other)
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 < (other)
32
+ def <(other)
29
33
  ( ( self <=> other ) < 0 )
30
34
  end
31
- def > (other)
32
- ( ( self <=> other ) > 0 )
33
- end
34
35
 
35
- def shift( row_inc, col_inc )
36
- row += row_inc
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 do |bm|
7
+ next_bm = @bookmarks.find { |bm|
8
8
  bm > cur_pos
9
- end
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 do |bm|
32
+ existing = @bookmarks.find { |bm|
33
33
  bm == bookmark
34
- end
34
+ }
35
35
  if existing
36
36
  @bookmarks.delete existing
37
- $diakonos.set_iline "Bookmark #{existing.to_s} deleted."
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.to_s} set."
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
- #when BOL_ALT_FIRST_CHAR
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 if( pitch_view( amount, DONT_PITCH_CURSOR, DONT_DISPLAY ) != amount )
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 if( pitch_view( amount, DONT_PITCH_CURSOR, DONT_DISPLAY ) != amount )
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 if( pan_view( amount, DONT_DISPLAY ) != amount )
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 if( pan_view( amount, DONT_DISPLAY ) != amount )
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
- else
197
- if level < new_level
198
- new_row = ( row+1..@last_row ).find { |r|
199
- ! @lines[ r ].strip.empty?
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
- else
237
- if level == initial_level
238
- new_row = row
239
- break
240
- elsif level < initial_level - 1
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
- else
261
- if ! 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
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( TYPING )
22
- @lines[ row ] = line[ 0...col ] + line[ (col + 1)..-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..-1 ] ]
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..-1 ]
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
- 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 = '<'
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