;ELC ;;; Compiled ;;; in Emacs version 27.1 ;;; with all optimizations. ;;; This file uses dynamic docstrings, first added in Emacs 19.29. ;;; This file does not contain utf-8 non-ASCII characters, ;;; and so can be loaded in Emacs versions earlier than 23. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (require 'ede) #@51 Set to t to simulate systems w/out inode support. (defvar ede--disable-inode nil (#$ . 423)) #@159 Find FILE in project. FILE can be specified without a directory. There is no completion at the prompt. FILE is searched for within the current EDE project. (defalias 'ede-find-file #[(file) "\303 \304 \"\211\204\305\306 \307!#\210\310\n!*\207" [proj file fname ede-current-project ede-expand-filename error "Could not find %s in %s" ede-project-root-directory find-file] 6 (#$ . 523) "sFile: "]) #@53 Flush the file locate hash for the current project. (defalias 'ede-flush-project-hash #[nil "\301\302!\210\303\304 !\211\205\305!)\207" [loc require ede/locate ede-get-locator-object ede-current-project ede-locate-flush-hash] 3 (#$ . 933) nil]) (byte-code "\300\301\302\303\302\304%\210\300\305\302\306\302\307%\207" [cl-generic-define-method ede-project-root nil ((this ede-project-placeholder)) #[(this) "\301\302\"\207" [this eieio-oref rootproject] 3 "If a project knows its root, return it here.\nAllows for one-project-object-for-a-tree type systems."] ede-project-root-directory ((this ede-project-placeholder) &optional file) #[(this &optional file) "\302!\206\303\304\305\306\"!!)\207" [this root ede-project-root file-name-directory expand-file-name eieio-oref file] 5 "If a project knows its root, return it here.\nAllows for one-project-object-for-a-tree type systems.\nOptional FILE is the file to test. It is ignored in preference\nof the anchor file for the project."]] 6) #@39 A hash of directory names and inodes. (defvar ede-inode-directory-hash (make-hash-table :test 'equal) (#$ . 1939)) #@56 Add to the EDE project hash DIR associated with INODE. (defalias 'ede--put-inode-dir-hash #[(dir inode) "\303\304!\205 \304 \n#\210 \207" [dir inode ede-inode-directory-hash fboundp puthash] 4 (#$ . 2060)]) #@53 Get the EDE project hash DIR associated with INODE. (defalias 'ede--get-inode-dir-hash #[(dir) "\302\303!\205\n\303 \"\207" [dir ede-inode-directory-hash fboundp gethash] 3 (#$ . 2275)]) #@41 Return the inode for the directory DIR. (defalias 'ede--inode-for-dir #[(dir) "\304\305!!\211\206#\n\203\306\307\"\202#\310!\306 \3118\262\"))\207" [dir hashnode ede--disable-inode fattr ede--get-inode-dir-hash expand-file-name ede--put-inode-dir-hash 0 file-attributes 10] 6 (#$ . 2470)]) (cl-generic-define-method 'ede--project-inode nil '((proj ede-project-placeholder)) nil #[(proj) "\301\302\"\203\f\303\302\"\207\304\302\305\303\306\"!#\207" [proj slot-boundp dirinode eieio-oref eieio-oset ede--inode-for-dir directory] 7 "Get the inode of the directory project PROJ is in."]) #@93 Return an already open toplevel project that is managing INODE. Does not check subprojects. (defalias 'ede--inode-get-toplevel-open-project #[(inode) "\247\203 \304U\203:\2051 \305\211\203/\n\204/\306 @!\232\203( @ A\211\204\n*\207" [inode ede-projects found all 0 nil ede--project-inode] 4 (#$ . 3077)]) #@170 Return an already open project that is managing DIR. Optional ROOTRETURN specifies a symbol to set to the root project. If DIR is the root project, then it is the same. (defalias 'ede-directory-get-open-project #[(dir &optional rootreturn) "\306!\307\310!!\311 !\312 \204 \204\313\n! \203( L\210 \203J \203<\n\310\314 \315\"!\230?\202B \316 !\232?\203J\317 \n\"\f,\207" [dir inode ft proj ans ede--disable-inode ede--inode-for-dir file-name-as-directory expand-file-name ede--inode-get-toplevel-open-project nil ede-directory-get-toplevel-open-project eieio-oref directory ede--project-inode ede-find-subproject-for-directory rootreturn] 5 (#$ . 3406)]) #@128 Return an already open toplevel project that is managing DIR. If optional EXACT is non-nil, only return exact matches for DIR. (defalias 'ede-directory-get-toplevel-open-project #[(dir &optional exact) "\306\307!! \310\211\f\203\277 \204\277\307\311\f@\312\"!\211 \230\203)\f@\202\267\204V\313\314\315!P \"\203V\n\204D\f@\202\267\311\n\312\"GGW\203\267\f@\202\267\204~\316\f@!\317!\320\321\"?\205t\232*\203~\f@\202\267\204\267\322 !\322!\313\314\315!P\"*\203\267\n\204\246\f@\202\267\307\311\n\312\"!GGW\203\267\f@)\fA\211\204 \206\304\n,\207" [dir ede-projects shortans ans all ft file-name-as-directory expand-file-name nil eieio-oref directory string-match "^" regexp-quote ede--project-inode ede--inode-for-dir eql 0 file-truename pd exact ede--disable-inode inode pin ptd ftn] 5 (#$ . 4089)]) (cl-generic-define-method 'ede-find-subproject-for-directory nil '((proj ede-project-placeholder) dir) nil #[(proj dir) "\203\306\307 !\310\f\311\"\210 *\207\306\312 !\310\f\313\"\210 *\207" [ede--disable-inode dir fulldir ans proj inode nil file-truename ede-map-subprojects #[(SP) "?\205 \304\305\n\306\"!\230\203\n\211\207\307\n \"\207" [ans fulldir SP dir file-truename eieio-oref directory ede-find-subproject-for-directory] 5] ede--inode-for-dir #[(SP) "?\205\304 !\n\232\203 \211\207\305 \"\211\207" [ans SP inode dir ede--project-inode ede-find-subproject-for-directory] 3]] 3 "Find a subproject of PROJ that corresponds to DIR."]) #@55 A hash of directory names and associated EDE objects. (defvar ede-project-directory-hash (make-hash-table :test 'equal) (#$ . 5623)) #@137 Flush the project directory hash. Do this only when developing new projects that are incorrectly putting 'nomatch tokens into the hash. (defalias 'ede-flush-directory-hash #[nil "\303\304\305\"\306 !\211\205\307\n!)\207" [ede-project-directory-hash ede-object loc make-hash-table :test equal ede-get-locator-object ede-locate-flush-hash] 4 (#$ . 5763) nil]) #@100 Reset the directory hash for DIR. Do this whenever a new project is created, as opposed to loaded. (defalias 'ede-project-directory-remove-hash #[(dir) "\303!\304\305!\205\305\306! \"\210\307\310!P\311\312 \")\207" [dir ede-project-directory-hash match expand-file-name fboundp remhash file-name-as-directory "^" regexp-quote maphash #[(K O) "\303 \"\205 \304 \n\"\207" [match K ede-project-directory-hash string-match remhash] 3]] 3 (#$ . 6132)]) #@73 If there is an already loaded project for DIR, return it from the hash. (defalias 'ede--directory-project-from-hash #[(dir) "\302\303!\205\304!\303 \305#\207" [dir ede-project-directory-hash fboundp gethash expand-file-name nil] 4 (#$ . 6595)]) #@55 Add to the EDE project hash DIR associated with DESC. (defalias 'ede--directory-project-add-description-to-hash #[(dir desc) "\303\304!\205\305!\304 \n#\210 \207" [dir desc ede-project-directory-hash fboundp puthash expand-file-name] 4 (#$ . 6851)]) #@394 Return a project description object if DIR is in a project. Optional argument FORCE means to ignore a hash-hit of `nomatch'. This depends on an up to date `ede-project-class-files' variable. Any directory that contains the file .ede-ignore will always return nil. Consider using `ede-directory-project-cons' instead if the next question you want to ask is where the root of found project is. (defalias 'ede-directory-project-p #[(dir &optional force) "\303 \"\211A)\207" [dir force detect ede-directory-project-cons] 4 (#$ . 7113)]) #@158 Return a project CONS (ROOTDIR . AUTOLOAD) for DIR. If there is no project in DIR, return nil. Optional FORCE means to ignore the hash of known directories. (defalias 'ede-directory-project-cons #[(dir &optional force) "\306\307\310\"!?\205L\307!\311 !\211\312=\203 \204 \313\202K\n\203.\n\312=\204.\n\202K\314 !\211A\211\203@\315\316 \317\"!\210\320 \f\206G\312\"\210\f**\207" [dir dirtest match force detect autoloader file-exists-p expand-file-name ".ede-ignore" ede--directory-project-from-hash nomatch nil ede-detect-directory-for-project require eieio-oref file ede--directory-project-add-description-to-hash] 5 (#$ . 7656)]) #@102 Starting with DIR, find the toplevel project directory. If DIR is not part of a project, return nil. (defalias 'ede-toplevel-project #[(dir) "\304 \n\230\203 \203\305 \306\"\2020\307 !\211\203\"\305\306\"\2020\310 !\211\203/@\2020\304)\207" [ans dir default-directory ede-object-root-project nil eieio-oref directory ede-directory-get-toplevel-open-project ede-detect-directory-for-project] 3 (#$ . 8311)]) (byte-code "\300\301\302\"\210\303\304\305\306\305\307%\210\303\304\305\310\305\311%\207" [defalias ede-toplevel-project-or-nil ede-toplevel-project cl-generic-define-method ede-convert-path nil ((this ede-project) path) #[(this path) "\306!\307 !\310\311 !\n\"\203\312\n\313\225\"\2027\314 !\314\n!\310\311 !\f\"\2032\312\f\313\225\"\2026\315\316\n\"**\207" [this path fp pp fptf pptf ede-project-root-directory expand-file-name string-match regexp-quote substring 0 file-truename error "Cannot convert relativize path %s"] 3 "Convert path in a standard way for a given project.\nDefault to making it project relative.\nArgument THIS is the project to convert PATH to."] ((this ede-target) path &optional project) #[(this path &optional project) "\206\306 !\211\2032\307\n \"\310 \303\"\206\311\312\313\314\f!P \"\203-\315 \fG\"\202. *\2026\316\317 \")\207" [project this proj path lp p ede-target-parent ede-convert-path eieio-oref "" string-match "^" regexp-quote substring error "Parentless target %s"] 5 "Convert path in a standard way for a given project.\nDefault to making it project relative.\nArgument THIS is the project to convert PATH to.\nOptional PROJECT is the project that THIS belongs to. Associating\na target to a project is expensive, so using this can speed things up."]] 6) #@111 Get the locator object for project PROJ. Get it from the toplevel project. If it doesn't have one, make one. (defalias 'ede-get-locator-object #[(proj) "\302!\211\205\303 \304\"\204\305 !\210\306 \304\")\207" [proj top ede-toplevel slot-boundp locate-obj ede-enable-locate-on-project eieio-oref] 4 (#$ . 10059)]) (byte-code "\300\301\302\303\302\304%\210\300\305\302\306\302\307%\210\300\310\302\311\302\312%\210\300\313\302\314\302\315%\210\300\301\302\316\302\317%\207" [cl-generic-define-method ede-expand-filename nil ((this ede-project) filename &optional force) #[(this filename &optional force) "\306\307!\210\310!\311 \n\"\312 \203 \313=\204 \202L \313=\203* \314=\203L\315\n\"\211\203A\316 \n#\210\202K \204K\316 \n\313#\210) \203`\f\204`\317!\320\n\")\f+\207" [this loc filename ha ans force require ede/locate ede-get-locator-object ede-locate-file-in-hash nil nomatch newfile ede-expand-filename-impl ede-locate-add-file-to-hash ede-project-root-directory expand-file-name calc dir] 5 "Return a fully qualified file name based on project THIS.\nFILENAME should be just a filename which occurs in a directory controlled\nby this project.\nOptional argument FORCE forces the default filename to be provided even if it\ndoesn't exist.\nIf FORCE equals `newfile', then the cache is ignored and a new file in THIS\nis returned."] ede-expand-filename-impl ((this ede-project) filename &optional force) #[(this filename &optional force) "\306!\307!\310\311\"\312\313 \"\206\314 \"\211\204)\315\316!\210\317\f \"@ ,\207" [this found proj path loc filename ede-get-locator-object ede-project-root-directory eieio-oref subproj nil ede-expand-filename-local ede-expand-filename-impl-via-subproj require ede/locate ede-locate-file-in-project] 6 "Return a fully qualified file name based on project THIS.\nFILENAME should be just a filename which occurs in a directory controlled\nby this project.\nOptional argument FORCE forces the default filename to be provided even if it\ndoesn't exist."] ede-expand-filename-local ((this ede-project) filename) #[(this filename) "\303!\304\305\n \"!\203\305\n \"\202%\304\305\306\nP \"!\205%\305\306\nP \")\207" [this path filename ede-project-root-directory file-exists-p expand-file-name "include/"] 4 "Expand filename locally to project THIS with filesystem tests."] ede-expand-filename-impl-via-subproj ((this ede-project) filename) #[(this filename) "\305!C\306 \204(\n\203(\n@\307\nA\310 \311\"\" \205#\312 \f\")\202 *\207" [this found proj thisproj filename ede-toplevel nil append eieio-oref subproj ede-expand-filename-local] 5 "Return a fully qualified file name based on project THIS.\nFILENAME should be just a filename which occurs in a directory controlled\nby this project."] ((this ede-target) filename &optional force) #[(this filename &optional force) "\303\304! \n#\207" [this filename force ede-expand-filename ede-target-parent] 4 "Return a fully qualified file name based on target THIS.\nFILENAME should be a filename which occurs in a directory in which THIS works.\nOptional argument FORCE forces the default filename to be provided even if it\ndoesn't exist."]] 6) #@87 Return a dir that is up one directory. Argument DIR is the directory to trim upwards. (defalias 'ede-up-directory #[(dir) "\303!\304 !\n\230?\205\n*\207" [dir fad fnd directory-file-name file-name-directory] 2 (#$ . 13265)]) (provide 'ede/files)