textbringer-auto-revert 0.1.0 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4b9c293b790a5a977dad299b00b2fefe137f781e2afe8b139170f9b370d931dd
4
- data.tar.gz: d430d791ddc748a74ba7c5d9bca93fbf99a5433c7f34400dbb9ee0ea50e53ced
3
+ metadata.gz: 137a99232e6d6bd8f23d3e035cd68ace1382d4e1eb0e87380c0d9bc0f4d52c89
4
+ data.tar.gz: 0bb993643ed5eb0d8c15013f6e78a0c768c507dcdfba95f72c6a22865c86bf08
5
5
  SHA512:
6
- metadata.gz: eb4563e64fd3d7a3082968d0263a7f4bb79d2b662f77cde07a25454754bdf71cdbf1d8fb85a551664800a1ce656b249954dd178a6d1dd2ed869f9b96a49938a0
7
- data.tar.gz: f5d6bb33ebf2309d917913ba4cedce9c55c55db1859f93af1cd871e9e5512438183aa9db5caffbc3320df0c833d4445e294158c1f67b15696d033e94f3cc6dc7
6
+ metadata.gz: 92d0bdc9e312cb32c756ba91f04c0827f3242851bfa3d24bcf8346b13e30756e083834d82ec4476e1100b05b3b2bed277b160ec857a0698f944e695abbf3381a
7
+ data.tar.gz: fc2050a3539f319f1bfeecb52667a06854467287ed4d03fa65469c67705f7c0926243d3043c7b3377e6b6c7052ec07d30fb5dbddffec247a6699796bd12bab4c
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Textbringer
4
4
  module AutoRevert
5
- VERSION = "0.1.0"
5
+ VERSION = "0.2.0"
6
6
  end
7
7
  end
@@ -5,77 +5,29 @@ require_relative "auto-revert/version"
5
5
  module Textbringer
6
6
  CONFIG[:auto_revert_verbose] = true
7
7
 
8
- module AutoRevert
9
- @global_mode = false
10
-
11
- class << self
12
- attr_accessor :global_mode
13
- end
14
-
8
+ class GlobalAutoRevertMode < GlobalMinorMode
15
9
  POST_COMMAND_HOOK = -> {
16
- return unless AutoRevert.should_check?
17
-
18
10
  buffer = Buffer.current
19
- return unless AutoRevert.buffer_eligible?(buffer)
11
+ return unless buffer.file_name && !buffer.name.start_with?("*")
20
12
  return unless buffer.file_modified?
21
13
 
22
- # バッファが未変更なら自動revert
23
14
  if !buffer.modified?
24
15
  buffer.revert
25
- Textbringer.message("Reverted buffer from file") if CONFIG[:auto_revert_verbose]
16
+ message("Reverted buffer from file") if CONFIG[:auto_revert_verbose]
26
17
  else
27
- Textbringer.message("Buffer has unsaved changes; file changed on disk")
18
+ message("Buffer has unsaved changes; file changed on disk")
28
19
  end
29
20
  }
30
21
 
31
- def self.should_check?
32
- @global_mode || Buffer.current[:auto_revert_mode]
22
+ def self.enable
23
+ add_hook(:post_command_hook, POST_COMMAND_HOOK)
24
+ message("Global auto-revert mode enabled")
33
25
  end
34
26
 
35
- def self.buffer_eligible?(buffer)
36
- buffer.file_name && !buffer.name.start_with?("*")
37
- end
38
-
39
- def self.enable_global
40
- @global_mode = true
41
- Textbringer.add_hook(:post_command_hook, POST_COMMAND_HOOK)
42
- Textbringer.message("Global auto-revert mode enabled")
43
- end
44
-
45
- def self.disable_global
46
- @global_mode = false
47
- # ローカルモードが有効なバッファがなければフック削除
48
- unless Buffer.list.any? { |b| b[:auto_revert_mode] }
49
- Textbringer.remove_hook(:post_command_hook, POST_COMMAND_HOOK)
50
- end
51
- Textbringer.message("Global auto-revert mode disabled")
27
+ def self.disable
28
+ remove_hook(:post_command_hook, POST_COMMAND_HOOK)
29
+ message("Global auto-revert mode disabled")
52
30
  end
