about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--ranger/container/tags.py29
1 files changed, 20 insertions, 9 deletions
diff --git a/ranger/container/tags.py b/ranger/container/tags.py
index 50d5ff72..50525848 100644
--- a/ranger/container/tags.py
+++ b/ranger/container/tags.py
@@ -5,30 +5,34 @@
 
 from __future__ import (absolute_import, division, print_function)
 
-from os.path import isdir, exists, dirname, abspath, realpath, expanduser, sep
+from os.path import exists, abspath, realpath, expanduser, sep
 import string
 
 from ranger import PY3
+from ranger.core.shared import FileManagerAware
 
 ALLOWED_KEYS = string.ascii_letters + string.digits + string.punctuation
 
 
-class Tags(object):
+class Tags(FileManagerAware):
     default_tag = '*'
 
     def __init__(self, filename):
 
+        # COMPAT: The intent is to get abspath/normpath's behavior of
+        # collapsing `symlink/..`, abspath is retained for historical reasons
+        # because the documentation states its behavior isn't necessarily in
+        # line with normpath's.
         self._filename = realpath(abspath(expanduser(filename)))
 
-        if isdir(dirname(self._filename)) and not exists(self._filename):
-            open(self._filename, 'w')
-
         self.sync()
 
     def __contains__(self, item):
         return item in self.tags
 
     def add(self, *items, **others):
+        if len(*items) == 0:
+            return
         tag = others.get('tag', self.default_tag)
         self.sync()
         for item in items:
@@ -36,6 +40,8 @@ class Tags(object):
         self.dump()
 
     def remove(self, *items):
+        if len(*items) == 0:
+            return
         self.sync()
         for item in items:
             try:
@@ -45,6 +51,8 @@ class Tags(object):
         self.dump()
 
     def toggle(self, *items, **others):
+        if len(*items) == 0:
+            return
         tag = others.get('tag', self.default_tag)
         tag = str(tag)
         if tag not in ALLOWED_KEYS:
@@ -71,8 +79,11 @@ class Tags(object):
                 fobj = open(self._filename, 'r', errors='replace')
             else:
                 fobj = open(self._filename, 'r')
-        except OSError:
-            pass
+        except OSError as err:
+            if exists(self._filename):
+                self.fm.notify(err, bad=True)
+            else:
+                self.tags = dict()
         else:
             self.tags = self._parse(fobj)
             fobj.close()
@@ -80,8 +91,8 @@ class Tags(object):
     def dump(self):
         try:
             fobj = open(self._filename, 'w')
-        except OSError:
-            pass
+        except OSError as err:
+            self.fm.notify(err, bad=True)
         else:
             self._compile(fobj)
             fobj.close()
<boothj5@gmail.com> 2014-02-23 03:22:56 +0000 committer James Booth <boothj5@gmail.com> 2014-02-23 03:22:56 +0000 Revert "Fail test for travis"' href='/danisanti/profani-tty/commit/tests/test_cmd_alias.c?id=e4120e144cec4668a62bf464a1224f227c01ca69'>e4120e14 ^
8dbe300d ^



8dbe300d ^

81190251 ^
8dbe300d ^
81190251 ^
8dbe300d ^
8dbe300d ^



8dbe300d ^

81190251 ^
8dbe300d ^
81190251 ^
8dbe300d ^
8dbe300d ^



8dbe300d ^

81190251 ^
8dbe300d ^
81190251 ^
8dbe300d ^
8dbe300d ^



8dbe300d ^



81190251 ^

8dbe300d ^

8dbe300d ^
98676613 ^

8dbe300d ^

e089ffb1 ^

e089ffb1 ^

4bd06a5d ^
e089ffb1 ^
eaf2901b ^
e089ffb1 ^
788fc48b ^
e089ffb1 ^
81190251 ^
e089ffb1 ^
e089ffb1 ^

8dbe300d ^

8dbe300d ^





81190251 ^

8dbe300d ^

8dbe300d ^
98676613 ^

8dbe300d ^



8dbe300d ^



81190251 ^
8dbe300d ^
8dbe300d ^



8dbe300d ^








8b4c7e93 ^
8dbe300d ^
81190251 ^
8dbe300d ^
8dbe300d ^
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133