{"action":"created","issue":{"url":"https://api.github.com/repos/emacs-elsa/Elsa/issues/4","repository_url":"https://api.github.com/repos/emacs-elsa/Elsa","labels_url":"https://api.github.com/repos/emacs-elsa/Elsa/issues/4/labels{/name}","comments_url":"https://api.github.com/repos/emacs-elsa/Elsa/issues/4/comments","events_url":"https://api.github.com/repos/emacs-elsa/Elsa/issues/4/events","html_url":"https://github.com/emacs-elsa/Elsa/issues/4","id":272999076,"node_id":"MDU6SXNzdWUyNzI5OTkwNzY=","number":4,"title":"Implement handlers for all special forms","user":{"login":"Fuco1","id":2664959,"node_id":"MDQ6VXNlcjI2NjQ5NTk=","avatar_url":"https://avatars0.githubusercontent.com/u/2664959?v=4","gravatar_id":"","url":"https://api.github.com/users/Fuco1","html_url":"https://github.com/Fuco1","followers_url":"https://api.github.com/users/Fuco1/followers","following_url":"https://api.github.com/users/Fuco1/following{/other_user}","gists_url":"https://api.github.com/users/Fuco1/gists{/gist_id}","starred_url":"https://api.github.com/users/Fuco1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Fuco1/subscriptions","organizations_url":"https://api.github.com/users/Fuco1/orgs","repos_url":"https://api.github.com/users/Fuco1/repos","events_url":"https://api.github.com/users/Fuco1/events{/privacy}","received_events_url":"https://api.github.com/users/Fuco1/received_events","type":"User","site_admin":false},"labels":[{"id":567674517,"node_id":"MDU6TGFiZWw1Njc2NzQ1MTc=","url":"https://api.github.com/repos/emacs-elsa/Elsa/labels/enhancement","name":"enhancement","color":"84b6eb","default":true},{"id":567674518,"node_id":"MDU6TGFiZWw1Njc2NzQ1MTg=","url":"https://api.github.com/repos/emacs-elsa/Elsa/labels/help%20wanted","name":"help wanted","color":"128A0C","default":true},{"id":1016014126,"node_id":"MDU6TGFiZWwxMDE2MDE0MTI2","url":"https://api.github.com/repos/emacs-elsa/Elsa/labels/scope:analyser","name":"scope:analyser","color":"d4c5f9","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/emacs-elsa/Elsa/milestones/1","html_url":"https://github.com/emacs-elsa/Elsa/milestone/1","labels_url":"https://api.github.com/repos/emacs-elsa/Elsa/milestones/1/labels","id":3583607,"node_id":"MDk6TWlsZXN0b25lMzU4MzYwNw==","number":1,"title":"0.1.0","description":"","creator":{"login":"Fuco1","id":2664959,"node_id":"MDQ6VXNlcjI2NjQ5NTk=","avatar_url":"https://avatars0.githubusercontent.com/u/2664959?v=4","gravatar_id":"","url":"https://api.github.com/users/Fuco1","html_url":"https://github.com/Fuco1","followers_url":"https://api.github.com/users/Fuco1/followers","following_url":"https://api.github.com/users/Fuco1/following{/other_user}","gists_url":"https://api.github.com/users/Fuco1/gists{/gist_id}","starred_url":"https://api.github.com/users/Fuco1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Fuco1/subscriptions","organizations_url":"https://api.github.com/users/Fuco1/orgs","repos_url":"https://api.github.com/users/Fuco1/repos","events_url":"https://api.github.com/users/Fuco1/events{/privacy}","received_events_url":"https://api.github.com/users/Fuco1/received_events","type":"User","site_admin":false},"open_issues":12,"closed_issues":1,"state":"open","created_at":"2018-08-20T13:33:43Z","updated_at":"2018-08-23T14:19:39Z","due_on":null,"closed_at":null},"comments":1,"created_at":"2017-11-10T17:06:02Z","updated_at":"2018-08-24T11:45:00Z","closed_at":null,"author_association":"MEMBER","body":"https://www.gnu.org/software/emacs/manual/html_node/elisp/Special-Forms.html\r\n\r\n- [ ] and\r\n- [ ] catch\r\n- [x] cond\r\n- [x] condition-case\r\n- [ ] defconst\r\n- [ ] defvar\r\n- [x] function\r\n- [x] if\r\n- [ ] interactive\r\n- [x] lambda\r\n- [x] let\r\n- [x] let*\r\n- [x] or\r\n- [x] prog1\r\n- [x] prog2\r\n- [x] progn\r\n- [x] quote\r\n- [x] save-current-buffer\r\n- [x] save-excursion\r\n- [x] save-restriction\r\n- [ ] setq\r\n- [ ] setq-default\r\n- [x] track-mouse\r\n- [x] unwind-protect\r\n- [ ] while\r\n"},"comment":{"url":"https://api.github.com/repos/emacs-elsa/Elsa/issues/comments/415735147","html_url":"https://github.com/emacs-elsa/Elsa/issues/4#issuecomment-415735147","issue_url":"https://api.github.com/repos/emacs-elsa/Elsa/issues/4","id":415735147,"node_id":"MDEyOklzc3VlQ29tbWVudDQxNTczNTE0Nw==","user":{"login":"Fuco1","id":2664959,"node_id":"MDQ6VXNlcjI2NjQ5NTk=","avatar_url":"https://avatars0.githubusercontent.com/u/2664959?v=4","gravatar_id":"","url":"https://api.github.com/users/Fuco1","html_url":"https://github.com/Fuco1","followers_url":"https://api.github.com/users/Fuco1/followers","following_url":"https://api.github.com/users/Fuco1/following{/other_user}","gists_url":"https://api.github.com/users/Fuco1/gists{/gist_id}","starred_url":"https://api.github.com/users/Fuco1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Fuco1/subscriptions","organizations_url":"https://api.github.com/users/Fuco1/orgs","repos_url":"https://api.github.com/users/Fuco1/repos","events_url":"https://api.github.com/users/Fuco1/events{/privacy}","received_events_url":"https://api.github.com/users/Fuco1/received_events","type":"User","site_admin":false},"created_at":"2018-08-24T11:45:00Z","updated_at":"2018-08-24T11:45:00Z","author_association":"MEMBER","body":"`defcustom` is not a special form:\r\n\r\n```\r\ndefcustom is a Lisp macro in ‘custom.el’.\r\n\r\n(defcustom SYMBOL STANDARD DOC &rest ARGS)\r\n```\r\n\r\n`defvar` is a special form\r\n\r\n```\r\ndefvar is a special form in ‘src/eval.c’.\r\n\r\n(defvar SYMBOL &optional INITVALUE DOCSTRING)\r\n```\r\n\r\nand yes, we don't parse those yet.  It's not very difficult to do and there is already support for storing variable data, like this\r\n\r\n```\r\n(put 'major-mode 'elsa-type-var (elsa-make-type Symbol))\r\n```\r\n\r\nWhat needs to be done is the `defvar` is analyzed, the name is picked from the form and this property is attached to the symbol.\r\n\r\nYou can do a comment annotation already, so\r\n\r\n```\r\n;; (elsa-checks :: [Mixed])\r\n(defvar elsa-checks nil)\r\n```\r\n\r\nworks.  But we do not pick the type from the `defvar` itself, which would often be invalid or impossible (i.e. variable set to `nil` would infer type `nil` which is quite silly... to have a variable that always holds nil."}}
{"actor":{"display_login":"Fuco1"}}