get-active-path.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. function getActivePath (target) {
  2. if (!target) {
  3. return atom.project.getPaths()[0]
  4. }
  5. const treeView = target.closest('.tree-view')
  6. if (treeView) {
  7. // called from treeview
  8. const selected = treeView.querySelector('.selected > .list-item > .name, .selected > .name')
  9. if (selected) {
  10. return selected.dataset.path
  11. }
  12. return
  13. }
  14. const tab = target.closest('.tab-bar > .tab')
  15. if (tab) {
  16. // called from tab
  17. const title = tab.querySelector('.title')
  18. if (title && title.dataset.path) {
  19. return title.dataset.path
  20. }
  21. return
  22. }
  23. const paneItem = atom.workspace.getActivePaneItem()
  24. if (paneItem && typeof paneItem.getPath === 'function') {
  25. // called from active pane
  26. return paneItem.getPath()
  27. }
  28. const textEditor = atom.workspace.getActiveTextEditor()
  29. if (textEditor && typeof textEditor.getPath === 'function') {
  30. // fallback to activeTextEditor if activePaneItem is not a file
  31. return textEditor.getPath()
  32. }
  33. const projects = atom.project.getPaths()
  34. if (projects.length === 1) {
  35. // use project is nothing is open
  36. return projects[0]
  37. }
  38. }
  39. module.exports = getActivePath