diff options
-rw-r--r-- | fcomp-company.el | 46 | ||||
-rw-r--r-- | fcomp.el | 18 |
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 @@ -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 |