- ((string-match "^\\*\\(/.*/\\)\\(.*\\)\\*" path-ish)
- (setq path (match-string 1 path-ish))
- (setq name
- (multishell:bracket-asterisks
- (if (string= (match-string 2 path-ish) "")
- (let ((v (tramp-dissect-file-name
- path)))
- (or (tramp-file-name-host v)
- (tramp-file-name-domain v)
- (tramp-file-name-localname v)
- path))
- (match-string 2 path-ish)))))
+ ((string-match "^\\*\\([^/]*\\)\\(/.*/\\)\\(.*\\)\\*" path-ish)
+ ;; We have a path, use it
+ (let ((overt-name (match-string 1 path-ish))
+ (overt-path (match-string 2 path-ish))
+ (trailing-name (match-string 3 path-ish)))
+ (if (string= overt-name "") (setq overt-name nil))
+ (if (string= overt-path "") (setq overt-path nil))
+ (if (string= trailing-name "") (setq trailing-name nil))
+ (setq path (concat overt-path trailing-name))
+ (setq name
+ (multishell:bracket-asterisks
+ (or overt-name
+ (if (tramp-file-name-p path)
+ (let ((vec (tramp-dissect-file-name path)))
+ (or (tramp-file-name-host vec)
+ (tramp-file-name-domain vec)
+ (tramp-file-name-localname vec)
+ trailing-name
+ system-name))
+ (multishell:unbracket-asterisks
+ multishell:primary-name)))))))