53
31
  end
54
32
 
55
- module Commands
56
- define_command(:auto_revert_mode,
57
- doc: "Toggle auto-revert mode for the current buffer.") do
58
- buffer = Buffer.current
59
- if buffer[:auto_revert_mode]
60
- buffer[:auto_revert_mode] = false
61
- Textbringer.message("Auto-revert mode disabled in this buffer")
62
- else
63
- buffer[:auto_revert_mode] = true
64
- # フックがなければ追加
65
- unless HOOKS[:post_command_hook].include?(AutoRevert::POST_COMMAND_HOOK)
66
- Textbringer.add_hook(:post_command_hook, AutoRevert::POST_COMMAND_HOOK)
67
- end
68
- Textbringer.message("Auto-revert mode enabled in this buffer")
69
- end
70
- end
71
-
72
- define_command(:global_auto_revert_mode,
73
- doc: "Toggle global auto-revert mode for all buffers.") do
74
- if AutoRevert.global_mode
75
- AutoRevert.disable_global
76
- else
77
- AutoRevert.enable_global
78
- end
79
- end
80
- end
81
33
  end
data/test/test_helper.rb CHANGED
@@ -81,6 +81,20 @@ module Textbringer
81
81
  module_function(name)
82
82
  end
83
83
  end
84
+
85
+ class GlobalMinorMode
86
+ def self.add_hook(name, hook)
87
+ Textbringer.add_hook(name, hook)
88
+ end
89
+
90
+ def self.remove_hook(name, hook)
91
+ Textbringer.remove_hook(name, hook)
92
+ end
93
+
94
+ def self.message(msg)
95
+ Textbringer.message(msg)
96
+ end
97
+ end
84
98
  end
85
99
 
86
100
  require "textbringer/auto-revert"
@@ -2,7 +2,7 @@
2
2
 
3
3
  require "test_helper"
4
4
 
5
- class Textbringer::AutoRevertTest < Test::Unit::TestCase
5
+ class Textbringer::GlobalAutoRevertModeTest < Test::Unit::TestCase
6
6
  include Textbringer
7
7
 
8
8
  def setup
@@ -11,7 +11,6 @@ class Textbringer::AutoRevertTest < Test::Unit::TestCase
11
11
  Textbringer::Buffer.list = [@buffer]
12
12
  Textbringer.messages = []
13
13
  Textbringer::HOOKS.clear
14
- Textbringer::AutoRevert.global_mode = false
15
14
  end
16
15
 
17
16
  test "VERSION is defined" do
@@ -20,77 +19,51 @@ class Textbringer::AutoRevertTest < Test::Unit::TestCase
20
19
  end
21
20
  end
22
21
 
23
- test "global_auto_revert_mode enables global mode" do
24
- assert_equal false, Textbringer::AutoRevert.global_mode
22
+ test "enable adds hook and shows message" do
23
+ Textbringer::GlobalAutoRevertMode.enable
25
24
 
26
- Textbringer::Commands.global_auto_revert_mode
27
-
28
- assert_equal true, Textbringer::AutoRevert.global_mode
29
- assert_includes Textbringer::HOOKS[:post_command_hook],
30
- Textbringer::AutoRevert::POST_COMMAND_HOOK
31
- end
32
-
33
- test "global_auto_revert_mode toggles off" do
34
- Textbringer::Commands.global_auto_revert_mode # enable
35
- Textbringer::Commands.global_auto_revert_mode # disable
36
-
37
- assert_equal false, Textbringer::AutoRevert.global_mode
38
- end
39
-
40
- test "auto_revert_mode enables local mode for current buffer" do
41
- assert_nil @buffer[:auto_revert_mode]
42
-
43
- Textbringer::Commands.auto_revert_mode
44
-
45
- assert_equal true, @buffer[:auto_revert_mode]
46
25
  assert_includes Textbringer::HOOKS[:post_command_hook],
47
- Textbringer::AutoRevert::POST_COMMAND_HOOK
26
+ Textbringer::GlobalAutoRevertMode::POST_COMMAND_HOOK
27
+ assert_includes Textbringer.messages, "Global auto-revert mode enabled"
48
28
  end
49
29
 
