From 093ffa5fbf7143f4668bb0a3dc9659a5cc836e12 Mon Sep 17 00:00:00 2001 From: Yuchen Pei Date: Sat, 17 Jun 2023 17:20:29 +1000 Subject: Moving things one level deeper To ease gnu stow usage. Now we can do stow -t ~ emacs --- .emacs.d/lisp/my/my-hiedb.el | 73 -------------------------------------------- 1 file changed, 73 deletions(-) delete mode 100644 .emacs.d/lisp/my/my-hiedb.el (limited to '.emacs.d/lisp/my/my-hiedb.el') diff --git a/.emacs.d/lisp/my/my-hiedb.el b/.emacs.d/lisp/my/my-hiedb.el deleted file mode 100644 index ef3a3c4..0000000 --- a/.emacs.d/lisp/my/my-hiedb.el +++ /dev/null @@ -1,73 +0,0 @@ -;;; my-hiedb.el -- Extensions for hiedb -*- lexical-binding: t -*- - -;; Copyright (C) 2023 Free Software Foundation. - -;; Author: Yuchen Pei -;; Package-Requires: ((emacs "28.2")) - -;; This file is part of dotfiles. - -;; dotfiles is free software: you can redistribute it and/or modify it under -;; the terms of the GNU Affero General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; dotfiles 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 Affero General -;; Public License for more details. - -;; You should have received a copy of the GNU Affero General Public -;; License along with dotfiles. If not, see . - -;;; Commentary: - -;; Extensions for hiedb. - -;;; Code: - -;;; to use, do for example: -;; (add-hook 'haskell-mode-hook -;; (lambda () -;; (add-hook 'xref-backend-functions -;; #'hiedb--xref-backend nil t))) - -(defun hiedb--xref-backend () 'hiedb) - -(cl-defmethod xref-backend-definitions - ((_backend (eql hiedb)) _identifiers) - (my-hiedb-call-point-defs buffer-file-name - (1+ (current-line)) (1+ (current-column))) - (my-hiedb-parse-point-defs-output - (file-name-directory buffer-file-name) - (with-current-buffer "*hiedb*" - (goto-char (point-min)) (kill-line) (kill-line) - (buffer-string)) - )) - -(defun my-hiedb-call-point-defs (file line col) - (let ((dir (file-name-directory file)) - (module-name (file-name-base file))) - (with-current-buffer (get-buffer-create "*hiedb*") - (erase-buffer)) - (call-process "hiedb" nil "*hiedb*" nil - "-D" - (format "%sdefault.hiedb" dir) - "point-defs" module-name - (number-to-string line) - (number-to-string col)))) - -(defun my-hiedb-parse-point-defs-output (dir output) - "module-name:line-begin:col-begin-line-end:col-end" - (pcase-let ((`(,module-name ,line-beg ,col-beg, line-end, col-end) - (split-string output "[:-]" (print output)))) - (list - (xref-make-match - "" (xref-make-file-location - (format "%s%s.hs" dir module-name) - (string-to-number line-beg) - (string-to-number col-beg)) - (- (string-to-number col-end) (string-to-number col-beg)))))) - -(provide 'my-hiedb) -;;; my-hiedb.el ends here -- cgit v1.2.3