@@ -190,24 +190,38 @@ def trickle(config):
190190 ``shell_command_before``.
191191 '''
192192
193- session_start_directory = config ['start_directory' ] if 'start_directory' in config else None
193+ if 'start_directory' in config :
194+ session_start_directory = config ['start_directory' ]
195+ else :
196+ session_start_directory = None
194197
195198 for windowconfig in config ['windows' ]:
196- if not 'start_directory' in windowconfig and session_start_directory :
197- windowconfig ['start_directory' ] = session_start_directory
198- for paneconfig in windowconfig ['panes' ]:
199- commands_before = config [
200- 'shell_command_before' ] if 'shell_command_before' in config else []
201- commands_before .extend (windowconfig [
202- 'shell_command_before' ]) if 'shell_command_before' in windowconfig else None
203- commands_before .extend (paneconfig [
204- 'shell_command_before' ]) if 'shell_command_before' in paneconfig else None
205199
200+ # Prepend start_directory to relative window commands
201+ if session_start_directory :
202+
203+ if not 'start_directory' in windowconfig :
204+ windowconfig ['start_directory' ] = session_start_directory
205+ else :
206+ if not any (windowconfig ['start_directory' ].startswith (a ) for a in ['~' , '/' ]):
207+ windowconfig ['start_directory' ] = os .path .join (session_start_directory , windowconfig ['start_directory' ])
208+
209+ for paneconfig in windowconfig ['panes' ]:
210+ commands_before = []
211+
212+ # Prepend shell_command_before to commands
213+ if 'shell_command_before' in config :
214+ commands_before = config ['shell_command_before' ]
215+ if 'shell_command_before' in windowconfig :
216+ commands_before .extend (windowconfig ['shell_command_before' ])
217+ if 'shell_command_before' in paneconfig :
218+ commands_before .extend (paneconfig ['shell_command_before' ])
206219 if 'shell_command' not in paneconfig :
207220 paneconfig ['shell_command' ] = list ()
208221
209- commands_before .extend (paneconfig [
210- 'shell_command' ]) if paneconfig ['shell_command' ] else None
222+ if paneconfig ['shell_command' ]:
223+ commands_before .extend (paneconfig ['shell_command' ])
224+
211225 paneconfig ['shell_command' ] = commands_before
212226
213227 return config
0 commit comments