Well your plugin works fine for adding the parameters, but not when writing test classes. So I have a project set up with main and test packages and if I’m writing in the test class and I put a period, it says
Traceback (most recent call last):
File ".\sublime_plugin.py", line 362, in run_
File ".\displayfunctions.py", line 34, in run
File ".\displayfunctions.py", line 91, in get_obj_type
File ".\displayfunctions.py", line 73, in get_return_type
IOError: [Errno 2] No such file or directory: u'C:\\workspace\\testing\\src\\main\\java\\com\\thing\\thing2\\thing3\\String.java'
I subbed String in there for a real class name, but it happens no matter what.
I actually forgot to submit this comment, and now after about 3 hours I have figured out how to make this work while writing in test classes too. I don’t know how to make changes to stuff on github, so here you go, I added several lines to the make_filename function and I added another function to iterate through the folders.
[code]def make_filename(self, classname):
this_file = self.view.file_name()
dir_len = this_file.rfind('/') # (for OSX)
if not dir_len > 0:
dir_len = this_file.rfind('\\') # (for Windows)
this_dir = this_file:(dir_len + 1)] # + 1 for the '/'
this_dir = re.sub(r"\\test.*", r"\\main", this_dir) #added this to move back to main directory
for i in self.locate(classname + ".java", this_dir): #added this to find the class in the directory
this_dir = i
return this_dir
def locate(self, pattern, file_path):
'''Locate all files matching supplied filename pattern in and below
supplied root directory.'''
for (path, dirs, files) in os.walk(file_path):
for filename in fnmatch.filter(files, pattern):
yield os.path.join(path, filename)[/code]