Options screen

[?]
Apr 11, 2021, 4:46 PM
POQV6EZEPJLYHUC2HN3BYTRPR7V5V2ILWXU56SNMTA6ETE74QNTAC

Dependencies

  • [2] DLDMHQY6 Add experimental build 3 and options
  • [3] OMZXJL6Q Ready for pijul push! First nightly build will be released shortly!
  • [4] OPFG6CZ2 File status tracking supported.
  • [5] B43WNBLF - Add Show History to Pijul menu - Always ignore .idea and .pijul in tracking. - Make findPijul a generic function to allow to find editor-server. - Only show one revision for directories. - Add `Hunk::resolvePath(Path)` to resolve the affected file to a Java NIO Path. - Fix StringOutOfBounds in Change Parsering Algorithm - Use editor-server instead of copie for interfacing with `pijul record` file. - Fix FileStatus provider not returning correctly for untracked files. - Add CommittedChangesProvider for Pijul.
  • [6] FNNW5IEA Added more plugin files to Pijul
  • [7] ISO7J5ZH More caches, better and generic cache code. Now Dracon listen to file changes to drop cached data. Implemented caches: - File contents in specific revision (never dropped) - Pijul ls and Pijul diff results - File Revision and File changes by patch - some others.. Dracon is incredible fast now, but still will take some time for bigger repos.
  • [8] 2N67RQZC Add auto installation support and cache content of ContentRevision
  • [9] FRFFQV7V Basic show history support.
  • [10] ZCRW57C5 Improved support for revisions
  • [11] Q35OTML2 Remove use of coroutines, which was blocking IntelliJ UI in larger repositories Improvements for bigger repositories, now Dracon caches the changes that happened in a revision in a file, so everytime Dracon needs to query the changes of a revision, it loads directly from memory instead of doing a full-scan in Pijul repository. For tiny projects it is not a problem, but for medium ones it takes more than five minutes to scan the entire repository (and it was tested with a repo of only 700 records, however there was changes that had more than 60.000 lines). The cache file is saved in IntelliJ Data Path (project specific) and is compressed with gzip, so it will not use so much disk space (the cost worths the gains).
  • [*] GGYFPXND Initial plugin
  • [*] Q7FXTHVU First record support, YEAAAH, RECOOORD
  • [*] RE4EKNSL Improvements, a lot

