@@ -116,32 +116,45 @@ func (sh *SessionHandler) expandPath(path string) (string, error) {
116
116
return path , nil
117
117
}
118
118
119
+ func (sh * SessionHandler ) replaceHomeDir (fullpath string ) (string , error ) {
120
+ home , err := os .UserHomeDir ()
121
+ if err != nil {
122
+ return "" , err
123
+ }
124
+ return strings .Replace (fullpath , home , "~" , 1 ), nil
125
+ }
126
+
119
127
func (sh * SessionHandler ) NewSession () error {
120
128
config := sh .readConfig ()
121
129
if config == nil {
122
130
return errors .New ("failed to create new project from projects" )
123
131
}
124
132
/*build fzf input and build hashmap to retrieve filepath from entry's name.*/
125
133
var input bytes.Buffer
126
- projectHashMap := make (map [string ]string , 0 )
134
+ projectNameFullPathMap , projectExpressionNameMap := make ( map [ string ] string , 0 ), make (map [string ]string , 0 )
127
135
for _ , project := range config .projects {
128
- input .WriteString (project .name + "\n " )
129
- projectHashMap [project .name ] = project .filepath
136
+ replaced , err := sh .replaceHomeDir (project .filepath )
137
+ if err != nil {
138
+ return errors .New ("failed to replace home directory to ~" )
139
+ }
140
+ input .WriteString (replaced + "\n " )
141
+ projectNameFullPathMap [project .name ] = project .filepath
142
+ projectExpressionNameMap [replaced ] = project .name
130
143
}
131
144
fzfOut , err := sh .toFzf (input )
132
145
if err != nil {
133
146
return fmt .Errorf ("failed to create new project from projects: %w" , err )
134
147
}
135
- sessionName := strings .Trim (fzfOut .String (), "\n " )
148
+ sessionName := projectExpressionNameMap [ strings .Trim (fzfOut .String (), "\n " )]
136
149
if sh .isInSession () {
137
- return sh .switchToNewClient (sessionName , projectHashMap [sessionName ])
150
+ return sh .switchToNewClient (sessionName , projectNameFullPathMap [sessionName ])
138
151
}
139
152
if sh .sessionExists (sessionName ) {
140
153
return sh .attach (sessionName )
141
154
}
142
155
if err := sh .newTmuxCmd (
143
156
"tmux" , "new-session" , "-s" ,
144
- sessionName , "-c" , projectHashMap [sessionName ]).Run (); err != nil {
157
+ sessionName , "-c" , projectNameFullPathMap [sessionName ]).Run (); err != nil {
145
158
return fmt .Errorf ("failed to create new session %w: " , err )
146
159
}
147
160
return nil
0 commit comments