flexibeast / ebuku Goto Github PK
View Code? Open in Web Editor NEWEmacs interface to the buku Web bookmark manager.
Emacs interface to the buku Web bookmark manager.
Suggested in #1.
Hi, I am trying ebuku on Windows.
I put the absolute path for my database file in the ebuku-database-path variable with
(setq ebuku-database-path "C:/Users/uname/.local/share/buku/bookmarks.db")
But then I get the error message "invalid string for collation: Invalid argument".
The path is valid, and when I call the buku --db C:/Users/uname/.local/share/buku/bookmarks.db --print
, it works fine.
Also, when I try some address alternatives like
(setq ebuku-database-path "~/.local/share/buku/bookmarks.db")
There will be new directory created under the working directory, like
D:\pwd\~\.local\share\buku\bookmarks.db
I guess that's because buku will create a new db if you provide some valid path.
And my suspicion is that the substitute-in-file-name
function is the cause, maybe this function don't handle the Windows path properly.
As reported by @edzhangsy in #31:
Debugger entered--Lisp error: (args-out-of-range "1884. Welcome to Comprehensive Rust 🦀 - Comprehens..." 15862 15893)
match-string(1 "1884. Welcome to Comprehensive Rust 🦀 - Comprehensive Rust 🦀")
ebuku--search-helper("--print" "[all]" "-1000" "")
ebuku-show-all()
ebuku()
funcall-interactively(ebuku)
command-execute(ebuku record)
execute-extended-command(nil "ebuku" "ebuku")
funcall-interactively(execute-extended-command nil "ebuku" "ebuku")
command-execute(execute-extended-command)
Hi. I love this package. However, I have noticed that the search returns are often not the same as those of buku
(run externally on command line). In particular, unlike buku
, ebuku
seems to be treating multiple words as a single search string. For example when running ebuku-search-on-all
and providing the keyword? foo bar
, only entries in which foo
and bar
occur as foo bar
will be matched. Entries such as foo a bar
or bar foo
will not be matched, whereas both of these will be matched with buku
. Or am I missing something?
Also, is there any scope for adding --deep
?
Regards
Murray
Emacs 27.2
Arch linux
ebuku (20220106.902) via melpa
Oil is a terminal interface to buku
https://github.com/AndreiUlmeyda/oil
It has some very nice multi bookmarks support:
Suggested in #1.
ekg can manage not only bookmarks, and notes.
Looking at the code:
Lines 415 to 418 in 32ea7e0
I can see that ebuku prompts for the title first. As far as i could see, entering the URL alone would enable buku to extract the title automatically from the URL so it would be a great improvement if i can just enter the URL first and press enter for the next 3 prompts or if i can set something like (setq ebuku-prompt-url-only t)
Thanks
I tried in Linux and MacOS, only Windows have the following issue.
Error I'm getting from debug log.
ebuku--search-helper: Args out of range: #("212. Tutorial - Write a Shell in C 鈥\242 Stephen Brennan" 35 53 (charset chinese-gbk)), 46810, 46828
The bookmark in question is linked.
The related line of ebuku is line 741
Some details about my encoding related configuration
cmdproxy
set as (gbk-dos . gbk-dos)
(not setting this ebuku will output garbage text \387\567
etc.)If I delete the special char (which is "•", the symbol used between work and name), ebuku works fine.
If I also set the experimental utf-8 setting on windows, ebuku also works fine. However, this is not ideal as it could break other software.
Just off my head here. I'm wondering if any of the following is possible.
If a bookmark has a description with a line break, ebuku fails with the error
Match-string: Args out of range: "<2nd line>", 5, 22
Repro:
Hello again 😅
This isn't a disastrous issue, but I'm consistently finding that the first time I call M-x ebuku
I get the above error in *Messages*
(debugger output below). It opens the *Ebuku*
buffer in the background, but doesn't open it. If I manually open the *Ebuku*
buffer I can see all my bookmarks listed there. If I call ebuku
again, then the buffer is opened without error.
What's going on here?
Thanks!
Debugger entered--Lisp error: (args-out-of-range " # " 6155 6171)
match-string(1 " # ")
ebuku--search-helper("--print" "[all]" "-1000" "")
ebuku-show-all()
ebuku()
funcall-interactively(ebuku)
call-interactively(ebuku record nil)
command-execute(ebuku record)
counsel-M-x-action("ebuku")
love the plugin, but I feel the UI could use some work.
Seeing as ebuku is a command line application, having a magit like interface would be nicer. Meaning we should have transient or hydra as a dependency. I'm personally more familliar with hydra so I say we should go with that, but transient seems like a better fit.
We should also introduce some nicer defaults for the faces used. Right now most just inherit from default
which gives the ebuku buffer a somewhat dull look of pure white (not that there's anything wrong with that).
URLs at the moment are just plaintext. We should make them both clickable and actionable. Hovering over a URL and clicking it (or pressing enter) should open the URL like it would in org mode.
We should also introduce methods for moving to the next or previous search result. Furthermore we should have functions to jump to search results in the current buffer by title or url like counsel-org-goto
.
S.N. ebuku-buku-path
is hardcoded as a unix like path. Which means users on windows will have to change it before they can use the plugin. We should change the definition to "buku"
if you're on windows & keep it as "/bin/duku"
if your on any other OS.
not an issue, just an expression of gratitude
As of Emacs 29.1, Emacs can be built with built-in support for accessing SQLite databases (the "SQLITE3" feature).
Ebuku accessing the buku database directly would avoid:
and substantially simplify Ebuku's code.
However, Emacs 29.1 was only released in July 2023, and at this point i want to support releases back to 27.1. (The code currently has Package-Requires: ((emacs "25.1"))
, but that line hasn't been updated for a while, and 27.1 now seems like a reasonable minimum.)
It would be good if (say) ebuku-use-sqlite
was an optional feature that could be enabled (perhaps even by default if emacs-version
≧ 29.1 and "SQLITE3" ∈ system-configuration-features
).
This would be developed on a feature branch that would eventually get merged into the main branch.
I have Emacs 27.1 and ebuku version 20220521.1416, and got the following compiler warnings when updating ebuku:
In ebuku--search-helper:
ebuku.el:613:20:Warning: ‘goto-line’ is for interactive use only; use
‘forward-line’ instead.
ebuku.el:651:37:Warning: ‘goto-line’ is for interactive use only; use
‘forward-line’ instead.
In ebuku-refresh:
ebuku.el:907:66:Warning: ‘goto-line’ is for interactive use only; use
‘forward-line’ instead.
ebuku.el:909:12:Warning: ‘goto-line’ is for interactive use only; use
‘forward-line’ instead.
In ebuku:
ebuku.el:1026:12:Warning: ‘goto-line’ is for interactive use only; use
‘forward-line’ instead.
In end of data:
ebuku.el:1043:1:Warning: the following functions are not known to be defined:
string-empty-p, map-put, text-property-search-backward,
text-property-search-forward, map-elt, seq-uniq
I didn't notice any negative effect of this, yet, only want to inform you about it, and ofcourse want to thank you for making & sharing Ebuku.
Thanks for the mode!
I’m running doom and have “evil +everything,” which should include evil-collection.
However nothing is bound to any of the ebuku commands.
What am I missing?
Suggested in #1.
Thanks for ebuku, love to use it!
My issue is:
after adding el.wikipedia.org/
it isn't found by ebuku
this works:
buku -s el.wikipedia
I installed ebuku with ELPA "M-x package-list-packages" on GNU Emacs 25.1.50.1 (x86_64-pc-linux-gnu, GTK+ Version 3.14.5) of 2016-10-29, modified by Debian (and using emacs-distribution).
After opening the ebuku buffer (Mx- ebuku) it shows/rapports only:
Ebuku
No results found for '--print -1000'.
The number change when I change "ebuku-results-limit".
Any idea what is wrong ?
Cf. #23.
Alot of emacs users use evil for their keybindings. I noticed that in ebuku-mode, provided that the evil layer is activated, i would have to go into insert-mode before being able to press a
to add a new bookmark, or d
to delete.
Would be great if this package can also provide direct keybindings or mention a way to make this work nicely with evil.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.