From 37c48dc9a36d9ffbd94af23d19192e00168c1836 Mon Sep 17 00:00:00 2001 From: "a.manvelyan" Date: Fri, 15 Dec 2017 13:17:19 +0300 Subject: [PATCH] Modified: sublimegdb.py: expand_path This changes allow to use Sublime Variables (project_path etc) like os environment variables. Also, allow to use expressions like ${folder:${folder:${project_path:${env:${env:project_base_name}}}}} --- sublimegdb.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/sublimegdb.py b/sublimegdb.py index 0081558..1d70d68 100644 --- a/sublimegdb.py +++ b/sublimegdb.py @@ -106,16 +106,21 @@ def expand_path(value, window): ] view = window.active_view() file_name = view.file_name(); + sublime_vars = window.extract_variables() # replace variable with values if file_name: value = re.sub(r'\${file}', lambda m: file_name, value) value = re.sub(r'\${file_base_name}', lambda m: os.path.splitext(os.path.basename(file_name))[0], value) if os.getenv("HOME"): value = re.sub(r'\${home}', re.escape(os.getenv('HOME')), value) - value = re.sub(r'\${env:(?P.*)}', lambda m: os.getenv(m.group('variable')), value) + n=1 + while n: + value,n = re.subn(r'\${env:(?P[^$]*?)}', lambda m: os.getenv(m.group('variable')) if os.getenv(m.group('variable')) else sublime_vars[m.group('variable')], value) # search in projekt for path and get folder from path - value = re.sub(r'\${project_path:(?P[^}]+)}', lambda m: len(get_existing_files(m)) > 0 and get_existing_files(m)[0] or m.group('file'), value) - value = re.sub(r'\${folder:(?P.*)}', lambda m: os.path.dirname(m.group('file')), value) + value = re.sub(r'\${project_path:(?P.*?)}', lambda m: len(get_existing_files(m)) > 0 and get_existing_files(m)[0] or m.group('file'), value) + n=1 + while n: + value,n = re.subn(r'\${folder:(?P.*?)}', lambda m: os.path.dirname(m.group('file')), value) value = value.replace('\\', os.sep) value = value.replace('/', os.sep)