Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot read anaconda-mode server response #295

Closed
seagle0128 opened this issue Jun 2, 2018 · 45 comments
Closed

Cannot read anaconda-mode server response #295

seagle0128 opened this issue Jun 2, 2018 · 45 comments

Comments

@seagle0128
Copy link

seagle0128 commented Jun 2, 2018

GNU Emacs 16.1
macOS 10.13.4
Python 3.6.5
pip 10.0.1
setuptools 39.2.0
anaconda-mode-0.1.12

I installed anaconda-mode 20180602.321 with the config below.

(use-package anaconda-mode
    :ensure t
    :defer t
    :diminish anaconda-mode
    :init
    (add-hook 'python-mode-hook #'anaconda-mode)
    (add-hook 'python-mode-hook #'anaconda-eldoc-mode)
    :config
    (with-eval-after-load 'company
      (use-package company-anaconda
        :defines company-backends
        :init (cl-pushnew (company-backend-with-yas 'company-anaconda) company-backends))))

The anaconda-mode was installed correctly, but I got the error while editing the python file.

Cannot read anaconda-mode server response

I checked *anaconda-response* buffer

# status: nil
# point: 1

and *anaconda-mode* buffer

anaconda_mode port 55585
@proofit404
Copy link
Contributor

Hi, looks like an empty response from the server. Maybe socket was closed.
By the way, try 0.1.12 version.

@seagle0128
Copy link
Author

Actually I am using 0.1.12. It worked well before.

@seagle0128
Copy link
Author

Today, I delete ~/.emacs.d/anaconda_mode/ and restart Emacs. The screenshot is below. Seems not all python packages were installed.

image

@proofit404
Copy link
Contributor

anaconda_mode server is not necessary anymore and will be removed from the pypi soon.

@seagle0128
Copy link
Author

seagle0128 commented Jun 6, 2018

Okay, but it doesn't work for me yet. No response from server :(
What should I do for further troubleshooting?

@proofit404
Copy link
Contributor

Does this happens to all requests?

@seagle0128
Copy link
Author

seagle0128 commented Jun 6, 2018

Yes, for all requests on my macOS 10.13, Emacs 26.1 (Python 3.6).
I tested on Ubuntu 18.04 with Emacs 25.2 (Python 2.7/3.6) today. It works well after I deleted ~/.emacs.d/anaconda_mode/ and reinstalled it.

I missing anything here?

@proofit404
Copy link
Contributor

Mac OS is problematic for some reason. I never heard a chance to debug it since I limited to my Linux laptop.

I will provide you with detailed guide if you have a patience to debug it.

@seagle0128
Copy link
Author

Sure, please let me know. I will try to do that.

@proofit404
Copy link
Contributor

Here we go.

This is our first try at debugging this nasty issue.

  • Update anaconda-mode from master or wait for next melpa build.
  • Disable eldoc mode.
  • Add code belove at the end of your config.
  • Restart emacs and call exactly one interactive command (M-. for example).
(setq anaconda-mode-server-command "
from __future__ import print_function

# CLI arguments.

import sys

assert len(sys.argv) > 3, 'CLI arguments: %s' % sys.argv

server_directory = sys.argv[-3]
server_address = sys.argv[-2]
virtual_environment = sys.argv[-1]

# Ensure directory.

import os

server_directory = os.path.expanduser(server_directory)

if not os.path.exists(server_directory):
    os.makedirs(server_directory)

# Installation check.

def instrument_installation():
    for path in os.listdir(server_directory):
        path = os.path.join(server_directory, path)
        if path.endswith('.egg') and os.path.isdir(path) and path not in sys.path:
            sys.path.insert(0, path)

missing_dependencies = ['hunter']

instrument_installation()

try:
    import jedi
except ImportError:
    missing_dependencies.append('jedi>=0.12')

try:
    import service_factory
except ImportError:
    missing_dependencies.append('service_factory>=0.1.5')

# Installation.

if missing_dependencies:
    import site
    import setuptools.command.easy_install
    site.addsitedir(server_directory)
    cmd = ['--install-dir', server_directory,
           '--site-dirs', server_directory,
           '--always-copy','--always-unzip']
    cmd.extend(missing_dependencies)
    setuptools.command.easy_install.main(cmd)
    instrument_installation()

# Setup server.

import hunter

hunter.trace(
    hunter.Q(
        module__startswith='service_factory'
    ) | hunter.Q(
        module='http.server'
    ) | hunter.Q(
        module='socketserver'
    )
)

import jedi
import service_factory

assert jedi.__version__, 'Jedi version should be >= 0.12.0, current version: %s' % (
    jedi.__version__,
)

if virtual_environment:
    virtual_environment = jedi.create_environment(virtual_environment, safe=False)
else:
    virtual_environment = None

# Define JSON-RPC application.

import functools

def script_method(f):
    @functools.wraps(f)
    def wrapper(source, line, column, path):
        return f(jedi.Script(source, line, column, path, environment=virtual_environment))
    return wrapper

def process_definitions(f):
    @functools.wraps(f)
    def wrapper(script):
        return [[definition.module_path,
                 definition.line,
                 definition.column,
                 definition.get_line_code().strip()]
                for definition in f(script)]
    return wrapper

@script_method
def complete(script):
    return [[definition.name, definition.type]
            for definition in script.completions()]

@script_method
def company_complete(script):
    return [[definition.name,
             definition.type,
             definition.docstring(),
             definition.module_path,
             definition.line]
            for definition in script.completions()]

@script_method
def show_doc(script):
    return [[definition.module_name, definition.docstring()]
            for definition in script.goto_definitions()]

@script_method
@process_definitions
def goto_definitions(script):
    return script.goto_definitions()

@script_method
@process_definitions
def goto_assignments(script):
    return script.goto_assignments()

@script_method
@process_definitions
def usages(script):
    return script.usages()

@script_method
def eldoc(script):
    signatures = script.call_signatures()
    if len(signatures) == 1:
        signature = signatures[0]
        return [signature.name,
                signature.index,
                [param.description[6:] for param in signature.params]]

# Run.

app = [complete, company_complete, show_doc, goto_definitions, goto_assignments, usages, eldoc]

service_factory.service_factory(app, server_address, 0, 'anaconda_mode port {port}')
")

@seagle0128
Copy link
Author

Following by the steps you provided, I got these messages.

anaconda.log

@proofit404
Copy link
Contributor

From this log, I can tell that Emacs request never reaches anaconda mode server.

Can you read an overview of the Edebug manual? We need to trace anaconda-mode-call (C-u C-M-x) and then set a break point inside the response handler.

@seagle0128
Copy link
Author

I tried to debug today, but not sure whether the steps are correct.
If enabling anaconda-eldoc-mode, anaconda-mode-call can be traced, and the outputs are below:

Result: "eldoc"
Result: anaconda-mode-eldoc-callback
Result: #<buffer  *http 127.0.0.1:62932*>
Result: #<killed buffer>

Otherwise, no traces happened.

@proofit404
Copy link
Contributor

Hi, I think we should try following.

  • Disable eldoc mode.
  • C-u C-M-x under anaconda-mode-call.
  • Press M-. under some python definition.
  • When debugger showed up in the anaconda-mode-call set breakpoint inside lambda function returned by response handler.
  • Continue execution, the debugger showed inside the lambda.
  • Trace this function.

If response buffer contains empty response, I afraid bug sits somewhere in emacs HTTP library. In this case, we should use network debugging tool like Wire Shark.

@seagle0128
Copy link
Author

New debug results:

Eldoc mode disabled in current buffer
Cannot read anaconda-mode server response [4 times]
Edebug: edebug-anon4
Edebug: anaconda-mode-call

Result: "goto_definitions"

Result: #f(compiled-function (result) #<bytecode 0x4312df45>)

Result: #<buffer  *http 127.0.0.1:51536*-404082>

Result: #<killed buffer>

@proofit404
Copy link
Contributor

Please remove all elc files form .emacs.d/elpa/anaconda-mode-... directory and repeat. Turns out we can't step over byte-compiled functions.

@seagle0128
Copy link
Author

seagle0128 commented Jun 13, 2018

Deleted .elc files, and get these traces.

Loading ~/.emacs.d/elpa/anaconda-mode-20180612.623/anaconda-mode.el (source)...done
Edebug: edebug-anon12
Edebug: anaconda-mode-call

Result: nil
Cannot read anaconda-mode server response

Eldoc mode disabled in current buffer

Result: "goto_definitions"

Result: (closure (t) (result) (anaconda-mode-show-xrefs result nil "No definitions found"))

Result: #<buffer  *http 127.0.0.1:53589*>

Result: #<killed buffer>

test.py

import sys
p1 = sys.path

print(p1) # M-. on p1

@proofit404
Copy link
Contributor

Hi, I can see that you evaluate response handler to lambda but didn't set a breakpoint inside it.

Please look at this docs https://www.gnu.org/software/emacs/manual/html_node/elisp/Breakpoints.html

Than use b somewhere inside lambda function https://github.com/proofit404/anaconda-mode/blob/9d9b1781fc63998245485ae0a4c03b54bcbe12ed/anaconda-mode.el#L443

@seagle0128
Copy link
Author

seagle0128 commented Jun 14, 2018

Is it correct?

Edebug: edebug-anon12
Edebug: anaconda-mode-call
Eldoc mode disabled in current buffer
Breakpoint set in anaconda-mode-call [2 times]

Result: "goto_definitions"
Breakpoint set in edebug-anon12

Break
Result: "goto_definitions"
Stop

Break
Result: (closure (t) (result) (anaconda-mode-show-xrefs result nil "No definitions found"))
Stop

Result: 39 (#o47, #x27, ?\')

Result: #<buffer 03-151057.py>

Result: #<window 27 on 03-151057.py>

Result: 1 (#o1, #x1, ?\C-a)

Result: (closure ((anaconda-mode-request-tick . 1) (anaconda-mode-request-window . #<window 27 on 03-151057.py>) (anaconda-mode-request-buffer . #<buffer 03-151057.py>) (anaconda-mode-request-point . 39) (callback closure (t) (result) (anaconda-mode-show-xrefs result nil "No definitions found")) (command . "goto_definitions") t) (status) (edebug-enter 'edebug-anon13 (list status) (function (lambda nil (edebug-after (edebug-before 0) 135 (let ((http-buffer (edebug-after (edebug-before 1) 2 (current-buffer)))) (edebug-after (edebug-before 3) 134 (unwind-protect (edebug-after (edebug-before 4) 130 (if (edebug-after (edebug-before 5) 41 (or (edebug-after (edebug-before 6) 12 (not (edebug-after (edebug-before 7) 11 (equal (edebug-after 0 8 anaconda-mode-request-window) (edebug-after (edebug-before 9) 10 (selected-window)))))) (edebug-after (edebug-before 13) 40 (save-current-buffer (set-buffer (edebug-after (edebug-before 14) 16 (window-buffer (edebug-after 0 15 anaconda-mode-request-window)))) (edebug-after (edebug-before 17) 39 (or (edebug-after (edebug-before 18) 24 (not (edebug-after (edebug-before 19) 23 (equal (edebug-after 0 20 anaconda-mode-request-buffer) (edebug-after (edebug-before 21) 22 (current-buffer)))))) (edebug-after (edebug-before 25) 31 (not (edebug-after (edebug-before 26) 30 (equal (edebug-after 0 27 anaconda-mode-request-point) (edebug-after (edebug-before 28) 29 (point)))))) (edebug-after (edebug-before 32) 38 (not (edebug-after (edebug-before 33) 37 (equal (edebug-after 0 34 anaconda-mode-request-tick) (edebug-after (edebug-before 35) 36 (buffer-chars-modified-tick)))))))))))) nil (edebug-after (edebug-before 42) 43 (search-forward-regexp "
?\n
?\n" nil t)) (edebug-after (edebug-before 44) 129 (let ((response (edebug-after (edebug-before 45) 73 (condition-case nil (edebug-after (edebug-before 46) 47 (json-read)) ((json-readtable-error json-end-of-file end-of-file) (edebug-after (edebug-before 48) 72 (let ((response (edebug-after (edebug-before 49) 57 (concat (edebug-after (edebug-before 50) 54 (format "# status: %s\n# point: %s\n" (edebug-after 0 51 status) (edebug-after (edebug-before 52) 53 (point)))) (edebug-after (edebug-before 55) 56 (buffer-string)))))) (edebug-after (edebug-before 58) 71 (save-current-buffer (set-buffer (edebug-after (edebug-before 59) 61 (get-buffer-create (edebug-after 0 60 anaconda-mode-response-buffer)))) (edebug-after (edebug-before 62) 63 (erase-buffer)) (edebug-after (edebug-before 64) 66 (insert (edebug-after 0 65 response))) (edebug-after (edebug-before 67) 70 (goto-char (edebug-after (edebug-before 68) 69 (point-min)))))) nil))))))) (edebug-after (edebug-before 74) 128 (if (edebug-after (edebug-before 75) 77 (null (edebug-after 0 76 response))) (edebug-after (edebug-before 78) 79 (message "Cannot read anaconda-mode server response")) (edebug-after (edebug-before 80) 127 (if (edebug-after (edebug-before 81) 83 (assoc 'error (edebug-after 0 82 response))) (edebug-after (edebug-before 84) 112 (let* ((error-structure (edebug-after (edebug-before 85) 89 (cdr (edebug-after (edebug-before 86) 88 (assoc 'error (edebug-after 0 87 response)))))) (error-message (edebug-after (edebug-before 90) 94 (cdr (edebug-after (edebug-before 91) 93 (assoc 'message (edebug-after 0 92 error-structure)))))) (error-data (edebug-after (edebug-before 95) 99 (cdr (edebug-after (edebug-before 96) 98 (assoc 'data (edebug-after 0 97 error-structure)))))) (error-template (edebug-after (edebug-before 100) 102 (if (edebug-after 0 101 error-data) "%s: %s" "%s")))) (edebug-after (edebug-before 103) 111 (apply 'message (edebug-after 0 104 error-template) (edebug-after (edebug-before 105) 110 (delq nil (edebug-after (edebug-before 106) 109 (list (edebug-after 0 107 error-message) (edebug-after 0 108 error-data))))))))) (edebug-after (edebug-before 113) 126 (save-current-buffer (set-buffer (edebug-after 0 114 anaconda-mode-request-buffer)) (edebug-after (edebug-before 115) 125 (let ((result (edebug-after (edebug-before 116) 120 (cdr (edebug-after (edebug-before 117) 119 (assoc 'result (edebug-after 0 118 response))))))) (edebug-after (edebug-before 121) 124 (apply (edebug-after 0 122 callback) (edebug-after 0 123 result) nil)))))))))))))) (edebug-after (edebug-before 131) 133 (kill-buffer (edebug-after 0 132 http-buffer)))))))))))

Result: #<buffer  *http 127.0.0.1:56758*>
Result: (closure (t) (result) (anaconda-mode-show-xrefs result nil "No definitions found"))
Breakpoint set in edebug-anon12

Result: #<buffer  *http 127.0.0.1:56758*>

Break
Result: #<killed buffer>

Break

Break
Result: "goto_definitions"

Break
Result: (closure (t) (result) (anaconda-mode-show-xrefs result nil "No definitions found"))

Result: #<buffer  *http 127.0.0.1:56758*>

Break
Result: #<killed buffer>

Break
Mark saved where search started
edebug-form-data-symbol: Not inside instrumented form [2 times]

Break
Result: "goto_definitions"
edebug-form-data-symbol: Not inside instrumented form [2 times]

Break
Result: (closure (t) (result) (anaconda-mode-show-xrefs result nil "No definitions found"))
Breakpoint set in edebug-anon12
 [4 times]
Breakpoint set in edebug-anon12
edebug-form-data-symbol: Not inside instrumented form [3 times]
Edebug: edebug-anon13
Edebug: anaconda-mode-create-response-handler
Breakpoint set in edebug-anon13
Cannot read anaconda-mode server response [2 times]

Result: 39 (#o47, #x27, ?\')

Result: #<buffer 03-151057.py>

Result: #<window 27 on 03-151057.py>

Result: 1 (#o1, #x1, ?\C-a)

Result: (closure ((anaconda-mode-request-tick . 1) (anaconda-mode-request-window . #<window 27 on 03-151057.py>) (anaconda-mode-request-buffer . #<buffer 03-151057.py>) (anaconda-mode-request-point . 39) (callback closure (t) (result) (anaconda-mode-show-xrefs result nil "No definitions found")) (command . "goto_definitions") t) (status) (edebug-enter 'edebug-anon13 (list status) (function (lambda nil (edebug-after (edebug-before 0) 135 (let ((http-buffer (edebug-after (edebug-before 1) 2 (current-buffer)))) (edebug-after (edebug-before 3) 134 (unwind-protect (edebug-after (edebug-before 4) 130 (if (edebug-after (edebug-before 5) 41 (or (edebug-after (edebug-before 6) 12 (not (edebug-after (edebug-before 7) 11 (equal (edebug-after 0 8 anaconda-mode-request-window) (edebug-after (edebug-before 9) 10 (selected-window)))))) (edebug-after (edebug-before 13) 40 (save-current-buffer (set-buffer (edebug-after (edebug-before 14) 16 (window-buffer (edebug-after 0 15 anaconda-mode-request-window)))) (edebug-after (edebug-before 17) 39 (or (edebug-after (edebug-before 18) 24 (not (edebug-after (edebug-before 19) 23 (equal (edebug-after 0 20 anaconda-mode-request-buffer) (edebug-after (edebug-before 21) 22 (current-buffer)))))) (edebug-after (edebug-before 25) 31 (not (edebug-after (edebug-before 26) 30 (equal (edebug-after 0 27 anaconda-mode-request-point) (edebug-after (edebug-before 28) 29 (point)))))) (edebug-after (edebug-before 32) 38 (not (edebug-after (edebug-before 33) 37 (equal (edebug-after 0 34 anaconda-mode-request-tick) (edebug-after (edebug-before 35) 36 (buffer-chars-modified-tick)))))))))))) nil (edebug-after (edebug-before 42) 43 (search-forward-regexp "
?\n
?\n" nil t)) (edebug-after (edebug-before 44) 129 (let ((response (edebug-after (edebug-before 45) 73 (condition-case nil (edebug-after (edebug-before 46) 47 (json-read)) ((json-readtable-error json-end-of-file end-of-file) (edebug-after (edebug-before 48) 72 (let ((response (edebug-after (edebug-before 49) 57 (concat (edebug-after (edebug-before 50) 54 (format "# status: %s\n# point: %s\n" (edebug-after 0 51 status) (edebug-after (edebug-before 52) 53 (point)))) (edebug-after (edebug-before 55) 56 (buffer-string)))))) (edebug-after (edebug-before 58) 71 (save-current-buffer (set-buffer (edebug-after (edebug-before 59) 61 (get-buffer-create (edebug-after 0 60 anaconda-mode-response-buffer)))) (edebug-after (edebug-before 62) 63 (erase-buffer)) (edebug-after (edebug-before 64) 66 (insert (edebug-after 0 65 response))) (edebug-after (edebug-before 67) 70 (goto-char (edebug-after (edebug-before 68) 69 (point-min)))))) nil))))))) (edebug-after (edebug-before 74) 128 (if (edebug-after (edebug-before 75) 77 (null (edebug-after 0 76 response))) (edebug-after (edebug-before 78) 79 (message "Cannot read anaconda-mode server response")) (edebug-after (edebug-before 80) 127 (if (edebug-after (edebug-before 81) 83 (assoc 'error (edebug-after 0 82 response))) (edebug-after (edebug-before 84) 112 (let* ((error-structure (edebug-after (edebug-before 85) 89 (cdr (edebug-after (edebug-before 86) 88 (assoc 'error (edebug-after 0 87 response)))))) (error-message (edebug-after (edebug-before 90) 94 (cdr (edebug-after (edebug-before 91) 93 (assoc 'message (edebug-after 0 92 error-structure)))))) (error-data (edebug-after (edebug-before 95) 99 (cdr (edebug-after (edebug-before 96) 98 (assoc 'data (edebug-after 0 97 error-structure)))))) (error-template (edebug-after (edebug-before 100) 102 (if (edebug-after 0 101 error-data) "%s: %s" "%s")))) (edebug-after (edebug-before 103) 111 (apply 'message (edebug-after 0 104 error-template) (edebug-after (edebug-before 105) 110 (delq nil (edebug-after (edebug-before 106) 109 (list (edebug-after 0 107 error-message) (edebug-after 0 108 error-data))))))))) (edebug-after (edebug-before 113) 126 (save-current-buffer (set-buffer (edebug-after 0 114 anaconda-mode-request-buffer)) (edebug-after (edebug-before 115) 125 (let ((result (edebug-after (edebug-before 116) 120 (cdr (edebug-after (edebug-before 117) 119 (assoc 'result (edebug-after 0 118 response))))))) (edebug-after (edebug-before 121) 124 (apply (edebug-after 0 122 callback) (edebug-after 0 123 result) nil)))))))))))))) (edebug-after (edebug-before 131) 133 (kill-buffer (edebug-after 0 132 http-buffer)))))))))))

Result: #<buffer  *http 127.0.0.1:56758*>

Break
Result: #<killed buffer>
Stop

Break

Result: (closure (t) (result) (anaconda-mode-show-xrefs result nil "No definitions found"))
Breakpoint set in edebug-anon12

Result: #<buffer  *http 127.0.0.1:56758*>

Break
Result: #<killed buffer>

Break

Break
Result: "goto_definitions"

Break
Result: (closure (t) (result) (anaconda-mode-show-xrefs result nil "No definitions found"))

Result: #<buffer  *http 127.0.0.1:56758*>

Break
Result: #<killed buffer>

Break
Mark saved where search started
edebug-form-data-symbol: Not inside instrumented form [2 times]

Break
Result: "goto_definitions"
edebug-form-data-symbol: Not inside instrumented form [2 times]

Break
Result: (closure (t) (result) (anaconda-mode-show-xrefs result nil "No definitions found"))
Breakpoint set in edebug-anon12
 [4 times]
Breakpoint set in edebug-anon12
edebug-form-data-symbol: Not inside instrumented form [3 times]
Edebug: edebug-anon13
Edebug: anaconda-mode-create-response-handler
Breakpoint set in edebug-anon13
Cannot read anaconda-mode server response [2 times]

Result: 39 (#o47, #x27, ?\')

Result: #<buffer 03-151057.py>

Result: #<window 27 on 03-151057.py>

Result: 1 (#o1, #x1, ?\C-a)

Result: (closure ((anaconda-mode-request-tick . 1) (anaconda-mode-request-window . #<window 27 on 03-151057.py>) (anaconda-mode-request-buffer . #<buffer 03-151057.py>) (anaconda-mode-request-point . 39) (callback closure (t) (result) (anaconda-mode-show-xrefs result nil "No definitions found")) (command . "goto_definitions") t) (status) (edebug-enter 'edebug-anon13 (list status) (function (lambda nil (edebug-after (edebug-before 0) 135 (let ((http-buffer (edebug-after (edebug-before 1) 2 (current-buffer)))) (edebug-after (edebug-before 3) 134 (unwind-protect (edebug-after (edebug-before 4) 130 (if (edebug-after (edebug-before 5) 41 (or (edebug-after (edebug-before 6) 12 (not (edebug-after (edebug-before 7) 11 (equal (edebug-after 0 8 anaconda-mode-request-window) (edebug-after (edebug-before 9) 10 (selected-window)))))) (edebug-after (edebug-before 13) 40 (save-current-buffer (set-buffer (edebug-after (edebug-before 14) 16 (window-buffer (edebug-after 0 15 anaconda-mode-request-window)))) (edebug-after (edebug-before 17) 39 (or (edebug-after (edebug-before 18) 24 (not (edebug-after (edebug-before 19) 23 (equal (edebug-after 0 20 anaconda-mode-request-buffer) (edebug-after (edebug-before 21) 22 (current-buffer)))))) (edebug-after (edebug-before 25) 31 (not (edebug-after (edebug-before 26) 30 (equal (edebug-after 0 27 anaconda-mode-request-point) (edebug-after (edebug-before 28) 29 (point)))))) (edebug-after (edebug-before 32) 38 (not (edebug-after (edebug-before 33) 37 (equal (edebug-after 0 34 anaconda-mode-request-tick) (edebug-after (edebug-before 35) 36 (buffer-chars-modified-tick)))))))))))) nil (edebug-after (edebug-before 42) 43 (search-forward-regexp "
?\n
?\n" nil t)) (edebug-after (edebug-before 44) 129 (let ((response (edebug-after (edebug-before 45) 73 (condition-case nil (edebug-after (edebug-before 46) 47 (json-read)) ((json-readtable-error json-end-of-file end-of-file) (edebug-after (edebug-before 48) 72 (let ((response (edebug-after (edebug-before 49) 57 (concat (edebug-after (edebug-before 50) 54 (format "# status: %s\n# point: %s\n" (edebug-after 0 51 status) (edebug-after (edebug-before 52) 53 (point)))) (edebug-after (edebug-before 55) 56 (buffer-string)))))) (edebug-after (edebug-before 58) 71 (save-current-buffer (set-buffer (edebug-after (edebug-before 59) 61 (get-buffer-create (edebug-after 0 60 anaconda-mode-response-buffer)))) (edebug-after (edebug-before 62) 63 (erase-buffer)) (edebug-after (edebug-before 64) 66 (insert (edebug-after 0 65 response))) (edebug-after (edebug-before 67) 70 (goto-char (edebug-after (edebug-before 68) 69 (point-min)))))) nil))))))) (edebug-after (edebug-before 74) 128 (if (edebug-after (edebug-before 75) 77 (null (edebug-after 0 76 response))) (edebug-after (edebug-before 78) 79 (message "Cannot read anaconda-mode server response")) (edebug-after (edebug-before 80) 127 (if (edebug-after (edebug-before 81) 83 (assoc 'error (edebug-after 0 82 response))) (edebug-after (edebug-before 84) 112 (let* ((error-structure (edebug-after (edebug-before 85) 89 (cdr (edebug-after (edebug-before 86) 88 (assoc 'error (edebug-after 0 87 response)))))) (error-message (edebug-after (edebug-before 90) 94 (cdr (edebug-after (edebug-before 91) 93 (assoc 'message (edebug-after 0 92 error-structure)))))) (error-data (edebug-after (edebug-before 95) 99 (cdr (edebug-after (edebug-before 96) 98 (assoc 'data (edebug-after 0 97 error-structure)))))) (error-template (edebug-after (edebug-before 100) 102 (if (edebug-after 0 101 error-data) "%s: %s" "%s")))) (edebug-after (edebug-before 103) 111 (apply 'message (edebug-after 0 104 error-template) (edebug-after (edebug-before 105) 110 (delq nil (edebug-after (edebug-before 106) 109 (list (edebug-after 0 107 error-message) (edebug-after 0 108 error-data))))))))) (edebug-after (edebug-before 113) 126 (save-current-buffer (set-buffer (edebug-after 0 114 anaconda-mode-request-buffer)) (edebug-after (edebug-before 115) 125 (let ((result (edebug-after (edebug-before 116) 120 (cdr (edebug-after (edebug-before 117) 119 (assoc 'result (edebug-after 0 118 response))))))) (edebug-after (edebug-before 121) 124 (apply (edebug-after 0 122 callback) (edebug-after 0 123 result) nil)))))))))))))) (edebug-after (edebug-before 131) 133 (kill-buffer (edebug-after 0 132 http-buffer)))))))))))

Result: #<buffer  *http 127.0.0.1:56758*>

Break
Result: #<killed buffer>
Stop

@proofit404
Copy link
Contributor

Things get too messy to follow. Can you redo last debugging with the gif-screencast package so I can follow the process? Please, attach resulted gif to the issue.

@seagle0128
Copy link
Author

Sorry for the confusion! I did again. Please see the recording and log below.

anaconda

debug.log

@proofit404
Copy link
Contributor

https://github.com/proofit404/anaconda-mode/blob/9d9b1781fc63998245485ae0a4c03b54bcbe12ed/anaconda-mode.el#L444-L448

This condition prevents debugger from tracing the function. Please, change function body to this code, evaluate it with edebug enabled and submit new gif.

(defun anaconda-mode-create-response-handler (command callback)
  "Create server response handler based on COMMAND and CALLBACK function.
COMMAND argument will be used for response skip message.
Response can be skipped if point was moved sense request was
submitted."
  (let ((anaconda-mode-request-point (point))
        (anaconda-mode-request-buffer (current-buffer))
        (anaconda-mode-request-window (selected-window))
        (anaconda-mode-request-tick (buffer-chars-modified-tick)))
    (lambda (status)
      (let ((http-buffer (current-buffer)))
        (unwind-protect
            (progn
              (search-forward-regexp "\r?\n\r?\n" nil t)
              (let ((response (condition-case nil
                                  (json-read)
                                ((json-readtable-error json-end-of-file end-of-file)
                                 (let ((response (concat (format "# status: %s\n# point: %s\n" status (point))
                                                         (buffer-string))))
                                   (with-current-buffer (get-buffer-create anaconda-mode-response-buffer)
                                     (erase-buffer)
                                     (insert response)
                                     (goto-char (point-min)))
                                   nil)))))
                (if (null response)
                    (message "Cannot read anaconda-mode server response")
                  (if (assoc 'error response)
                      (let* ((error-structure (cdr (assoc 'error response)))
                             (error-message (cdr (assoc 'message error-structure)))
                             (error-data (cdr (assoc 'data error-structure)))
                             (error-template (if error-data "%s: %s" "%s")))
                        (apply 'message error-template (delq nil (list error-message error-data))))
                    (with-current-buffer anaconda-mode-request-buffer
                      (let ((result (cdr (assoc 'result response))))
                        ;; Terminate `apply' call with empty list so response
                        ;; will be treated as single argument.
                        (apply callback result nil)))))))
          (kill-buffer http-buffer))))))

@proofit404
Copy link
Contributor

Also, try to change 127.0.0.1 to localhost in the anaconda-mode-host function, eval it, and retry.

@seagle0128
Copy link
Author

seagle0128 commented Jun 17, 2018

Again

anaconda

debug.log

Debugger entered--Lisp error: (wrong-number-of-arguments ((t) (command callback) "Create server response handler based on COMMAND and CALLBACK function.\nCOMMAND argument will be used for response skip message.\nResponse can be skipped if point was moved sense request was\nsubmitted." (edebug-enter 'anaconda-mode-create-response-handler (list command callback) (function (lambda nil (edebug-after (edebug-before 0) 9 (let ((anaconda-mode-request-point (edebug-after (edebug-before 1) 2 (point))) (anaconda-mode-request-buffer (edebug-after (edebug-before 3) 4 (current-buffer))) (anaconda-mode-request-window (edebug-after (edebug-before 5) 6 (selected-window))) (anaconda-mode-request-tick (edebug-after (edebug-before 7) 8 (buffer-chars-modified-tick)))) (function (lambda (status) (edebug-enter 'edebug-anon13 (list status) (function (lambda nil (edebug-after (edebug-before 0) 98 (let ((http-buffer (edebug-after (edebug-before 1) 2 (current-buffer)))) (edebug-after (edebug-before 3) 97 (unwind-protect (edebug-after (edebug-before 4) 93 (progn (edebug-after (edebug-before 5) 6 (search-forward-regexp "\015?\n\015?\n" nil t)) (edebug-after (edebug-before 7) 92 (let ((response (edebug-after (edebug-before 8) 36 (condition-case nil (edebug-after (edebug-before 9) 10 (json-read)) ((json-readtable-error json-end-of-file end-of-file) (edebug-after (edebug-before 11) 35 (let ((response (edebug-after (edebug-before 12) 20 (concat (edebug-after (edebug-before 13) 17 (format "# status: %s\n# point: %s\n" (edebug-after 0 14 status) (edebug-after (edebug-before 15) 16 (point)))) (edebug-after (edebug-before 18) 19 (buffer-string)))))) (edebug-after (edebug-before 21) 34 (save-current-buffer (set-buffer (edebug-after (edebug-before 22) 24 (get-buffer-create (edebug-after 0 23 anaconda-mode-response-buffer)))) (edebug-after (edebug-before 25) 26 (erase-buffer)) (edebug-after (edebug-before 27) 29 (insert (edebug-after 0 28 response))) (edebug-after (edebug-before 30) 33 (goto-char (edebug-after (edebug-before 31) 32 (point-min)))))) nil))))))) (edebug-after (edebug-before 37) 91 (if (edebug-after (edebug-before 38) 40 (null (edebug-after 0 39 response))) (edebug-after (edebug-before 41) 42 (message "Cannot read anaconda-mode server response")) (edebug-after (edebug-before 43) 90 (if (edebug-after (edebug-before 44) 46 (assoc 'error (edebug-after 0 45 response))) (edebug-after (edebug-before 47) 75 (let* ((error-structure (edebug-after (edebug-before 48) 52 (cdr (edebug-after (edebug-before 49) 51 (assoc 'error (edebug-after 0 50 response)))))) (error-message (edebug-after (edebug-before 53) 57 (cdr (edebug-after (edebug-before 54) 56 (assoc 'message (edebug-after 0 55 error-structure)))))) (error-data (edebug-after (edebug-before 58) 62 (cdr (edebug-after (edebug-before 59) 61 (assoc 'data (edebug-after 0 60 error-structure)))))) (error-template (edebug-after (edebug-before 63) 65 (if (edebug-after 0 64 error-data) "%s: %s" "%s")))) (edebug-after (edebug-before 66) 74 (apply 'message (edebug-after 0 67 error-template) (edebug-after (edebug-before 68) 73 (delq nil (edebug-after (edebug-before 69) 72 (list (edebug-after 0 70 error-message) (edebug-after 0 71 error-data))))))))) (edebug-after (edebug-before 76) 89 (save-current-buffer (set-buffer (edebug-after 0 77 anaconda-mode-request-buffer)) (edebug-after (edebug-before 78) 88 (let ((result (edebug-after (edebug-before 79) 83 (cdr (edebug-after (edebug-before 80) 82 (assoc 'result (edebug-after 0 81 response))))))) (edebug-after (edebug-before 84) 87 (apply (edebug-after 0 85 callback) (edebug-after 0 86 result) nil)))))))))))))) (edebug-after (edebug-before 94) 96 (kill-buffer (edebug-after 0 95 http-buffer)))))))))))))))))) 1)
  apply(debug error (wrong-number-of-arguments ((t) (command callback) "Create server response handler based on COMMAND and CALLBACK function.\nCOMMAND argument will be used for response skip message.\nResponse can be skipped if point was moved sense request was\nsubmitted." (edebug-enter 'anaconda-mode-create-response-handler (list command callback) (function (lambda nil (edebug-after (edebug-before 0) 9 (let ((anaconda-mode-request-point (edebug-after (edebug-before 1) 2 (point))) (anaconda-mode-request-buffer (edebug-after (edebug-before 3) 4 (current-buffer))) (anaconda-mode-request-window (edebug-after (edebug-before 5) 6 (selected-window))) (anaconda-mode-request-tick (edebug-after (edebug-before 7) 8 (buffer-chars-modified-tick)))) (function (lambda (status) (edebug-enter 'edebug-anon13 (list status) (function (lambda nil (edebug-after (edebug-before 0) 98 (let ((http-buffer (edebug-after (edebug-before 1) 2 (current-buffer)))) (edebug-after (edebug-before 3) 97 (unwind-protect (edebug-after (edebug-before 4) 93 (progn (edebug-after (edebug-before 5) 6 (search-forward-regexp "\015?\n\015?\n" nil t)) (edebug-after (edebug-before 7) 92 (let ((response (edebug-after (edebug-before 8) 36 (condition-case nil (edebug-after (edebug-before 9) 10 (json-read)) ((json-readtable-error json-end-of-file end-of-file) (edebug-after (edebug-before 11) 35 (let ((response (edebug-after (edebug-before 12) 20 (concat (edebug-after (edebug-before 13) 17 (format "# status: %s\n# point: %s\n" (edebug-after 0 14 status) (edebug-after (edebug-before 15) 16 (point)))) (edebug-after (edebug-before 18) 19 (buffer-string)))))) (edebug-after (edebug-before 21) 34 (save-current-buffer (set-buffer (edebug-after (edebug-before 22) 24 (get-buffer-create (edebug-after 0 23 anaconda-mode-response-buffer)))) (edebug-after (edebug-before 25) 26 (erase-buffer)) (edebug-after (edebug-before 27) 29 (insert (edebug-after 0 28 response))) (edebug-after (edebug-before 30) 33 (goto-char (edebug-after (edebug-before 31) 32 (point-min)))))) nil))))))) (edebug-after (edebug-before 37) 91 (if (edebug-after (edebug-before 38) 40 (null (edebug-after 0 39 response))) (edebug-after (edebug-before 41) 42 (message "Cannot read anaconda-mode server response")) (edebug-after (edebug-before 43) 90 (if (edebug-after (edebug-before 44) 46 (assoc 'error (edebug-after 0 45 response))) (edebug-after (edebug-before 47) 75 (let* ((error-structure (edebug-after (edebug-before 48) 52 (cdr (edebug-after (edebug-before 49) 51 (assoc 'error (edebug-after 0 50 response)))))) (error-message (edebug-after (edebug-before 53) 57 (cdr (edebug-after (edebug-before 54) 56 (assoc 'message (edebug-after 0 55 error-structure)))))) (error-data (edebug-after (edebug-before 58) 62 (cdr (edebug-after (edebug-before 59) 61 (assoc 'data (edebug-after 0 60 error-structure)))))) (error-template (edebug-after (edebug-before 63) 65 (if (edebug-after 0 64 error-data) "%s: %s" "%s")))) (edebug-after (edebug-before 66) 74 (apply 'message (edebug-after 0 67 error-template) (edebug-after (edebug-before 68) 73 (delq nil (edebug-after (edebug-before 69) 72 (list (edebug-after 0 70 error-message) (edebug-after 0 71 error-data))))))))) (edebug-after (edebug-before 76) 89 (save-current-buffer (set-buffer (edebug-after 0 77 anaconda-mode-request-buffer)) (edebug-after (edebug-before 78) 88 (let ((result (edebug-after (edebug-before 79) 83 (cdr (edebug-after (edebug-before 80) 82 (assoc 'result (edebug-after 0 81 response))))))) (edebug-after (edebug-before 84) 87 (apply (edebug-after 0 85 callback) (edebug-after 0 86 result) nil)))))))))))))) (edebug-after (edebug-before 94) 96 (kill-buffer (edebug-after 0 95 http-buffer)))))))))))))))))) 1))
  edebug(error (wrong-number-of-arguments ((t) (command callback) "Create server response handler based on COMMAND and CALLBACK function.\nCOMMAND argument will be used for response skip message.\nResponse can be skipped if point was moved sense request was\nsubmitted." (edebug-enter 'anaconda-mode-create-response-handler (list command callback) (function (lambda nil (edebug-after (edebug-before 0) 9 (let ((anaconda-mode-request-point (edebug-after (edebug-before 1) 2 (point))) (anaconda-mode-request-buffer (edebug-after (edebug-before 3) 4 (current-buffer))) (anaconda-mode-request-window (edebug-after (edebug-before 5) 6 (selected-window))) (anaconda-mode-request-tick (edebug-after (edebug-before 7) 8 (buffer-chars-modified-tick)))) (function (lambda (status) (edebug-enter 'edebug-anon13 (list status) (function (lambda nil (edebug-after (edebug-before 0) 98 (let ((http-buffer (edebug-after (edebug-before 1) 2 (current-buffer)))) (edebug-after (edebug-before 3) 97 (unwind-protect (edebug-after (edebug-before 4) 93 (progn (edebug-after (edebug-before 5) 6 (search-forward-regexp "\015?\n\015?\n" nil t)) (edebug-after (edebug-before 7) 92 (let ((response (edebug-after (edebug-before 8) 36 (condition-case nil (edebug-after (edebug-before 9) 10 (json-read)) ((json-readtable-error json-end-of-file end-of-file) (edebug-after (edebug-before 11) 35 (let ((response (edebug-after (edebug-before 12) 20 (concat (edebug-after (edebug-before 13) 17 (format "# status: %s\n# point: %s\n" (edebug-after 0 14 status) (edebug-after (edebug-before 15) 16 (point)))) (edebug-after (edebug-before 18) 19 (buffer-string)))))) (edebug-after (edebug-before 21) 34 (save-current-buffer (set-buffer (edebug-after (edebug-before 22) 24 (get-buffer-create (edebug-after 0 23 anaconda-mode-response-buffer)))) (edebug-after (edebug-before 25) 26 (erase-buffer)) (edebug-after (edebug-before 27) 29 (insert (edebug-after 0 28 response))) (edebug-after (edebug-before 30) 33 (goto-char (edebug-after (edebug-before 31) 32 (point-min)))))) nil))))))) (edebug-after (edebug-before 37) 91 (if (edebug-after (edebug-before 38) 40 (null (edebug-after 0 39 response))) (edebug-after (edebug-before 41) 42 (message "Cannot read anaconda-mode server response")) (edebug-after (edebug-before 43) 90 (if (edebug-after (edebug-before 44) 46 (assoc 'error (edebug-after 0 45 response))) (edebug-after (edebug-before 47) 75 (let* ((error-structure (edebug-after (edebug-before 48) 52 (cdr (edebug-after (edebug-before 49) 51 (assoc 'error (edebug-after 0 50 response)))))) (error-message (edebug-after (edebug-before 53) 57 (cdr (edebug-after (edebug-before 54) 56 (assoc 'message (edebug-after 0 55 error-structure)))))) (error-data (edebug-after (edebug-before 58) 62 (cdr (edebug-after (edebug-before 59) 61 (assoc 'data (edebug-after 0 60 error-structure)))))) (error-template (edebug-after (edebug-before 63) 65 (if (edebug-after 0 64 error-data) "%s: %s" "%s")))) (edebug-after (edebug-before 66) 74 (apply 'message (edebug-after 0 67 error-template) (edebug-after (edebug-before 68) 73 (delq nil (edebug-after (edebug-before 69) 72 (list (edebug-after 0 70 error-message) (edebug-after 0 71 error-data))))))))) (edebug-after (edebug-before 76) 89 (save-current-buffer (set-buffer (edebug-after 0 77 anaconda-mode-request-buffer)) (edebug-after (edebug-before 78) 88 (let ((result (edebug-after (edebug-before 79) 83 (cdr (edebug-after (edebug-before 80) 82 (assoc 'result (edebug-after 0 81 response))))))) (edebug-after (edebug-before 84) 87 (apply (edebug-after 0 85 callback) (edebug-after 0 86 result) nil)))))))))))))) (edebug-after (edebug-before 94) 96 (kill-buffer (edebug-after 0 95 http-buffer)))))))))))))))))) 1))
  signal(wrong-number-of-arguments (((t) (command callback) "Create server response handler based on COMMAND and CALLBACK function.\nCOMMAND argument will be used for response skip message.\nResponse can be skipped if point was moved sense request was\nsubmitted." (edebug-enter 'anaconda-mode-create-response-handler (list command callback) (function (lambda nil (edebug-after (edebug-before 0) 9 (let ((anaconda-mode-request-point (edebug-after (edebug-before 1) 2 (point))) (anaconda-mode-request-buffer (edebug-after (edebug-before 3) 4 (current-buffer))) (anaconda-mode-request-window (edebug-after (edebug-before 5) 6 (selected-window))) (anaconda-mode-request-tick (edebug-after (edebug-before 7) 8 (buffer-chars-modified-tick)))) (function (lambda (status) (edebug-enter 'edebug-anon13 (list status) (function (lambda nil (edebug-after (edebug-before 0) 98 (let ((http-buffer (edebug-after (edebug-before 1) 2 (current-buffer)))) (edebug-after (edebug-before 3) 97 (unwind-protect (edebug-after (edebug-before 4) 93 (progn (edebug-after (edebug-before 5) 6 (search-forward-regexp "\015?\n\015?\n" nil t)) (edebug-after (edebug-before 7) 92 (let ((response (edebug-after (edebug-before 8) 36 (condition-case nil (edebug-after (edebug-before 9) 10 (json-read)) ((json-readtable-error json-end-of-file end-of-file) (edebug-after (edebug-before 11) 35 (let ((response (edebug-after (edebug-before 12) 20 (concat (edebug-after (edebug-before 13) 17 (format "# status: %s\n# point: %s\n" (edebug-after 0 14 status) (edebug-after (edebug-before 15) 16 (point)))) (edebug-after (edebug-before 18) 19 (buffer-string)))))) (edebug-after (edebug-before 21) 34 (save-current-buffer (set-buffer (edebug-after (edebug-before 22) 24 (get-buffer-create (edebug-after 0 23 anaconda-mode-response-buffer)))) (edebug-after (edebug-before 25) 26 (erase-buffer)) (edebug-after (edebug-before 27) 29 (insert (edebug-after 0 28 response))) (edebug-after (edebug-before 30) 33 (goto-char (edebug-after (edebug-before 31) 32 (point-min)))))) nil))))))) (edebug-after (edebug-before 37) 91 (if (edebug-after (edebug-before 38) 40 (null (edebug-after 0 39 response))) (edebug-after (edebug-before 41) 42 (message "Cannot read anaconda-mode server response")) (edebug-after (edebug-before 43) 90 (if (edebug-after (edebug-before 44) 46 (assoc 'error (edebug-after 0 45 response))) (edebug-after (edebug-before 47) 75 (let* ((error-structure (edebug-after (edebug-before 48) 52 (cdr (edebug-after (edebug-before 49) 51 (assoc 'error (edebug-after 0 50 response)))))) (error-message (edebug-after (edebug-before 53) 57 (cdr (edebug-after (edebug-before 54) 56 (assoc 'message (edebug-after 0 55 error-structure)))))) (error-data (edebug-after (edebug-before 58) 62 (cdr (edebug-after (edebug-before 59) 61 (assoc 'data (edebug-after 0 60 error-structure)))))) (error-template (edebug-after (edebug-before 63) 65 (if (edebug-after 0 64 error-data) "%s: %s" "%s")))) (edebug-after (edebug-before 66) 74 (apply 'message (edebug-after 0 67 error-template) (edebug-after (edebug-before 68) 73 (delq nil (edebug-after (edebug-before 69) 72 (list (edebug-after 0 70 error-message) (edebug-after 0 71 error-data))))))))) (edebug-after (edebug-before 76) 89 (save-current-buffer (set-buffer (edebug-after 0 77 anaconda-mode-request-buffer)) (edebug-after (edebug-before 78) 88 (let ((result (edebug-after (edebug-before 79) 83 (cdr (edebug-after (edebug-before 80) 82 (assoc 'result (edebug-after 0 81 response))))))) (edebug-after (edebug-before 84) 87 (apply (edebug-after 0 85 callback) (edebug-after 0 86 result) nil)))))))))))))) (edebug-after (edebug-before 94) 96 (kill-buffer (edebug-after 0 95 http-buffer)))))))))))))))))) 1))
  edebug-signal(wrong-number-of-arguments (((t) (command callback) "Create server response handler based on COMMAND and CALLBACK function.\nCOMMAND argument will be used for response skip message.\nResponse can be skipped if point was moved sense request was\nsubmitted." (edebug-enter 'anaconda-mode-create-response-handler (list command callback) (function (lambda nil (edebug-after (edebug-before 0) 9 (let ((anaconda-mode-request-point (edebug-after (edebug-before 1) 2 (point))) (anaconda-mode-request-buffer (edebug-after (edebug-before 3) 4 (current-buffer))) (anaconda-mode-request-window (edebug-after (edebug-before 5) 6 (selected-window))) (anaconda-mode-request-tick (edebug-after (edebug-before 7) 8 (buffer-chars-modified-tick)))) (function (lambda (status) (edebug-enter 'edebug-anon13 (list status) (function (lambda nil (edebug-after (edebug-before 0) 98 (let ((http-buffer (edebug-after (edebug-before 1) 2 (current-buffer)))) (edebug-after (edebug-before 3) 97 (unwind-protect (edebug-after (edebug-before 4) 93 (progn (edebug-after (edebug-before 5) 6 (search-forward-regexp "\015?\n\015?\n" nil t)) (edebug-after (edebug-before 7) 92 (let ((response (edebug-after (edebug-before 8) 36 (condition-case nil (edebug-after (edebug-before 9) 10 (json-read)) ((json-readtable-error json-end-of-file end-of-file) (edebug-after (edebug-before 11) 35 (let ((response (edebug-after (edebug-before 12) 20 (concat (edebug-after (edebug-before 13) 17 (format "# status: %s\n# point: %s\n" (edebug-after 0 14 status) (edebug-after (edebug-before 15) 16 (point)))) (edebug-after (edebug-before 18) 19 (buffer-string)))))) (edebug-after (edebug-before 21) 34 (save-current-buffer (set-buffer (edebug-after (edebug-before 22) 24 (get-buffer-create (edebug-after 0 23 anaconda-mode-response-buffer)))) (edebug-after (edebug-before 25) 26 (erase-buffer)) (edebug-after (edebug-before 27) 29 (insert (edebug-after 0 28 response))) (edebug-after (edebug-before 30) 33 (goto-char (edebug-after (edebug-before 31) 32 (point-min)))))) nil))))))) (edebug-after (edebug-before 37) 91 (if (edebug-after (edebug-before 38) 40 (null (edebug-after 0 39 response))) (edebug-after (edebug-before 41) 42 (message "Cannot read anaconda-mode server response")) (edebug-after (edebug-before 43) 90 (if (edebug-after (edebug-before 44) 46 (assoc 'error (edebug-after 0 45 response))) (edebug-after (edebug-before 47) 75 (let* ((error-structure (edebug-after (edebug-before 48) 52 (cdr (edebug-after (edebug-before 49) 51 (assoc 'error (edebug-after 0 50 response)))))) (error-message (edebug-after (edebug-before 53) 57 (cdr (edebug-after (edebug-before 54) 56 (assoc 'message (edebug-after 0 55 error-structure)))))) (error-data (edebug-after (edebug-before 58) 62 (cdr (edebug-after (edebug-before 59) 61 (assoc 'data (edebug-after 0 60 error-structure)))))) (error-template (edebug-after (edebug-before 63) 65 (if (edebug-after 0 64 error-data) "%s: %s" "%s")))) (edebug-after (edebug-before 66) 74 (apply 'message (edebug-after 0 67 error-template) (edebug-after (edebug-before 68) 73 (delq nil (edebug-after (edebug-before 69) 72 (list (edebug-after 0 70 error-message) (edebug-after 0 71 error-data))))))))) (edebug-after (edebug-before 76) 89 (save-current-buffer (set-buffer (edebug-after 0 77 anaconda-mode-request-buffer)) (edebug-after (edebug-before 78) 88 (let ((result (edebug-after (edebug-before 79) 83 (cdr (edebug-after (edebug-before 80) 82 (assoc 'result (edebug-after 0 81 response))))))) (edebug-after (edebug-before 84) 87 (apply (edebug-after 0 85 callback) (edebug-after 0 86 result) nil)))))))))))))) (edebug-after (edebug-before 94) 96 (kill-buffer (edebug-after 0 95 http-buffer)))))))))))))))))) 1))
  anaconda-mode-create-response-handler(#f(compiled-function (result) #<bytecode 0x4347a869>))
  (url-retrieve (format "http://%s:%s" (anaconda-mode-host) anaconda-mode-port) (anaconda-mode-create-response-handler callback) nil t)
  (let ((url-request-method "POST") (url-request-data (anaconda-mode-jsonrpc-request command))) (url-retrieve (format "http://%s:%s" (anaconda-mode-host) anaconda-mode-port) (anaconda-mode-create-response-handler callback) nil t))
  anaconda-mode-jsonrpc("company_complete" #f(compiled-function (result) #<bytecode 0x4347a869>))
  (edebug-after (edebug-before 0) 3 (anaconda-mode-jsonrpc (edebug-after 0 1 command) (edebug-after 0 2 callback)))
  (closure ((callback . #f(compiled-function (result) #<bytecode 0x4347a869>)) (command . "company_complete") t) nil (edebug-after (edebug-before 0) 3 (anaconda-mode-jsonrpc (edebug-after 0 1 command) (edebug-after 0 2 callback))))()
  edebug-enter(edebug-anon12 nil (closure ((callback . #f(compiled-function (result) #<bytecode 0x4347a869>)) (command . "company_complete") t) nil (edebug-after (edebug-before 0) 3 (anaconda-mode-jsonrpc (edebug-after 0 1 command) (edebug-after 0 2 callback)))))
  (closure ((callback . #f(compiled-function (result) #<bytecode 0x4347a869>)) (command . "company_complete") t) nil (edebug-enter 'edebug-anon12 (list) (function (lambda nil (edebug-after (edebug-before 0) 3 (anaconda-mode-jsonrpc (edebug-after 0 1 command) (edebug-after 0 2 callback)))))))()
  funcall((closure ((callback . #f(compiled-function (result) #<bytecode 0x4347a869>)) (command . "company_complete") t) nil (edebug-enter 'edebug-anon12 (list) (function (lambda nil (edebug-after (edebug-before 0) 3 (anaconda-mode-jsonrpc (edebug-after 0 1 command) (edebug-after 0 2 callback))))))))
  (and callback (anaconda-mode-bound-p) (funcall callback))
  (if (anaconda-mode-running-p) (and callback (anaconda-mode-bound-p) (funcall callback)) (anaconda-mode-bootstrap callback))
  anaconda-mode-start((closure ((callback . #f(compiled-function (result) #<bytecode 0x4347a869>)) (command . "company_complete") t) nil (edebug-enter 'edebug-anon12 (list) (function (lambda nil (edebug-after (edebug-before 0) 3 (anaconda-mode-jsonrpc (edebug-after 0 1 command) (edebug-after 0 2 callback))))))))
  (edebug-after (edebug-before 0) 1 (anaconda-mode-start (function (lambda nil (edebug-enter 'edebug-anon12 (list) (function (lambda nil (edebug-after (edebug-before 0) 3 (anaconda-mode-jsonrpc (edebug-after 0 1 command) (edebug-after 0 2 callback))))))))))
  (closure ((callback . #f(compiled-function (result) #<bytecode 0x4347a869>)) (command . "company_complete") t) nil (edebug-after (edebug-before 0) 1 (anaconda-mode-start (function (lambda nil (edebug-enter 'edebug-anon12 (list) (function (lambda nil (edebug-after (edebug-before 0) 3 (anaconda-mode-jsonrpc (edebug-after 0 1 command) (edebug-after 0 2 callback)))))))))))()
  edebug-enter(anaconda-mode-call ("company_complete" #f(compiled-function (result) #<bytecode 0x4347a869>)) (closure ((callback . #f(compiled-function (result) #<bytecode 0x4347a869>)) (command . "company_complete") t) nil (edebug-after (edebug-before 0) 1 (anaconda-mode-start (function (lambda nil (edebug-enter 'edebug-anon12 (list) (function (lambda nil (edebug-after (edebug-before 0) 3 (anaconda-mode-jsonrpc (edebug-after 0 1 command) (edebug-after 0 2 callback))))))))))))
  edebug-enter(anaconda-mode-call ("company_complete" #f(compiled-function (result) #<bytecode 0x4347a869>)) (closure ((callback . #f(compiled-function (result) #<bytecode 0x4347a869>)) (command . "company_complete") t) nil (edebug-after (edebug-before 0) 1 (anaconda-mode-start (function (lambda nil (edebug-enter 'edebug-anon12 (list) (function (lambda nil (edebug-after (edebug-before 0) 3 (anaconda-mode-jsonrpc (edebug-after 0 1 command) (edebug-after 0 2 callback))))))))))))
  anaconda-mode-call("company_complete" #f(compiled-function (result) #<bytecode 0x4347a869>))
  company-anaconda-candidates(#f(compiled-function (candidates) #<bytecode 0x4347b469>) "")
  #f(compiled-function (callback) #<bytecode 0x411b7de9>)(#f(compiled-function (candidates) #<bytecode 0x4347b469>))
  company--fetch-candidates("sys")
  company-calculate-candidates("sys")
  company--begin-new()
  company--perform()
  company-auto-begin()
  company-idle-begin(#<buffer 03-151057.py> #<window 3 on 03-151057.py> 65 46)
  apply(company-idle-begin (#<buffer 03-151057.py> #<window 3 on 03-151057.py> 65 46))
  timer-event-handler([t 23334 11781 963975 nil company-idle-begin (#<buffer 03-151057.py> #<window 3 on 03-151057.py> 65 46) nil 0])
  recursive-edit()
  edebug--recursive-edit(before)
  edebug--display-1(nil 0 before)
  edebug--display(nil 0 before)
  edebug-debugger(0 before nil)
  edebug-before(0)
  (edebug-after (edebug-before 0) 1 (anaconda-mode-start (function (lambda nil (edebug-enter 'edebug-anon12 (list) (function (lambda nil (edebug-after (edebug-before 0) 3 (anaconda-mode-jsonrpc (edebug-after 0 1 command) (edebug-after 0 2 callback))))))))))
  (closure ((callback . anaconda-mode-eldoc-callback) (command . "eldoc") t) nil (edebug-after (edebug-before 0) 1 (anaconda-mode-start (function (lambda nil (edebug-enter 'edebug-anon12 (list) (function (lambda nil (edebug-after (edebug-before 0) 3 (anaconda-mode-jsonrpc (edebug-after 0 1 command) (edebug-after 0 2 callback)))))))))))()
  edebug-enter(anaconda-mode-call ("eldoc" anaconda-mode-eldoc-callback) (closure ((callback . anaconda-mode-eldoc-callback) (command . "eldoc") t) nil (edebug-after (edebug-before 0) 1 (anaconda-mode-start (function (lambda nil (edebug-enter 'edebug-anon12 (list) (function (lambda nil (edebug-after (edebug-before 0) 3 (anaconda-mode-jsonrpc (edebug-after 0 1 command) (edebug-after 0 2 callback))))))))))))
  edebug-enter(anaconda-mode-call ("eldoc" anaconda-mode-eldoc-callback) (closure ((callback . anaconda-mode-eldoc-callback) (command . "eldoc") t) nil (edebug-after (edebug-before 0) 1 (anaconda-mode-start (function (lambda nil (edebug-enter 'edebug-anon12 (list) (function (lambda nil (edebug-after (edebug-before 0) 3 (anaconda-mode-jsonrpc (edebug-after 0 1 command) (edebug-after 0 2 callback))))))))))))
  anaconda-mode-call("eldoc" anaconda-mode-eldoc-callback)
  anaconda-mode-eldoc-function()
  eldoc-print-current-symbol-info()
  #f(compiled-function () #<bytecode 0x400dfa47>)()
  apply(#f(compiled-function () #<bytecode 0x400dfa47>) nil)
  timer-event-handler([t 0 0 500000 nil #f(compiled-function () #<bytecode 0x400dfa47>) nil idle 0])

@proofit404
Copy link
Contributor

Sorry, anaconda-mode-create-response-handler has a different signature in master. The updated version should look like this.

(defun anaconda-mode-create-response-handler (callback)
  (let ((anaconda-mode-request-point (point))
        (anaconda-mode-request-buffer (current-buffer))
        (anaconda-mode-request-window (selected-window))
        (anaconda-mode-request-tick (buffer-chars-modified-tick)))
    (lambda (status)
      (let ((http-buffer (current-buffer)))
        (unwind-protect
            (progn
              (search-forward-regexp "\r?\n\r?\n" nil t)
              (let ((response (condition-case nil
                                  (json-read)
                                ((json-readtable-error json-end-of-file end-of-file)
                                 (let ((response (concat (format "# status: %s\n# point: %s\n" status (point))
                                                         (buffer-string))))
                                   (with-current-buffer (get-buffer-create anaconda-mode-response-buffer)
                                     (erase-buffer)
                                     (insert response)
                                     (goto-char (point-min)))
                                   nil)))))
                (if (null response)
                    (message "Cannot read anaconda-mode server response")
                  (if (assoc 'error response)
                      (let* ((error-structure (cdr (assoc 'error response)))
                             (error-message (cdr (assoc 'message error-structure)))
                             (error-data (cdr (assoc 'data error-structure)))
                             (error-template (if error-data "%s: %s" "%s")))
                        (apply 'message error-template (delq nil (list error-message error-data))))
                    (with-current-buffer anaconda-mode-request-buffer
                      (let ((result (cdr (assoc 'result response))))
                        ;; Terminate `apply' call with empty list so response
                        ;; will be treated as single argument.
                        (apply callback result nil)))))))
          (kill-buffer http-buffer))))))

@seagle0128
Copy link
Author

seagle0128 commented Jun 18, 2018

OK. Updated as below.
auto-complete works now, but M-x M-. doesn't work yet.

anaconda

debug.log

*Anaconda* buffer.

list() -> new empty list
list(iterable) -> new list initialized from iterable's items

@proofit404
Copy link
Contributor

Can you remove lines from this condition starting from the last one to the first one, and say from what point it starts working? https://github.com/proofit404/anaconda-mode/blob/04709854cc4ca98d4b5dbcbf4176f4ef02de2ae8/anaconda-mode.el#L441-L445

As for no definitions message, this is actually to say that emacs lisp interaction with python works but python indeed returns an empty result.

@seagle0128
Copy link
Author

seagle0128 commented Jun 18, 2018

I didn't find these lines in the original codes you provided. I changed the codes as above and debug again. Not sure if it's what you want.

anaconda

debug.log

list is defined in sys compiled module

@proofit404
Copy link
Contributor

Hi, I've fixed server port bind bug in master.

Please, check if empty responses still come from the HTTP library.

@seagle0128
Copy link
Author

seagle0128 commented Jun 20, 2018

I upgraded anaconda-mode to 20180620.123. Still doesn't work as before, including auto complete and go-to-definition.

I changed "127.0.0.1" to "localhost" in anaconda-mode-host, then auto complete does work. This issue exists on macOS, while not Linux and Windows. why??? :-(
M-x M-. returns list is defined in sys compiled module, both on Windows and macOS.

@proofit404
Copy link
Contributor

Messages like listdir is defined in posix compiled module is expected behavior for things written in C or Cython.

I changed host recognition logic. Please retry with the latest master and try to go to definitions for packages installed with pip. Like Django, Flask or whatever.

@proofit404
Copy link
Contributor

why??? :-(

I'm asking this myself for 3 years already...

@seagle0128
Copy link
Author

It was fixed. Works on macOS, Windows and Linux. Thanks very much!

@cank
Copy link

cank commented Jun 27, 2018

This fix seems to now break anaconda for me in OS X. Changing 'localhost' back to '127.0.0.1' in the darwin block fixes it.

@proofit404
Copy link
Contributor

What is the actual fuck is going on?!

I'm so tired of this issue...

@seanfarley
Copy link

Can confirm about the localhost / 127.0.0.1 issue. I wonder if this is an ipv6 issue?

@tonyslowdown
Copy link

Also confirming that changing anaconda-mode-host to return 127.0.0.1 for darwin fixes the issue

@preppypiet
Copy link

This is also broken for me on macOS.

@seagle0128
Copy link
Author

So wired...

@preppypiet
Copy link

Yeah, changing to "127.0.0.1" from localhost for darwin fixed it for me too.

@labrook
Copy link

labrook commented Jul 7, 2018

Nope, still have the same error message after changing localhost to "127.0.0.1"

Scratch that. My issue was due to the version of jedi and it was a different error message like here.

After upgrading jedi to 0.12 and also change "localhost" to "127.0.0.1", it's fixed.

@proofit404
Copy link
Contributor

Fixed second time in https://github.com/proofit404/anaconda-mode#faq

@seagle0128 please use the tweak.

@seagle0128
Copy link
Author

@proofit404 Thanks! It's really wired, but the tweak works fine for me.

@kanodiaayush
Copy link

I am unable to make this run using both 127.0.0.1 and localhost. I'm on doom-emacs. Any suggestions? I tried also bypassing proxy for 127.0.0.1 and `localhost'

@CeleritasCelery
Copy link
Contributor

please open a new issue and share the output of *anaconda-response* buffer.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

9 participants