50
- test "auto_revert_mode toggles off" do
51
- Textbringer::Commands.auto_revert_mode # enable
52
- Textbringer::Commands.auto_revert_mode # disable
30
+ test "disable removes hook and shows message" do
31
+ Textbringer::GlobalAutoRevertMode.enable
32
+ Textbringer::GlobalAutoRevertMode.disable
53
33
 
54
- assert_equal false, @buffer[:auto_revert_mode]
34
+ refute_includes Textbringer::HOOKS[:post_command_hook],
35
+ Textbringer::GlobalAutoRevertMode::POST_COMMAND_HOOK
36
+ assert_includes Textbringer.messages, "Global auto-revert mode disabled"
55
37
  end
56
38
 
57
39
  test "reverts buffer when file is modified and buffer is not modified" do
58
- Textbringer::Commands.global_auto_revert_mode
40
+ Textbringer::GlobalAutoRevertMode.enable
59
41
  @buffer.file_modified = true
60
42
  @buffer.modified = false
61
43
 
62
- Textbringer::AutoRevert::POST_COMMAND_HOOK.call
44
+ Textbringer::GlobalAutoRevertMode::POST_COMMAND_HOOK.call
63
45
 
64
46
  assert_equal true, @buffer.reverted
65
47
  assert_includes Textbringer.messages, "Reverted buffer from file"
66
48
  end
67
49
 
68
50
  test "does not revert buffer when buffer has unsaved changes" do
69
- Textbringer::Commands.global_auto_revert_mode
51
+ Textbringer::GlobalAutoRevertMode.enable
70
52
  @buffer.file_modified = true
71
53
  @buffer.modified = true
72
54
 
73
- Textbringer::AutoRevert::POST_COMMAND_HOOK.call
55
+ Textbringer::GlobalAutoRevertMode::POST_COMMAND_HOOK.call
74
56
 
75
57
  assert_equal false, @buffer.reverted
76
58
  assert_includes Textbringer.messages, "Buffer has unsaved changes; file changed on disk"
77
59
  end
78
60
 
79
61
  test "does not revert when file is not modified" do
80
- Textbringer::Commands.global_auto_revert_mode
62
+ Textbringer::GlobalAutoRevertMode.enable
81
63
  @buffer.file_modified = false
82
64
  @buffer.modified = false
83
65
 
84
- Textbringer::AutoRevert::POST_COMMAND_HOOK.call
85
-
86
- assert_equal false, @buffer.reverted
87
- end
88
-
89
- test "does not check when neither global nor local mode is enabled" do
90
- @buffer.file_modified = true
91
- @buffer.modified = false
92
-
93
- Textbringer::AutoRevert::POST_COMMAND_HOOK.call
66
+ Textbringer::GlobalAutoRevertMode::POST_COMMAND_HOOK.call
94
67
 
95
68
  assert_equal false, @buffer.reverted
96
69
  end
@@ -98,9 +71,9 @@ class Textbringer::AutoRevertTest < Test::Unit::TestCase
98
71
  test "skips special buffers starting with *" do
99
72
  @buffer.name = "*scratch*"
100
73
  @buffer.file_modified = true
101
- Textbringer::Commands.global_auto_revert_mode
74
+ Textbringer::GlobalAutoRevertMode.enable
102
75
 
103
- Textbringer::AutoRevert::POST_COMMAND_HOOK.call
76
+ Textbringer::GlobalAutoRevertMode::POST_COMMAND_HOOK.call
104
77
 
105
78
  assert_equal false, @buffer.reverted
106
79
  end
@@ -108,9 +81,9 @@ class Textbringer::AutoRevertTest < Test::Unit::TestCase
108
81
  test "skips buffers without file_name" do
109
82
  @buffer.file_name = nil
110
83
  @buffer.file_modified = true
111
- Textbringer::Commands.global_auto_revert_mode
84
+ Textbringer::GlobalAutoRevertMode.enable
112
85
 
113
- Textbringer::AutoRevert::POST_COMMAND_HOOK.call
86
+ Textbringer::GlobalAutoRevertMode::POST_COMMAND_HOOK.call
114
87
 
115
88
  assert_equal false, @buffer.reverted
116
89
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: textbringer-auto-revert
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - yancya