diff options
-rw-r--r-- | lisp/hcel-haddorg.el | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/lisp/hcel-haddorg.el b/lisp/hcel-haddorg.el new file mode 100644 index 0000000..ad797e0 --- /dev/null +++ b/lisp/hcel-haddorg.el @@ -0,0 +1,46 @@ +;; -*- lexical-binding: t; -*- +;; Copyright (C) 2022 Yuchen Pei. +;; +;; This file is part of hcel. +;; +;; hcel 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. +;; +;; hcel 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 hcel. If not, see <https://www.gnu.org/licenses/>. + +(require 'hcel-source) +(require 'hcel-client) +(require 'hcel-utils) + +(defun hcel-haddorg-to-hcel-definition () + (interactive) + (save-excursion + (org-back-to-heading t) + (let* ((id (org-entry-get (point) "CUSTOM_ID")) + (splitted (split-string id "/")) + (module-name (car splitted)) + (entity (if (equal "v" (cadr splitted)) "Val" "Typ")) + (name (caddr splitted)) + (package) (unparsed) (package-id)) + (goto-char (point-min)) + (setq package (org-entry-get (point) "ITEM")) + (setq package-id + (hcel-parse-package-id + (progn + (string-match "^\\(.*?\\)\\(:.*\\)?$" package) + (match-string 1 package)) + "-")) + (hcel-load-module-location-info + (alist-get 'location + (hcel-api-definition-site + package-id "lib" module-name entity name)))))) + +(provide 'hcel-haddorg) |