summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnastasios Grammenos <anastasios.grammenos@noris.gr>2020-09-22 16:35:27 +0300
committerAnastasios Grammenos <anastasios.grammenos@noris.gr>2020-09-22 16:35:27 +0300
commit42ba97c086c473f8abc52108ca6ceb276525e027 (patch)
tree3a45c209fceb7bf838fd8704e0a9c72bd7e39859
parent41a0806297ad6e31c33a9d25b0138a5ae90546d8 (diff)
downloadfcomp-42ba97c086c473f8abc52108ca6ceb276525e027.tar.gz
fcomp-42ba97c086c473f8abc52108ca6ceb276525e027.tar.bz2
fcomp-42ba97c086c473f8abc52108ca6ceb276525e027.zip
company-mode backend
-rw-r--r--fcomp-company.el46
-rw-r--r--fcomp.el18
2 files changed, 62 insertions, 2 deletions
diff --git a/fcomp-company.el b/fcomp-company.el
new file mode 100644
index 0000000..9fda462
--- /dev/null
+++ b/fcomp-company.el
@@ -0,0 +1,46 @@
+;;; fcomp-company.el --- -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2019 Anastasis Grammenos
+
+;; Author: Anastasis Grammenos <anastasis.gramm2@gmail.com>
+;; Keywords: lisp
+;; Version: 0.0.1
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; company-mode bakcjed for fcomp.
+
+;;; Install:
+
+;; (require 'fcomp-company)
+;; (add-to-list 'company-backends 'company-fcomp)
+
+;;; Code:
+
+(require 'fcomp)
+(require 'company)
+
+(defun company-fcomp (command &optional arg &rest ignored)
+ (interactive (list 'interactive))
+ (cl-case command
+ (interactive (company-begin-backend 'company-fcomp))
+ (prefix (company-grab-symbol))
+ (candidates (fcomp-get-canditates arg))
+ (sorted t)
+ (duplicates nil)))
+
+(provide 'fcomp-company)
+;;; fcomp.el ends here
diff --git a/fcomp.el b/fcomp.el
index 66eaf7c..40a0e5b 100644
--- a/fcomp.el
+++ b/fcomp.el
@@ -101,7 +101,7 @@
(setq fcomp--query "")
(setq fcomp--output "")))
-(defun fcomp--autocomplete (word point)
+(defun fcomp--autocomplete (word point &optional x)
"Start fcomp process and orchistrate it's output."
(let ((term (if (empty-string-p word)
(format "%s" "-au")
@@ -128,11 +128,25 @@
(process-send-string proc "\n")
(process-send-eof proc)
(if (accept-process-output proc nil nil t)
- (fcomp--handle-output)
+ (if x
+ (message "%s" "blabla")
+ (fcomp--handle-output))
(progn
(message "No completion for %s" word)
(delete-process proc)))))
+(defun fcomp-get-canditates (word)
+ ""
+ (progn
+ (let ((table (copy-syntax-table (syntax-table))))
+ (modify-syntax-entry ?- "w" table)
+ (modify-syntax-entry ?_ "w" table)
+ (when (not (empty-string-p fcomp-extra-valid-chars))
+ (mapc (lambda (char) (modify-syntax-entry char "w" table)) fcomp-extra-valid-chars))
+ (with-syntax-table table
+ (fcomp--autocomplete word (point) t)))
+ (remove "" (split-string fcomp--output "\n"))))
+
(defun fcomp-autocomplete ()
"Autocompete using fcomp.c