dtk01 / dtk

Read the Bible or other diatheke-accessible material in emacs
GNU General Public License v3.0
24 stars 9 forks source link

Direction of the package #4

Closed yiufung closed 4 years ago

yiufung commented 5 years ago

Thanks for developing this gorgeous package. I have used it extensively for the past few days and find it very useful for me when studying the scripture.

I'm interested in adding more features. Do you have any thoughts regarding direction of the package? For me, it would be great if we're able to:

  1. Display and compare multiple versions of Bible in parallel
  2. Write functions that return text, instead of inserting into buffer directly, so that users may make use of them to build their own functionalities easily
  3. Default dtk (or rename it to dtk-insert) to insert text directly in buffer. I find my self not using much of *dtk* buffer
  4. Support Bible reading plans
  5. Implement a reading mode

What do you think?

thomp commented 5 years ago

I'm not quite sure what you mean by "reading mode" -- would you be willing to elaborate a bit?

In terms of priority, ideally, dtk will mature to the point where it can function, in a straightforward manner, as a starting point for a variety of additional features and functions that users find desirable. In this regard, the following may deserve attention in the near future:

The second layer, as you point out, is that there is quite a bit of additional functionality that would enhance the package. In this regard, I think prioritizing makes a lot of sense. My perspective in terms of particularly desirable additional functionality:

  1. capacity to view multiple texts "side-by-side" - an interlinear/parallel display/compare feature

  2. ability to annotate (persistent text-specific "notes")

  3. capacity to directly install new modules from dtk

  4. support Bible reading plans

  5. persist/cache last reading location and, upon, startup, open to the same location (you've already moved this a bit forward)

yiufung commented 5 years ago

For #5, I mean an info-like reading interface, where user can input book and chapter, and start reading, and can navigate through verses easily. It could be an enhanced *dtk* buffer, and also related to #1, so to say.

For the "side-by-side" feature, I think we may borrow some insights from org-noter. Possibly a mechanism to store annotation and verses together in one single Org file, and develop a command that switches between org-mode and side-by-side display.

I also need some time to digest what xiphos, diatheke and SWORD project has provided. There are many modules available now: Biblical Texts, Commentaries, Dictionaries, Glossaries, General Books..... There should be a way to display them in a coherent manner. For example, focus on Biblical Texts first, and add commands such as dtk-show-commentary-at-point, dtk-show-dictionary-at-point, dtk-show-reference-at-point (possibly using popup such as postip). This should be more useful than listing them directly in buffer.

It's still early to talk about advanced features like this. For now I'd like to cleanup the comments a bit and provide customization options in a more standard manner. This is to lay out a general plan and avoid as least breaking changes as possible. I'm glad we have aligned goals. Let's keep those in mind and move ahead step by step.

dtk01 commented 5 years ago

Thumbs up. Feel free to chew on things as time permits.

yiufung commented 5 years ago

Dig a bit, diatheke manage contents by module. Each module belong to a category/type.

I think this package should only be a bridge to these functionalities. Users only need to select the module, and texts are inserted.

Proposed structure:

For all commands, using prefix argument C-u will change module temporarily.

dtk01 commented 5 years ago

The proposed functions dtk-view and dtk-insert seem a reasonable way to communicate intended use clearly.

With the addition of the C-u prefix for module selection, I'm reminded that module-related code should receive attention. I've established a separate issue to provide a location to track considerations/direction for the module-related code.