nix-archive-1(type directoryentry(namesharenode(type directoryentry(nameemacsnode(type directoryentry(name site-lispnode(type directoryentry(namecompdef-0.2-2.67104a3node(type directoryentry(namecompdef-autoloads.elnode(typeregularcontentsx;;; compdef-autoloads.el --- automatically extracted autoloads (do not edit) -*- lexical-binding: t -*- ;; Generated by the `loaddefs-generate' function. ;; This file is part of GNU Emacs. ;;; Code: ;;; Generated autoloads from compdef.el (autoload 'compdef "compdef" "\ Set local completion backends for MODES. Infer hooks for MODES. If actual hooks are passed use them directly. Set `company-backends' to COMPANY if not nil. Set `completion-at-point-functions' to CAPF if not nil. All arguments can be quoted lists as well as atoms. (fn &key MODES CAPF COMPANY)") (register-definition-prefixes "compdef" '("compdef--" "use-package-handler/:compdef")) ;;; End of scraped data (provide 'compdef-autoloads) ;; Local Variables: ;; version-control: never ;; no-update-autoloads: t ;; no-native-compile: t ;; coding: utf-8-emacs-unix ;; End: ;;; compdef-autoloads.el ends here ))entry(namecompdef-autoloads.elcnode(typeregularcontents¤;ELC ;;; Compiled ;;; in Emacs version 29.4 ;;; with all optimizations. (when (boundp 'comp--no-native-compile) (puthash load-file-name t comp--no-native-compile)) #@295 Set local completion backends for MODES. Infer hooks for MODES. If actual hooks are passed use them directly. Set `company-backends' to COMPANY if not nil. Set `completion-at-point-functions' to CAPF if not nil. All arguments can be quoted lists as well as atoms. (fn &key MODES CAPF COMPANY) (autoload 'compdef "compdef" '(#$ . 179)) (byte-code "\300\301\302\"\210\303\304!\207" [register-definition-prefixes "compdef" ("compdef--" "use-package-handler/:compdef") provide compdef-autoloads] 3) ))entry(namecompdef-pkg.elnode(typeregularcontentså;;; Generated package description from compdef.el -*- no-byte-compile: t -*- (define-package "compdef" "0.2" "A local completion definer." '((emacs "24.4")) :keywords '("convenience") :url "https://gitlab.com/jjzmajic/compdef") ))entry(name compdef.elnode(typeregularcontentsƒ;;; compdef.el --- A local completion definer. -*- lexical-binding: t; -*- ;; Copyright (C) 2019 Uros Perisic ;; Author: Uros Perisic ;; URL: https://gitlab.com/jjzmajic/compdef ;; ;; Version: 0.2 ;; Keywords: convenience ;; Package-Requires: ((emacs "24.4")) ;; 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 ;; . ;; This file is not part of Emacs. ;;; Commentary: ;; A local completion definer. ;; We keep reinventing the wheel on how to set local completion ;; backends. `compdef' does this for both CAPF and company ;; simultaneously (in case `company-capf' needs tweaking), with some ;; auto-magic thrown in for convenience. `compdef' is intentionally ;; stupid. I've seen some really powerful solutions to this problem, ;; but they all seem to assume a certain approach to configuring ;; completions and are thus usually embedded in a starter kit like ;; Doom Emacs, Spacemacs... `compdef' isn't that clever. It just ;; works. ;;; Code: (require 'cl-lib) (require 'derived) (defvar company-backends) (defvar use-package-keywords) (declare-function use-package-concat "ext:use-package-core") (declare-function use-package-list-insert "ext:use-package-core") (declare-function use-package-process-keywords "ext:use-package-core") (declare-function use-package-normalize-symlist "ext:use-package-core") (defvar compdef--use-package-keywords '(:compdef :capf :company) "Keywords `compdef' adds to `use-package'.") (defun compdef--enlist (exp) "Return EXP wrapped in a list, or as-is if already a list." (declare (pure t) (side-effect-free t)) (if (listp exp) exp (list exp))) (defun compdef--hook-p (symbol) "Check if SYMBOL is a hook." (let ((symbol-name (symbol-name symbol))) (or (string-suffix-p "-hook" symbol-name) (string-suffix-p "-functions" symbol-name)))) ;;;###autoload (cl-defun compdef (&key modes capf company) "Set local completion backends for MODES. Infer hooks for MODES. If actual hooks are passed use them directly. Set `company-backends' to COMPANY if not nil. Set `completion-at-point-functions' to CAPF if not nil. All arguments can be quoted lists as well as atoms." (let ((capf (compdef--enlist capf)) (company (compdef--enlist company)) (modes (compdef--enlist modes))) (dolist (mode modes) (add-hook (if (compdef--hook-p mode) mode (derived-mode-hook-name mode)) (lambda () (when capf (setq-local completion-at-point-functions capf)) (when company (setq-local company-backends company))))))) (defun use-package-handler/:compdef (name _keyword args rest state) "Place target `compdef' :mode ARGS into STATE for keyword. Pass NAME and REST to `use-package-process-keywords'." (use-package-process-keywords name rest (plist-put state :compdef args))) (defun compdef--use-package-handler (name keyword args rest state) "Handle each `compdef' `use-package' keyword for package NAME. This function should not be called with KEYWORD :compdef. Pass ARGS to KEYWORD. Leave REST and STATE unmodified." (use-package-concat (use-package-process-keywords name rest state) `((compdef :modes ',(or (plist-get state :compdef) name) ,keyword ',args)))) (with-eval-after-load 'use-package-core (dolist (keyword compdef--use-package-keywords) (let ((keyword-name (symbol-name keyword))) ;; extend `use-package' keywords (setq use-package-keywords (use-package-list-insert keyword use-package-keywords :init)) ;; define normalizers (defalias (intern (concat "use-package-normalize/" keyword-name)) #'use-package-normalize-symlist) ;; define handlers (unless (eq keyword ':compdef) (defalias (intern (concat "use-package-handler/" keyword-name)) #'compdef--use-package-handler))))) (provide 'compdef) ;;; compdef.el ends here ))entry(name compdef.elcnode(typeregularcontents“ ;ELC ;;; Compiled ;;; in Emacs version 29.4 ;;; with all optimizations. (byte-code "\300\301!\210\300\302!\207" [require cl-lib derived] 2)#@43 Keywords `compdef' adds to `use-package'. (defvar compdef--use-package-keywords '(:compdef :capf :company) (#$ . 151))#@69 Return EXP wrapped in a list, or as-is if already a list. (fn EXP) (defalias 'compdef--enlist #[257 "\211<\203\207\211C\207" [] 2 (#$ . 275)]) (byte-code "\300\301\302\303#\300\301\304\303#\300\207" [function-put compdef--enlist pure t side-effect-free] 5)#@41 Check if SYMBOL is a hook. (fn SYMBOL) (defalias 'compdef--hook-p #[257 "\300!\301\302\"\206\301\303\"\207" [symbol-name string-suffix-p "-hook" "-functions"] 5 (#$ . 540)])#@295 Set local completion backends for MODES. Infer hooks for MODES. If actual hooks are passed use them directly. Set `company-backends' to COMPANY if not nil. Set `completion-at-point-functions' to CAPF if not nil. All arguments can be quoted lists as well as atoms. (fn &key MODES CAPF COMPANY) (defalias 'compdef #[128 "\300\301\"A@\300\302\"A@\300\303\"A@\211\203H\211@\304>\2031\211A\204)\305\306@\"\210\211AA\262\202\307>A@\203?\310\262\202\305\311@\"\210\202\210\312!\312!\312!\211\211\205~\211@\313\314!\203d\202n\315\316!\317P!\262\320\321 #\"\210A\266\202\202S\207" [plist-member :modes :capf :company (:modes :capf :company :allow-other-keys) error "Missing argument for %s" :allow-other-keys nil "Keyword argument %s not one of (:modes :capf :company)" compdef--enlist add-hook compdef--hook-p intern symbol-name "-hook" make-closure #[0 "\301\203\n\304\302!\210\301\300\205\304\303!\210\300\211\207" [V0 V1 completion-at-point-functions company-backends make-local-variable] 2]] 15 (#$ . 726)])#@148 Place target `compdef' :mode ARGS into STATE for keyword. Pass NAME and REST to `use-package-process-keywords'. (fn NAME KEYWORD ARGS REST STATE) (defalias 'use-package-handler/:compdef #[1285 "\300\301\302##\207" [use-package-process-keywords plist-put :compdef] 12 (#$ . 1777)])#@213 Handle each `compdef' `use-package' keyword for package NAME. This function should not be called with KEYWORD :compdef. Pass ARGS to KEYWORD. Leave REST and STATE unmodified. (fn NAME KEYWORD ARGS REST STATE) (defalias 'compdef--use-package-handler #[1285 "\300\301#\302\303\304\305\306\"\206 D\304 D\257C\"\207" [use-package-concat use-package-process-keywords compdef :modes quote plist-get :compdef] 13 (#$ . 2070)]) (byte-code "\300\301\302\"\210\303\304!\207" [eval-after-load use-package-core #[0 "\211\2050\211@\302!\303 \304#\305\306\307P!\310\"\210\311=\204(\305\306\312P!\313\"\210\210A\266\202\202\207" [compdef--use-package-keywords use-package-keywords symbol-name use-package-list-insert :init defalias intern "use-package-normalize/" use-package-normalize-symlist :compdef "use-package-handler/" compdef--use-package-handler] 7] provide compdef] 3) )))))))))))