Open file in Intellij Idea. Common interface for IDE.
authorOleksandr Gavenko <gavenkoa@gmail.com>
Thu, 09 Mar 2017 10:53:14 +0200
changeset 1503 24fcc4c42be4
parent 1502 72c63cea35d3
child 1504 57c5763e0628
Open file in Intellij Idea. Common interface for IDE.
.emacs-my
--- a/.emacs-my	Mon Mar 06 15:40:53 2017 +0200
+++ b/.emacs-my	Thu Mar 09 10:53:14 2017 +0200
@@ -1375,29 +1375,56 @@
   )
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(message "netbeans")
-
-(defun netbeans-find-command ()
+(message "ide, netbeans, idea")
+
+(defun ide-netbeans-find-command ()
   "Search for NetBeans executable in PATH, later in '/opt/netbeans*/bin/'."
   (or
    (executable-find "netbeans")
    (car (last (sort (file-expand-wildcards "/opt/[Nn]etbeans*/bin/netbeans" t) 'equal))) ))
-(defvar netbeans-command (netbeans-find-command)
+(defvar ide-netbeans-program (ide-netbeans-find-command)
   "Command to run NetBeans.")
-(defun netbeans-open-file (file &optional line)
+
+(defconst ide-netbeans-process-bufname "*ide-netbeans*"
+  "Name used in `start-process'")
+(defun ide-netbeans-open-file (file &optional line)
   "Open FILE on LINE in NetBeans."
+  (unless ide-netbeans-program
+    (error "'ide-netbeans-program' is not set"))
   (if (integerp line)
-      (start-process "netbeans" nil netbeans-command "--open" (format "%s:%d" file line))
-    (start-process "netbeans" nil netbeans-command "--open" file)))
-(defun netbeans-open-this-buffer ()
-  "Open file for burrent buffer in NetBeans."
+      (start-process ide-netbeans-process-bufname nil ide-netbeans-program "--open" (format "%s:%d" file line))
+    (start-process ide-netbeans-process-bufname nil ide-netbeans-program "--open" file)))
+(defun ide-netbeans-open-this-buffer ()
+  "Open current buffer in NetBeans."
   (interactive)
   (unless (stringp (buffer-file-name))
     (error "Buffer have no association with a file"))
   (if (file-regular-p (buffer-file-name))
-      (netbeans-open-file (buffer-file-name) (line-number-at-pos))
+      (ide-netbeans-open-file (buffer-file-name) (line-number-at-pos))
     (message "Current buffer wasnt' associated with a real file")))
 
+(defvar ide-idea-program nil
+  "Idea executable or full path, like 'idea64.exe'")
+
+(defconst ide-idea-process-bufname "*ide-idea*"
+  "Name used in `start-process'")
+(defun ide-idea-open-file (file &optional line)
+  "Open FILE on LINE in Intellij Idea."
+  (unless ide-idea-program
+    (error "'ide-idea-program' is not set"))
+  (let ( (default-directory (file-name-directory file)) (fname (file-name-nondirectory file)) )
+    (if (integerp line)
+        (start-process ide-idea-process-bufname nil ide-idea-program "--line" (int-to-string line) fname)
+      (start-process ide-idea-process-bufname nil ide-idea-program fname))))
+(defun ide-idea-open-this-buffer ()
+  "Open current buffer in Intellij Idea."
+  (interactive)
+  (unless (stringp (buffer-file-name))
+    (error "Buffer have no association with a file"))
+  (unless (file-regular-p (buffer-file-name))
+    (error "Current buffer isn't associated with a real file"))
+  (ide-idea-open-file (buffer-file-name) (line-number-at-pos)))
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 (message "calendar")