textbringer-auto-revert 0.1.0 → 0.3.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/README.md +14 -8
- data/lib/textbringer/auto-revert/version.rb +1 -1
- data/lib/textbringer/auto-revert.rb +13 -58
- data/test/test_helper.rb +19 -0
- data/test/textbringer_auto_revert_test.rb +21 -48
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 510415dcb98e0c25dd5c0c53c05fc63700cb0657e1ebf61290de748e7bb33751
|
|
4
|
+
data.tar.gz: 7ee315ca74e6c87b029c5d04f23b1ae7f878c632469838b68687e7420d058bc6
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9ad2cc40e79a3f93e1e07b5dea10d4825b1cd04ab829d2f1eaf8bcf9cb054dc1385ee6a32fafbb7c3e7ceaa65ae1f3997308f434c654bc1142a02ef546311e18
|
|
7
|
+
data.tar.gz: b4dbc334617ec284146c7d810af63f3be130b20eeeb2e18f7f3e98b6090ad3fbe10b69592c28113950130ab32cb72ee8605c7033bc9f5351a936654462ea37f5
|
data/README.md
CHANGED
|
@@ -18,20 +18,26 @@ bundle add textbringer-auto-revert
|
|
|
18
18
|
|
|
19
19
|
## Usage
|
|
20
20
|
|
|
21
|
+
**Auto-revert mode is enabled by default** when the plugin is loaded.
|
|
22
|
+
|
|
23
|
+
When a file is modified externally and the buffer has no unsaved changes, the buffer will automatically revert to the file's contents after any command execution.
|
|
24
|
+
|
|
21
25
|
### Commands
|
|
22
26
|
|
|
23
27
|
| Command | Description |
|
|
24
28
|
|---------|-------------|
|
|
25
|
-
| `
|
|
26
|
-
|
|
29
|
+
| `global_auto_revert_mode` | Toggle global auto-revert mode on/off |
|
|
30
|
+
|
|
31
|
+
### Disabling
|
|
27
32
|
|
|
28
|
-
|
|
33
|
+
To temporarily disable, run `M-x global_auto_revert_mode`.
|
|
29
34
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
+
To permanently disable, uninstall the gem or add to your Textbringer config:
|
|
36
|
+
|
|
37
|
+
```ruby
|
|
38
|
+
Textbringer::GlobalAutoRevertMode.disable
|
|
39
|
+
Textbringer::GlobalAutoRevertMode.enabled = false
|
|
40
|
+
```
|
|
35
41
|
|
|
36
42
|
### Configuration
|
|
37
43
|
|
|
@@ -5,77 +5,32 @@ require_relative "auto-revert/version"
|
|
|
5
5
|
module Textbringer
|
|
6
6
|
CONFIG[:auto_revert_verbose] = true
|
|
7
7
|
|
|
8
|
-
|
|
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
|
|
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
|
-
|
|
16
|
+
message("Reverted buffer from file") if CONFIG[:auto_revert_verbose]
|
|
26
17
|
else
|
|
27
|
-
|
|
18
|
+
message("Buffer has unsaved changes; file changed on disk")
|
|
28
19
|
end
|
|
29
20
|
}
|
|
30
21
|
|
|
31
|
-
def self.
|
|
32
|
-
|
|
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.
|
|
36
|
-
|
|
37
|
-
|
|
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
|
-
|
|
56
|
-
|
|
57
|
-
|
|
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
|
|
33
|
+
# Enable by default on plugin load
|
|
34
|
+
GlobalAutoRevertMode.enable
|
|
35
|
+
GlobalAutoRevertMode.enabled = true
|
|
81
36
|
end
|
data/test/test_helper.rb
CHANGED
|
@@ -81,6 +81,25 @@ module Textbringer
|
|
|
81
81
|
module_function(name)
|
|
82
82
|
end
|
|
83
83
|
end
|
|
84
|
+
|
|
85
|
+
class GlobalMinorMode
|
|
86
|
+
class << self
|
|
87
|
+
attr_accessor :enabled
|
|
88
|
+
alias enabled? enabled
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def self.add_hook(name, hook)
|
|
92
|
+
Textbringer.add_hook(name, hook)
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def self.remove_hook(name, hook)
|
|
96
|
+
Textbringer.remove_hook(name, hook)
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def self.message(msg)
|
|
100
|
+
Textbringer.message(msg)
|
|
101
|
+
end
|
|
102
|
+
end
|
|
84
103
|
end
|
|
85
104
|
|
|
86
105
|
require "textbringer/auto-revert"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
require "test_helper"
|
|
4
4
|
|
|
5
|
-
class Textbringer::
|
|
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 "
|
|
24
|
-
|
|
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::
|
|
26
|
+
Textbringer::GlobalAutoRevertMode::POST_COMMAND_HOOK
|
|
27
|
+
assert_includes Textbringer.messages, "Global auto-revert mode enabled"
|
|
48
28
|
end
|
|
49
29
|
|
|
50
|
-
test "
|
|
51
|
-
Textbringer::
|
|
52
|
-
Textbringer::
|
|
30
|
+
test "disable removes hook and shows message" do
|
|
31
|
+
Textbringer::GlobalAutoRevertMode.enable
|
|
32
|
+
Textbringer::GlobalAutoRevertMode.disable
|
|
53
33
|
|
|
54
|
-
|
|
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::
|
|
40
|
+
Textbringer::GlobalAutoRevertMode.enable
|
|
59
41
|
@buffer.file_modified = true
|
|
60
42
|
@buffer.modified = false
|
|
61
43
|
|
|
62
|
-
Textbringer::
|
|
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::
|
|
51
|
+
Textbringer::GlobalAutoRevertMode.enable
|
|
70
52
|
@buffer.file_modified = true
|
|
71
53
|
@buffer.modified = true
|
|
72
54
|
|
|
73
|
-
Textbringer::
|
|
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::
|
|
62
|
+
Textbringer::GlobalAutoRevertMode.enable
|
|
81
63
|
@buffer.file_modified = false
|
|
82
64
|
@buffer.modified = false
|
|
83
65
|
|
|
84
|
-
Textbringer::
|
|
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::
|
|
74
|
+
Textbringer::GlobalAutoRevertMode.enable
|
|
102
75
|
|
|
103
|
-
Textbringer::
|
|
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::
|
|
84
|
+
Textbringer::GlobalAutoRevertMode.enable
|
|
112
85
|
|
|
113
|
-
Textbringer::
|
|
86
|
+
Textbringer::GlobalAutoRevertMode::POST_COMMAND_HOOK.call
|
|
114
87
|
|
|
115
88
|
assert_equal false, @buffer.reverted
|
|
116
89
|
end
|