emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] [ANN, OT] Emacs web-server, a new option for serving Org-mode fi


From: John Hendy
Subject: Re: [O] [ANN, OT] Emacs web-server, a new option for serving Org-mode files
Date: Sat, 11 Jan 2014 19:10:17 -0600

On Sat, Jan 11, 2014 at 6:26 PM, Eric Schulte <address@hidden> wrote:
> John Hendy <address@hidden> writes:
>
>> On Sat, Jan 11, 2014 at 4:29 PM, Eric Schulte <address@hidden> wrote:
>>>>
>>>> The "Hello world" example worked splendidly for me out of the box. I'm
>>>> having a bit of difficulty with serving up a file via this example:
>>>> http://eschulte.github.io/emacs-web-server/File-Server.html#File-Server
>>>>
>>>> Perhaps I don't understand how the function is supposed to work... It
>>>> says that the docroot is the current working directory in the example,
>>>> so I cd'd to a directory with an .html file in it, started `emacs -Q`
>>>> from the command line, ran `M-x load-file RET ~/.emacs`, and then
>>>> evaluated the code from the example in the *scratch* buffer. I'm
>>>> getting the 404 error. Should I be modifying that code somehow?
>>>>
>>>
>>> Since the value of the default-directory variable may not be easy to
>>> predict, you're probably better off changing
>>>
>>>   (docroot default-directory)
>>>
>>> to
>>>
>>>   (docroot "/full/path/to/directory/of/org/files")
>>>
>>> I only used default-directory in the example because I couldn't think of
>>> a good static path which would probably exist on most people's systems.
>>
>> Hmmm. Still having trouble. I tried:
>>
>> (lexical-let ((docroot "/home/jwhendy/Desktop/e-web-server-test"))
>>   (ws-start
>>    (list (cons (cons :GET ".*")
>>                (lambda (request)
>>                  (with-slots (process headers) request
>>                    (let ((path (substring (cdr (assoc :GET headers)) 1)))
>>                      (if (ws-in-directory-p docroot path)
>>                          (ws-send-file process (expand-file-name path 
>> docroot))
>>                        (ws-send-404 process)))))))
>>    9003))
>>
>> That directory contains just two .org files. When I open
>> localhost:9003, it downloads a file called `download`, containing the
>> following:
>>
>> HTTP/1.1 500 Internal Server Error
>> Content-type: text/plain
>>
>> Caught Error: (error "IO error reading
>> /home/jwhendy/Desktop/e-web-server-test: Is a directory")
>>
>> So, I then tried with the first line like so (trailing slash):
>>
>> (lexical-let ((docroot "/home/jwhendy/Desktop/e-web-server-test/"))
>>
>> Then I'm back to the 404 error. Sorry if I'm being dense and didn't
>> follow something else implied. I noticed the tutorial mentioned
>> mime-types. Do I need to set something with xdg-mime for .org files or
>> do anything else other than simply doing (require 'web-server)?
>>
>> Since the hello world example worked, I'm assuming the setup is at
>> least partially sound.
>>
>
> Oh, the example is confusing, I just updated both the example and the
> documentation.  The problem is that the example serves files, but not
> directory listings.  So since you just requested "/" it said there was
> nothing there.  If you pull down the latest version of the web-server
> that example will now give a directory listing when "/" is requested.

So instead of a path, should I have provided a specific file name? I
guess I was just going by the description: "The following example
implements a file server which will serve files from..." Perhaps I'm
still not understanding what, exactly, the web-server does!

Do you point it to *a* file, or a directory containing numerous files?

Or just to understand better, can you give a concrete example of what
I could do with my example path which contains .org files (perhaps via
the original code before you modified it, just so I understand the
intent).

Or should I have been doing something like http://localhost:9003/file.org?

>
>>
>> I did wonder why I get no completions for `M-x ws-TAB`. Should emacs
>> be aware of ws-* functions? Or is that not how one would run them
>> (e.g. M-x something is actually a command, not a function and my
>> nomenclature is incorrect)?
>>
>
> Because none of the ws-* functions are commands, they are all functions
> (meaning they don't have an interactive spec).  If you do `M-x
> describe-function ws-TAB' you'll see a completion list.
>
> This is because ws-* functions are all meant to be used from source
> code, not called with M-x.  If you think any should have an interactive
> spec added please let me know.

Gotcha -- indeed, it was my poor grasp of Emacs terminology :)

Sorry for the denseness above. I'm not a super web guy, so I'm
probably just getting hung up on poor understanding of the term "web
server" and what exactly it would do in this context. For my limited
Apache experience I suppose I always had an index.html with links
elsewhere, so that's sort of the extent of my knowledge.


Thanks for all the assistance!
John

>
> Thanks,
>
>>
>>
>> Thanks,
>> John
>>
>>>
>>>>
>>>>
>>>> Thanks and great work -- this is really neat!
>>>
>>> Thanks, and please do let me know if anything else doesn't work as
>>> expected.
>>>
>>> Best,
>>>
>>>>
>>>> John
>>>>
>>>>
>>>>> Best,
>>>>>
>>>>> Footnotes:
>>>>> [1]  https://github.com/eschulte/emacs-web-server
>>>>>
>>>>> [2]  http://eschulte.github.io/emacs-web-server/tutorials/#sec-1
>>>>>
>>>>> [3]  
>>>>> http://eschulte.github.io/emacs-web-server/Org_002dmode-Export.html#Org_002dmode-Export
>>>>>
>>>>> [4]  
>>>>> https://github.com/eschulte/emacs-web-server/blob/master/examples/013-org-export-service.el
>>>>>
>>>>> [5]  
>>>>> https://github.com/eschulte/emacs-web-server/blob/master/examples/011-org-agenda.el
>>>>>
>>>>> [6]  https://github.com/eschulte/org-ehtml
>>>>>
>>>>> [7]  http://eschulte.github.io/emacs-web-server/benchmark/
>>>>>
>>>>> --
>>>>> Eric Schulte
>>>>> https://cs.unm.edu/~eschulte
>>>>> PGP: 0x614CA05D
>>>>>
>>>
>>> --
>>> Eric Schulte
>>> https://cs.unm.edu/~eschulte
>>> PGP: 0x614CA05D
>
> --
> Eric Schulte
> https://cs.unm.edu/~eschulte
> PGP: 0x614CA05D



reply via email to

[Prev in Thread] Current Thread [Next in Thread]