Merge pull request #1304 from ehwarren/feature/working-directory-in-new-terminals

Allow configuration of new tab CWD behaviour
This commit is contained in:
Eugene 2019-07-25 08:22:04 +02:00 committed by GitHub
commit 4274ed563b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 23 additions and 8 deletions

View File

@ -55,6 +55,16 @@ h3.mb-3 Shell
button.btn.btn-secondary((click)='pickWorkingDirectory()')
i.fas.fa-folder-open
.form-line
.header
.title Always Use Working Directory
.description By default, new terminals will open where the previous terminal was working. Enabling this option will always launch new terminals in the working directory specified above.
toggle(
[(ngModel)]='config.store.terminal.alwaysUseWorkingDirectory',
(ngModelChange)='config.save()'
)
.form-line.align-items-start
.header
.title Environment

View File

@ -27,6 +27,7 @@ export class TerminalConfigProvider extends ConfigProvider {
copyOnSelect: false,
scrollOnInput: true,
workingDirectory: '',
alwaysUseWorkingDirectory: false,
altIsMeta: false,
colorScheme: {
__nonStructural: true,

View File

@ -35,7 +35,9 @@ export class NewTabContextMenu extends TerminalContextMenuItemProvider {
submenu: profiles.map(profile => ({
label: profile.name,
click: () => this.zone.run(async () => {
this.terminalService.openTab(profile, await tab.session.getWorkingDirectory())
const workingDirectory = this.config.store.terminal.alwaysUseWorkingDirectory === true ?
this.config.store.terminal.workingDirectory : await tab.session.getWorkingDirectory()
await this.terminalService.openTab(profile, workingDirectory)
}),
})),
},

View File

@ -65,14 +65,16 @@ export class TerminalService {
}
if (!cwd) {
if (this.app.activeTab instanceof TerminalTabComponent && this.app.activeTab.session) {
cwd = await this.app.activeTab.session.getWorkingDirectory()
}
if (this.app.activeTab instanceof SplitTabComponent) {
const focusedTab = this.app.activeTab.getFocusedTab()
if (!this.config.store.terminal.alwaysUseWorkingDirectory) {
if (this.app.activeTab instanceof TerminalTabComponent && this.app.activeTab.session) {
cwd = await this.app.activeTab.session.getWorkingDirectory()
}
if (this.app.activeTab instanceof SplitTabComponent) {
const focusedTab = this.app.activeTab.getFocusedTab()
if (focusedTab instanceof TerminalTabComponent && focusedTab.session) {
cwd = await focusedTab.session.getWorkingDirectory()
if (focusedTab instanceof TerminalTabComponent && focusedTab.session) {
cwd = await focusedTab.session.getWorkingDirectory()
}
}
}
cwd = cwd || this.config.store.terminal.workingDirectory