Giter VIP home page Giter VIP logo

deft's People

Contributors

brabalan avatar cmarcelo avatar cpin avatar credmp avatar djl avatar emreyolcu avatar glucas avatar iqbalansari avatar jonasagx avatar jrblevin avatar karvus avatar kaushalmodi avatar kjhealy avatar klazuka avatar kungsgeten avatar rahiel avatar raphaelfeng avatar robotdisco avatar shankar2k avatar timvisher avatar vivekhaldar avatar xrvdg avatar yannickmorin avatar yashi avatar yn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

deft's Issues

Read jekyll style Front Matter for titles and other metadata

It would be sweet to use deft for writing markdown files for static sites.

The titles and other metadata for these files however are in Front Matter (YAML) rather than on the first line.

---
layout: post
title: Write Your Blog Using Deft!!!
---

Start of the post
...

feature request: define template for all new

For my particular use case, I'd like to create a template that defines the location for org-attach to be equal to the newly created file. Something like:

for 2019-11-22.org

  • heading
    :Properties:
    :ATTACH_DIR: 2019-11-22
    :ATTACH_DIR_INHERIT: t
    :END:

deft-default-extension does not set as expected

When I set the deft-extensions user option in my .emacs init file as follows

(setq deft-extensions '("md" "txt"))

the deft-defaul-extension variable still have the old value "txt" at run time.

I think the deft-default-extension variable should be set during Deft setup process, after evaluating user's settings.

possible to use call deft-open-file-in-other-window on file selection instead of the default?

I'd like for deft to open files in another window by default, instead of replacing the deft buffer. I didn't see immediately how this is possible reading the docs and issues. I'm not very good with elisp beyond editing config files and I'm about to dig into the deft code to see if I can figure this out, thought I'd ask on here as well.

Also, thank you so much for this app, I'm probably going to switch from Notational Velocity to deft in order to avoid switching out of spacemacs.

Dayone doentry

I know it's possible to use regxp to extract the summary. Is it possible to use regxp to parse the title from Dayone donentry(which is xml file)? Thanks.

Multiple directory

Dr. Blevins, thanks for this awesome work!

I have been using Deft for quite a while, it is really fantastic for keeping notes. However I find it more convenient if I could keep my notes in separate places. I'm aware of the updated feature deft-recursive, but still I may find supporting separate folders a good feature.

Proposed modification
Change deft-directory. Instead of satisfying stringp, we can make it a list, satisfying listp.

Is this a reasonable feature? May I submit a PR on it or maybe you are already working on it?

Thanks

[bug] deft create unwished empty file automatically

If I don't input anything to search, when I choose one file to open, deft will create an empty .org file automatically, which is not my wish.

environment:

  • macOS high sierra 10.13.4
  • GNU Emacs 26.1, I have tried both CLI and GUI version

but on ubuntu 14.04.1, this problem doesn't happen.

deft-new-file-format default won't work on Windows

For those of us stuck on Windows: deft-new-file-format contains a colon (:), which causes the filename to be truncated, but emacs to report it as saved. Issuing a C-c C-c in deft then "loses" the note.

Easy to workaround by setting deft-new-file-format to "%Y-%m-%dT%H%M" (omitting the colon) in customize. But should the default be more windows-friendly? Maybe not!

[feature request] Preview context of match

Hi there

Great utility - many thanks. It would be very useful for me (where some of my .org files are quite long) to see what part of the text has been matched, with a little context. As far as I can tell, this isn't possible with the current options, but would make a very useful feature.

That is, instead of part of the first line, can we see where the match is?

Cheers

Ian

If the deft browser buffer is killed, the next time you load deft, it takes longer -- and gets worse each time

So, I've noticed a weird problem with deft.

Some background and context. I'm in a situation where I'm dealing with hundreds of individual note files. Deft handles them like a champ when I limit the number of entries shown by the deft browser to something reasonable, and I've been impressed overall with how well it works. The below is my config:

(use-package deft :ensure t :config (setq deft-default-extension "org") (setq deft-file-limit 32) (setq deft-filter-only-filenames nil) (setq deft-recursive nil) :commands (deft) :bind ("<f8>" . deft) :init ) (add-hook 'deft-mode-hook (lambda () (setq display-line-numbers nil) ))

The problem is, if I kill the deft buffer and then re-open it, the length of time it hangs at "Deft initializing..." increases. On first load, it takes about half a second to initialize with 800 files in the deft directory. On second load, it's a little longer. On third load it's a second or two. On fourth load it's multiple seconds. And it just gets worse from there.

No idea what's causing it. It's really weird!

feature request: request option to change deft-directory

Can we have an option to set the deft-directory runtime ? a setting like deft-set-directory!
That way we can organize huge org files into their own directory structure and also speed up.
So if my emacs init contains deft-directory to be dir1, only contents from that would be listed.
I do a deft-set-directory to dir2, then contents from only dir2 will be processed. and I will not
see contents from dir1.

Deft mode's auto-save does not play well with `ws-butler`

ws-butler is an emacs package to trim whitespace only of the lines edited by the user. It trims the whitespace 'unobtrusively' that is the file is cleaned up on the disk but the buffer still has the virtual whitespaces so that user is not interrupted with the cleanup (perhaps the project's README explains it better than me).

ws-butler tries to preserve the point in the buffer by saving current column in before-save-hook and after the whitespace is trimmed it moves to the column saved in the before-save-hook. However this fails with deft's auto-save since the auto-save code is wrapped in a save-excursion form which tries to restore the point back to the marker before the save, please note the marker is invalidated by ws-butler when it removes associated text (trailing whitespace) so apparently the point is moved back to end of visible text after the form is executed (not sure this the desired behavior of save-excursion) which different from the column moved to by ws-butler.

For example consider the following (with point indicated by |) before deft's auto-save

* Testing deft auto-save   |

After the auto-save, with ws-butler enabled, the point moves to end of visible text

* Testing deft auto-save|

As opposed to following with ws-butler enabled and buffer saved by the user, where point remains at the position before save

* Testing deft auto-save   |

I think the issue can be solved by not using save-excursion because I do not see the need to save the point, deft might only need to save the current buffer which can be achieved with save-current-buffer or with-current-buffer forms. What do you think?

BTW thanks for this package!

Is it possible to put image inside Deft note?

It is possible to be able to insert the image in a Deft note becuase image sometimes explains a lot.

One possible solution is write link inside the note view it inside a browser when you need it. (You may have to upload the image to the cloud)

Line Wrap on the notes list

The notes list is not aligned properly on emacs 26.1 and deft 0.8.

As of my understanding the deft-width-offset variable was removed, right? What else could be the cause? Thank you.

Important to note: When I resize the window or refresh the buffer with "deft-refresh" it looks fine. But it happens again when you reopen the deft buffer.

deft list

Originally posted by @blackkenny in #16 (comment)

change or disable auto-save interval

I've tried the following in my init.el to change or disable the auto-save interval without success:

(setq deft-auto-save-interval 5.0)

(setq deft-auto-save-interval nil)

I'm running deft 0.7 in spacemacs, if that matters.

Remove title and display filter in mode-line

This is a suggestion. I usually work with the latest modified file so when I bring up Deft I have to move down two lines to the first file and press RET. How about removing the first two lines altogether and display the filter in the mode-line? Then the latest modified file would only be one RET away. I do not filter often and I think this would make sense, at least as an option if not as default.

Wrong type argument

I have deft installed with no customizations other than file types and directory. When the buffer opens and I start typing (no matter what the search string is) I constantly get deft-filter-match-file: Wrong type argument: stringp, nil. This is emacs 24.5.1 on Mac.

deft load errors when org not loaded

deft 0.7, emacs 24.5.1
I have org autoloaded, and when I launch deft before org, I get the following backtrace:

Debugger entered--Lisp error: (void-function org-add-link-type)
(org-add-link-type "deft" (function (lambda (handle) (org-open-file-with-emacs (expand-file-name handle deft-directory)))))
eval-buffer(#<buffer load> nil "/Users/dharms/.emacs.d/plugins/deft.el" nil t) ; Reading at buffer position 67056
load-with-code-conversion("/Users/dharms/.emacs.d/plugins/deft.el" "/Users/dharms/.emacs.d/plugins/deft.el" nil t)
autoload-do-load((autoload "deft" nil t nil) deft)
command-execute(deft)

[Feature Request] Option for Delimted Searching

Howdy! I've been using Deft for a while now, and I've been thinking about some of the slowness that crops up with large numbers of notes.

The deft-file-limit setting that was added recently has helped some, but I was wondering how hard it would be to implement an option to just do delimited searching rather than real-time incremental searching.

I ask, because according to the profiler, the vast majority of the slowdown I experience comes from deft-filter-increment and deft-filter-decrement/deft-filter-decrement-word calls. The actual note browser is speedy and works great -- if I could just type my search, hit enter, and let the thing come back with a result in its own time, that'd be a lot less jarring from a user experience perspective. I don't mind hitting enter and waiting for a result, but it's kinda frustrating to have the whole thing freeze up in the middle of the word you're typing.

I just really want to commit to using the hell out of Deft, but the slowdown problem is only gonna get more noticeable as I add more notes.

Quick edit: Just to be clear, I'm aware of the C-c C-l functionality, I just wish I could set the search bar to function that way directly.

[question / feature request] using deft in a custom link?

I am trying to implement a zettlekasten-like system in emacs using deft and org-mode. I'm currently making a custom link type that allows for seeing all items that match that id rather than linking to a file directly. Put another way: I want a custom link type that has the effect of executing deft with the contents of the link being the search string. I feel like I essentially understand how to create a custom link type, but calling deft with an argument doesn't work. My code currently looks like this:

(org-add-link-type
               "id" 'zettel/deft-search-link)

(defun zettel/deft-search-link (uid)
; "run deft, hopefully with uid as a search term"
; "FIXME: 'deft' does not take an argument. Figure out how to do this, ask the author?"
(deft uid))

My question then, is, is there a function within deft that I could be calling that does take an argument and opens a deft buffer (preferably in other window)? If not, is it easy to modify deft to do so? Alternately, am I just going about this in a ridiculous way and there's already an easier solution?

Thanks!

`RET` behavior after `deft-open-file-other-window`

If I use C-o to open file in another window, then when I enter a file with RET, the window created by C-o is still present. Possible to change the behavior (or add as an option)? Usually I use C-o just to browse through files, and after RET a file, I expect the other window to be closed automatically.

Deft always creates new files with .txt extension

It appears that despite the configuration, deft always saves files with .txt extension.
Running Windows 10 and GNU Emacs 26.0.90 (build 3, x86_64-w64-mingw32) of 2017-10-13. Can you help me escape the corporate windows hell with emacs? :)

My config below

;; notational velocity like package https://jblevins.org/projects/deft/
  (use-package deft
  :straight t)

;; setting default extensions for deft to search
(setq deft-text-mode 'org-mode)
(setq deft-directory "~/Dropbox/Oleg/Org/")
(setq deft-new-file-format "%Y-%m-%dT%H%M") ;; on windows files with ":"-symbol can't be saved, so this is editing format to save in a format without ":"
(setq deft-extensions '("org"))
  
;; making deft also search for files in subdirectories
(setq deft-recursive t)

(global-set-key [C-f12] 'deft) 

Can deft-extensions define the regex extension?

I have some journal files to keep some notes with Emacs calendar ij (the idea come from Abrams
, file name with the format, %Y%m%d, 20180724, without file extension.

So, what can I let deft to look for them? How to let deft find the file with the regex "\d{8}"

Auto-refresh deft file list

Here is my deft config:

(global-set-key (kbd "<f8>") 'deft)
(setq deft-use-filename-as-title t)
(setq deft-use-filter-string-for-filename t)
(setq deft-directory "/Users/jaan/Library/Application\sSupport/Notational\sData")
(setq deft-extension "txt")
; associate files in deft directory with org mode
(add-to-list 'auto-mode-alist '("/Users/jaan/Library/Application\sSupport/Notational\sData/.*[.]txt$" . org-mode))

This lets deft sync with Simplenote (via Notational Velocity and the nvAlt app) so I can access my notes from multiple devices, but lets me use org-mode to take notes on my laptop.

However, if I create a file with Simplenote (in the directory above) existing Deft sessions will not update and new files do not show up.

I need to kill the buffer and reopen Deft to see the latest files in the Deft directory.

It would be nice if Deft sessions checked for changes to the file list every second or minute.

Customizing deft-open-file-other-window

Thanks for the package! I am using it to implement a Zettelkasten.

Is there a way to customize deft-open-file-other-window or C-o? The current behavior splits the window vertically. If I were to make a request for additional features, it would be for (1) a function that opens the note file in an existing other or target window without altering the existing window layout; and (2) a function very similar to deft-open-file-other-window but which splits the window horizontally rather than vertically such that the note buffer appears below the Deft buffer.

Thanks again!

deft-extensions and the deft-find-file extension

Thanks for deft I use it for all my notes!

I have a number of file types in my notes directory but I want deft to only look for .org files. The deft-extensions variable works as advertised to filter the results in the main deft index view, but the deft-find-file() function shows other file types like .md files that match the search string. Is that the intended behavior? Is there a variable to set to filter the deft-find-file() list also?

deft-text-mode had uses that deft-extensions doesn't serve...

So, my deft config was as follows: I used deft-file-extension to set the extention to .org, and then used deft-text-mode to trigger a custom minor mode that marked org buffers launched via deft as special.

I used this to do two things: it let me set up a toggle that would kill or bury all deft buffers at once, and second, so that I could inhibit the hook that cleans trailing whitespace.

Without a non-file-extension way to mark deft buffers, I can't think of an easy way to replicate this functionality. Would there be general interest in a PR restoring deft-text-mode for explicit use of attaching a minor mode to deft buffers? Or, alternately, a new variable for same?

org-deft-store-link returns error

Calling org-store-link in the Deft buffer returns an error:

user-error: No method for storing a link from this buffer

I am using the latest version of Deft in this repository, which includes commit #29.

I have Deft configured like this:

(use-package deft
    :ensure t
    :defer t
    :bind ("H-n" . deft)
    :config
    (setq deft-directory "~/Dropbox/work/zettelkasten")
    (setq deft-recursive t)
    (setq deft-use-filename-as-title t)
    (setq deft-use-filter-string-for-filename t)
    (setq deft-default-extension "org")
    (setq deft-extensions '("org" "md"))
    (setq deft-text-mode 'org-mode)
    (setq deft-auto-save-interval 0))

Thank you again for your work, Jason. I use Deft everyday.

About Performance

Hi,

I've been using deft and markdown as my note-taking tool chain for like, half a year now . Now I have 40+ notes now and it works fine.

My concern is, if my notes grow up to 500+, will there be a performance issue? I'm not familiar with Lisp and I didn't see through your code. Hope you can give us a simple answer on this.

Thanks!

Qing

Exclude summary per file

Hello, I use Deft in a work situation and sometimes my Deft page, which lists all titles and summary, are displayed to my group. Some of my pages contain data which is somewhat sensitive. I'd like to be able to turn off displaying the summary on the Deft page on a per-file basis. Possibly adding a header like this:

#+OPTIONS: exclude-summary

Before I embark on this, is this doable today with no changes to Deft?

If not, I think I can modify deft-parse-summary to skip adding the summary if the header/tag is found.

Thanks

deft search matches directory name of files

I've been enjoying using deft a lot lately.

I happened to notice that deft searches match the full path of files in the deft directory. For example, if deft-directory is ~/mydirectory/mynotes/, then a search for mynotes will match every note.

This seems to come from the line (insert file) in deft-filter-match-file. Using (insert (file-name-nondirectory file) would make the search match only the base name of the file (along with the title and contents), of course.

If that seems like a sensible change, I'd be happy to make a pull request for it.

[Feature Request] Hide summary for *.gpg files

For the gpg encrypted files, e.g., foo.org.gpg, it is better if Deft has an option to hide their summaries. Also, this behavior can make gpg passphrase poped until the encrypted file is actively opened instead of everytime Deft is started.

Call Deft and set filter string programmatically

First, @jrblevin thanks for a great utility!

I'm wonder what is the best way to run Deft and set the filter string programmatically?

I'm thinking about searching for word/hashtag/wikilink/selection under cursor in Deft notes much like Notational Velocity and nvALT do it for wikilinks.

support for popup rules in doom

Hello,

Thanks for all the hard work here, this is a wonderful package. One comment: I find it a bit easier to use deft in a smaller popup buffer, rather than have deft take over the entire window. AFAICT, forcing this to happen is usually done through modifying display-buffer-alist -- e.g. in doom emacs, through set-popup-rule!.

This doesn't work with deft as of now, as deft uses switch-to-buffer rather than pop-to-buffer. An easy fix is to define a new function:

(defun deft-popup ()
  "Pop *Deft* buffer and load files."
  (interactive)
  (pop-to-buffer deft-buffer)
  (if (not (eq major-mode 'deft-mode))
      (deft-mode)))

but if there is no other reason for switch-to-buffer over pop-to-buffer, perhaps that should be the default instead?

Does Deft prohibit none English searching?

I want to search with Korean language in Deft. Though my Emacs input method indicates Korean language mode, all key inputs appear in English in Deft search line only. I don't know yet whether this problem is just my Emacs settings or related in Deft. Does Deft itself prevent users from inputting none English character in search line?

Feature request: Smarter note housekeeping (delete notes based on 'last time read')

Hello,

I'm a big fan of deft, and through my years of use I have accumulated about 600 notes. Out of all those notes, most of them (400+) are ancient notes that I will never ever use in my life again. For example, I make quick notes all the time that I use once or twice and then they just rot there.

Having so many notes makes my deft home screen almost unuseable: it's very cluttered and also a bit slower to load.

What would be the right way to do notes housekeeping? I've been thinking that I could add a (deft-housekeeping) command that deletes notes that haven't been read in over N months. So like, if I haven't opened a note for two years, it will delete it (or ask y/n to delete it).

Do you think such a thing would be useful, or in scope for deft? Or does it exist already?
Or should this be done as an emacs hook so that it's completely third party?

If this is not possible, how would you suggest I go around implementing this? (my elisp is subpar, but I can try)

No need to escape quotes for replacement characters in `deft-file-naming-rules` (Emacs 24.4)

On Emacs 24.4, the code for deft-file-naming-rules breaks with Symbol's function definition is void. Removing the slashes used to escape quotes fixes it.

(I don't know anything about Emacs, so I'm not submitted a PR. Not sure if this will break in previous versions...would be odd)

(setq deft-use-filter-string-for-filename t)
(setq deft-file-naming-rules '((noslash . "-")
                               (nospace . "-")
                               (case-fn . downcase)))

deft-open-file-hook is run outside of the context of the new buffer

Background: For convoluted reasons (all my notes have the .txt extension so Notational Velocity and iOS Simplenote will display them, but they are in org format) I want to be able to change the major mode of each note buffer when it is opened by deft. This used to be possible with the deft-text-mode var, but that was removed in d325df7 .

It seems like the deft-open-file-hook hook should be perfect for this, but as it is run outside of the (with-current-buffer ...) s-expr in deft-open-file, any mode changes (e.g. calling (org-mode)) don't actually apply to the newly opened note buffer.

Is that intentional? If not simply moving the run-hooks call inside the (with-current-buffer ...) block fixes the issue. I'm happy to submit a PR to that effect.

Thanks!

Feature request: A tag code in file name based knowledge management system

I am using org files to keep notes with
https://github.com/abo-abo/plain-org-wiki/blob/master/plain-org-wiki.el
As time goes by, the file is getting bigger and bigger, which bring a lot of duplication, also makes auto save and backup files big and cause a lot more extra disk io, not good for the hard drive. :-)

So I am thinking about a purely simple tag base system:

  1. a tag datafile: (tag . value), tag is a string without blank characters, value is a numeric value, eg. ((linux . 10) (debian . 2) (emacs . 3))
  2. a notes folder: note file name is the joined string of tag values sort in ascending order, eg. a note with both linux and debian tag should be named 2-10, just plain org files without the .org extension

The search operation is simple too:

  1. a search tag function: search tag datafile with keywords separated by space to find all the matched values, each single tag uses fuzzy matching, eg. search for "dbian linx" will retrun files match the glob pattern 210*, but the file name list is converted to tag names like "1. debian linux 2. debian emacs linux", you can select the file to open with number, or you can goto 2.
  2. open them all in a temp buffer with all files inserted using https://github.com/whacked/transclusion-minor-mode , the nice thing is you can view all of them in one buffer, and maybe cut and paste from one file to another

The tag manipulation is very simple:

  1. Delete a tag: remove the tag from the datafile, replace the tag value from all notes files names, move file name the same as tag value to trash and warn the user. save the tag value to a file named available-tag-values.
  2. Add a new tag: search the tag datafile if no match, create a new tag value and associate to the tag name, the value in available-tag-values will used first.
  3. Add a tag to the current note: rename it to a name include the tag value
  4. rename a tag: just rename it in the tag datafile.

This will break big notes files into smaller ones and does not affect the viewing thanks to org translusion. However, I only have a very limited knowledge of emacs. I am looking forward to hear your opinion and on how to bring the feature to this repo.
Thank you!

Search just by filename

Hi Jason, fantastic product, thanks so much for putting this together.

I have a feature request; hoping for a way to search only by file name and not necessarily their content. I'm guessing that you're familiar with Merlin Mann's text file conventions so searching just by title would be a huge boon.

Thank you!

Slow rendering of the files list

I have over 1000 different files in my deft directory.

Over time, deft has started to feel very slow while filtering: there is a noticeable delay with every key press while filtering files.

My first assumption was that incremental search might be slow, but a little profiling revealed that most of the time is spent in these lines of the deft-buffer-setup function:

      (if deft-current-files
          (progn
            (mapc 'deft-file-widget deft-current-files))
        (widget-insert (deft-no-files-message))))

I'm not sure if it's something wrong with my local emacs configuration: I'm running emacs-mac with font composition enabled via mac-auto-operator-composition-mode. I haven't noticed a slowdown in any other modes though.

For now, I have locally edited this function to show the first 10 files from deft-current-files. This fixes the problem for me โ€“ typing / filtering feels realtime again, without any perceived delay.

I just wanted to report this. If anyone else has noticed a similar problem, I can provide a PR which will let you customise the total number of files displayed in deft.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.