Change contents

  • replacement in src/main/resources/messages/DraconBundle.properties at line 99
    [2.179][2.179:218]()
    settings.pijul.path.detect.text=Detect
    [2.179]
    [2.218]
    settings.pijul.path.description.text=Dracon does not embed the pijul binary, you should install it
    settings.pijul.path.tooltip.text=Dracon does not embed the pijul binary, you should install it using cargo or by \
    downloading a build for your platform. See <a href="https://oblitersoftware.github.io/">Dracon installation</a>
    settings.pijul.text=Pijul settings
    settings.editor.text=Editor server settings
    settings.editor.path.text=Editor server path:
    settings.editor.path.tooltip.text=Dracon does not embed the editor-server binary, you should install it using cargo or by \
    downloading a build for your platform. See <a href="https://oblitersoftware.github.io/">Dracon installation</a>
    settings.install.text=Click here to read more about Dracon installation.
    settings.pijul.path.detect.text=Detect Pijul
    settings.editor.path.detect.text=Detect Editor Server
  • edit in src/main/resources/messages/DraconBundle.properties at line 111
    [2.270]
    [2.270]
    settings.editor.path.select.text=Select Editor Server Binary
  • edit in src/main/kotlin/com/github/jonathanxd/dracon/util/Application.kt at line 3
    [3.248]
    [3.248]
    import com.github.jonathanxd.dracon.config.PijulSettings
    import com.intellij.openapi.components.service
  • edit in src/main/kotlin/com/github/jonathanxd/dracon/util/Application.kt at line 9
    [3.348]
    [3.348]
    fun findPijul(): String =
    service<PijulSettings>().getPathToPijul() ?: findBinary("pijul")
    fun findPijulOrNull(): String? =
    service<PijulSettings>().getPathToPijul() ?: findBinaryOrNull("pijul")
    fun findEditorServer(): String =
    service<PijulSettings>().getPathToEditorServer() ?: findBinary("editor-server")
  • edit in src/main/kotlin/com/github/jonathanxd/dracon/util/Application.kt at line 19
    [3.349]
    [3.349]
    fun findEditorServerOrNull(): String? =
    service<PijulSettings>().getPathToEditorServer() ?: findBinaryOrNull("editor-server")
  • edit in src/main/kotlin/com/github/jonathanxd/dracon/config/PijulSettings.kt at line 42
    [2.3145]
    [14.6169]
    fun savePathToEditorServer(pathToEditorServer: String?) {
    this.state.pathToEditorServer = pathToEditorServer
    }
    fun getPathToEditorServer() =
    this.state.pathToEditorServer
  • edit in src/main/kotlin/com/github/jonathanxd/dracon/config/PijulSettings.kt at line 66
    [14.6634]
    [15.13585]
    @get:OptionTag("PATH_TO_EDITOR_SERVER")
    var pathToEditorServer by string(defaultValue = findBinaryOrNull("editor-server"))
  • edit in src/main/kotlin/com/github/jonathanxd/dracon/component/PijulSettingsConfigurable.kt at line 24
    [2.4120]
    [2.4120]
    val pathToEditor = settings.getPathToEditorServer()
  • edit in src/main/kotlin/com/github/jonathanxd/dracon/component/PijulSettingsConfigurable.kt at line 27
    [2.4268]
    [2.4268]
    modified = modified || (this.pijulSettingsComponent?.editorServerPath?.text != pathToEditor)
  • edit in src/main/kotlin/com/github/jonathanxd/dracon/component/PijulSettingsConfigurable.kt at line 35
    [2.4564]
    [2.4564]
    settings.savePathToEditorServer(this.pijulSettingsComponent?.editorServerPath?.text)
  • edit in src/main/kotlin/com/github/jonathanxd/dracon/component/PijulSettingsConfigurable.kt at line 46
    [2.4934]
    [2.4934]
    this.pijulSettingsComponent?.editorServerPath?.text = settings.getPathToEditorServer() ?: ""
  • edit in src/main/kotlin/com/github/jonathanxd/dracon/component/PijulSettingsComponent.kt at line 5
    [2.5323]
    [2.5323]
    import com.github.jonathanxd.dracon.util.wrapInHml
    import com.intellij.ide.BrowserUtil
  • edit in src/main/kotlin/com/github/jonathanxd/dracon/component/PijulSettingsComponent.kt at line 12
    [2.5588]
    [2.5588]
    import com.intellij.ui.HyperlinkLabel
  • edit in src/main/kotlin/com/github/jonathanxd/dracon/component/PijulSettingsComponent.kt at line 15
    [2.5675]
    [2.5675]
    import com.intellij.ui.components.JBTextArea
  • replacement in src/main/kotlin/com/github/jonathanxd/dracon/component/PijulSettingsComponent.kt at line 22
    [2.5890][2.5890:5973]()
    import javax.swing.JButton
    import javax.swing.JComponent
    import javax.swing.JPanel
    [2.5890]
    [2.5973]
    import javax.swing.*
  • edit in src/main/kotlin/com/github/jonathanxd/dracon/component/PijulSettingsComponent.kt at line 41
    [2.6599]
    [2.6599]
    it.toolTipText = DraconBundle.message("settings.pijul.path.tooltip.text")
  • edit in src/main/kotlin/com/github/jonathanxd/dracon/component/PijulSettingsComponent.kt at line 44
    [2.6606]
    [2.6606]
    val editorServerPath = TextFieldWithBrowseButton().also {
    it.addBrowseFolderListener(
    DraconBundle.message("settings.editor.path.select.text"),
    "",
    null,
    FileChooserDescriptor(true, false, false, false, false, false)
    .withFileFilter { file: VirtualFile? ->
    file?.name == "editor-server"
    }
    )
    it.toolTipText = DraconBundle.message("settings.editor.path.tooltip.text")
    }
  • edit in src/main/kotlin/com/github/jonathanxd/dracon/component/PijulSettingsComponent.kt at line 66
    [2.6928]
    [2.6928]
    val detectEditorServer = JButton(DraconBundle.message("settings.editor.path.detect.text")).also {
    it.addMouseListener(object : MouseAdapter() {
    override fun mouseClicked(e: MouseEvent) {
    editorServerPath.text = findBinaryOrNull("editor-server") ?: ""
    }
    })
    it.updateUI()
    }
  • edit in src/main/kotlin/com/github/jonathanxd/dracon/component/PijulSettingsComponent.kt at line 77
    [2.6996]
    [2.6996]
    .addLabeledComponent(JBLabel(DraconBundle.message("settings.pijul.text")), JSeparator())
  • replacement in src/main/kotlin/com/github/jonathanxd/dracon/component/PijulSettingsComponent.kt at line 79
    [2.7030][2.7030:7125]()
    JBLabel(DraconBundle.message("settings.pijul.path.text")), pijulPath, 1, false
    [2.7030]
    [2.7125]
    JBLabel(DraconBundle.message("settings.pijul.path.text")).also {
    it.toolTipText = DraconBundle.message("settings.pijul.path.tooltip.text")
    }, pijulPath, 1, false
  • edit in src/main/kotlin/com/github/jonathanxd/dracon/component/PijulSettingsComponent.kt at line 86
    [2.7311]
    [2.7311]
    }, 0
    )
    .addLabeledComponent(JBLabel(DraconBundle.message("settings.editor.text")), JSeparator())
    .addLabeledComponent(
    JBLabel(DraconBundle.message("settings.editor.path.text")).also {
    it.toolTipText = DraconBundle.message("settings.editor.path.tooltip.text")
    }, editorServerPath, 1, false
    )
    .addComponent(JPanel(BorderLayout()).also {
    it.add(detectEditorServer, BorderLayout.EAST)
  • edit in src/main/kotlin/com/github/jonathanxd/dracon/component/PijulSettingsComponent.kt at line 97
    [2.7329]
    [2.7329]
    .addComponent(HyperlinkLabel(DraconBundle.message("settings.install.text")).also {
    it.addMouseListener(object : MouseAdapter() {
    override fun mouseClicked(e: MouseEvent) {
    BrowserUtil.browse("https://oblitersoftware.github.io/")
    }
    })
    })
  • replacement in src/main/kotlin/com/github/jonathanxd/dracon/cmd/PijulCmd.kt at line 970
    [3.14497][3.14497:14551]()
    .command(listOf(this.findPijul()) + args)
    [3.14497]
    [3.14551]
    .command(listOf(findPijul()) + args)
  • replacement in src/main/kotlin/com/github/jonathanxd/dracon/cmd/PijulCmd.kt at line 1023
    [3.10312][3.10312:10366]()
    .command(listOf(this.findPijul()) + args)
    [3.10312]
    [3.10366]
    .command(listOf(findPijul()) + args)
  • replacement in src/main/kotlin/com/github/jonathanxd/dracon/cmd/PijulCmd.kt at line 1079
    [3.6216][3.6216:6274]()
    .command(listOf(this.findPijul()) + args)
    [3.6216]
    [3.6274]
    .command(listOf(findPijul()) + args)
  • replacement in src/main/kotlin/com/github/jonathanxd/dracon/cmd/PijulCmd.kt at line 1139
    [3.12899][3.22245:22299](),[3.22245][3.22245:22299]()
    .command(listOf(this.findPijul()) + args)
    [3.12899]
    [3.22299]
    .command(listOf(findPijul()) + args)
  • replacement in src/main/kotlin/com/github/jonathanxd/dracon/cmd/PijulCmd.kt at line 1195
    [3.10298][3.10298:10352]()
    .command(listOf(this.findPijul()) + args)
    [3.10298]
    [2.8625]
    .command(listOf(findPijul()) + args)
  • replacement in src/main/kotlin/com/github/jonathanxd/dracon/cmd/PijulCmd.kt at line 1248
    [2.10642][2.10642:10692]()
    val cmd = listOf(this.findPijul()) + args
    [2.10642]
    [2.10692]
    val cmd = listOf(findPijul()) + args
  • edit in src/main/kotlin/com/github/jonathanxd/dracon/cmd/PijulCmd.kt at line 1289
    [3.17510][3.17510:17511](),[3.17736][3.17736:17737](),[3.17737][2.11087:11198]()
    private fun findPijul(): String =
    service<PijulSettings>().getPathToPijul() ?: findBinary("pijul")
  • replacement in src/main/kotlin/com/github/jonathanxd/dracon/activity/PijulPostStartupActivity.kt at line 9
    [3.3980][3.3980:4192]()
    import com.github.jonathanxd.dracon.util.escapeXml
    import com.github.jonathanxd.dracon.util.findBinary
    import com.github.jonathanxd.dracon.util.findBinaryOrNull
    import com.github.jonathanxd.dracon.util.wrapInHml
    [3.3980]
    [3.4192]
    import com.github.jonathanxd.dracon.util.*
  • replacement in src/main/kotlin/com/github/jonathanxd/dracon/activity/PijulPostStartupActivity.kt at line 34
    [3.5247][3.5247:5384]()
    val hasPijul = findBinaryOrNull("pijul") != null
    val hasEditorServer = findBinaryOrNull("editor-server") != null
    [3.5247]
    [3.5384]
    val hasPijul = findPijulOrNull() != null
    val hasEditorServer = findEditorServerOrNull() != null